I’ve seen a lot of discussion and concern around Elm development activity recently. This comment on Hacker News is a good example: “Most packages I use and Elm itself is weeks and months old, makes me worried that it’s just stale”. Someone else paraphrased their boss’s opinion as “Looks like it’s dead now, no releases in over a year”.
The concern is that this sentiment either puts people off trying Elm, or it makes them consider not using Elm anymore, or it stops them from recommending Elm to their colleagues.
So I thought it would be good to take a look at some actual numbers to get an idea about how things really are. Is Elm some kind of experiment people have tried and left behind? Or does it have an active developer community with bright prospects?
Elm Github:
Other Elm stats:
Haskell is a popular general purpose functional programming language which is used to develop production software by quite a few companies around the world. It’s also been around for over 25 years.
This is what Haskell Github stats look like:
There are 31850 readers on r/haskell.
These numbers are consistently 6-7x the Elm metrics. So the Elm community is smaller, but not orders of magnitude smaller. Not bad for a language that’s only a few years old!
Let’s look in another direction. PureScript is also a functional programming language for web development that compiles to JavaScript, like Elm, although it has a somewhat different philosophy as it’s more about giving the programmer POWERRR rather than simplicity. It’s also been around for a few years.
Here are some PureScript Github stats:
Also, there are 1493 readers on r/purescript.
The PureScript numbers are about 4x smaller than Elm numbers. This tells us that Elm is definitely not the smallest community among FP alternatives to JavaScript, which is useful to know.
I took a sample of popular Elm packages, mainly those listed in the package index as well as those with > 150 stars on Github, and listed their latest release and latest development activity times below. By the way, I think the fact that the package site doesn’t show release dates is a good thing, but that is another discussion.
Library | Latest release | Latest activity
-------------------------------------------------------------------
rtfeldman/elm-css | 2018 | 03-2018
terezka/line-charts | 2018 | 03-2018
rundis/elm-bootstrap | 2018 | 03-2018
gampleman/elm-visualization | 2018 | 01-2018
-------------------------------------------------------------------
elm-lang/core | 2017 | 03-2018
elm-community/elm-test | 2017 | 12-2017
jamesmacaulay/elm-graphql | 2017 | 12-2017
elm-community/elm-webgl | 2017 | 12-2017
saschatimme/elm-phoenix | 2017 | 11-2017
rgrempel/elm-route-url | 2017 | 09-2017
etaque/elm-form | 2017 | 08-2017
gdotdesign/elm-ui | 2017 | 05-2017
evancz/markdown | 2017 | 03-2017
mdgriffith/elm-style-animation | 2017 | 02-2017
elm-lang/navigation | 2017 | 01-2017
-------------------------------------------------------------------
elm-lang/websocket | 2016 | 03-2018
elm-lang/svg | 2016 | 02-2018
elm-lang/http | 2016 | 01-2018
elm-lang/html | 2016 | 01-2018
NoRedInk/elm-decode-pipeline | 2016 | 01-2018
elm-lang/geolocation | 2016 | 08-2017
elm-lang/keyboard | 2016 | 07-2017
elm-lang/dom | 2016 | 07-2017
debois/elm-mdl | 2016 | 07-2017
thebritican/elm-autocomplete | 2016 | 05-2017
evancz/elm-sortable-table | 2016 | 12-2016
ThomasWeiser/elmfire | 2016 | 12-2016
elm-lang/mouse | 2016 | 10-2016
elm-lang/window | 2016 | 10-2016
-------------------------------------------------------------------
ohanhi/elm-native-ui | - | 01-2018
evancz/react-elm-components | - | 12-2016
Here are some numbers we can get out of this table:
In other words, 77% of popular packages had some kind of development activity within the last year, 35% had development activity in the three months of this year, and almost half had a release some time in 2017 or 2018.
Given the overall tendency towards slower, more considered release cycles in the Elm world, this is pretty good! It shows that development is ongoing and packages are not abandoned.
As an astute reader, you are probably thinking: “Hang on, but why are there so few popular packages in the first place?” JavaScript probably has 15 million libraries with 150+ stars on Github!
I don’t think this is particularly alarming, as there are a number of reasons to explain this.
Some of this is definitely due to the Elm community being relatively small. But in addition, Elm exists side by side with the existing JS efforts, and a lot of existing work can be reused via the JS interop mechanism. This reduces incentive to re-implement things in Elm.
Possibly the biggest reason, I think, is a difference in fundamental approach. While in the JavaScript world there is a huge number of libraries and frameworks with overlapping functionality (eg Underscore, Lodash and Ramda all provide functions for operating on collections), in the Elm world there is a deliberate drive to avoid such proliferation, and instead have a single library for any given purpose.
If you are considering or using Elm, I hope this post has given you a bit more clarity about the state of the Elm community and projects.
Based on these numbers, the Elm community is active and fairly large (and it’s growing!), and there is no reason to think that there is no development activity happening around Elm.