The Economics of Programming Languages (2005)
welton.it
welton.it
1. Funding or sponsorship for the language
Would Rust or Go have enjoyed their popularity without the support of Mozilla and Google? One of the reasons developers are drawn to those languages is their association with Mozilla and Google. (Although Rust is independent of Mozilla, its long association with Mozilla is what initially drew developer interest.)
Without a generous benefactor, open source languages have to scrape funding together piecemeal from different sources - just look at Nim and Crystal.
2. A "Batteries included" standard library
Or at least a sufficiently rich library that lets developers create a wide range of applications. This is tied to point 1 above: developers are needed to help fill out the standard library - feasible with funding, slow to achieve without.
3. Documentation, examples and tutorials
Developers underestimate how important this is for people new to the language. While some developers will patiently work through a problem with incomplete documentation or guides, many more will simply give up in frustration and abandon the language.
Once again, it comes down to funding. Rust and Go have had (or still have) dedicated staff writing documentation for the language. This is a luxury that other languages like Nim or Crystal cannot fund or afford.
4. Building a community
Zig is some time away from a 1.0 release but already has a VP of community, and Crystal are planning to hire a Community Manager. This is an acknowledgement of the importance of growing the developer community in each language - a dedicated person helps promote and evangelise the language.
A programming language can survive without meeting any of the factors above. But can it thrive or gain traction?
And it's not just Rust and Go. Java was an earlier example.
It was very weird fighting against the buggy standard library while hearing the marketing BS at the same time.
More recently, Julia promotes itself as a general-purpose language suitable for non-scientific domains too. However, the association with scientifc computing remains strong. It's too early to say if that perception among developers will change over time.
Julia is lucky because they are targeting not just a niche but a userbase that has been amassed already. Really what they're doing is directly taking on Matlab it seems, where Matlab users have gotten frustrated with how stale and expensive the language is. Julia has the fortunate task of convincing unsatisfied people who are paying a shit ton of money for an inferior product to try a superior product for free.
Julia looks cool, but I do mostly web development, and I don't see how I would benefit from it.
Let's say your language X is 10x faster than language P. Or it compiles 10x faster. Or you can write programs 10x faster. That's not enough. You also need:
- a complete compiler and debugger toolchain
- a complete language server implementation, and language modes for all popular IDEs
- a package manager with a large package ecosystem
- a community with live chat support and a Stack Overflow presence
- robust documentation with copious examples, tutorials, guides, and technical info. These days even a multi-hundred page book with professional editing available for free is expected.
- you have to be responsive to bugs and provide patches promptly
- your language is expected to have undergone a full independent security audit, and to be up-to-date on the latest security issues
- you have to manage the community and deal with petty interpersonal conflicts or else word gets out that your language has a "toxic community"
- support for all major operating systems and hardware architectures
- support for the web through wasm, so you need experts at that as well as x86 and ARM platforms now.
- And on top of all that, your project needs to be completely open source, with a free and open license that permits royalty free, patent free, commercial use. Oh, and your users both corporate and personal expect your work to be completely free as in beer. They won't pay anything for it. Not even a dollar. And if you ask them to pay something they don't weigh the value of your product versus the competition, they balk immediately and don't even consider it. It's been a non-starter to ask for money for a PL for decades.
So even if your language is 10x better in some way, it's not going to be 10x better in all ways. In fact, it needs to be at least as competitive as other languages in the above (and many other) dimensions to gain traction outside of enthusiasts. This is why it's so hard to gain traction in the PL field, and why most of the top new languages to emerge over the last decade or so (Rust, Go, Swift) came from patrons with deep pockets. The only exception I can think of is Zig, and even that's in a minor league compared to the ones listed.
I’d say it also holds for operating systems, network protocols, core tooling, etc.
The thing improved 10X might vary though, and for any niche there may be more than one thing that can be improved. Linux for instance displaced Windows NT by being both cheaper (technically free) and radically more flexible.
Not that it matters, just idle mindless rumination.
And even it now sees competition from other POSIX platforms for IoT, with more business friendly licensing.
It isn't going away, but now there is more free beer alternatives for UNIX folks that don't want GPL kernels.
How successful Kubernetes would have been if the rewrite had not taken place belongs to what-if guessing.
I see perception and network effects having at least initially a stronger factor in Python’s popularity than any particular technical advantage.
That is where it got its first wave of users.