The company I work at (<a href="https://halogen.tv" rel="nofollow">https://halogen.tv</a>) has been using Elm in production for a few years now, we have around 90k LOC in Elm for the front-end, and it has mostly been a pleasure to work in.<p>The biggest upsides in my view are:<p>- The compiler is your best friend, the error messages are great, and you can enforce a lot of things with the type system. Have a list that should never been empty? Use a NonEmptyList, need to manage a selection? Use a Zipper/SelectList. Forgot to handle a possibility in a case statement? The compiler will catch it for you.<p>- Refactoring, even large scale refactors, are tractable and actually fun. Change the architecture in whatever way you want and follow the compiler errors, when you fix the last compiler error things usually work like you want!<p>- (Almost) No runtime errors. There are still a few rough edges where you can get a runtime exception, but they are uncommon.<p>It is not to say it is all roses, there are negatives as well:<p>- Lack of a roadmap or timeline, there is zero visibility into what is being worked on and when things may happen. This has been a deliberate choice by the core team I think because when they had a roadmap and parts of it didn't fit into the next release people were angry.<p>- Bugs can take a long time to be fixed, even if there is a PR that fixes it, it is unlikely to be merged.<p>- Experimentation is discouraged. The 0.19 update removed the undocumented, unsupported, here-be-dragons hooks that allowed writing effect managers except for repos in the elm or elm-explorations organizations on github. I agree with not allowing those modules to be published to the elm package site, but intentionally blocking people experimenting on their own is unnecessary in my opinion. Of course you can always fork the compiler and remove the restrictions.<p>- Ports are a pain. We generally use custom elements in place of ports where it makes sense, but they are really a hack around some of Elm's pain points, if I could do it all nicely in Elm I would.
I feel like Elm has been stalling a bit the last year. Communities in my area are less vibrant, and I feel like I hear about it less than say 2 years ago.<p>But where we used to have only 1 european conference in 2017, there are now at least 3. The list is still short, but growing and there is no crazy push for adoption so it's understandable.<p>Most of the core libraries haven't been updated for over 2 years, which is OK, since they work :). That's something that is quite far from the 'there has to be noise about it' habits from our tech world, and it might be one of the reasons it doesn't raise.<p>I still love writing it more than anything else. Elm makes me happy, more than anything else I've ever written, and that's all the counts for me
I haven’t followed Elm very actively for quite awhile. My workplace has a kiosk product where I, along with two others, did the entire front-end UI in Elm. Multiple screens, a full configuration interface and talking to a C# back-end. I think we’re on Elm 0.17 or Elm 0.18 still. At least at the time we shipped the first version, it was larger than any example app I’d seen and there weren’t a lot of non-toy applications or examples to compare against.<p>I certainly have overall positive feelings about it, with some frustrations (like any language really). I’ll say that the most stand-out thing about that code is that I can be off it for six months, come back to it and within an hour or so I’m back to comfortably knowing what’s going on.<p>I’d played around with functional languages before Elm; I’m a bit of a language nut. One thing that’s easy to forget is how intimidating the syntax can be to people who haven’t seen anything like it before.<p>I don’t know that I would do such a large project in Elm again though. Or at least, it’s not something I’d push for wider adoption within work; some has to do with factors like finding developers and fact it’s just really early days for the languages in the grand scheme of things. It needs more time to grow.<p>On the technical side, having subpages and doing the routing of messages can be really painful and I don’t really like the ‘huge flat data model’ approach. I abstracted the core routing boilerplate away by using a JavaScript templating library to make a boilerplate generator. You specify the screens you want and your main.elm gets generated from a template, with the appropriate message routing and handling for update and view calls and the structure of the top-level data model being generated for you into an Elm source file that actually gets compiled. it worked out for us, but I still feel like it’s working around a shortcoming of the language.
We at PINATA (gopinata.com) just built one of our newest features with Elm and Elm UI.<p>We finished it on time, which is already uncommon and especially when you don't have any real prior experience with a new language. We shipped it to production, and it has been working flawlessly!<p>The simplicity of Elm fundamentals make the language easy to learn, your code readable, and the solution to your problems almost obvious. On top of that, the "If it compiles, it works" feeling helps you trust your code and prevents most of the bugs introduced in refactors.<p>We aren't going back any time soon :)
Virtual Airwaves uses it for their web-based walkie-talkie WebRTC client with a custom endpoint (in Erlang!) that emulates radio.<p>(This link takes you to public channel 1)
<a href="https://cb.virtualairwaves.com/channel/1" rel="nofollow">https://cb.virtualairwaves.com/channel/1</a><p>More information here: <a href="https://virtualairwaves.com/" rel="nofollow">https://virtualairwaves.com/</a>
Concourse CI is another example of an application UI written in elm: <a href="https://github.com/concourse/concourse/tree/master/web/elm" rel="nofollow">https://github.com/concourse/concourse/tree/master/web/elm</a>
Elm has been out a long time and that is a really short list. Are there key reasons elm hasn’t seen more adoption? (Please don’t bother with comments about corporate drones etc.... companies are pretty good at taking advantage of a good thing)
We're in the process of a rewrite into Elm at the moment and have been loving every moment of it. Even the devs who are seeing Elm for the first time are enjoying it.
> Microsoft - the world's second largest software company, has used Elm for the frontend...<p>Should I take the list with a grain of salt? Just kidding, I'm just curious which they think is the first.
As I understand, some of companies don't know that they use Elm: they paid money for "some modern frontend" and got it written in Elm. It looks like deliberate technological lock.