Continuing or dropping Scala 2.10 maintenance in the ecosystem?

Scala 2.10 used to (and still has, to some extent), huge gravitas in the Scala ecosystem. To large parts, this was due to Spark and sbt supporting only 2.10. Spark has migrated to 2.11, and sbt 1.0.x is around the corner (well, it’s already there, because the RCs are binary compatible).

Most Scala libraries (as far as I can tell), cross-build against at least 2.10, 2.11, and 2.12. Some even added support for 2.13, which means four major Scala versions.

One one hand, this is a significant improvement over the state of the art before 2.10: It was unthinkable to support so many versions simultaneously with as little changed code.

On the other hand, it is also a maintenance burden. Good cross-compatibility also means that progress is hindered. Libraries are unable to exploit newer features from, say, 2.11.x.

Which is why I am asking community maintainers to consider dropping 2.10 support immediately. It means version switches in build files (e.g. for Scala modules like scala-xml) or compatibility libraries (e.g. macro-compat) can go away. In almost all cases I’ve seen, this was used to distinguish between 2.10 and 2.11+.

Additionally, dropping 2.10 support will incentivize people to migrate to sbt 1.0.x. In many cases it’s not that hard to do. (Big thanks to the sbt developers for that.)

12 Likes