Contributing to Open Source: An Elm Case Study — Pt III

Paul McCrodden
4 min readApr 10, 2017

--

In Part 2 of this series, we looked at starting an Elm project and how essential items like routing and theming were thought about and addressed before starting the project.

In this part we will look at the open source contribution possibilities came up during the project, how unknowns were discussed with the Elm community and how certain items were selected for contributing back.

Example Contributions

PR: Added routing package Bogdanp/elm-route — Brunch w/ Elm

When mathieul/brunch-with-elm-bootstrap repo was found it seemed like a perfect start, but did not have the necessary routing required for the yoga site. Once I got the routing package installed and working locally, a PR was created to initiate discussions with the repo maintainer.

This discussion proved worthwhile as the package got included, but not only that, valuable information on Elm architecture was provided by repository maintainer and inclusion of JSON for posts was requested, motivating me to gain experience through providing that also.

Feature request: Implement support for Carousel — Elm Bootstrap

Before the Bell Template was selected as the theme of choice, I had been working with Business Casual, an older more minimal approach. This theme included a carousel and I found that the rundis/elm-bootstrap package did not yet include one, so I created a feature request.

This was received very well and an overview was provided to me on the requirements should I take on the task of implementation. This is one of the times I decided not to submit a PR. This functionality was not essential to the project at the time and the work involved was quite involved for my skillset at that time, so it would have taken too long.

Thankfully, I no longer need this feature since swapping theme, and somebody else has now taken on this task, so hopefully it will be included soon should we need it in future. Regardless of my project requirements, submitting this feature request was still very productive, as it motivated others and put this feature on the repository contributors radar.

Support Request: Converting HTML nav element to Navbar — Elm Bootstrap

As a work around I converted the Bootstrap menu from Bell Template to Elm using a very useful VSCode plugin: HTML to Elm. This worked fine, but was not directly using the Bootstrap package, had messy code, among other issues. I created the below support request following some tried attempts.

This was one of the most rewarding issues. It not only pointed me towards finding a working solution, in the code below, it prompted me to joining the Elm Slack channel, for a more immersive integration into the Elm community.

Converting Bell Template nav to Elm Bootstrap

Summary

When you need fast results, finding a repo that does what you want, or almost is a great start. Following that, any contributions back to that repository or wider eco-system when you find any issues that need work is a great way to give back and to grow.

When should I contribute?

Learning when to contribute is key, sometimes not contributing is the best option in order to best focus your efforts to what is attainable and beneficial to your project and the wider eco-system. It is a great start by just commenting on issues, creating issues, talking to people (Slack channels), get opinions and suggestions, get involved!

I usually decide whether to contribute to an issue by asking myself:

  • Is it essential to the success of the project?
  • Have I got the time or budget to see it through?
  • Is it achievable in this time; do I have the skillset at the moment?
  • Will it increase my skillset in this contribution process?

What is next?

The final post in this series will show the live version of the yoga website created using #Elmlang. It will detail some of the broader issues experienced during the process and how they were overcome.

A look towards the future of the project from both a general and Elm perspective will be outlined, alongside some conclusions on Elm and Elm as a path for up skilling.

See Part 4: Making the most out of up-skilling: An Elm Case Study — Part IV

--

--

Paul McCrodden

Shivam Yoga Instructor @AhimsaYogaJP and Product Owner @XTeam