Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Scala Compiler Sees Two Forks in One Week

Scala Compiler Sees Two Forks in One Week

This item in japanese

A week after floating the idea of a community sponsored fork of Scala, Miles Sabin, principal engineer of the Shapeless library and active member of Typelevel, announced a fork of the Scala compiler on the Typelevel blog. Three days later, Paul Phillips, a Typesafe co-founder who left the company in 2013, announced his own Scala compiler fork.

In Miles' blog post announcing the Typelevel fork, he begins by observing that the current roadmap for the next release of the Typesafe Scala compiler, due in early 2016, has very modest goals, consistent with Typesafe’s focus on stability and Java 8 compatibility. This, Miles says, is understandable as Typesafe is a commercial entity with products to sell in the JVM-based enterprise middleware space. However, he continues on to say

whilst this is entirely reasonable, and meets the needs of many, there is nevertheless a significant constituency at the core of the Scala community whose needs are not being fully met. … The projects gathered here under the Typelevel umbrella are prime examples of that constituency.

To address these unmet needs, Miles proposes a fork of the Typesafe Scala compiler which he labels a conservative fork and goes on to say that

as a conservative fork, our aim is to be merge compatible from the Typesafe Scala compiler, and a key objective is to feed pull requests … back to the Typesafe Scala compiler. Our goal is to have a language which continues to evolve at the pace we saw until a couple of years ago, but with the difference that this will now be an opt-in process and the priorities will be set by the community.

The cooperative stance of the Typelevel announcement was not overlooked by Typesafe, and in a response, Martin Odersky, the CEO of Typesafe, welcomed the Typelevel fork saying

we believe that a model where a stable main branch of the Scala language and compiler is complemented by more advanced and experimental branches can serve the needs of innovators and industrial adopters alike. We applaud the intention of the Typelevel people to keep their branch merge compatible with standard Scala, and are very open to integrate new features that have proven themselves in future releases of Scala.

Three days after the Typelevel announcement, Paul Phillips quietly announced his own fork. Paul left Typesafe in 2013 citing irreconcilable differences over the design of the Scala compiler and, as opposed to the apparently congenial Typelevel fork, Paul’s fork seems more divergent. In the project README Paul says

[this fork] isn’t the kind of fork that hopes eventually to be folded back into the original. The leadership of scala has shown itself unfit stewards of the core technologies and the total price paid by scala programmers (actual and potential) is too high. I failed for half a decade to change that from the inside. Now I’ll try from the outside.

However, Paul’s reason for announcing the fork seems to be an altruistic one; namely that of helping the Typelevel effort. As Paul says, again in the project README,

I would prefer not to publish code in this condition, which although way ahead of [Typesafe Scala] is still far short of anything I’d want to put my name on. However since typelevel has also forked the scala compiler, publishing now and giving them an opportunity to exploit my work seems the lesser evil.

While these back to back announcements will certainly cause some concern within the community, the members of the Scalawags Podcast covered the Typelevel fork in their 20th episode and their response was generally hopeful. They point out that they like Miles and they are encouraged by the tone of the announcement and the response from Typesafe.

Rate this Article