-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can we use Elm? #27
Comments
@andrewMacmurray @ivanmauricio I think you guys might be interested in seeing this |
thanks @Shouston3 would definitely be interested to hear what people have to say on this! |
@andrewMacmurray / @ivanmauricio, apologies, I did not mean to "exclude" anyone... And if you don't mind helping to "spread the word" please |
@nelsonic @andrewMacmurray @ivanmauricio I would love to hear why? Isn't it another thing to learn on top? Have a look at this http://stateofjs.com/2016/flavors/ I thought there was a reason we were sticking with the plain old vanilla JS. Although I'm open to hear more |
@nelsonic no worries. @ivanmauricio and I had a play around with |
@andrewMacmurray that's great to hear. A few of us (including @iteles & @nogainbar) were thinking of making that a week 9/10 16 man project for the current cohort. But if you guys are already working on it then we'll get them to work on another one of the tools that'll make certain other things easier at FAC. 😻 |
@sohilpandya ah I didn't realise that was a project for FAC9. We could come up with something different, we just want an excuse to get stuck into using it and thought it would be nice to make something that would be useful for FAC. |
@sohilpandya as far as why we were interested using it, we're functional programming nerds 🤓 Lol but there are some pretty compelling reasons to use it beyond that. This vid is worth a watch |
@andrewMacmurray I think you guys should go ahead with this, We are just in the very initial stages and pivoting is a big possibility for us 😳 |
@andrewMacmurray @ivanmauricio @sohilpandya Whilst this isn't the place to discuss the FAC stuff, I would mention that if we're building something that's useful for FAC (or anyone), my main concern is allowing it to be easily extendable by future cohorts/volunteers (essentially this - other issues in that repo well worth a read). |
@iteles I totally hear that, but what about its utility as a potential learning resource? I'm happy to discuss this elsewhere but not sure where to! |
@andrewMacmurray discussing building a useful app with The last thing I want to do is "shut down" an constructive discussion because it's "off topic" (the standard reason/excuse why questions are "closed" on StackOverflow) ... I'm encouraged by the fact that 38 people have _voted_ on the Twitter Poll!! (please help get everyone to vote so we have as much representation as possible!) even though there are few people who "don't like" or "not interested"... I'm trying to remain "neutral" to not "influence" the Vote while the poll is still open. 😉
To be clear: in terms of having a "stack" that is well-defined and unambiguous, I'm way more interested in going from ES6 straight to Elm in "Week 7" without wasting time on the noise that is (let's be honest) the Facebook-(Franken)-Stack ... The reason I haven't (personally) "embraced" elm in the past is captured here: dwyl/learn-elm#2
Until the Poll closes tho we need to contain our excitement and just encourage people to Vote! |
@nelsonic @iteles I'd definitely prefer to build something in Elm that's going to be used by people but irregardless of whether it's something that's directly useful to FAC (or anyone), I feel there may be a special case for learning here. I'm aware that Elm is "one more thing to learn" but compare that with learning something like React - where learning At first glance, Elm reminds me a little bit of
But I feel the big opportunity here is to embrace functional programming. Functional Programming is HARD, but that "one more thing" that you learn is more foundational than any of the JavaScript that we learn. You can apply widely it in many other programming languages and it's a very important trend in modern programming. It's knowledge that won't be thrown away any time soon. As far as using it for the DWYL stack, I'm not nearly experienced enough to say (there's a lot more to consider than just learning). But, my gut feeling is I think it would be a missed opportunity if future fac people or volunteers weren't encouraged to get stuck into an elm project, at least if they were a bit curious about it. (Sorry if this is a bit off topic but really wanted to share my thoughts on this.) |
Great comments in this thread (and in dwyl/learn-elm#2). I think all of the concerns carry some heft. I think Elm is in a good place in terms of maturity, but some of the complaints around that do seem pretty forceful. First, server-side rendering. No reason why that should continue to be an issue, but I also couldn't predict when it will stop being one. Second, handing Elm code over to clients. If I were hiring a bunch of devs to build a product, I would not hesitate in choosing a "weird" language and investing in the hires. But handing over Elm code to (non-technical) clients does leave them with a logistical problem. I think the only complaint I don't think is telling is that it's another thing to learn. The Martin Fowler article Nelson linked to made a pretty good case that learning a language vs any other tool is not particularly different. Also, consider the amount of knowledge and learning you have to repeatedly acquire about your own codebase whenever something unexpectedly breaks in JavaScript. You have to learn so much about how the code you and your team wrote weeks ago just to make small changes, and the knowledge disappears. Yes, you can try and follow "best practices" in your code, but that's of limited use. It can be much less effort to learn a new language and a new way of working than just trying to learn that new way of working in a language that doesn't support it very naturally. In my experience, enough competence with a language to contribute to a codebase is one of the easiest things a dev will be asked to learn (apart from the first time). |
@andrewMacmurray, agreed. don't @rjmk @ I can debate
We will know the outcome of the
tl;dr (when I were a lad ...)Rewind the clock back to 2011 when I was still writing code full-time (instead of reviewing other people's work and helping hire/help other team members ... When I started using A few people @groupon were "concerned" that we wouldn't be able to "hire" good people if we picked an "unknown" language ... however using our internal "learning" docs we could teach people who had never written a
Around the same time I watched If I had the luxury of focussing exclusively on building tools & a single product (instead of client-projects which are good for keeping the lights on...) the elm ecosystem is almost exactly what I would want to build:
|
The Twitter Poll
|
@nelsonic From looking at other dwyl projects, it seems like server-side rendering has been a priority. Assuming that this is still important I see two major problems. Firstly Elm does not currently support server-side rendering. This is a problem that will eventually go away, but right now it does not seem easy. The second problem seems much bigger to me. Elm seems like the wrong tech choice to do progressive enhancement. eg:
As far as I can see, elm + elixir are much nicer pieces of tech than node + js, but it seems like a weird choice for dwyl.. Basically elm is great for building client side apps, but right now, this is all that it is meant to do. Considering that dwyl has always favoured ssr over client side rendered apps, this decision leaves me totally confused.. 😢 |
@des-des You're right to be "confused". Until we have a canonical "Chat" example, it won't be clear how Phoenix and Elm can work together.
What I will say to you and anyone Where Elm comes into play for us is when there is Frontend functionality such as what you built on "ART" and what @Conorc1000 / @roryc89 & @naazy are building for "OA" where the UX lends itself to in-browser validation, calculation, transparent server requests and re-rendering. Elm is going to play a major role in the dwyl Products from about April 2017 onward ... Yes, that might occasionally mean re-doing certain components in Elm that have already been built in Elixir Templates, but we can "mount" these Elm components in specific DOM elements and let Elm "handle" re-rendering just that element. You won't need to think about Elm until you need to do "complex" interaction. I don't think Phoenix is going to be everyone's "cup of tea" and that's 100% fine. The fact that the Phoenix and Elm communities have so much overlap For the people on the Founders & Coders "Course" we need to keep their learning "stable", I think we should get F&C people to learn Elm and use it with a Node.js "backend". To summarise, all DWYL apps can be built with Just "PET". |
I think I mentioned this in the PR actually - there's definitely a need to clarify that Elm is for client-side enhancements and server-side rendering is still key for what we do @des-des, thanks for the reminder! |
@nelsonic Thanks for the awesome answer + video! This makes sense. I agree that Elm is a much nicer + all round better experience than react so I am excited for the future! Also loving Pheonix so far. |
Here is an example of elm / phoenix: https://github.com/CultivateHQ/seat_saver |
@des-des the related blog post for that repo is: http://www.cultivatehq.com/posts/phoenix-elm-11/ 😉 |
Yeah looked at seat-saver its a rubbish example you could replace elm with js and would not have to make a single change to the server |
@des-des yeah, I don't think it's meant to be a "this is why Elm is 'better' than JS" post/example ... |
ops jus saw it was your link is what I was rubbishing, sorry for the negative language, meant to be rubbishing my link.. We know that we can include js as an asset, the elm here could just as well be angular .. Obvs since elm and phoenix both play nicely with sockets / real time there is some synergy here. |
My plan for tomorrow morning is to attempt to answer the question:
http://elm-lang.org/
https://medium.com/wraptime-io/after-react-elm-152bd6559cb1
http://elm-lang.org/blog/how-to-use-elm-at-work
CC
: @SimonLab @nogainbar @sofiapoh @des-des @krosti @jrans @eliasCodes @Shouston3 @rjmk @sohilpandya @mk4111 @jackcarlisle @harrygfox @naazy &anyone
else interested ...The text was updated successfully, but these errors were encountered: