23 ms·
Ask HN: What Happened to Elm?
I remember years ago I spent sometime to learn it as I was curious how a purely functional front-end language feels like, and genuinely thought it had a good chance of being massively adapted in the near future, especially with what seemed like a vibrant community.
However, I got distracted by a data science career and toolchain. Am in the process of starting my first SaaS as a solo founder and was looking at what languages to use and was surprised to see that Elm...seems dead? As an example I did a search on hackernews and it hardly got mentioned in the last year (both comments and posts!)
Am wondering if anyone can provide some more light on what happened to the language? Is it a safe bet? And what is a suitable good replacement for it?
- Chadtech_ 4y agoI still program in it for my day job, as I have at various companies for the last 8 years. I still love it! It has been fairly quiet as far as development is going. But I do know there are things in the works for another big update.
- josephcsible 4y agoIn version 0.19, the core team hardcoded a whitelist into the compiler of which projects are allowed to use native code (which happened to basically be the core team's pet projects). This basically crippled the language beyond usability for everyone else. https://news.ycombinator.com/item?id=22821447 https://news.ycombinator.com/item?id=22821447 https://news.ycombinator.com/item?id=17842400 https://news.ycombinator.com/item?id=17842400 https://news.ycombinator.com/item?id=16510267 https://news.ycombinator.com/item?id=16510267 As for a replacement, I'd look towards Haskell. At a language level, it looks really similar to Elm, and it's been having a lot of work done towards being more practical on the Web lately, e.g., GHC 9.6 getting a WASM backend merged.
- satvikpendem 4y agoFYI use double newlines between paragraphs/links, otherwise it shows up as one line. I completely agree with you, the way the Elm team handled it was not conducive to collaborate usage of their language, it was more like only they wanted to use it fully.
- matsemann 4y ago[flagged]
- PragmaticPulp 4y ago> This is FUD. For any normal web app you don't need that functionality, just use the built in "ports" concept to interface with JS stuff. The change was handled extremely poorly. I only knew one team using Elm in production at the time. They went from being huge proponents of Elm to recommending against it after the 0.18/0.19 changes and drama upended a lot of their work. There may have been a "right" way to do things under the new version, but breaking major functionality in a minor release without warning is a sign that you don't really care about your users. Changes like this require discussion, warning, and long transition periods. It was bad enough that they got it wrong, but then Evan doubled down by dedicating the opening of his next conference talk to mocking the users who were unhappy about the changes: https://www.youtube.com/watch?v=uGlzRt-FYto https://www.youtube.com/watch?v=uGlzRt-FYto The part where he mocks a commenter for asking "Is Evan killing Elm's momentum?" is weirdly prescient, given that these events ultimately did mark the slowdown of the Elm community. Elm development came to a near halt about a year later. > And it being open source means nothing stops you from forking it and adding your own native modules. Reason no one has done it is it's no need, and doing thinga that way would break the promises the compiler makes about no runtime bugs. I disagree. Maintaining an in-house fork of a compiler just to accomplish what could be done with past versions isn't a reasonable suggestion. The reason people weren't maintaining in-house forks of the compiler just to keep their projects going was because that's a silly thing to do when you could just use any number of more reasonable mainstream projects that don't require such extreme lengths. It's weird to see people casually suggest "Just maintain a fork of the compiler" as a reasonable solution.
- deleted 4y ago[deleted]
- EdSchouten 4y agoAlso the fact that their package manager is strongly coupled against https://package.elm-lang.org/ https://package.elm-lang.org/. There is no way to override it. This means that if that package site ever goes down, you will be left with an unbuildable project. Seems pretty risky to me.
- Pet_Ant 4y agoI mean you should be proxying/caching your repo anyway, non? Even just to save on bandwidth.
- lmm 4y agoIt's a lot more fiddly to do that if the package manager doesn't support you doing it. (In fact it might be impossible if it's using HTTPS)
- Throw999999 4y agoNo.
- the_gipsy 4y ago> This basically crippled the language beyond usability for everyone else. This is not true. You can argue that it was perhaps the downfall in terms of contributions and popularity. But you don't need native code for writing apps in Elm.
- imustbeevil 4y agoYou don't need a hammer to hit a nail, but if you hand me a screwdriver I'm going back to Node.
- matsemann 4y ago[flagged]
- the_gipsy 4y agoYea, exactly. I have written a complete functional game in Elm, with multiplayer over websockets, push notifications and whatnot. It has daily users to this day. I never needed "native" code. Maybe some decisions were wrong, as I said. Elm is not popular today. But they are also right in some aspect: I don't need another TypeScript (but with weird syntax).
- JoeyJoJoJr 4y agoWould you mind sharing a link to you game :)
- danabrams 4y agoI’ve written quite a bit of elm professionally and it was an issue for me and was a contributing factor (but not sole factor) to leaving Elm behind. A viable solution to my problem in professional contexts would have been private packages, which I believe Gren supports, so perhaps Gren would be a solution today, but I’ve moved on. That said, what’s happening with Gren is interesting and I applaud it.
- fyzix 4y agoThe fact that the maintainers made a whitelist for their projects disproves your point.
- scottwick 4y agoI've never used Elm or interacted with the community but reading some of those posts remind me that the B in BDFL is quite important.
- carapace 4y agoEvan's hella nice. Some folks just really really don't like being told "No." (There are comments upthread calling the Elm community "happy cult" because they said "no" so nicely!) The complaints you hear about Elm are pretty much all of the "Evan said no" ilk. What you don't hear is are actual bug reports, eh? People aren't kvetching about how their Elm apps broke, eh? That silence is deafening, once you listen for it. Elm works. It may be the Easy-Bake Oven of web dev, but the things it cooks are perfectly edible! (Following that metaphor, most JS frameworks, etc. produce muffins with bits of broken glass in them.)
- edflsafoiewq 4y ago"Nice" and "benevolent" are not the same thing.
- carapace 4y agoDo you have an actual point to make, or are you just being pedantic for fun?
- xtian 4y agoSome of the most manipulative and self-serving people you’ll ever meet are “nice”.
- carapace 4y agoSo, is that a claim you're seriously making about Evan? - - - - Not to be arch, but this whole line of discussion is uninteresting to me. I'm glad to discuss Elm, but I don't want to hear unfounded character assassination of a kid who's only guilty of being willing to say "no" to people who want to change his language in ways that he's not into. From my POV Elm stands as a serious challenge to the entire JS ecosystem. I keep asking, "What's the business value argument for not using Elm?" and no one has a good answer.
- ambrozk 4y agoYep. And the core team has that "happy cult" vibe where they think that if they're (passive-aggressively) polite enough, they don't have to worry about anyone's opinion outside their insular little group. I tried to use it for a little project about a year ago, ran into some problems, and, searching around, found my problems were 1. not unique to me, and 2. were definitely not going to be solved by the language designers, despite a lot of people having the same suggestions. Their attitude is "either you design your app how we'd prefer you to or you don't use Elm at all." This doesn't work in any other technical project, but they think it's going to work for them for some reason.
- hitekker 4y ago"Happy cult" vibe is exactly how describe that faux-niceness they throw around. Thanks for coining that phrase.
- jopsen 4y agoHonestly, the boldness of the opinions is also what makes elm well designed. I never really used it, but I see plenty of other languages that are perhaps too much driven by consensus rather than vision.
- mst 4y agoOpinionation is often useful but it's best implemented with an escape hatch of some sort for when you run into a sufficiently weird situation there's not actually a sensible way to deal with it. I don't particularly mind if a project holds their opinions sufficiently strongly that they mark the escape match big red letters with "BY USING THIS YOU ARE VOIDING YOUR WARRANTY, IF IT BREAKS YOU GET TO KEEP BOTH HALVES" and then tapping the sign any time somebody asks for support with using it, but it should still -exist-.
- hgsgm 4y agoThe escape hatch is Haskell. The only reason Elm exists is to remove escape hatches from Haskell.
- 4y ago
- dividedbyzero 4y agoDoes this still assume a separate TypeScript/React frontend or the like, or can you actually do the whole frontend in Haskell?
- Chadtech_ 4y agoYou don't need native code to be productive in Elm. Elm is perfectly useable without it. Use of native code was not widespread before 0.19 anyway. I would know. I was working on a large native code project that was killed by 0.19. It sucked for me that my project could not continue, but, I can't say that it has made much of a practical difference when it comes to making software applications. My project was called "elm-canvas" and it was about providing canvas support. Since 0.19, other people have found implementations of the HTML canvas element that do not rely on native code (Like Joakin's great 'elm-canvas' https://github.com/joakin/elm-canvas https://github.com/joakin/elm-canvas). For my own HTML canvas based software projects, I have been able to find my own non-native code implementations that work pretty well. So, I think I faced a disproportionate amount of this problem, and I can't even say it has made much of a difference to my own productivity in Elm (and I have written a lot of Elm).
- satvikpendem 4y agoTypeScript won. I was watching this video by Evan Czaplicki the creator [0], and what struck me was that back then, Evan was absolutely right. He was right that in the high level, we needed a typed JS, but he was wrong in the lower level details, at least in terms of market share. TypeScript won precisely because it doesn't start off as intimidating for JS users, while others like Reason and Elm died off, but ironically TS is way more complex than either of the others in its type system. Another factor for this is that Syntax Matters™. When Gleam (language on the Erland runtime, cousin of Elixir) started out, it had a Haskell-like syntax, but this was found to be a barrier for adoption, so when the creator changed it to be more C and Rust-like, the adoption rate picked up significantly [1]. In the same vein, perhaps Elm was just too esoteric for those coming from JS. I strongly believe the reason Rust became so popular is that it's an ML in C clothing, rather than being a pure ML like OCaml. With curly braces and all, it's more accessible and then people start learning about the more functional features like maps, folds, and so on. Elm also had quite a rocky history with the BDFL not allowing other people to use the features the compiler maintainers could use, such as escape hatches, which are documented in other parts of HN. This article [2] is a particularly good overview of why some people left. [0] https://www.youtube.com/watch?v=oYk8CKH7OhE https://www.youtube.com/watch?v=oYk8CKH7OhE [1] https://news.ycombinator.com/item?id=22902462#22903210 https://news.ycombinator.com/item?id=22902462#22903210 [2] https://news.ycombinator.com/item?id=22821447 https://news.ycombinator.com/item?id=22821447
- jokethrowaway 4y agoTypescript didn't win anything and its type system doesn't deliver nowhere close to elm s value. Elm was simply to risky given how quickly the maintainers fenced off native access.
- nsonha 4y agoAnd elm delivers what? Some people writing some apps that they claimed to have less bugs and are easier to maintain? Who uses these apps? Who can tell? It’s all hearsay.
- 4y ago
- jokethrowaway 4y agoIt truly was the best frontend language Unfortunately or fortunately, beauty and utility emerge out of decentralised chaos not out of dictatorship, no matter how enlightened
- fyzix 4y agoMaintainers were too tenacious imo. Inflexible to a frightening degree. I liked the architecture and used it extensively with f# + fable + elmish but these days...I'm using sveltekit + typescript for everything frontend, for it's unmatched velocity.
- rstarast 4y agoThere's an active fork of Elm in https://gren-lang.org/ https://gren-lang.org/.
- gregors 4y agoThey made HUGE mistakes not listening to feedback from their userbase. It's still a cool piece of tech, but they wouldn't budge on a lot of things that were dealbreakers to a lot of people. That's their right to do so of course. In a very competitive area of frontend, people chose to spend their effort and time elsewhere.
- vosper 4y agoThey essentially stopped development at 0.19 saying that it was good enough, development went quiet, and then the lead developer went off to work on other things.
- savanaly 4y ago>went off to work on other things I heard he had a baby in recent years, is that what you meant? ;)
- vosper 4y agoNo, I don’t know anything about his personal life, so I wasn’t alluding to that. I think at some point in the last year he posted about his explorations with a new server-side language, maybe something to do with database drivers. Unfortunately I can’t find it.
- beefman 4y agoAppRun is a JS/TypeScript library inspired by Elm: https://apprun.js.org/ https://apprun.js.org/ Does very well on comparisons of performance and code size: https://medium.com/dailyjs/a-realworld-comparison-of-front-end-frameworks-2020-4e50655fe4c1 https://medium.com/dailyjs/a-realworld-comparison-of-front-e...
- GiorgioG 4y agoElm is and always has been (AFAIK) a one-man project. It's not suitable for anything that you depend your livelihood on. Look at Svelte, Vue, React, Angular.
- matsemann 4y agoThere were (are?) multiple core contributors. A person at my previous company even got to spend one day a week or something contributing. But even with multiple people, I did get the impression it's not exactly a committee when it comes to what changes get merged.
- epolanski 4y agoI really don't like such comments that like any nuance. I know multiple companies that use Elm and many people depend on them for their livelihood. I would not recommend it due because it has never been a really open source project and only the core maintainers were allowed to write libraries that interfaced with JS apis without the need of ports. Still, it baffles me how many people would chime in and feel compelled to comment regardless of the fact that hundreds of projects out there make money with Elm.
- eddsh1994 4y agoAnd if the sole developer of Elm forgot to pay for their domain that hosts packages for Elm all those projects would be broken forever.
- BeetleB 4y agoWhen your parent said "one-man project", he is referring to Elm, not the project using Elm. Elm was/is highly dependent on one person.
- triyambakam 4y ago> hundreds of projects out there make money with Elm Hundreds? I think that's overshooting it.
- 4y ago
- innocentoldguy 4y agoI loved working with Elm. For me, it was the best of the frontend frameworks due to its functional, Haskell-like nature (Edited to add this comment: totally my subjective opinion, of course). I've found Phoenix's LiveView to be the best alternative for me so far.
- matsemann 4y agoAfter working 3 years using elm exclusively for the frontend, it felt dirty going back to react when changing jobs. The previous huge project had basically zero bugs. The code was nice to work with, could trust things were working after a refactor without even clicking around in all interfaces. Could trust the typing and forced handling of all state to notify if you broke something. Of course, no escape hatches meant you had to program things the one correct way, no shortcuts possible. While the react codebase I work in now is so brittle in comparison, and scary to make changes in.
- innocentoldguy 4y agoThis was my experience as well. Elm is/was damn solid.
- spiderdev420 4y agoI couldn't have said it better myself. The peace of mind being able to refactor often even in large projects and not be worried about bugs or runtime errors once the project compiles again in incredible. I couldn't imagine having such a large project/codebase in react and need to do a huge refactor...
- jedberg 4y agoLooks like the last update was in 2005: http://www.instinct.org/elm/#download http://www.instinct.org/elm/#download Oh, you weren't talking about the email client. :)
- quickthrower2 4y agoMy opinion: I wouldn’t use Elm as a solo founder, as you want to put your energy into shipping and Elm, while very good will probably slow you down when you hit the thing it cannot do, and then you need to fork it and change the core code. React on the other hand, has a vastly larger ecosystem already and is designed to work well with 3rd party code. Middle ground is using an Elm-like architecture within another framework. The keyword here is “TEA architecture” where TEA means The Elm Architecture, or also MVU (Model View Update) Elm is excellent and has done a lot of good for the front end world through knock on effects. It is good fun to use. I have a few projects based on it open source. So I am not against Elm I just think it will be annoying if the goal os to ship fast.
- satvikpendem 4y ago> “TEA architecture” The Elm Architecture Architecture ;) https://en.wikipedia.org/wiki/RAS_syndrome https://en.wikipedia.org/wiki/RAS_syndrome
- quickthrower2 4y agoI like tea (and coffee) though!
- klabb3 4y ago> I wouldn’t use Elm as a solo founder, as you want to put your energy into shipping and Elm, while very good will probably slow you down when you hit the thing it cannot do This was me a couple of years ago and I even gave it a fairly serious shot. It felt like the ecosystem buy-in was huge, and once I ran into something like a missing CSS rule it was a mess. And iirc all of that code would have been basically useless for portability in case I needed to switch. Fortunately my tingly senses told me to stay away, and now I really feel like a dodged a bullet. The main thing I consistently dislike with JS/TS is that there aren’t any easy ways to work with immutable data. I’m not the kind of person who needs full-on paradigm, I don’t mind getting dirty with an imperfect language, I just want the error-prone and common use cases to be decently supported.
- pharmakom 4y ago
- schemescape 4y agoI'd never heard of Elm until I ran across Iced [1] ("Iced is a cross-platform GUI library focused on simplicity and type-safety. Inspired by Elm."). Has anyone who liked Elm tried Iced? Any thoughts? I've been checking out various GUI libraries for Rust, but I don't have time to investigate them in depth--so I thought maybe someone might have already done the investigation for me :) [1] https://docs.rs/iced/latest/iced/ https://docs.rs/iced/latest/iced/
- mrozbarry 4y agoI've developed a few Elm apps, and tried Iced. I liked Iced, but I'm not a proficient rust developer, which really limited what I could do with it.
- johnny22 4y agosystem76 is using it to develop their new cosmic desktop environment for linux. The code is here https://github.com/pop-os/cosmic-epoch https://github.com/pop-os/cosmic-epoch We'll see how it starts panning out this year or next.
- chris_armstrong 4y agoWhen you look at Elm with similar projects, like Melange or Rescript, they’re all “dead” in the sense that they aren’t the moving targets that most people expect of the Javascript ecosystem. That said, they are still under active development with their own small communities achieving what they set out to do, and no more. No expansive rewrites or fancy new features. Compare with Typescript, which always is “improving” because it’s trying to provide type inference around a loose Javascript model, so there’s always more complexity to be added.
- PragmaticPulp 4y ago> they’re all “dead” in the sense that they aren’t the moving targets that most people expect of the Javascript ecosystem. Are we talking about the same Elm? The 2019/2020 uproar in the Elm community was due to the Elm team making significant, restrictive changes against the will of the userbase: https://news.ycombinator.com/item?id=22821447 https://news.ycombinator.com/item?id=22821447 > That said, they are still under active development I don't know who would consider Elm to be under active development, given that the last release was in 2019 and most of the repo hasn't been touched for 2 years or more: https://github.com/elm/compiler https://github.com/elm/compiler
- G4BB3R 4y agoEvan works privately and sync with public repo every release.
- no_wizard 4y agoI don't think Rescript[0] in fact they are pushing active updates. I think they are trying to make a push into supporting the ocaml ecosystem as well, and not just be a compile to JS language [0]: https://rescript-lang.org/ https://rescript-lang.org/
- satvikpendem 4y agoIronic, when they could've just stuck with Reason and gotten all of that for free instead of reinventing the wheel.
- jmclnx 4y agoFor some reason I thought they changed the license, thus people leaving it.
- josephcsible 4y agoIt wasn't the license. It was adding pseudo-DRM to the compiler. (Not quite real DRM, since people were technically capable and legally allowed to create a fork without it.)
- akamaka 4y agoElm was fun and I learned a lot from it, but a purely functional language doesn’t fit cleanly on top of a real-world web browser environment, which is rife with states and side effects. It was possible to build some elegant projects with Elm if you accepted the limitations, but the messy reality of web apps doesn’t fit within its pure model of the world.
- knewter 4y agoI found myself able to build more impressive things with elm than without, quicker, with no runtime errors
- xarvh 4y agoWe wrote some of the most complicated web pages ever in Elm. It manages complexity to a level that imperative languages (of, gods forbid, OOP) cannot even dream of.
- tasuki 4y agoPrecisely because the web browser environment is rife with state and side effects, that is exactly the reason why a purely functional language is a good idea for it.
- roebk 4y agoElm is perfectly stable and usable. It's a shame there's not a little more communication / a wider core team working on the the parts of Elm that could reduce the friction for the average web development task. There's Gren https://gren-lang.org/ https://gren-lang.org/ which is a fork of Elm. Gren has nodeJS and web storage a support, along with a package manager which can install from github (iirc). I'm eagerly watching the development of this project, hopefully it can provider value and grow into a strong alternative. I loved working with Elm. It forced me to grow as a developer and appreciate all the benefits advantages that comes with a pure functional programming language. I truly hope Evan can start to win back the lost mindshare.
- terminatornet 4y agoI'm excited for the progress on gren as well. It's very clear the lead maintainer wants to build in regular updates into the dna of the language, as evidenced by the very frequent updates on zulip https://gren.zulipchat.com/ https://gren.zulipchat.com/
- erlend_sh 4y agoThere is also Roc-lang: https://www.roc-lang.org/ https://www.roc-lang.org/
- rishav_sharan 4y agoMade by the same people who maintain elm. So there is always a chance of similar mismanagement
- 59nadir 4y agoPersonally, I wouldn't trust anything that Richard Feldman was involved in. He was instrumental in making the Elm community a hostile and unwelcoming place[0]. To my recollection he has never come out and admitted that the Elm core team was wrong in how they handled any of those things, so why should anyone assume any better from Roc or anything else he's involved in? 0 - https://github.com/gdotdesign/elm-github-install/issues/62#issuecomment-415860947 https://github.com/gdotdesign/elm-github-install/issues/62#i... (see edit history for full impact)
- softinio 4y agoI think the alternatives to consider would be: - https://www.purescript.org/ https://www.purescript.org/ - https://reasonml.github.io/en/ https://reasonml.github.io/en/ Or like others have suggested typescript and the usual libs and frameworks
- yawaramin 4y agoReason is mostly not about JS compilation any more, the alternative is really ReScript.
- alphanumeric0 4y agoI just applied for an Elm job a month ago. It's not dead, it's just super niche.
- squeegee_scream 4y agoMy professional Elm experience is as follows: * 2017 - 2019 * 2021 - 2023 * 2023 - ?? (I'm starting a new job next month with Elm) In my experience Elm isn't dead. But it is good enough. The lack of rapid changes, updates, etc are a feature, not a bug. I hated working in React TypeScript and what felt like constant updates to major libraries, including React and TS themselves.
- eckza 4y agoAre you, by chance, a "washed-up local"?
- squeegee_scream 4y agoIndeed I am
- culi 4y ago> The lack of rapid changes, updates, etc are a feature, not a bug This position in the Elm community is epitomized by this site: https://iselmdead.info/ https://iselmdead.info/
- savanaly 4y agoPardon the excessive length of this response but I think about Elm all day every day and love the chance to talk about it on HN! Currently and for a couple months I've spent several hours per day working on my side project in Elm. Over the two years before that my usage was lighter, probably averaging out to a dozen hours per month. I consider myself experienced in Elm and my history with it goes back to basically the launch of 0.19, the last major version (which is four years old now, I believe). Elm the language: Generally rock solid for my purposes as a single dev making "home cooked" apps and games. There are very occasionally things where I'm held back by its inflexibility, but these are more than made up for by the positives. What elm has going for it is that it's totally type safe (not just mostly type safe like typescript) and that Evan and the community did a really good job designing primitive libraries for getting stuff done that have all the virtues you could wish for in other languages. Like great error messages, trying to make sure there's only one way to do something, etc. Elm the community: Extremely welcoming and helpful if like me you stick to Slack help and discussion channels. In Github comments threads and on forums like HN things can get spicy though. Elm is generally not as welcoming to folks looking to blaze their own path and build empires of their own as most of the JS ecosystem is. It's not that it never happens or can't happen; people do build their own large empires within Elm (I'm using Lamdera at the moment which is a fork of Elm making it work on the backend as well as frontend and it's definitely built by someone who had a vision related to Elm but which required drastic changes). It's just that that's less common and harder to do here than in other languages. I think there are a lot of folks like me though who are content to paint their masterpieces "within the lines" so to speak and even find comfort in the limitations. It's way easier if you are like me and find yourself doing like I said "home cooked" apps that you can cut scope on if you have to because of the language. One final note which I've said before and I'll say again: I don't think the language is dead but rather "done". It works great for making a frontend app, and can continue to exist in this state through the year 2100 as far as I care. The creator has promised security updates and perhaps some non-foundational improvements down the line, and that's good enough for me. I'm much happier with that arrangement than with, say, React land where for all you know next year they're gonna release Hooks 2: Electric Boogaloo and you have to learn a bunch of new stuff and all the old libraries will have to update.
- kn8 4y agoReScript - super good, actively developed: https://rescript-lang.org/ https://rescript-lang.org/
- k__ 4y agoYes. I never understood why ReScript didn't get more love.
- satvikpendem 4y agoThe split between the Reason and BuckleScript/ReScript dealt, I believe, a fatal blow to both communities which were now split. It's a shame, I could have seen Reason in the same space as Rust, an ML-like language (well, literally an ML via OCaml) except without a borrow checker. It would have been great to use it in place of TypeScript on both the server and client, but now ReScript is incompatible with Reason, by design.
- k__ 4y agoI never understood the reason for the split. Was it because native had different requirements than JS? Why couldn't they both play along and target WebAssembly?
- satvikpendem 4y agoIt seems like they simply wanted to add stuff that might not have been possible without changing ReasonML, and so they built their own framework and rebranded it to ReScript: https://ersin-akinci.medium.com/confused-about-rescript-rescript-reason-reasonml-and-bucklescript-explained-ab4230555230 https://ersin-akinci.medium.com/confused-about-rescript-resc...
- mjaniczek 4y ago> Is it a safe bet? Yeah, for web apps it's a good choice if you want simple robust maintainable code. I mean, for quick throwaway scripts I'd go with JS (as a Bash replacement), but for web apps, Elm strikes a really good balance of features. The language is not dead, the community mostly lives on [Elm Slack](https://elm-lang.org/community/slack https://elm-lang.org/community/slack) as opposed to Reddit or StackOverflow.
- zem 4y agothe core team took a "my way or the highway" attitude, and people picked the highway. the language is still around and being actively developed but the community has largely moved on.
- z5h 4y agoAs someone who has done commercial and personal work in Elm for many years, I know that lots of people are actively and productively using it with fewer issues than most other mainstream languages. Of course there are issues in any language or ecosystem So what is HAPPENING with Elm, is people are productively using it.
- culi 4y agoCan you give examples of any companies that are still using (as in writing new code not just maintaining old Elm code) Elm in 2023? StackShare doesn't list any recent ones
- z5h 4y agohttps://open.spotify.com/episode/1rOLlmSIlQ44MrtQ0PaSO9?si=7nCTMh2EQNCWrD30glOTNA https://open.spotify.com/episode/1rOLlmSIlQ44MrtQ0PaSO9?si=7...
- jxxcarlson 4y agoAlso, brilliant.org and exosphere.app, both with large and active Elm code bases. I worked for brilliant for a time and now work for exosphere. Also, my own project, https://scripta.io https://scripta.io. About 45kloc of code split between the app (lamdera/elm) and the MicroLaTex-to-HTML compiler (elm). Have been working with Elm for five years and have been happy with both the experience and the results. E.g. radical refactors of core data structures are simply no big deal.
- mjaniczek 4y agoSome Elm companies I know of are (writing new code) Permutive, Scrive, Vendr, DX, and (not sure what the current status is) GWI, Holmusk, NoRedInk, Dividat, Brilliant.
- danbruder 4y agothis question comes up often enough there is a site dedicated to it: https://iselmdead.info/ https://iselmdead.info/. for the open minded: building in elm will change the way you see software development. like the matrix red pill blue pill scene - you won’t be the same afterwards
- adamrezich 4y agoisn't that a bit of an exaggeration, especially if you have experience with other functional languages? maybe if you've only ever written JavaScript prior to trying Elm…
- fineIllregister 4y agoI programmed in functional languages prior to writing Elm, but the reactive part was new to me. I found the signals primitive to be pretty mind-blowing. I haven't programmed in Elm since then, and some time ago they simplified that feature into other language primitives, so I'm not sure what it's like now.
- truculent 4y agohttps://iselmdead.info/ https://iselmdead.info/
- slimsag 4y agoCheck out Roc[0][1] by Richard Feldman; it's early-stages (perhaps earlier stages than Elm?) but from everything I've seen it looks a bit like a spiritual successor to Elm, though focused more on native applications (but still seems to have its sights set on webassembly support too) [0] https://www.roc-lang.org https://www.roc-lang.org [1] https://github.com/roc-lang/roc https://github.com/roc-lang/roc
- satvikpendem 4y agoIronic, given what Feldman said about other Elm forks. https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/#forkability https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/#forka...
- G4BB3R 4y agoRoc is not a fork. And Evan itself don't care about forks, unless it uses related name or logo.
- srhtftw 4y agoI tried using Elm for a side solo. Lots of things to like about it and I learned quite a bit. Played with a lot of toy projects. But I hit a wall when I wanted to use some templating and communication modules written in Javascript. Working with things like protocol buffers and externally generated html through ports was very frustrating. As I kept working around Elm's limitations I began feeling this wasn't a language I could use part-time. I either needed to go "all in" or find something that made it easy for me use external Javascript. Looked at giving dillonkearns' Typescript api product a try but his e-commerce site crashed... So now I'm trying out Yew, Rust and WebAssembly. I miss Elm's compiler but wasm_bindgen is way easier to use than Elm ports.
- bargainbin 4y agoTo add to the discourse here, it's worth considering that since Elm came about WASM has come along in huge strides, and at this point you're faced with a "Why learn Elm when I can use <lang I already know> and compile to WASM". See projects like Yew and Blazor.
- srhtftw 4y agoAgreed. Also think Elm could benefit a lot from good interop with Wasm.
- yawaramin 4y agoWASM is still not realistic for most apps especially if you care even a little about bundle size.
- Existenceblinks 4y agoAssemblyScript produces the smallest binary and then Zig. Rust produces bloat binary by default but can be small by https://github.com/johnthagen/min-sized-rust https://github.com/johnthagen/min-sized-rust for hello word type of app. I have no idea if the gc proposal could make those langs produce smaller binary size. That said, .wasm is generally smaller on wire and faster-to-execute on host.
- yawaramin 4y agoSmallest binary compared to what? What will a typical AssemblyScript bundle size be like if it has similar functionality to a typical React app, let's say a todo app implementation?
- Existenceblinks 4y agoSmallest compared to any of current capable compile-to-wasm langs. How dare you bring up React, when it's already lose to Solid which is apple-to-apple (js). React is freakin bloat. Numbers of functionality is the problems produced by itself and then solve its own problems. If you ask me to compare to React for todo app, wasm with gc + interfacing with DOM, is going to blow React out of water in both size and performance (logic wise). DOM-wise, thing like "signal" already won anyway. I honestly don't understand why you bring up React.
- xupybd 4y agoF# fable Elmish is really nice and similar. I've heard good things about purescript too. I love using the SAFE stack in F#. You get the Elm architecture, and the same language front and back. You can even have shared code between the two. Fable remoting makes api calls as easy as an async function call. The back end has access to most of the .net eco system. F# isn't the purist choice but it's a nice pragmatic functional first language.
- niclo 4y agoSadly people will keep overlooking F# in favor of literally anything. It is an amazing language within a solid and productive ecosystem that in my opinion just feels good to use. It's a shame not many company are betting on it despite it being rock solid for almost two decades.
- cperciva 4y agoMost users switched over to pine, but the final nail in its coffin came when mutt was released; mutt stills sucks, but it sucks less.
- cpach 4y ago\(^▽^)/
- spion 4y agoA while ago I picked up PureScript again, and it has a new life. The tooling (both cli and editor) has matured, the number of code examples has grown a lot. Its quite pleasant to use! All the tools and other goodies are listed here https://discourse.purescript.org/t/recommended-tooling-for-purescript-in-2022/3206 https://discourse.purescript.org/t/recommended-tooling-for-p... What I found particularly fresh for a Haskell-like language was the cookbook (https://github.com/jordanmartinez/purescript-cookbook https://github.com/jordanmartinez/purescript-cookbook) which contains lots of small-to-medium-size realistic example. They are to get you started and as a result do wonders for the learning experience.
- myth_drannon 4y agoMight check this discussion on Elm's forum. https://discourse.elm-lang.org/t/request-elm-0-19-2-any-update-to-help-adoption-to-prove-that-elm-is-not-dead https://discourse.elm-lang.org/t/request-elm-0-19-2-any-upda...
- kjellsbells 4y agoFor anyone who saw this headline and wondered what happened to Elm the email client, the short answer is it was overtaken by Pine and Mutt and is essentially dead. RIP elm, you were my first client and a dear friend. https://en.wikipedia.org/wiki/Elm_%28email_client%29?wprov=sfla1 https://en.wikipedia.org/wiki/Elm_%28email_client%29?wprov=s...
- pama 4y agoI started with elm, moved on to Emacs, pine, then mutt, then taught mitt to my spouse and moved on to a range of odd and unpredictable clients for work including outlook, web based gmail, etc. My wife still uses mutt today as her main client. I have largely given up on email as a main means of communication, but I am happy that there is a subset of the world that goes by with the plain text based clients.
- naet 4y agoOne of my previous employers had an Elm frontend and a React frontend. Basically all development on the Elm side was slower. New hires generally had used React before in at least some capacity, but everyone had to learn Elm from scratch. When I left Elm was slowly being phased out but there were still a lot of Elm components left over. For me, it felt like a heavier cognitive load to do anything with Elm since it was another abstraction level away from the DOM. The quote "I know this is possible in Javascript, but we chose Elm and it makes it very hard" from the "Why I'm leaving Elm" article (https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/#technical-limitations https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/#techn...) is something I never said to my boss but still resonates strongly as how I often felt internally frustrated when trying to work with Elm. Some of this might have been because I was very familiar with JavaScript and less familiar with something like Haskell, but I think it's fair to say that most people working on the front end web are likely the same. For example look at the "simple" counter example... there's a ton going on that doesn't seem intuitive, and even having used Elm professionally I double take looking at lines like "update : Msg -> Model -> Model" or "main = Browser.sandbox { init = init, update = update, view = view }": https://guide.elm-lang.org/architecture/buttons.html https://guide.elm-lang.org/architecture/buttons.html The equivalent React simple counter example (https://reactjs.org/docs/hooks-intro.html https://reactjs.org/docs/hooks-intro.html) is much more understandable IMO/. Even if you haven't ever used React before, it looks much more like typical HTML and JavaScript. React has plenty of gotchas and is far from perfect, but in terms of getting junior web developers making their first pull requests in our codebases React took way less effort and learning. Elm isn't dead, it has some dedicated FP fans as users and works fine. It is niche though, and I don't expect that to change. -- As a side note, it always irked me to see the word "I" in either an Elm error message or the official documentation. In errors it felt overly friendly or personified rather than giving me straight technical info, and in documentation it felt concerning that a single person's opinion might have an overly strong influence and that person might not listen to the broader community on some key issue and prevent progress.
- tasuki 4y ago> The equivalent React simple counter example [...] is much more understandable IMO/. Eh, I'm a backend dev, and it isn't more understandable for me. setCount is a constant yet we're calling it as a function? And what the hell is useState? I've written a fair bit of Elm on some toy projects and enjoyed it.
- jahewson 4y ago> Am in the process of starting my first SaaS as a solo founder and was looking at what languages to use Use the language you know best. Your tech stack is not the product: https://hoho.com/posts/your-stack-is-not-the-product/ https://hoho.com/posts/your-stack-is-not-the-product/ As for what happened to Elm? It reached a local maxima. Evan didn't want its purity to be compromised by external JS interop which cut it off from most of the open source ecosystem. If you never need to leave its confines, it's a wonderful place to be, but an engineer's job is to ship.
- danabrams 4y agoBased on this thread and many others, one thing’s for sure, Elm was polarizing!
- bbkane 4y agoThis was just discussed in the Elm Discourse as well: https://discourse.elm-lang.org/t/request-elm-0-19-2-any-update-to-help-adoption-to-prove-that-elm-is-not-dead/8843 https://discourse.elm-lang.org/t/request-elm-0-19-2-any-upda... This thread (mostly) by current Elm users mostly tracks emotions here on HN
- justatdotin 4y agothe elm ecosystem is thriving. what's interested me most recently are the various efforts to bring elm to the backend - * choon keat's https://package.elm-lang.org/packages/choonkeat/elm-webapp/ https://package.elm-lang.org/packages/choonkeat/elm-webapp/ * mario's https://lamdera.app/ https://lamdera.app/ * dillon's https://package.elm-lang.org/packages/dillonkearns/elm-pages-v3-beta https://package.elm-lang.org/packages/dillonkearns/elm-pages... What initially got my attention was that release which removed signals and abandoned FRP. I remember being struck by the idea of an emerging language that was stripping out major features. To me that suggested a strong vision. So I looked closer, and the suggestion was confirmed. My joy of Elm is as much about what it does not allow, as what it does.
- Existenceblinks 4y agoI think creator's burnout happened due to personal style of working was misaligned with users (developers)' demands. I think there are some points the creator made the right choice such as disallow native code, no more fancy type like typeclass etc. And the bell curve of developers can't stand pure <-> impure interop. They rather like messy types like Typescript where js thingy can float around freely with all insane effects everywhere, plus hackable and ugly structural typing .. unsound. They thought people don't love type like they do but people rather love elegant type! .. it's off-topic now, yeah.
- xarvh 4y agoElm is still really good for web applications, and the community is still active. I used Elm in production for many years and it is my choice for most production projects. Exceptions are - If you need to do a lot of number crunching and can't use Elm ports - If you need to use WebGL - If you depend on very specific JS libraries and can't use web components Many of the controversial decisions do make sense if you dig deep enough, but... You need to dig enough. I agree that there is an utter lack of transparency and communication from Evan and the core team. Worse, there is no acknowledgment of the problem nor any attempt to try and truly involve the community in the future of the language. Many enthusiastic people have left the community, leaving only those who can tolerate being told what is best for them. Personally, I stopped contributing to the community in any way. I started to write my own replacement language, http://squarepants.io/ http://squarepants.io/ which also tries to address some of Elm's weaknesses when scaling up (I was fortunate enough to use Elm on some large projects).
- rk06 4y agoThere was this blog post which highlights the issues https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/ https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/
- pharmakom 4y ago- Elm is still great but it seems to have lost momentum - The compiler allowlist in Elm did not go down well - Fable (F#) is a great alternative to Elm - F# is a better server language than Elm on Node.js IMO so is a great full-stack pick
- wolfadex 4y agoElm is like American politics. The most vocal people are divided as strongly as if they'd stabbed each other in the back. The majority people aren't vocal and just go about their day, sometimes using it and sometimes not. My 2 cents. Don't use this place as a metric for whether or not something is successful or worth trying. 20 years ago this community would tell you not to use Ruby or Javascript, but today they'd call you an idiot for not using them.
- VLM 4y agoThis isn't actually an elm post or a functional post although I know "a little" about that specific topic. All new industries or genres or fads or anything really, go thru rapid growth of small players which get gobbled up into a couple giant monoliths as time goes on, which makes them really slow, which allows distruptive newcomers to arrive eventually (although not yet in this case). So about five years ago I remember a study of the then new-ish functional front end project repos on Github and there were only 25x as many scala repos as elm and about 15x as many haskell repos as elm. So without knowing anything about the techs or even talking about the techs you know as rapid growth ends and consolidation begins that elm's going to disappear because its simply too small. Every 2018 elm project converting to scala before 2023 would just be a decimal place in scala or haskell numbers. For another example see the auto industry. A century before "the big three" there were hundreds of small car companies. All gone!
- gregopet 4y agoMy experience with Elm was very short and rather funny: a programmer I vaguely know approached me (on Twitter?) and with the usual zealotry of functional programmers started convincing me "You just have to try this language out, it's the best, and they've made it IMPOSSIBLE to get a runtime error!" Now I don't believe in miracles, the Easter bunny or code that has no way of failing, but I said fine, JS can be terrible (it was even more so I'm those days), so I googled the project webpage, opened it and WHAM, blank page, with only "Error: database connection not available" or something like that written on it. Let me tell you, I laughed so hard as I was closing the tab! And while I'm sure it was just extremely bad luck, I never looked at the project again. They had their chance, and maybe don't make bold promises you can't keep?
- karmakaze 4y agoYou realize that Elm is for Frontend, right? It doesn't prevent backend runtime errors. Edit: When I see errors like this, I think it's gaining some interest/popularity and try to remember to come back later.
- napsterbr 4y agoI'm sorry for being blunt, but if you are mistaking a database server being down (or CDN issues, or faulty backend code, or...) with the frontend code misbehaving then either you are very ignorant to how "computers" work or you are being (very) intellectually disonest. Don't do that. For the record: yes, as much as it may sound bold or marketing-y, the statement is mostly true. You can have runtime errors if you write a bad regex though. After almost 3 years working full-time with Elm on a daily basis, I have not faced a single runtime error. And by the way, this is coming from someone who moved away from Elm for the same reasons mentioned throughout this thread, so I'm definitely not an "Elm fan boy", but I do vouch for this programmer's statement.
- gregopet 4y agoI'm not ignorant of the difference, but at the end of the day, what's the difference? It was definitely Elm throwing that error and they certainly weren't adding "well, for the frontend part anyway, you're out of luck for the rest, lol". And even if we stay on the frontend, I've been doing web development for a long long time and I've seen some weird things. Are you telling me that Elm will catch the user's local storage becoming full? An AJAX URL being blacklisted? Chromium playing tricks with your DOM because it found a field entitled "username"? You have to catch all these things, like in every other language. Sure, the mechanism may differ; you may have Java style mandatory exceptions, or Go style error status that you can check. It may be done reasonably better than with competing languages. But there are no magic bullets and I don't appreciate being mislead that there are, and _certainly_ not with a holier than thou attitude. I'm not saying Elm is bad, I was merely recounting a personal anecdote that for better or for worse prevented me from experiencing Elm.
- hombre_fatal 4y agofwiw, Elm is still my daily driver for my one man projects. Though I understand why people wouldn’t want to begin learning an ecosystem that seems dead. Elm is still my favorite solution to front end development. But compared to an ecosystem that is truly dead, Elm has lively Slack and forum communities, and every StackOverflow question is answered such that I don’t even both trying to procrastinate on SO by helping beginners anymore—someone will have beaten me to offer help! Right now, Elm’s Slack is one of my favorite places to hang out and chat on the internet. While it is a bit confusing why compiler work has slowed down so much, it’s not the best way to judge an ecosystem.
- eeue56 4y agoIf you're curious for a successor language that has better interop - along with fixing some of the problems that I saw a lot with Elm (former core team member), check out Derw: https://www.derw-lang.com/ https://www.derw-lang.com/. The blog is updated frequently with whatever I'm working on, check out the latest post talking about what features are coming to Derw this year: https://derw.substack.com/p/things-coming-to-derw-feburary-2023 https://derw.substack.com/p/things-coming-to-derw-feburary-2... And to kick things off, here's a blog post on "Why Derw?": https://derw.substack.com/p/why-derw-an-elm-like-language-that https://derw.substack.com/p/why-derw-an-elm-like-language-th...
- deleted 4y ago[deleted]
- mauro_c8 4y agoI love elm! It changed the way I program in every other language. Its philosophy resonates with me. What happened with it? Not much. It just continues working and being useful for the people that use it. Some folks have started working on a fork of the language, called gren. Also, last year a package was published that added a different way of interoping with javascript (elm-taskport). Appart from that, the language is pretty stable and solid in its niche. I don't see it going away in the next 10 years at least.
- 1-more 4y agoI write it every day and it whips ass.