2.13 EOL and LTS planning

Good afternoon,

I am a product manager working working on planning for an LTS release of a software product that currently uses Scala 2.13. We need to ensure that we ship our own LTS release with software that will continue to be maintained and supported until June 2028.

I understand that Scala 3 has an LTS concept, and that this has never existed for Scala 2. However, is anything known/published anywhere about Scala 2’s support & maintenance intentions, or any plans to EOL Scala 2?

Specifically, is there any information that can help us to assess whether we can rely on Scala 2 continuing to be supported past June 2028, or is our only option to upgrade to Scale 3 if we need a firm assurance like that?

Thank you.

4 Likes

I would also be interested to hear if there is currently any planning around the future of Lightbend support for Scala 2.

I’m not sure if you mean “contractual support” or just “someone will fix bugs and hit the release button”.

I can say that Scala 2 tries to support projects (libraries) that want to cross-compile “in the longer term”. To me, that means Scala 2 has an extended role to play in the ecosystem. (Extended in the sense of life extension.)

If the concern is whether Scala 2 will support future versions of the JDK, the good news is that it would likely track any support in Scala 3.

In addition, Scala 3 has a concept of LTS, but it may be in flux: there are discussions about whether it is intended only for libraries (which require stability to support third parties) or for applications (which can afford to use the latest and presumably greatest).

Also, 2028 is just around the corner. I expect the next four years to evaporate as quickly as the previous four.

2 Likes

(I’m not speaking for Scala or anything official, I’m just in a similar situation, and have dealt with similar subjects for 20 years).

Support is a continuum when you are talking about floss ecosystem. The term is quite overridden, and YMMV about what you are looking for. And you also have to consider all of your dependencies in the matter. Scala-the-language is just a fundation, and it’s unlikely that you’re only using only that. And it depends about what you’re looking to provide yourself in term of support.

So, now that caveat emptor are set, some guessing:

  • you’re planing an LTS, likely it means that you will garanty vulnerabilities and other critical bug correction, not much (no new feature, now smal bug, etc)
  • so you’re essentially asking if vulnerabilities will be corrected in Scala 2.13 ecosystem for the next 4 years,

For Scala, I would say that’s extremely likely. Scala 2.12 is still maintained, I don’t see an universe where Scala 2.13 reach EOL + no vuln correction in the next 4 years.
For the ecosystem, it’s much more nuanced. First, if you’re only relying on FLOSS software, GREAT ! It means that you will always be able to correct/fork a dependency that need an important correction. And if you don’t have the skill or will to do it, you will likely be able to find a freelance, consultancy, or even the old maintainers to do it for money.
If not everything is FLOSS, well, you need to see with the corresponding editors.

Now, how likely will you need that ?
For vulnerability (say, > 7) or critical-not-yet-discovered bugs, I think you’re rather safe with big libs, and that it’s unlikely that a vuln in them would go uncorrected in the next 4 years.

So, for a mainly static LTS, it should be OK and you may only need to provisionned a couple week worth of consultancy for dealing with the worst cases.

If on the other hand, if you want to keep getting your product up to date with last version of libraries during these 4 years, I think it will be money intensive (either in maintenance, or freelancing).
Given the tone of conference about scala in 2024 and the state of migration stories, I would say that we are far passed the early adopter migration stage, and in the bulk of “most shops relying on scala are in the process of migrating to scala 3 (from questionning how to do it like you, to finishing it like the story at Scala IO from rather big shops)”.
It’s also the point where most libraries are migrated, and where we start to have native-borned scala 3 libraries showing the good of the language, like Iron.
All that means that the ecosystem is well in its Scala 3 adoption phase. And so, for all the floss maintenaires around, maintaining Scala 2 will become more and more a bitter constraint (ie, really look like something not fun, and will-crushing to do - between the huge gap in feature set and the declining number of users in Scala 2).

My guess is that we have around 2 years before a significant part of the ecosystem say it will stop support of Scala 2 (the big lib with lots of maintainers, a bit longer).
Past that point, the life in Scala 2 application maintenance will become either resource/money intensive (ie, you will have to do or pay for most of maintenance), or a nightmare of complexity.

All that said: Scala 3 migration is OK. Even us, with all our bizarre constraints and neolithic libraries, we are in the process of finishing our migration to Scala 3 - perhaps even with a 0 risk path, thanks to the latter cross-compilation flag added.
We were helped, and I can’t stress out enough how VirtusLab for the bootsrapping, and Matthieu Baechler for the actual migration with all the nasty details, were needed.

Hope it helps,

5 Likes

Thank you for your insightful repky. I am encouraged to hear that you believe 2.13 will not reach EOL in the next four years; for want of an official statement or roadmap, experienced and informed views such as these are going to be valuable.

Yes, you are right; our LTS will be fairly static (though we occasionally back-port features), so my primary concern is that critical vulnerabilities in Scale 2.13.x will be patched. Of course, forking/contributing fixes ourselves is always an option, though not always practicle when we are under delivery pressure…

Thanks again.

2 Likes

We (the team at Lightbend) promise to publish something about this before too much longer. The short answer is that 2.13.x pull requests will continue to be merged, security vulnerabilities will be addressed, compatibility with new JVM versions will be ensured, and releases will continue indefinitely, as long into the future as anyone can possibly anticipate, certainly for years to come and almost certainly for a decade or more. There is no plan, and not even any desire, to EOL 2.13 at all.

But yes, we need to arrive at official wording, get the Center’s agreement on it (since if, god forbid, our team or all of Lightbend were to disappear, the Center would have to somehow take over or find a new home for maintenance), and publish it in an official location.

We also need to find a somewhat weaker wording for 2.12. There is currently no plan to EOL 2.12, but it’s plausible to imagine that changing eventually, especially if our current commercial funding earmarked for 2.12 maintenance were to end.

Note that my remarks are limited to Scala 2 itself: the compiler and standard library. As for the library and tooling ecosystem, see fanf’s post.

14 Likes

P.S. Everything I’ve said assumes the continued existence and health of the Scala Center. The most important thing interested companies can do to ensure continued maintenance of Scala 2.13 is to help fund the Scala Center by the joining the Center’s advisory board, like JetBrains recently did: JetBrains Joins the Scala Center Advisory Board! | The IntelliJ Scala Plugin Blog … and when you join, make sure the Center knows that you care about continued maintenance of Scala 2.

20 Likes

We now have a draft of a new web page on this subject and we are in the process of circulating it internally for review. You can expect it to be broadly similar to what has already been said here.

3 Likes