# Signaling "production-ready" for Julia packages, MATLAB.jl as an example

**URL:** https://discourse.julialang.org/t/signaling-production-ready-for-julia-packages-matlab-jl-as-an-example/80205
**Category:** Community
**Created:** [April 28, 2022, 10:37am UTC](https://discourse.julialang.org/t/signaling-production-ready-for-julia-packages-matlab-jl-as-an-example/80205 "2022-04-28T10:37:58Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)
#### Post date: [April 28, 2022, 10:37am UTC](https://discourse.julialang.org/t/signaling-production-ready-for-julia-packages-matlab-jl-as-an-example/80205/1 "2022-04-28T10:37:58Z")

</div>

Julia follows semver (and its packages should too):

> **[Semantic Versioning 2.0.0](https://semver.org/)**
>
> Semantic Versioning spec and website

> 1. Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.
> 
> 2. Version 1.0.0 defines the public API.

So should users (always) take 1.0 as a signal that code is “production-ready”? Or more importantly, that it isn’t (usually) if pre-1.0 (or pre-0.1.0?). Should we push for packages to be upgraded to 1.0 if we think they are?

In Julia with its package manager (i.e. for “reproducable science”), there’s not really a reason to avoid pre-1.0 packages, if you’re worried about API breakage you can just pin to a specific exact version. Later changes to not affect you, so nothing will actually change for the user.

Some very important Julia packages at pre-1.0 that I consider all production-ready (except maybe Flux):

- Pluto.jl
- CxxWrap.jl
- RCall.jl
- DataStructures.jl
- Flux.jl (not production ready? mostly still used for research?)
- MATLAB.jl

Of those the only package I’ve used directly is MATLAB.jl (and maybe DataStructures.jl or at least indirectly as most of us must have done), was very solid for me, while e.g. OctCall.jl for calling Octave, MATLAB’s clone, isn’t. At least I wouldn’t hesitate to use MATLAB.jl in production (at the time, I only used it to help me port some MATLAB code to Julia), and I may need to do that now. [Will also look into compiling MATLAB to C.]

Note, OctCall.jl isn’t yet registered, and that’s a huge signal not yet production-ready, while being registered, is for the benefit of (other) users.

Being registered, alone, isn’t a great indicator of anything, let alone being well-documented.

JuMP.jl at 10-years old hit 1.0 recently… I’m guessing production-ready for a lot longer.

---

<div class="post-metadata">

### Author: ![heliosdrm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/heliosdrm/32/3851_2.png) [@heliosdrm](https://discourse.julialang.org/u/heliosdrm)
#### Post date: [April 28, 2022, 11:41am UTC](https://discourse.julialang.org/t/signaling-production-ready-for-julia-packages-matlab-jl-as-an-example/80205/2 "2022-04-28T11:41:23Z")

</div>

Related discusions, for what is worth:

> [@Guidelines for committing to v1 release](https://discourse.julialang.org/t/guidelines-for-committing-to-v1-release/34550):
>
> I want to make some of my packages v1 but there is a nagging fear that the API isn’t stable. I wonder if there good guidelines and article out there to help me decide if I should do it? API is stable is a criterion, but it seems to be hard to decide when API is stable. Knowing when is something I am seeking guidance on.

> [@How can we encourage Julia package developers to release version 1.0.0?](https://discourse.julialang.org/t/how-can-we-encourage-julia-package-developers-to-release-version-1-0-0/29124):
>
> For the overwhelming majority of Julia packages registered in the [General registry](https://github.com/JuliaRegistries/General), the latest release of the package has version of the form 0.X.Y. (See the table at the bottom of this post.) As the Julia ecosystem continues to mature and stabilize, it would be great if the authors of stable Julia packages could start releasing 1.0.0 versions of their packages. What strategies can we use to encourage and incentivize the developers of Julia packages to release version 1.0.0 of their package? …

---

<div class="post-metadata">

### Author: ![Zach\_Christensen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zach_christensen/32/7220_2.png) [@Zach\_Christensen](https://discourse.julialang.org/u/Zach_Christensen)
#### Post date: [April 29, 2022, 12:39pm UTC](https://discourse.julialang.org/t/signaling-production-ready-for-julia-packages-matlab-jl-as-an-example/80205/3 "2022-04-29T12:39:38Z")

</div>

DataStructures.jl is a good example of where it probably isn’t good for 1.0 but can be used in production. They need to split it into smaller packages but you can probably use it in production without any serious consequences.

---

<div class="post-metadata">

### Author: ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)
#### Post date: [April 29, 2022, 4:25pm UTC](https://discourse.julialang.org/t/signaling-production-ready-for-julia-packages-matlab-jl-as-an-example/80205/4 "2022-04-29T16:25:23Z")

</div>

It’s great to get people to signal “production-ready” by going to 1.0, but since:

> [@Getting to 1.0 -- How can we get packages to "make that tag"?](https://discourse.julialang.org/t/getting-to-1-0-how-can-we-get-packages-to-make-that-tag/59608/13):
>
> > [@Getting to 1.0 -- How can we get packages to "make that tag"?](https://discourse.julialang.org/t/getting-to-1-0-how-can-we-get-packages-to-make-that-tag/59608/1):
> >
> > Is the lack of a `1.0` a suggestion to users that they shouldn’t depend upon it for production work?
> 
> No.

I guess all packages are… unless marked “experimental”.

---

<div class="post-metadata">

### Author: ![longemen3000](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/longemen3000/32/7298_2.png) [@longemen3000](https://discourse.julialang.org/u/longemen3000)
#### Post date: [April 29, 2022, 8:50pm UTC](https://discourse.julialang.org/t/signaling-production-ready-for-julia-packages-matlab-jl-as-an-example/80205/5 "2022-04-29T20:50:15Z")

</div>

in particular, i only register a package when it is ready for general use. but i still start at 0.1.0, so, my bad
