Kenneth McDonald posted the following question about Scala’s future in the Scala mailing list:
I thought it would be interesting to find out people’s predictions for how much of the Java market Scala will eventually penetrate. It’s nice to see Scala doing reasonably well so far, so now’s your chance to make a prediction on the future of Scala:
a) Scala will remain a niche language, competing with Groovy, JRuby, etc.
b) Scala will become the dominant “second” language for the JVM.
c) Scala will actually become big enough to compete with Java in many respects.
If none of these fit your outlook, feel free to make up your own answer.
In my opinion, the answer will be A (niche) or B (second language), depending on the community’s ability to:
- Promote Scala (and Liftweb);
- Simplify the process of switching from Java (e.g., by providing familiar tools) as much as possible;
- Provide worthy reasons to switch (e.g., killer apps). People rarely go to the trouble of switching just because something is “nicer”, even if in reality it causes one to write more robust code that takes advantage of higher order abstractions and a “safe and coherent” type system. Liftweb and concurrency through the Actor model / Akka are definitely two examples of a step in the right direction, as they do a particularly good job of solving a specific problem and showcase the value of adopting Scala as a user, as well as a tool to implement libraries and reusable components.
The software development community is embracing dynamically typed languages like Python and Ruby, as well as functional programming. Languages like Python and Ruby simplify the development process for a beginner. They are easy to read, learn and use. Their adoption is therefore growing quickly. They also offer practical solutions to web development needs through frameworks like Rails and Django.
The paradigm shift to functional programming is much slower however. Functional programming done a la Scala, is undoubtedly advantageous for the competent software engineer, but moving from Java to Scala requires significant commitment and a higher degree of understanding about how to program, in my opinion. Are Java developers up to this? Some of them are, but I doubt that a majority of them would be. It should be noted that Scala has the potential to also attract developers who don’t program in Java, but rather come from a different background, such as the aforementioned Python and Ruby. These people may look into Scala as a more functional-oriented, robust and faster alternative.
This, coupled with the current, limited popularity of Scala, leads me to believe that option C (let’s say ~50% marketshare) is not a realistic option for the foreseeable future. We are entering the long tail period of programming, where many lesser known languages will start gaining some traction. Achieving a “second language” status is still an ambitious and worthy goal. There are many formidable opponents aiming for that, including JRuby, Jython, Groovy, and Clojure, and the rewards for doing so would be substantial for everyone involved.
The real question is not how far Scala is capable of going in terms of adoption, but rather what can be done to ensure that it will achieve widespread acceptance, however that may be defined. Paying close attention to the success stories of Ruby and Python may give the community some insight as to what should be done. To a minor extent, fellow functional programming languages like Erlang and Haskell are doing a fine job marketing-wise and are gaining traction. As of 3.30 pm today, there are 147 members in the irc channel for Scala, and 576 for Haskell. This is not to say that one is better than the other, or even that Haskell is more popular than Scala in general, but rather that there may be something to learn from a “similar” language, that poses compatible challenges for those who intend to approach it.
Being based on the JVM, well integrated with Java, and to a certain extent being Java-like, are all major advantages that may help Scala’s ability to gain major popularity. And being ingrained in the Java world, will affect the way Scala’s image and the ways it can be promoted as well. Whereas Ruby has a somewhat anti-corporate spirit and image, and is tough to sell to the Enterprise world, Scala doesn’t face these challenges. As such it may appeal to a much larger category of developers and companies. However, a lot of work will be required to reach that tipping point. Scala is already an excellent language, as far as I can see, but it will be a combination of technical efforts and marketing to really decide Scala’s popularity.