Hmm, we use Gradle instead of SBT, so can’t say anything to that, but I don’t think the rest of these amount to a “maintenance nightmare”.
Sure, you need to upgrade your libraries every few months (as in any project, really), but even if there’s breaking changes I don’t see it as that big of a deal. Usually, it amounts to string replacements and hitting compile.
Obviously for extra-massive projects that may be a bigger problem, but even there you could upgrade to that minor version with breaking changes, stick it into CI/CD and then it’ll tell you soon after that this has breaking changes. Then you roll back and schedule some time to do the upgrade.And selecting the correct library version hasn’t been a problem for us so far either. Our project isn’t either built on top of Spark, but if that’s necessary to make the argument work, then the article should’ve probably been called “Scala+Spark+SBT is a Maintenance Nightmare”.
I primarily work with Clojure, and the ecosystem is far more stable. I certainly don’t have to upgrade libraries every few months. In fact, many libraries from a decade ago that haven’t been updated still work just fine. Part of the reason this is a problem in Scala is because libraries are shipped as bytecode, which Scala keeps breaking, while Clojure libraries are shipped as source.