I read through the post a couple times and I want to share my sincere opinion with you:
I think you would be happier and better served by developing with PureScript.
This should not be interpreted as, “if you don’t like Elm you can just leave,” but it’s very hard to convey earnestness through text, so I want to be clear that it does make me sad when someone doesn’t find the same connection with Elm that I have. The number of tradeoffs that you have to make when developing a programming language is astronomical, and it’s just not possible to appeal to everyone. After reading your post I genuinely think that the preferences you expressed about language features, framework and package philosophy, and project governance overlap a lot with PureScript and not as much with Elm.
PureScript has had a more permissive and reactive style of incorporating community feedback. It has a lot of the features you are looking for, and its attitude toward FFI in particular and to choice of approach in general seems to be much more suited to you. It’s also general purpose, so in the multitude of scenarios where the Elm architecture is not a convenient programming model you would have the ability to take a more straightforward approach for your problem.
I’m sorry you aren’t comfortable with the way that discussion about these issues has been online. We are people, and we are also very busy working on Elm and on regular work, and the asymmetrical nature of these conversations can make them contentious by default. Furthermore, conversations here can seem highly controlled because we believe there needs to be a space for people who are content with the philosophical stuff and just want to get help with their confusing bugs or show off their package ideas. A lot of space for general self expression on Elm topics already exists on Reddit, various Slack channels, Twitter, Medium, ad inf. It’s been mentioned before and will continue to be mentioned that we have only Learn
, Show and Tell
, and Request Feedback
here because that’s all it is for.
Moving on, most of the things about Elm that you listed as pain points are either
- things we know about, and have been told about, and can only repeat that we know about and are going to improve them so many times a day on the different forums
- points of disagreement about language design, where the tradeoffs that have been chosen for Elm were chosen knowingly and after a great deal of research and feedback collection and serious thought and discussion.
Where the first point is concerned, we can only continue to ask for patience. There’s a lot of fundamental, low-level, non-user-facing stuff that has changed in this upcoming version in particular that makes it much more complicated to address issues than to just pull items off the issue tracker. There is also the method of batching issues on which Elm development is based.
Where the second point is concerned, though, on the more philosophical concerns, all I can offer is that Elm might not be the thing that you really want to use. And more than that, participation in the conversations around its direction might leave you feeling very frustrated. On certain issues you want Elm to work in a way that diverges from foundational principles of the language. Kernel code is probably at the top of that list. I have had this experience myself in a project in the JavaScript community, and the decision I made was to stop trying to advocate for my goals in that project and use Elm instead because it already aligned much more strongly with those goals. We really believe in these choices because they are very careful, and the level of disagreement, although it seems loud on places like Reddit, is not high enough in reality to cause doubt.
I appreciate the framing of your post around wanting to make sure your readers have information that they need to decide if Elm is the right choice for them. I’ll confess that writing this response makes me feel apprehensive. On the one hand, there is a group of folks that really wants us to know that we don’t do enough to delineate Elm’s tradeoffs and help people make informed decisions about what to use for their projects. On the other, I frequently and actively recommend PureScript to people who want what those languages offer, but articulate that by expressing ways that they feel stuck while using Elm. In those cases I’m often met with an equal share of blowback because it seems unreasonable that I would even suggest something other than Elm, or that it’s unfair to suggest that someone “just go rewrite their WHOLE app in a DIFFERENT language.” It’s also hard to do all of that posting and also do the development and support work needed to get the next release ready, and fulfill every other responsibility in life (most of which, I will say for myself, are infinitely more important to me than open source software).
I agree with you when you say that Vanilla JavaScript or jQuery can be a technically superior solution in some circumstances. Technical superiority of a tool requires the context of the preferences of the developer making that assessment, and based on the preferences you shared I think you would really enjoy PureScript. We really believe in the direction that Elm is moving, though, and we gather that the choices that have brought us to here have been consistently validated even though they don’t make everyone happy.
Note: there’s a good chance I won’t be replying to responses on this, as tomorrow is Saturday and I’ll be spending time with my family, doing house chores, working on Ellie, etc.