I think that if the community were to do be pro-active in solving the mentioned issues, this is likely the way to go, as this is the least diverging or obtrusive solution.
From looking at the Google sheet link with the list of issues, most issues are located in core libraries, not in the compiler. Other issues (like 2 ^ -1
maybe?) could be patched by altering the compiled code. A combination of the 2 would resolve most problems I think.
Forking the compiler does not seem that “necessary” to me, and it would by far be the most arduous task as well, and I don’t think it’s cost-effective to do so.
On a separate note, as a tooling author, I am quite worried about the directions this may go. I don’t think me and other tooling authors want to support both Elm and a fork (or several forks), as that could be a lot of work for us, and each individual author would need to be convinced individually.
If some decide to fork Elm, my advice if you want to continue using Elm tooling (IDEs, elm-review
, …) is to not change anything about Elm’s workings. For instance (but not limited to):
- Don’t change the way the Elm CLI works
- Don’t create an alternative
elm.json
nor change its behaviour - Don’t add/change new APIs to core modules
- etc.
Most tools out there already support passing an Elm binary as an argument, so an alternative compiler would be very easy to support, as long as it works almost exactly like the Elm compiler.
That is why I am thinking that applying patches to the packages and altering the compiled source code is probably the way to go. Users still get to benefit from Elm tooling, tooling authors don’t have to spend time supporting a fork. And also, we probably then don’t need to change the name of the fork because there wouldn’t be a fork, just an additional tool to point people to. elm-optimize-level-2
kind of already does this (note that this would not be the tool to do this), and it didn’t have to fork the project.
I would urge whoever that feels like taking up these task to change as little as possible to Elm in their quest to solve the issues mentioned in this thread.