Whatever happened to Elm, anyway?
I see this question pop up quite frequently in lots of different arenas - folks are curious as to what happened to Elm. As a former community member of Elm, I thought I'd act as a historian here and provide a write up covering the big pieces I see. Everything in this post is public already, I'm just putting it together in one place - and will not touch on anything personal to anyone involved. The interesting parts are not about personal matters - but about the natural to and fro of a niche technology.
First, let's talk about the community size today. There's several different ways of measuring community size - if we look at Slack, there's about ~23,000 members. I'd say during the peak of Elm activity, there were closer to ~15,000. That's quite a big difference - which highlights to me that the audience continues to grow. If we look at the most popular stories about Elm, the majority of them were posted 5 or more years ago. The Elm compiler has ~7,000 stars on Github. If we look at npm, which is one of the ways of installing Elm, we see that the average over the last year has been about ~30,000 downloads. Note that this is no longer the recommended way of installing Elm, so these stats are a bit off.
If we compare these stats to Svelte, a relatively new framework, the average on npm seems to hover around ~350,000 weekly downloads. It also has ~65,500 stars on Github. The conclusion we can draw from these numbers is that Elm has a generally smaller community than typical Javascript frameworks, even those who are relatively niche and have smaller adoption than React (sitting at ~202,000 stars on Github).
But these kind of numbers don't show the full truth. Github stars are not an optimal way of measuring engagement - merely a way for developers to show interest in a particular topic. npm downloads are also misleading - especially in a world where there are CI instances doing fresh reproducible builds. A better measure might be jobs - or Google searches. There doesn't seem to a simple way of measuring total jobs posted for Elm across the internet, but I can say anecdotally that while Elm positions are rarer on HackerNews than they once were, there are still some about.
The graph below is from the last 5 years for the search term "Elm". Note that in the graph below, while there does appear to be a small downward trend, the interest remains about the same as ever with some small peaks appearing here and there.
For a niche language, a lot of interest and growth is done when people write blog posts - either stating a controversial opinion about the technology, or something like a release update. Mastering the blog post traffic is an important factor to the growth of niche products. So perhaps if there is a noticeable decrease in traffic, it can simply be that fewer people are writing about it. Of course, fewer people writing about it might also indicate that fewer people are engaged or using the tech in question.
Elm hasn't seen an update since 0.19.1, which came out in October 2019. That's a pretty long time to go without updates, but if it works, what's the point in doing releases for release sake? To some adopters, this can look pretty concerning - especially from the Javascript world where everything is being updated all the time. To other eyes, it might just simply represent stability. Either way, it can't be discounted that perhaps slow releases have also slowed community growth. I don't think it's controversial to say that fewer big releases bring in fewer new years.
Additionally, many of the core team are now working on new languages - Roc being the first, by rtfeldman, then Derw by myself, and finally Gren by robinheghan. Roc is quite different to Elm, but both Derw and Gren can be considered forks of Elm. Forks like this are often healthy - a demonstration of a compelling use case even when the implementation doesn't match the requirements of community members.
We can't mention other languages without talking about some of the successful languages in the same space as Elm: Reason, Purescript, Rescript, F#. Interestingly, from what I've observed, these languages also have lost some momentum. Some don't even exist in the form they originally existed in. It's interesting that I haven't see as many "What every happened to Purescript?" posts as I have for Elm - and when I have seen them, it's often on a thread about Elm. That might be because PureScript and friends weren’t as popular as Elm, but I’m not sure.
Which leads to one of the biggest reasons I think that Elm has stopped growing: the tooling, in the form of TypeScript, for writing type-safe front code is good enough that people are no longer looking for alternatives. TypeScript has problems, for sure. But nowdays it's a no-brainer to use TypeScript on a new project. Heck, it's easy even to add to an existing project. The tooling in the form of the language server makes development trivial and accessible for anyone with a computer that can run any editor. In other words: everyone. There simply isn't such a compelling use case for a language that relies on being type-safe when TypeScript can do that for you 90% of the way. Adopting a niche language comes with a bunch of downsides on top of that, like a smaller potential hiring pool - even if those in the hiring pool do tend to be more engaged. As the famous saying goes, "nobody was ever fired for choosing TypeScript". Elm is not just a language though, it's a framework. The Elm architecture once ruled the waves, in the form of Redux and other state management libraries. But that story has gotten easier in Javascript too, with things like effect hooks or frameworks which are implemented in a non-Reacty way (e.g svelte or Vue), so no longer does the Elm architecture alone make a compelling case for usage.
Overall, I think a lot of things have contributed to "whatever happened to Elm". Smaller audience since, fewer updates driving growth, alternative options getting stronger. I don't think Elm is vanishing - nor that it will go anywhere overnight. The community is still there, it's just not as active as it once was. For those who are after something newer than Elm with active development, check out Derw!
Ammendum
There are many types of users when it comes to niche technology adoption. Consider the following user groups:
Users who aren’t interested in any part of the language
Users who are interested in some part of the language, but not the whole thing
Users who find the missing parts a deal breaker
Users who are fine with the missing parts
Users who are interested in the whole language
which then has overlap with:
i) Users who have their needs met by technologies they already use
ii) Users who have their needs met but are curious in alternatives
iii) Users who don’t have their needs met
This post mostly was concerned with organic growth of early adopters, i.e 2b, 3 and ii, iii. But the other user groups have a lot to be said for too.
For example, users in the 2a group might be there because Elm isn’t designed in a way that they would like - perhaps it is missing typeclasses, maybe Elm’s underlying JavaScript implementation is too locked down. There are plenty of reasons why these users might first be interested in the language, only to lose interest as parts of it change. These user groups contribute to the overall language adoption - and as a counter, contribute to a drop in adoption. For these user groups, they likely move onto other languages - until they find one either with the features they desire, or compromise with the least bad language. As mentioned earlier in my post, I believe this language to be TypeScript - despite its many flaws, it has a decent compromise.