<story><title>Elm 0.19.1</title><url>https://elm-lang.org/news/the-syntax-cliff</url></story><parent_chain><item><author>sunseb</author><text>I built a project using Elm last summer. Here is my quick feedback:&lt;p&gt;+ The language syntax is very nice and refreshing.&lt;p&gt;+ It&amp;#x27;s a joy to work with the compiler.&lt;p&gt;+ If it&amp;#x27;s compiling, it&amp;#x27;s working! No runtime exceptions.&lt;p&gt;+ Static typing!&lt;p&gt;+ Functional programming!&lt;p&gt;- The language doesn&amp;#x27;t have component composition (like in React or Vue) and you end up having huge chunks of spaghetti code (but to be fair, it kind of works because of the compiler).&lt;p&gt;- It&amp;#x27;s complicated to implement routing and to build a Single Page Application.&lt;p&gt;- Only pure functions in Elm, so doing API calls and generating random numbers are unnecessary hard.&lt;p&gt;- It&amp;#x27;s a pain to parse JSON.&lt;p&gt;- There is no variable shadowing, so naming your stuff is harder than it should be.&lt;p&gt;- Vue embraces HTML, Elm avoids HTML, and it&amp;#x27;s really a pain to build HTML view in Elm. &amp;lt;div&amp;gt;&amp;lt;a href=&amp;quot;hello&amp;quot;&amp;gt;world&amp;lt;&amp;#x2F;a&amp;gt;&amp;lt;&amp;#x2F;div&amp;gt; becomes div [] [ a [ href &amp;quot;hello&amp;quot; ] [ text &amp;#x27;world&amp;quot; ] ]&lt;p&gt;- There is a lack of leadership and community building in this project. We don&amp;#x27;t know what&amp;#x27;s going on and where the project is going. It&amp;#x27;s like a black box. No roadmap. All issues on Github, all posts on Elm Discourse get no response.&lt;p&gt;So in the end, Elm is an interesting beast, but I think it&amp;#x27;s too academical and not really practical for serious projects.</text></item></parent_chain><comment><author>quickthrower2</author><text>I had the same viewpoint, but something keeps me coming back to Elm for curiosity. I think if NoRedInk can use it for all their client side stuff then it must be capable and all of the advantages outweigh the annoyances enough to stick with it for a commercial setting.&lt;p&gt;My analogy there is Agile. Years ago no company would do agile and probably because no other company was doing it. Then Thoughtworks etc. started doing it, and slowly the proof that it can work spread around. I think this could happen with Elm.&lt;p&gt;But like agile I think there is some counter-intuitive ideas, sort of &amp;#x27;go slow to go fast&amp;#x27; type of things that you need to get your head around.&lt;p&gt;I struggled and still struggle but I want to give Elm a fair go. My peeves were:&lt;p&gt;1. Can&amp;#x27;t component-ize like React.&lt;p&gt;2. Lots of &amp;#x27;boilerplate&amp;#x27; to wire things up.&lt;p&gt;3. No promise like API for async, you need to do stuff via pub&amp;#x2F;sub and ports.&lt;p&gt;However the counter points seem to be that.&lt;p&gt;1. You don&amp;#x27;t need components - design a good model data structure and work out from there. There is a good video talk about this at an Elm conf.&lt;p&gt;2. By making us us wait and use ports for a lot of things in the meantime (and not just adding everything to the language or letting anyone use vanilla JS in their packages) the modules that you do use are &amp;quot;pure&amp;quot; and are almost guaranteed not to crash. And the API&amp;#x27;s of Elm are well thought out because there is no rush to fill in all of the web platform.&lt;p&gt;This sort of thinking sounds like the &amp;quot;100 year language&amp;quot; way of thinking that PG writes about. What sort of language will we be using in 100 years? Hopefully something well thought out, not full of baggage because it was rushed.</text></comment>
<story><title>Elm 0.19.1</title><url>https://elm-lang.org/news/the-syntax-cliff</url></story><parent_chain><item><author>sunseb</author><text>I built a project using Elm last summer. Here is my quick feedback:&lt;p&gt;+ The language syntax is very nice and refreshing.&lt;p&gt;+ It&amp;#x27;s a joy to work with the compiler.&lt;p&gt;+ If it&amp;#x27;s compiling, it&amp;#x27;s working! No runtime exceptions.&lt;p&gt;+ Static typing!&lt;p&gt;+ Functional programming!&lt;p&gt;- The language doesn&amp;#x27;t have component composition (like in React or Vue) and you end up having huge chunks of spaghetti code (but to be fair, it kind of works because of the compiler).&lt;p&gt;- It&amp;#x27;s complicated to implement routing and to build a Single Page Application.&lt;p&gt;- Only pure functions in Elm, so doing API calls and generating random numbers are unnecessary hard.&lt;p&gt;- It&amp;#x27;s a pain to parse JSON.&lt;p&gt;- There is no variable shadowing, so naming your stuff is harder than it should be.&lt;p&gt;- Vue embraces HTML, Elm avoids HTML, and it&amp;#x27;s really a pain to build HTML view in Elm. &amp;lt;div&amp;gt;&amp;lt;a href=&amp;quot;hello&amp;quot;&amp;gt;world&amp;lt;&amp;#x2F;a&amp;gt;&amp;lt;&amp;#x2F;div&amp;gt; becomes div [] [ a [ href &amp;quot;hello&amp;quot; ] [ text &amp;#x27;world&amp;quot; ] ]&lt;p&gt;- There is a lack of leadership and community building in this project. We don&amp;#x27;t know what&amp;#x27;s going on and where the project is going. It&amp;#x27;s like a black box. No roadmap. All issues on Github, all posts on Elm Discourse get no response.&lt;p&gt;So in the end, Elm is an interesting beast, but I think it&amp;#x27;s too academical and not really practical for serious projects.</text></item></parent_chain><comment><author>KurtMueller</author><text>&amp;gt; - The language doesn&amp;#x27;t have component composition (like in React or Vue) and you end up having huge chunks of spaghetti code (but to be fair, it kind of works because of the compiler).&lt;p&gt;Um... yea it does. Elm makes functional composition very easy which which means it&amp;#x27;s very easy to compose &amp;quot;components&amp;quot; (which are just functions anyway).&lt;p&gt;&amp;gt; - Only pure functions in Elm, so doing API calls and generating random numbers are unnecessary hard.&lt;p&gt;I would say that Elm makes doing API calls and generating random #s appropriately hard. Elm strives to corral side effects into one part of the Elm architecture: &amp;quot;commands&amp;quot;. By doing this, you&amp;#x27;re keeping all code that contains side effects at the fringes of the walled garden you&amp;#x27;re growing.&lt;p&gt;I think this explicitness&amp;#x2F;discipline is needed in more codebases.&lt;p&gt;&amp;gt; - It&amp;#x27;s complicated to implement routing and to build a Single Page Application.&lt;p&gt;I agree, it&amp;#x27;s no Ember, which comes with all the bells and whistles of a full router system, including page transitions, transition errors, data fetching, etc. Richard Feldman has an elm SPA example on github that shows how to create routes, pages, etc.  The official Elm Guide also has sections on routing, etc.&lt;p&gt;&amp;gt; So in the end, Elm is an interesting beast, but I think it&amp;#x27;s too academical and not really practical for serious projects.&lt;p&gt;Too &amp;quot;academical&amp;quot;? Tell it to these devs: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;blogg.bekk.no&amp;#x2F;using-elm-at-vy-e028b11179eb&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;blogg.bekk.no&amp;#x2F;using-elm-at-vy-e028b11179eb&lt;/a&gt;.</text></comment>