How can the Elm community improve?

After reading the comments of the Reddit thread about the article “Elm and why it’s not quite ready yet” by Chris Gregori, I though: Let’s turn it around.

What are problems in Elm that the community can solve? And how can we solve them?

Most of the solutions already exist, they just not very well-known.

The Community

The community is active on three different platforms:

Not everything gets posted on all three platforms and personally I feel like this splits the community.

Not everyone wants to follow multiple platforms, just to stay up to date and that is actually not necessary: There are two ways how to always get the most recent news from the Elm world:

  • Elm News is a website that bundles all discourse, Reddit and hacker news posts.
  • Elm Weekly is a curated newsletter and gives you the highlights of every week

Another way to keep up to date is with podcasts and talks on YouTube.

Podcasts

We actually have two lovely podcasts:

  • Elm Town invites each episode a guest from the community to talk about a thing he or she created in elm.
  • Javascript to Elm is targeted at JavaScript developers and gives guides how to use Elm for various tasks.

Conferences

The elm-community loves to reference talks from the conferences, so here are all of them with their YouTube channels:

(Ordered by date)

Actually, I feel like we have no problem promoting our conferences by referencing talks about Elm.

The Ecosystem

When it comes to collections of Elm packages, the first place one might look at is isRuslan/awesome-elm. Sadly a lot it is outdated. As for game development we have rofrol/awesome-elm-gamedev, which is quite up-to-date. For other categories we don’t have any good collections of packages. For example figuring out what UI-packages are still maintained is nearly impossible.

There are actually two projects that try to fix this situation:

  • Elm Package Catalog is a catalogue of useful elm packages. The usefulness depends on its maintainer.
  • Elm finder is a website that directly uses the API of Elm Packages. It allows packages to be grouped and compared. Everyone can add and modify a group. Sadly it’s still not well-known.

Documentation

When learning Elm, most people would start with the official guide. But sadly as of right now (June 2019) there is a missing example in the document: URL Parsing. That said there is already a Pull Request. We know Evan is a busy man, so it may take some time until its merged.

Additionally, the Elm Syntax documentation is also not complete. I remember that I got quite frustrated: it felt like there are things (like pattern matching) that are used a lot in code, but there is no prober guide that tells me was this does (like the “as” expression). Another example are record constructors, they are not mentioned, neither in the elm Syntax nor in the (hidden) chapter about Records, but they are mentioned briefly in the type alias chapter of the guide. Still, its easy to miss and for a beginner its not obvious why that constructor is found in the type alias chapter.

There are additional guides that may help out, most of them cost money. Fortunately, the Beginning Elm book is actually free. Sadly it’s still being updated to 0.19. Again this something that maybe the community could help to solve.

Good Practices

Elm has been around long enough. There are a lot of good practices that the community has figured out. Currently, the only way for a newcomer to get to know them, is to ask questions in the slack, discourse or subreddit.

Personally I felt like this needed to change, so I started a Gitbook (I have still not decided what to call it) that should serve as a collection of good practices. I would be more than happy if people would help me out.

Conclusion

Yes, Elm is not perfect. But this is not all Evans fault and its also not his responsibility to fix everything that is wrong. We can help.

  • We can bring the different platforms closer together. If we have just posted something on one platform, we should tell the other communities as well.
  • We can share the podcasts as well as the newsletter more often. Let newcomers know of all these awesome things that we made.
  • We can continue to share talks. Actually I feel like this is already happening a lot and its one of the greatest things about Elm.
  • We can improve awesome-elm more. This is the first introduction to the community for a lot of people, so let's make the first contact count.
  • We can improve the docs and write guides. If Evan has problems keeping his guide up to date, maybe we should help out: Write our own open source book. It does not need to be perfect but at least it should improve the parts that Evan guide lacks.

Discussion

Also, checkout the discussions on reddit and discourse about this article.