How Serious Is Scala?
Is Scala unfit for serious development? This question was posed by Stephan Schmidt in a recent blog, where 'serious development' is defined as 'for financial gain.'
Based on his experiences with “the version hell that is 2.8,” his answer is no, and he lays the blame for Scala 2.8 firmly at the door of the Scala community. In Schmidt's opinion “the developers are interested in language research and writing papers, not in making a language for real development.” This means that classes disappear and appear, binary and API compatibility are ignored, and Scala is generally changed “on a whim” between releases. He stresses that the Scala community should be concentrating on fixing bugs, and leave the feature-set alone for a while.
However, visitors to his blog have pointed out that his post is concerning what Schmidt calls “2.8 version hell.” Scala 2.8 is still in the release candidate stage.
“If you want to do serious development, why do you even use release candidates? Why not just wait for the final release and then upgrade?” asked Mirko Stocker, while Thomas Jung draws parallels between the Scala 2.8 RC's and OpenJDK 7, which is also in the process of releasing builds prior to the official release. “You should correct your title to “Scala 2.8 is Unfit for Serious Development”. This not news. It’s not released yet. Would you expect to have a stable OpenJDK 7 now,” he asks.
James Iry has blogged his reply to the original post, and he too agrees that the issues with API compatibility Schmidt describes, are to be expected when dealing with RC's.
“Schmidt jumped into the beta version. A small bit of versioning hell ensued. From this Schmidt concluded that the Scala development team do not care and that Scala is unfit for development,” he concludes. However, he does acknowledge that there is an ongoing problem with maintaining binary compatibility in Scala, but the next major release should solve the binary compatibility issue once and for all.
Another issue raised by Schmidt, which has found unexpected support within the Scala community, is that the naming of Scala 2.8 is deceptive, and it should have been called 3.0. Iry agrees that 3.0 would better communicate the extent of the changes, and visitors to his blog have expressed a similar opinion, although one visitor suggested this decision could have been influenced by Java's tendency to have major language upgrading with a minor version upgrade.