As for the “Is Elm in fact alpha software?” How could anyone think otherwise, maybe because 80% of the npm ecosystem seems to be 0.x packages, who knows? While I don’t think that the label reflects on the supreme quality of the language, for me it is clearly in public alpha. For one it’s been in pre-release 0.x since 2012 and every version has had breaking changes, sometimes very severe ones. Usually for a beta you consider the API mostly done and wait for clients to find the edge cases that are still lingering. But maybe that’s just me.
I don’t expect 1.0 to be on the horizon yet, Evan explicitly stated that he isn’t in a rush - “Get it right instead of getting it now”. This is the feature set I’m keeping in the back of my head.
My guess - based on the roadmap document - is that with 0.19 new use cases will open up and the community will start to experiment and I expect at least one minor correction/addition release to smooth out the edges of these. Maybe new use-cases will become obvious with that. So this’d be 0.20.
There are also a lot of Web APIs that are currently not directly supported but need to be integrated via ports, which might take another minor release to even out - maybe Elm doesn’t need more support for Web APIs? I personally am fine with the ports solution but I have a feeling that a lot of people might beg to differ. So kind of 0.21 - maybe not.
Rumor has it that the tool integration will be a priority in the future so some kind of language server integration might need another minor release - I’m not familiar enough with the elm-compiler to gauge whether this is necessary or already in place but I wouldn’t be surprised if this warranted a whole bag of workload that has typically been batched. So could be 0.22?
And then there’s also this interface/monad/implicit situation that is bothering people that might get addressed some day, maybe it won’t, so for good measure there’s at least one minor release. So potentially 0.23?
I think the availability of the planned integrated garbage collector for WebAssembly in the near future will attract a lot of attention to all sorts of “compile-to-js” languages, including Elm, of course. From a technical standpoint, if I were to implement the WebAssembly target I’d be darned sure that there will be no more hard breaking changes, so I put my baseline of 1.0 (maybe way) after that GC date availability. Seeing how there isn’t even a draft spec published as of today for that I wouldn’t hold my breath. I could be wrong and the code gen is in such good condition after the big 0.19 that adding WebAssembly before 1.0 might be an option, I don’t know.