@odersky solutions that sound easy when one deals with a local file system become quite a bit more complicated when one deals with multiple Web GUIs backed by multiple backends. For example, no notebook environment has anything remotely related to “take the code in this notebook cell and send it to the server to be rewritten”, let alone the rewriter running a Scala compiler. Same problem applies to using Scalafix, etc.
So, the question is simple: is the removal of 'x
so important that Scala wants to either (a) force multiple open-source projects and for-profit vendors used by hundreds of thousands of people to implement substantial and non-trivial changes that span Web clients and backends or, if that doesn’t happen, because Scala is NOT the most important language for the likes of Jupyter, (b) cause significant end-user suffering?
What is the value scale here? An abstract notion of programming language aesthetics? The quality of experience of people using meta programming? It certainly is not the quality of experience of everyone using Scala, as that will include everyone negatively affected by the change whose volume will dwarf the number of advanced developers using meta programming.
It’s easy to turn a nose up at Spark: it ended up using Scala by accident, it’s not functional, it uses a tiny fraction of the type capabilities of Scala and it even stopped code-generating Scala, because the compilation was too slow. Still, it’s wildly successful. It’s even easier to dismiss the plight of newbie Scala developers hacking in notebooks–after all, they are most definitely not like the people engaged in SIP discussions and they hardly care about programming language design–but shouldn’t we be embracing them instead?
Looking at the evolution of programming languages, it’s easy to see how the ones that make commercially beneficial alliances (either with powerful vendors or with certain user types) gain at the expense of those that do not. BASIC + C# and Microsoft. ObjectiveC + Swift and Apple. Kotlin and Google/Android. JavaScript and Web developers. R and statisticians. When it comes to usage popularity–introducing a lot of fresh blood into the developer ranks–Spark is the best thing that has happened to Scala in recent years. Through Spark, Scala has a real opportunity to align with a major emerging user type–data engineers and data scientists–and benefit from the explosive growth in big data, machine learning and AI worldwide, gaining momentum outside of its European base. Opportunities like this do not come knocking many times and the hard truth is that there are no other major forces fueling substantial Scala developer community growth.
With a multitude of choices for syntax evolution, why is it smart to choose a path that hurts the Spark+Scala community and, for example, pushes more people to use Spark through Python or Java or R, all of which are substantially more popular languages than Scala?