How to Contribute to Ruby

How to Contribute to Ruby

Do you want to become a Ruby committer? Are you interested in learning from language designers? Do you want to get in the loop on conversations in the Ruby open-sourced development community? If so, this post is for you.

Last week, I attended the Cookpad Ruby Hack Challenge. It was a one-day event where Matz (the creator of Ruby), Koichi and Mame (full-time Ruby committers at Cookpad) taught Ruby developers “how to extend Ruby features, fix bugs, and to improve the performance of Ruby.”

Before the event, contributing to Ruby didn’t seem doable to me — I simply didn’t know where to start or how to get involved. After getting my hands dirty during the event and learning how the development community worked, I was surprised by how open the development community was. Contributing to Ruby became a lot more doable.

In this post, I will share

  1. my notes from the event
  2. resources that can help you get started in contributing to Ruby.

Cookpad Ruby Hack Challenge

Event Hosts

The event was hosted by three Ruby core committers:

Matz (middle), Koichi (left) and Yusuke (right) at Cookpack’s Bristol office

Matz (middle), Koichi (left) and Yusuke (right) at Cookpad’s Bristol office

  • Yukihiro “Matz” Matsumoto: the creator of Ruby
  • Koichi Sasada: a Ruby core committer since 2007, designer of the current Ruby virtual machine and garbage collector. He is currently working on a new concurrency model for Ruby 3.
  • Yusuke Endoh (Mame): the release manager for Ruby 2.0, implemented coverage.so, keyword arguments, etc.

They hosted this event in Japan twice. This is the first time they hosted it outside of Japan.

Event Motivation

The Ruby Hack Challenge was to encourage people to hack the Ruby interpreter, MRI (Matz’s Ruby Interpreter), and to show people how to become a Ruby contributor.

Event Structure

About thirty Ruby developers from all over the world (e.g. Paris, Cape Town, Sao Paulo, San Francisco) got invited to the event. A few days before the event, Koichi sent out relevant materials to attendees and encouraged us to try it out ahead of time. The event started by Matz, Koichi and Yusuke introducing themselves and telling us about their past contributions in Ruby as well as their current focuses. Then we started hacking while Matz, Koichi and Yusuke were there to answer any questions. The event ended with four developers showcasing what they learned and got done during the day.

Event Materials

(1) Introduction of MRI development culture: introduces MRI’s development flow and how the community works (ticket system, mailing list, etc).

(2) MRI source code structure: describes MRI’s code structures with instructions on how to build Ruby from the source code, ends with a small exercise about changing the version description.

(3) Exercise: Add methods to Ruby: a few hands-on exercises (with answers) about adding methods to Ruby using C: Array#second, String#palindrome?, Integer#add(n), etc.

(4) Fixing bugs: contains a few bug reports from the past. This document teaches how to read bug reports and how to debug for MRI.

(5) Task ideas: a few other challenges.

Event Results

As a direct result of the event, two new patches submitted by attendees have already been merged into Ruby! Firstly, Hugo Peixoto fixed a bug around enumerator sizes of grapheme clusters that was introduced in 2.5, and second, Xavier Riley had a great contribution improving docs and test coverage around the URI.hierarchical implementation.” — 5 Things We Learned at Ruby Week

Besides the two merged patches, another attendee, David Stosik, built a Docker image to break the barrier to entry to Ruby hacking.

Most importantly, all of us got a feeling about how it was like to work with the core Ruby code and got introduced to the community. Hopefully, a few of us (including you!) will become Ruby committers.

Resources to Get Started

Here is a list of resource to help you get started in contributing to Ruby:

  • Material from the Ruby Hack Challenge is a great hand-holding resource to learn about MRI and the development community.
  • Ruby’s Issue Tracking System is a place for submitting issues and feature requests. Visit the site to see if there’s any feature you can help implement or any bugs you can fix. That’s how the two patches from attendees of the Ruby Hack Challenge got merged. If you discover any bugs or have feature requests, submit a new issue on the page to open the conversation. There are a lot of interesting conversations within the threads. Reading these conversations tells you what’s in the mind of these language designers.
  • Ruby’s Mailing List: subscribe to the Ruby-Core mailing list to stay updated about conversations happening in the development community.
  • (Monthly) Developer Meeting Notes: Very detailed and well-documented meeting notes. “Dev meeting is a place we can ask Matz, nobu, nurse and other developers directly.” Click into the Google Doc attached to the “log” section to see the detailed notes. These organized and detailed meeting notes is a great example of the leaders trying their best to keep the development community as open as possible.
  • Ruby Wiki: How to Contribute.
  • Ruby Wiki: How to Become A Committer.
  • If you want to contribute to Ruby but don’t want to write C, standard ruby libraries might be a good starting place. You can also try to increase Ruby’s test coverage.
  • Ruby might be moving from subversion to git.

Thanks

Special thanks to Matz, Koichi and Mame for flying all the way from Japan to make this event happen and for all of the hard work they put into Ruby, to Miles for inviting me to the event, and to Cookpad (currently hiring) for hosting the event.

I hope this post helps you to jumpstart contributing to Ruby. Happy hacking! =)

Enjoyed the article?

My best content on Rails, Software Design, and Career in Dev. Delivered weekly.

Unsubscribe at anytime. I'll never spam you. Powered by ConvertKit

4 Comments How to Contribute to Ruby

  1. jbodah

    This is a great guide. All of the Ruby hacking guides I’ve come across have been severely outdated. Thanks for putting this together!

Leave a Comment