Putting the record straight
Scala creator Martin Odersky fends off critics of Scala's roadmap
Recent changes to the Scala language have got some of the community up in arms, seeing the addition of modularity features as appeasing those in the mainstream who don't like Scala in its current state.
Creator of Scala, Martin Odersky issued a long response on SIP-18 (Scala Improvement Process) to try and clear up the confusion over where the language was heading, stating that SIP-18 (which introduces feature flags: macros and dynamics) was not an attempt to 'pander to naysayers' like some had thought.
Firstly, Odersky said he was hurt by claims that Scala is a huge language that incorporates 'everything including the kitchen sink', when it was in fact his intention from the beginning was diametrically opposing this. He said:
I have always tried to make Scala a very powerful but at the same beautifully simple language, by trying to find unifications of formerly disparate concepts. Class hierarchies = algebraic types, functions = objects, components = objects, and so on. So I believe the criticisms are overall very unfair. But they do contain a grain of truth, and that makes them even more vexing.
Many of those unfamiliar with Scala have dismissed it out of hand for this very reason, which is why Odersky states ideally in two to four years, he would like to add further simplication and unifications to really quash this theory. He adds that by this time, any complex language accusations like this 'would be met with incredulity.' A pretty bold statement, but the vision is clear.
As Odersky alludes to, by achieving this Scala would truly be a big force on an enterprise level, which is what Typesafe really wants to do. Not that they aren't already of course, with The Guardian and Klout singing their praises. He says that 'their job will be easier because they will work with fewer but more powerful concepts.'
He was quick to add that most of the decisions being taken ahead of Scala 3 were tentative, given that an arrival date for it hasn't even been announced yet. Potential simplications include a new string interpolation scheme to smooth the process of using XML literals and adding further Java classes to ease any Java developers coming over to Scala.
Odersky also describes how renovating the type system to gain higher-kinded types will, in an amusing twist remove what he calls 'the worst part of the Scala compiler'. To see that in full, read his post...
There's a catch for SIP-18 for newcomers though, as he details:
First, while we might be able to remove complexities in the definition of the Scala language, it's not so clear that we can remove complexities in the code that people write. The curse of a very powerful and regular language is that it provides no barriers against over-abstraction. And this is a big problem for people working in teams where not everyone is an expert Scala programmer...
Second, the discussion here shows that complex existentials might actually be something we want to remove from a Scala 3. And higher-kinded types might undergo some (hopefully smallish) changes to syntax and typing rules. So I think it is prudent to make people flag these two constructs now with explicit imports, because, unlike for the rest of the language we do not want to project that these two concepts will be maintained as they are forever.
It's pretty clear to us that Scala has huge plans in the offing here, but quite rightly is taking them into consideration with meticulous detail. Even Odersky acknowledges that whilst he may have attempted to calm the fervency of some, you can't please everyone with how you map out a language's roadmap. But would you call an artist's expression into question?
Be sure to check out the entire thread because the debate rumbles on!