Evan Czaplicki, the creator of Elm, is very considered in his approach to its development. All of the individual pieces of Elm are very well thought out. What makes it truly amazing is that the whole of Elm is much better than the sum of its parts.
Elm has a core focus on being easy to learn. This is embodied in both the getting started guide and very much the supportive community around it. The guide is simple and easy to follow. Public Elm packages are well documented. Elm’s Slack is alive. This gives developers a wealth of resource to draw from when they have questions and this resource is growing.
Another piece that makes it easy to learn is it’s compiler. Elm’s compiler is very much an assistant rather than an adversary. Not only does it detects bugs, it helps developers understand why. It gives specific hints that helps developers write better code. Ultimately, it makes programming faster and easier.
Elm mitigates classes of problems that in other languages, developers would need to think about. For example, it will not allow the use of null or undefined. Instead it captures this intent in an explicit way as a “Maybe” type.. By forcing the use of a “Maybe”, Elm ensures that developers always handle the “Nothing” case, resulting in explicit and robust code.
What really intrigues me is what happens to an Elm project over time. Because Elm enforces semantic versioning, upgrading dependencies is relatively trivial, especially for minor and patch level changes. For those trickier upgrades, changes and refactors the compiler has the developers back and guides them to success. As a side effect, Elm projects tend to stay more nimble, enabling development teams to keep developing without accruing tech debt.
The future of Elm looks bright. The current roadmap is focused is on creating singlepage apps in Elm. This includes:
- Server-side rendering
- Tree shaking (trimming out unused code)
- Code splitting (cutting up code into smaller chunks for better caching)
- Lazy loading (only sending the code chunks needed for a particular page)
- Expanding web platform support
- Unfortunately progress can be excruciatingly slow and is frustrating for those waiting. Consideration takes time. That aside Elm is an amazing tool to build web applications with. We are definitely looking for an opportunity to use it when the right problem comes along.