Enterprise social network ponders the benefits of Scala
The Scala debate rumbles on
Just as the embers of last week's flame war between advocates of Java and Scala appeared to be fading away, the debate was soon reignited as a leaked email conversation detailed the enterprise social network Yammer's early plans to shift their infrastructure stack away from Scala back into Java.
Coda Hale mentioned in passing last week in a tweet that even though Scala was a cool language that they'd be shifting to Java in the near future. He was asked to clarify his position by Typesafe CEO Donald Fischer why this was the case in a private email, which soon found its way onto back onto Twitter and then Hacker News.
The self-proclaimed 'Mr Anti-Scala' Stephen Colebourne, whose controversial blogpost debating Scala's worth sparked an community-wide debate over the language, was quick to pick up on the email and used it to back up his previous argument, stating that this was much more concrete evidence of Scala not working than his minimal experience with using it.
Hale's honest opinions are detailed within the email - which he soon deleted once it was viral. But in broad terms, he outlines the reasons for the switch:
- Complexity: He was suprised at how he had to explain some of the simplest tasks to new team members picking up Scala for the first time.
- Lack of community practice awareness: The most vocal members of the Scala community would often try to reinvent the wheel. Rather than participate in discussion, the internal advice was therefore: "Ignore the community entirely."
- Lack of best practices: Without the backing of a supportive community, the team didn't know what constitutes 'good' Scala and were often led to fend for themselves.
- Long learning times: The infancy of the language meant that there is hardly any develope with Scala skills available. The time taken to get a new developer up to speed in Scala is longer than in Java, thus creates productivity and time to market. Hale adds 'Even with services that only used Scala libraries, the choice was never between Java and Scala; it was between Java and Scala-and-Java.'
- Tooling defects: Build Tool SBT proved not to be particularly stable: "We ended up moving to Maven, Which is not pretty but works." A wide palette of alternative tools like in Java were not available.
- Backward compatibility issue: Any new version of Scala breaks backward compatibility: Developers are encouraged to use the latest libraries, source code must be revised.
- Performance problems
It wasn't long before Hale blogged a reply entitled The Rest of The Story, setting everyone straight on the private email, insisting that the views were not that of his employer.
I wrote that email for a very specific reason: Donald asked me for my opinion. If someone asks me for an honest opinion of them or their work, in private, I feel morally compelled to be as honest as I can with them.
But it’s simplistic and naive to assume that I wrote what I did in an unguarded moment and that somehow this represents a more truthful account of what I’d say in public. The most that you can possibly know about this is the text of my email to Donald and Martin (Odersky), not the context.
The most salient point of his response was this -
Yes, that email is not what I would say in public. The Scala community needs another giant blog post about ways in which someone doesn’t like Scala like I need a hole in my head, and I’d rather suck a dog’s nose dry than lend a hand to the nerd slapfights on Hacker News.
It was interesting to see that Colebourne missed the key point that Hale did say 'despite the fact we're moving away from Scala, I still think it's one of the most interesting, innovative and exciting languages I've used.'
And here lies the most obvious point within the mire of anti-Scala ramblings. There is potential for Scala to grow into one of the most sophisicated languages within the JVM but it isn't there yet. Only through ironing out flaws detailed within Hale's private email, can it truly suceed and the best way to do this is to take this positive criticism on-board. Now is the time to answer the critics with actions. They seemed to have done that by announcing their migration to github forthwith and it should be interesting to see what this week-long debate has done to Scala's standing.
As for those against it, and those seemingly on a vendetta to destroy it, perhaps looking closer to home is a much better option. This argument is getting us nowhere.
UPDATE - Yammer produced an official statement on the entire matter saying that
Some of our team's negative experiences with Scala was misrepresented by some as constituting an official Yammer position or announcement. It was not; it was a private email.
This is Yammer's official position on the subject: our goal at Yammer is to revolutionize the way modern workers collaborate and we'll use whatever tools will allow us to iterate faster on that goal. If Scala is that tool, we'll use Scala; if Java is that tool, we'll use Java; if INTERCAL is that tool, we'll use INTERCAL. (We don't expect to have to use INTERCAL; don't worry.)