What have been your impressions with Elm so far? I started playing with it recently since I enjoy Haskell but I'm coming from it with no prior web experience so it's hard for me to gauge it in most aspects.
I think that if you're going to do React/Redux, your life would be easier in Elm.
I'm a full time Clojure/Clojurescript dev and from my perspective, the main thing Elm is lacking is Protocols (in Clojure/Swift, Traits in Rust). I know Evan has been pushing back on it because it adds complexity to learning the language and you can get by without them, but I miss them. I could quibble about other things but there's nothing I strongly dislike. From an adoption perspective, I think a focus on tooling would help a lot. There was a talk at elm-conf where a refactoring suite was written as a chat bot. Ditching the chat bot part and building a language server [1] would make it much easier to pitch the language.
For a non-web developer looking to transition into web dev, the main weakness of Elm is that the community is small so you basically have to build your components yourself. This tends to be challenging for experienced programmers coming from other languages because CSS has no abstractive power at all and the traditional layout techniques are incredibly unintuitive. You'll probably have the most success using flexbox everywhere. The community is friendly and I think Evan does a pretty good job leading it. I've pushed a number of younger developers at js meetups to pick it up and they've reported back with positive impressions. Of the compile to js langauges I know, I'd pick Elm as the most likely to succeed.
Overall, I like Elm and am happy with it's progress. I don't think it's ready for unqualified adoption, as you'll be doing a lot of library building you wouldn't need in more mature ecosystems and I'm not completely confident it's on the path to great success. I wouldn't push the language in a workplace at this point. By comparison, I would push Rust. You're in largely the same position in both languages in terms of writing libraries but I think Rust has hit critical mass.
I'd agree with most of this. I feel like the decision to use the JVM is what made Clojure useful at work for me vs. other languages like Elm, Elixir, Haskell, and so on that I can only just play with at home. Elm is cool but I can't justify it professionally.
People really should not discount the importance of having a big ecosystem, at least transitively in some way (ex: Clojure -> Java/Scala/Groovy). Once upon a time I took a break from C and C++ dev to do Smalltalk. It was glorious and productive, but at the same time I had to literally write everything myself. The community, even at the height was relatively small vs. some languages today. The worst was writing low-level stuff that while I could do, gave me the voice inside my saying, "WTF why am I wasting time on this." No one should ever do that if they can help it; it just eats your time.
The only real situation that comes to mind where I personally felt justified reinventing the wheel entirely was game development (ex: custom allocators, custom pipelining, entity systems). That still was time lost I could have been using to make a game and get other things done, but there were very good reasons like performance. Console development in particular was exactly this - it's not like I could go out and ask someone for their NES libraries or even in later years, PS3. Games don't generally reuse much code and certainly not when a generation of consoles is brand new with a new architecture. I could have written code like an idiot, but I chose instead to write stuff against the platform. We did well because of it vs. competitors. You can say Engines handle some of that for my specific cases, but that's discounting that huge chunks of a game are not in fact the engine or that some games preclude the use of an engine for various reasons or engines sometimes end up having the opposite effect (ex: Star Citizen).
I have only limited experience with web development, but my impression of elm is that it purposefully throws a lot of the standard HTML/CSS/JS paradigms out the window on purpose, in exchange for an extremely clean set of functional-friendly abstractions. The downside to this is that there is a lot of "magic" going on behind the scenes, and I don't know exactly how fragile that magic is.
It's reasonably robust for the HTML/JS part. The majority of current generation Javascript frameworks are built on similar techniques and the main thing Elm adds is the type system and guaranteed purity.
For CSS, all bets are off. I expect Elm to put more effort into styling when scoped CSS becomes widely deployed enough to rely on.
I think that if you're going to do React/Redux, your life would be easier in Elm.
I'm a full time Clojure/Clojurescript dev and from my perspective, the main thing Elm is lacking is Protocols (in Clojure/Swift, Traits in Rust). I know Evan has been pushing back on it because it adds complexity to learning the language and you can get by without them, but I miss them. I could quibble about other things but there's nothing I strongly dislike. From an adoption perspective, I think a focus on tooling would help a lot. There was a talk at elm-conf where a refactoring suite was written as a chat bot. Ditching the chat bot part and building a language server [1] would make it much easier to pitch the language.
[1] https://github.com/Microsoft/language-server-protocol
For a non-web developer looking to transition into web dev, the main weakness of Elm is that the community is small so you basically have to build your components yourself. This tends to be challenging for experienced programmers coming from other languages because CSS has no abstractive power at all and the traditional layout techniques are incredibly unintuitive. You'll probably have the most success using flexbox everywhere. The community is friendly and I think Evan does a pretty good job leading it. I've pushed a number of younger developers at js meetups to pick it up and they've reported back with positive impressions. Of the compile to js langauges I know, I'd pick Elm as the most likely to succeed.
Overall, I like Elm and am happy with it's progress. I don't think it's ready for unqualified adoption, as you'll be doing a lot of library building you wouldn't need in more mature ecosystems and I'm not completely confident it's on the path to great success. I wouldn't push the language in a workplace at this point. By comparison, I would push Rust. You're in largely the same position in both languages in terms of writing libraries but I think Rust has hit critical mass.