Debate: Does Scala need to sell out?
Rod Johnsons recent Scala Days keynote has provoked a strong reaction from the community. Does Scala necessarily need to become Java?
The Scala programming language has seen unprecedented growth in the past year or so, successfully shifting from a specialist JVM language to a viable Java alternative that enterprises should at least take a look at.
Although in the production environments of Twitter, The Guardian and LinkedIn, it hasn’t yet found its way into the mainstream. However, the winds of change are on their way. In August 2012, Typesafe, the company behind the object-oriented language, received $14m funding, which has been used to fuel development in the TypeSafe Platform.
For a language to blossom, it needs a supporting cast of frameworks alongside it and Scala’s related projects, such as the Akka toolkit, web framework Play and relatively new data access project Slick, all add extra value to the language. The recent arrival of Activator should help newcomers too, providing a local web and command line tool for the TypeSafe Platform. Although not yet on a par with other mainstream languages, Scala is on the right tooling track.
At the same time, the community behind Scala (or specifically those showing an interest in it) appears to be on the rise as well. According to January’s RedMonk Rankings, which uses GitHub and Stack Overflow figures, Scala was clearly the Tier 2 language closest to joining the established order of Java, C and C++.
Yet, there is still a stigma that dogs the Scala community; that they are seen as a group of arrogant elitists who want nothing to do with Java. This is one of the areas which Rod Johnson discusses in his recent Scala Days keynote “Scala in 2018” (below), discussing the community’s openness to new Scala enthusiasts.
The man behind the Spring Framework became of a convert of the Scala language last year, and liked it so much that he joined the Typesafe board in October. Johnson says that he hasn’t loved a language like Scala since C, due to its “profound elegance” and for its flexible yet strong type safety.
Johnson believes that in 2018, Scala will have “found its niche” as the leading enterprise language, for demanding applications that require scalability. He doesn’t believe Scala will be as big as Java was in its heyday, nor will any language ever come close to that. Johnson also believes that Java’s lingering presence in 2018 will ultimately be a good thing for Scala, thanks to the “robust and performant” JVM.
But in order for this to happen, the Spring founder believes that the community needs to learn a trick or two from the “pragmatic” individuals using Java, namely favouring regularity over innovation.
I think that we actually need to see more evolution in the community than in the language itself. I think the community needs to become more pragmatic, more focused on real world problems…
It needs to be more welcoming of new adopters. So what when they adopt if they’re very naive and unsophisticated in their knowledge of Scala - isn’t it great that they’re using Scala? Because over time they will learn.
Throughout the keynote, Johnson appears to suggest that the community itself is a huge turnoff for newcomers, due to some bristly and unwelcoming contributors. He points to some mailing list discussion as examples of those potentially alienating to the community and says Scala devs could learn something from Groovy, where there is “a culture of respect”.
But is it entirely fair to look at isolated incidents? Especially those that are a few years old. Only a select group of Scala developers come across this way and the community at large has done a great job recently to make sure there is a healthy culture, introducing a Code of Conduct to nip behaviour like this in the bud.
Just by looking at the comments under the keynote, it’s clear to see that many feel this is a tired and false representation of the current Scala community, which doesn’t focus on the good developers who are having a positive impact on the ecosystem. Josh Cough points to Johnson’s bashing of the Dispatch library, which goes against his point about being more accepting of others and their ideas.
The Spring founder’s insists that Scala developers need to have defined coding standards as well.
There is definitely a danger that if you have a language you can write poetry in, you will write poetry. But sadly, the vast majority of us are not paid to write poetry. Even very few poets are paid to write poetry. We are paid to solve real problems and a degree of discipline in the kind of code we write in Scala is really, really important.
But would the introduction of coding standards create even greater and more heated debate, over what is acceptable and what isn’t?
Johnson perhaps is being deliberately provocative to bring about the important questions. Scala is at a crossroads in its lifespan – should the Scala team and community it continue to place precedence on new features over the importance of regularity?
He is bang on the mark in regards to the warm embrace of the Java ecosystem, as much as Scala developers may disagree. The functional language’s future is intrinsically tied to the JVM and being on the platform gives Scala a glorious advantage over other alternative languages.
The real danger is that Scala moves too closely towards Java ideals that it may lose its “elegant” identity that made it so popular in the first place. As with any modern programming language, the community should be heard the loudest. Maybe you can still be a pragmatist and a poet?
Does Scala need to become more like Java in order to become the leading enterprise language in 2018? Is Johnson right in his assertions about the community? Let us know below what you think…