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 community by numbers

Elm Github:

10557 repositories

823 users

Updated within last week: 309

Updated within the last month: 759

Repos with >100 stars: 75

Other Elm stats:

1301 packages in the package index

569 package authors in the index

12358 users registered on Slack

6145 readers on r/elm

653 users on Elm Discourse

How does this compare to other communities?

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:

73735 repositories

9779 users

Updated within last week: 1915

Updated within the last month: 4440

Repos with >100 stars: 475

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:

2836 repositories

184 users

Updated within last week: 93

Updated within the last month: 412

Repos with >100 stars: 18

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.

What about development activity?

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:

There are 31 popular packages in the table

15 had a release in 2017 or 2018

11 had dev activity in 2018

24 had dev activity within last year

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 ecosystem, 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.

In summary

If you are considering or using Elm, I hope this post has given you a bit more clarity about the state of the Elm ecosystem.

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 in the Elm ecosystem.