What are the current plans regarding a new LTS Julia version?

Someone mentioned on Slack yesterday that many optimizations in Diffractor rely on changes introduced in 1.8, so again there might not be a clear cutoff point here (as Diffractor is still under heavy development and presumably will continue to be after release).

1 Like

I can’t provide the answer, but I’d like to point out that the contenders for being a LTS are currently 1.0.5, 1.6.1, and 1.7.x.

Oh dear, I really hadn’t meant to kick off a discussion like this …

After reading the v1.7 release notes I just though “wow, this looks like a big relelase”, and I was wondering if the the plans of the dev team regarding LTS had changed, and I remembered hearing that Diffractor would require v1.7 (but based on what @nilshg wrote it looks like it’s not that clear-cut). I fully support @simeonschaub’s argument that at some point one has to be pragmatic and “bite the bullet”. The current situation with v1.3 being a kind of “de-facto LTS” (due to artifact support) certainly shouldn’t be dragged out much longer, IMHO.

1 Like

The plan is still for 1.6 to be the new LTS. There are always features in new releases that someone would like to have in an LTS version. Aside from the manifest format, which is being backported to 1.6, none of these seem like show-stoppers.

The vast majority of people should be using whatever the latest Julia version is, not staying on the LTS. There seems to be some misunderstanding that the LTS is better to run for some reason, which is very much not the case. You should only be using the LTS if it’s very expensive or risky for you to go through the process of upgrading, which is not the case for 99% of users. People who need the latest and greatest in machine learning capabilities are very much not the target audience for the LTS release and should be using whatever the current stable Julia version is. Packages should support whatever earliest Julia version they can conveniently support. If that’s the LTS, great; if not, that’s also fine. For example, for many packages Julia 1.3 has been a lower bound for a long time because it introduced artifacts and multithreading. Even though that wasn’t the official LTS, it was a fine lower bound for packages to have.

In hindsight, the amount of time spent on the 1.6 release was probably a mistake and we should just do timed releases like we normally do regardless of whether something is going to be an LTS or not. And we should probably just do a timed LTS as well on a two year cadence. So whatever 1.x release is first cut in 2023 would be the next LTS.

29 Likes

Although I kind of feel like a one year cadence might actually make more sense. Julia 1.0 didn’t get all that many release — partly because the infrastructure needed to test new releases stopped working for the 1.0.x series, which might end up happening again. Two years is still an awfully long time in Julia development at this point.

8 Likes

As already mentioned, the problem with determining a LTS is that almost every new julia release is so much more awesome than its predecessor. Looking back I felt that each of the following releases 0.5, 0.6, 0.7/1.0, 1.3, 1.5, 1.6, 1.7 was a game changer in some way and each time I wondered how I managed to get work done with older julia versions.

4 Likes

The only thing from 1.7 I’d really miss in 1.6 LTS would be the libblastrampoline stuff. Although targeting more of a niche, I compare it to the introduction of artifacts in 1.3.

Having said that, I must admit that I don’t really care too much about LTS versions anyways. Living on the bleeding edge is too cool :slight_smile:

3 Likes

From my point of view the only reason to delay the LTS would be the non-unpacking of the registry, as that can have a huge usability impact in certain environments. The main reasons I can see for not delaying the LTS is to finally get LTS support for artifacts and the fact that 1.7 has a new manifest format that 1.0 doesn’t know about and probably doesn’t handle gracefully. I suspect the latter would make the LTS upgrade quite a bit more painful than it should have to be.

2 Likes

This will indeed make life much easier for people working on systems with network-shared home directories. Would compatibility with this be back-ported to v1.6 as well (if 1.6 becomes LTS) or would there just be two parallel local instances of the registry?

The new Manifest format will be backported to 1.6 though, so that doesn’t change anything in regards to LTS.

3 Likes

If 1.7 were to be the next LTS, the LTS upgrade would be directly from 1.0 to 1.7 and backports to 1.6 don’t come into play.

Yes, what I meant was that no matter if 1.6 or 1.7 becomes LTS, the Manifest from 1.0 will break either way. Since that’s the case, the Manifest argument isn’t relevant to the decision whether 1.6 or 1.7 becomes LTS.

From my understanding that’s not what the backport means. 1.6 will keep using the old manifest format but will understand the new 1.7 format.

4 Likes

Correct. 1.6.2 will default to making old format manifests, but will recognize and maintain any new format manifests it comes across.

1.7+ defaults to the new format and will still support and maintain the old format, unless the user calls Pkg.upgrade_manifest()

11 Likes