What makes a programming language successful?
Part 3: Analysis and conclusion
When I started to write about the success of program languages, I had some factors in mind that contributed to its success. But even I was surprised that the number of success factors is so long. Altogether, 19 factors were listed in part two:
- Time to market
- Language Design
- Backing companies
- Integration and extensions
- Useful software
In this part, I analyze the success of the relative new language Kotlin. At the end, we will conclude with some remarks on the importance of ecosystems.
Kotlin is a teenager. Invented in 2011 it is a relative newcomer compared to most other languages around. Still, it has become relatively successful.
Success is a relative concept. The Wolfram Language is for example successful in the mathematical world, and there are lots of successful software created with Delphi. Yet they are not as widespread as Java or Python.
Languages that find their niche, mostly survive, but they do not necessarily thrive.
Here I am speaking of success more in terms of a thriving language. In the sense that its popularity, and usage, are growing until its usage is widespread.
So why did Kotlin become in a relatively short time so popular while languages like Haskell, Lisp, Wolfram, Delphi and Smalltalk failed to do so?
Analysis of Kotlin
Kotlin, originates from St. Petersburg, Russia. There a team of language designers led by Andrey Breslav started to create a robust general purpose language. The name comes from Kotlin Island, near St. Petersburg. Andrey Breslav mentioned that the team decided to name it after an island, just like Java was named after the Indonesian island of Java (though Java was more likely named after the coffee rather than the island. Infoworld recently (re)published an article on this matter).
Most of the team had a background in computer science and engineering at the ITMO university (issledovatelskiy oeniversitet informatsionnich technologiy, mechaniki i optiki, St Petersburg). Andrey for example extensively studied domain specific languages (think of languages like SQL, HTML and XSLT). Besides Java and DSL’s the team extensively studied:
This ended up in a language that had lots of familiarity with Java, but addresses some of its pain points like its type system, null-Safety, smart casts, string templates, primary constructs, lambda expressions + inline functions (Performant custom control structures), coroutines and so on.
From day one it focussed on the speed of compiling and because it compiled to Java byte code it has similar performance as Java. Kotlin was thus a well-designed language with good speed. But as we saw, this is not a guarantee for success. As Andrey puts it:
“It’s possible to not only create a language, but also implement it in such a way that it would allow for writing fully operable programs. There are many examples of that. The difficult part is encouraging other people to use it, and making it tangibly better than the other languages available.”
Because of its interesting functions, the language already created some hype before version 1.0.
But Kotlin had another card at it sleeve. The project was sponsored by JetBrains, one of the biggest companies for development tools based in Prague. They started to promote and made sure that tooling for the language was excellent.
JetBrains decided to keep Kotlin open source licensed and made it freely available, including lots of documentation resources and tooling.
Another important aspect was its interoperability with Java. You can call Java code from Kotlin (having access to more than 9 million libraries) and it's also possible to call Kotlin from Java. This made it possible for a mixed code base.
However, probably the most important push of popularity was its adoption by Google. Currently, most apps on Android are developed in Kotlin. How did this happen?
Google introduced its software development kit for Android in 2007. This kit used some Java technologies and Java was used by a lot of developers creating mobile apps on Android. As not all Java parts were licensed open source, this resulted in the famous lawsuit Google LLC v. Oracle America, Inc. Google didn’t want to wait the outcome and start to promote Kotlin. At Google I/O 2017, Google announced first-class support for Kotlin on Android.
So by this time Kotlin has company backing by both JetBrains and Google, but also found its niche in mobile development (though it basically can be used for everything). So over time the community grew and with it, the number of useful software, frameworks and libraries.
As the analysis of the Kotlin language shows. The design and speed of the language are not the only critical success factors, probably the most important one is a strong ecosystem.
Though almost every programming language is invented by one or a few individuals, it’s hard to build up a good ecosystem by an individual. The inventors can contribute with the language design, the speed and other choices like license.
But an ecosystem is nourished by organizations (big tech, companies, governments, universities, foundations (like Apache or Eclipse)). What’s important about a strong ecosystem is that the different factors are mutually reinforcing.
Because the language solved some important pain points it creates hype, because this hype companies get on board and the community create libraries, tutorials and reviews, because of this, tooling and software are created, this lead to jobs, courses and so on. A snowball effect.
A thriving ecosystem is the holy grail for any programming language.
It remains open if Kotlin can follow this growth path. The Russia-Ukraine war divide the Kotlin developers communities, JetBrains suspending sales and R&D activities in Russia indefinitely.
Companies like Oracle and Red Hat meanwhile investing heavily in Java (new functionality as Lambdas and String templates came to the language) and Google investing a lot in its other programming language Dart that used by its mobile development platform Flutter.
Time will tell.