Step 1: Decide to find one open-source project to contribute 😎

Step 2: Keep looking 👀

Step 3: They are all intimidating, is that normal? 😑

Step 4: What if I contributed to a project I have lots of experience with, like rails? I’d love to understand more about this tool I use every day 🤔

Step 5: OMG, the code is huge and scary, Will this even run on my machine? 🥴

Step 6: This is not for me. Eventually, I’ll find one that is more welcoming to open source beginners like me 😔

Step 7: That never happens. You will try again after next year’s railsconf.

If you ever get to the rails repository hoping to contribute you see +384 open issues. Which one should you pick? How do people even get started? Even worse: they all seem pretty hard.

If this daunting feeling is familiar to you, welcome to the club my friend because I know how does that feel like. By the end of this post, you’ll feel less intimated to contribute to rails today (if you want).

Open source onboarding for the rest of us

Eileen Uchitelle, from the Rails Core Team Member, mentioned on her railsconf keynote how she got started. She did lots of pair programming with experienced rails contributors.

But, you probably don’t work for Shopify or Github. At least, I don’t.

That got me thinking… what if I don’t have to do it by myself?

So I recruited Thiago, my partner in crime to do it with me. We tried to make good use of the hexdevs YouTube channel to share our contribution to rails live.

To our surprise, Gabi Stefanini, Engineering Team Lead at Shopify, and Rafael Franca (Rails core contributor, also from Shopify) joined us!

We didn’t expect anyone to show up to be honest, but having them there made us feel less intimated. We also learned a lot doing this chat remote onboarding with them:

  1. Not sure how to know if you set up rails successfully? Running the test suites means you’re good to go 🎉
  2. You don’t actually need to set up the entire rails project to get started. You can choose one module. We went with ActionPack because it doesn’t require any database drivers. After forking and cloning the project, go to the module you want to get started and run the tests to verify the setup (cd activepack then rake tests). Hint: if you get an error, run bundle exec rake test.
  3. Contributing to Open Source goes beyond writing code. Reproducing issues or testing patches, translating the guides are all great ways to get started and make a difference with your work. If you found something confusing or missing, why not turn it into a better experience for the next person? Chances are you’re not the only one. Keeping the documentation up to date and clear to whoever joins after you is super important to make other beginners get involved.
  4. Open source etiquette is learned by… making contributions. A great way to get started is to look at previous commits and Pull requests. I wasn’t sure how to name my branch, my commits, or even my Pull Request but Thiago suggested looking at the previous ones to get an idea. I was super nervous but having someone there was very comforting!
  5. The rails documentation is great! Kudos to whoever put effort and time into creating it! Nothing beats the developer experience of having great documentation.
  6. Having your first PR merged live was a hell of a surprise!

Here’s a 15min talk sharing more:

Your Homework: contribute to rails today

Go to the rails project on github. Fork it, then clone it. Take a look at the modules there and choose one to get started by making sure you can run its test suite.

Go through the documentation and see if you can find something that needs to be updated, or translated. Could you try reproducing a bug? Fixing a patch?

Let me know what you end up doing! Start small but start today. You’ll never know how much you’ll learn from this experience 🙂

If you found this post useful and want to get involved with contributing to rails with us, you’re super invited to join us next time! We want to install rails the easy way using a VM (I found this super cool! You don’t need to install all the dependencies by yourself) and be able to run all the tests.

The easiest way to get notified is to sign up for my mailing list below, or to subscribe to our YouTube channel to set reminders for next time we go live.