The project was dead. The previous release was 7 years ago, where it stopped because the creator (same as author of this announcement) stopped maintaining it and since the community hasn't progress beyond a BDFL-model that's where it died.
So it was dead, it just now has been resurrected (and AFAIK with a whithered community in the meantime).
> your definition of dead is elms definition of stability
If Elm's definition of stability is keeping bugs and runtime errors for years, then I'm glad I stopped using Elm long ago.
Not only were the issues unaddressed, but for the past years the PR got no human response. For instance this one¹ fixes infinite loops in the core.
[¹]: https://github.com/elm/core/pull/1137
You are not entirely wrong, but there’s still a difference between being dead and very stable. Among the languages that compile to JS, I would look at ClojureScript as the prime example of stability rather than Elm. I mean Elm has removed features breaking compat; ClojureScript doesn’t do that.
I remember when Rich Hickey was asked "what feature of Clojure you regret and would like to remove?", he said: "None. Doing that would break stuff for people".
> your definition of dead is elms definition of stability, I think :D haha
The Elm community (or those who remained anyway) has a very cult-like way of spinning the current status quo as being good for you, even if it’s not.
Removing native JavaScript interop in 0.19? They’re just making it more pure! Sorry your project had to become impossible to continue on Elm, but this is the price we pay for a leader with vision.
No appreciable updates or bug fixes for 7 years? That’s just stability! Look how stable and mature it is that it can go 7 years without a release!
I've just stated working around that time when the cult was active. And I think that is the correct term for it because other languages that have been praised to the same level (ruby, rust, haskell) actually have things to show for and not just simplistic functional programming
Were people forced to use elm prior to a 1.0 release or something? Is Evan being accused of baiting people with a lovely experience and then bailing? I'm not really familiar, so maybe the ball was dropped in some kind of contract I'm not aware of.
If not, the expectations you and many have here seem pretty unreasonable. There's room for projects like Elm. Not every PL has to meet the demands of every single non paying user of the community.
> Were people forced to use elm prior to a 1.0 release or something?
Obviously not, but for a short while it felt like Elm evangelization was everywhere.
Ironically, the small group pushing it so hard at the company I was with at the time were arguing that it was very stable and production ready, despite being pre-1.0.
That argument switched for the 0.19 release, when it was argued that it was still early and changing a lot.
The argument switched again when they didn't make any progress for 7 years, which was supposed to be a sign that it was highly stable and mature.
> There's room for projects like Elm. Not every PL has to meet the demands of every single non paying user of the community.
Fully agree, but there's also room for opinions of people using the project. When a project encourages adoption and then pulls the rug out from under actual users, it's also okay for those users to be upset.
That's one thing the Elm project disagreed with. They had drama where even contributors were being handed 7-day bans for innocuous things like talking about native modules after the decision had been made to move away from them. Their subreddit was the kind of place ruled with an iron fist where any post that wasn't completely Elm-positive would be disappeared. There wasn't any room for disagreement in the Elm community and it partially collapsed on them when they pushed it too far.
Well surely evangelization doesn't absolve a technical leader for choosing to rely on a BDFL project that's pre 1.0.
People are welcome to their opinions, but I don't see a rug pull, I see a grad student who created a project that people enjoyed and a few companies offered to fund. Evan clearly wanted to maintain control over direction and stepping away from open source is completely acceptable and not uncommon for the very reasons on display here. People have completely unreasonable expectations from maintainers of free software.
Elm was very heavily evangelized for a while, and people were using it. Had there been a migration path through the breaking changes, it would have been a lot less disruptive.
Even if there had just been incremental bug fixes, I suspect between some and most people would have gotten over it, but seven years of silence is a very long time- long enough for an entire generation of new developers to start calling themselves seniors knowing only that Elm has stalled and shouldn't be used, because the controlling developers are unreliable and prone to giving the appearance of abandoning the language.
I've head the displeasure of working with more than one Elm zealot in the past, and also allowed a service to make it into production (which was a huge disaster). Due to that, I know a lot more about Elm than I'd like to.
I think the "Elm is stable not dead" seen from the few people that stuck around with Elm is largely cope for being stuck with an unmaintained language. Languages, like all other pieces of software need maintenance or they degrade in the world moving around it (e.g. there is/was no official aarch64 build of Elm in the period of non-maintenance).
I also would say that Elm is still largely unfit for most realistic production scenarios, unless you have the manpower to build everything from scratch, as interoperability with the outside web world (JS/TS) is an afterthough, and by some parts of the community not desired.
This, 200 times. No weekly news does not mean dead. In some specific places like this one, it means stable.
(And also arguably, for good or bad reasons, why it will never become mainstream).
I'm not deeply involved in the community, but I know people who were, and my understanding is the removal of custom infix operators lost a lot of community support. Very popular feature removed specifically because the creator of the language didn't like it, and despite large community cries for it to remain.
In my eyes, it was probably the right decision technically, but deeply unpopular and probably the wrong decision socially.
Not exactly removed, the feature was still there, but could be used only if your module was in Elm namespace (the compiler checked). It was kind of a "no soup for you" situation, which bothered me.
Elm served its purpose for me - an example of a small language with great tooling and error messages. And the strictness was helpful in learning to do things the "proper" way in the Elm model, even if I did reach for escape hatches in later projects. E.g. writing a notion-like application in Elm, I had to walk through my data twice - once to render it and another time to collect cache misses. With hyperapp, I broke purity a little and accumulated the information on the side.
I’ve been using Elm professionally at a very profitable, lean company the last two years. (Didn’t know it coming in, but had enough React, Redux, and other experience to learn quickly.)
The Elm community would call this a feature. How much React code you wrote 6-8 years ago will work perfectly and identically with today’s React toolchain?
It’s a whole different set of values. Good React code in 2026 looks like any compiling Elm code since 2016.
I don’t like being disagreeable, but just no. On both of these.
First, the comparison is perfectly fair. Elm 0.19.1, 6 years ago/0.19.2 today, React 16.1 6 years ago/19.2 today. Literally identical conditions. What is unfair? Which required app developers to do more work? Which saw more security issues among its releases?
Second, not needing updates for 6 years, and having zero security holes in that time, is the definition of stability. This isn’t really a matter of opinion or preference.
I do see the appeal in other frameworks (ecosystem size, easier to find devs), but the appeal of Elm truly is stability. And it really is that much better than nearly everything else that runs in the browser, in that regard.
No framework that allow you to use actual JS (or “transpiles” but gives you the full JS API, like Coffee/TypeScript), will ever offer the level of stability Elm offers (aside from maybe the web standard APIs on which Elm is narrowly built).
Oh yeah, no shade against the language itself. I had fun learning it and using it for some toy development years ago - and the TEA still exists in multiple library implementations. Just wild to see the creator of the language emerge from the fog like that.
Same, I basically assumed the community around it had died out. But i guess the sole maintainer/creator is still around.
I never used elm except for doing a tutorial, but lately I've built a full stack gleam app (using coding agents for the most part, with a lot of control in the beginning on the structure of the code) and have found that process works quite well
I can understand why developers might not care for DSLs, especially when they force a choice between entirely different toolsets and toolchains.
However, I feel people often miss the real value of a good DSL: it's not about the syntax, but about providing hardened semantics that can bolster or guarantee desired qualities. Elm, for instance, provides value insofar as it makes producing runtime exceptions significantly more difficult.
Personally, I hope languages like Lean, which provides exceptional support for creating DSLs within the language, renew interest in semantically sound DSLs, especially if we insist on using LLMs.
I recently learned about that too, how Lean provides ways to create new language syntax and DSLs, which is (on the surface) similar to Lisps like Racket. It's like operator overloading but way more flexible and general purpose. I'm wary of such language features, convenient for specific purposes (like working with vectors or matrices) but I'm afraid it's too powerful for normal usage, if everyone starts building their own DSLs and syntaxes, it would likely make the typical codebase difficult to read and understand. For example, the C++ template metaprogramming madness, it can be used responsibly but in my opinion it was detrimental to the language ecosystem.
Byte encoder/decoder in Elm are opaque, so their implementation is hidden. A smart compiler, such as the one I am writing, can take advantage of that with compiler intrinsics that replace the implementation with something that the compiler itself optimizes.
So it was dead, it just now has been resurrected (and AFAIK with a whithered community in the meantime).