This past summer, I’ve been working at Vox Media as an intern on the Performance Team. Besides for contributing to the Product Team, I am also a big open-source contributor.
Over the past eight months, I’ve been an active member of the Rails Issues Team, landing over 220 commits to Rails since my first commit, a little more than a year ago today. Rails is the open-source web framework Vox Media uses to power Chorus, our Modern Media Stack.
Serving on the Rails Issues Team has been one of the best decisions I have ever made. Working in a hands-on way with open source is a great way to hone and enhance your own software development skills, while helping to improve the community at large. I’ve had the opportunity to work with some of the nicest and smartest programmers I’ve met, and probably that I’ll ever meet.
In this post, I’m going to explore how I got started contributing to Rails (and how you can as well!), the work I’ve done so far, and the future of contributing to Rails (prepare yourself for the buzzwords).
WHAT I’VE DONE
My first commit to Rails is what most people’s first commit to Rails is — a documentation patch. There’s no better way to get involved than that! The first few series of PRs (pull requests — ways for programmers to submit changes for review) I worked on were updating all of Rails’ sub-projects’ CONTRIBUTING.md files, to provide a better walkthrough of how to submit PRs for new contributors. Since Summer 2015, I’ve worked on a variety of tasks; my main priority has been tidying up our issue tracker, which currently has about 480 open issues.
When I first joined the Issues Team back in December 2015, I immediately went through the issue tracker, and worked my way through all of the open issues. Many of them had not seen the light of day in a little while, so they needed updating. Steve Klabnik wrote an amazing blog post about managing issue trackers, called “How to be an Open Source Gardener” — I highly recommend you read it.
Another large segment of work I’ve done is focused on Action Cable, Rails’ new component which provides an API for communicating over WebSockets connections. When Action Cable first arrived on the scene, it was packed with a ton of required dependencies, much to the chagrin of some Rails Core Team members (but we won’t talk about that in this blog post). Mike Perham, the author of Sidekiq, wrote a great blog post about the need to “Kill Your Dependencies”, which goes in-depth about this.
In response to these woes, I worked on a major pull request to remove the required Redis pub-sub backend dependency, and introduced an adapter interface to remedy this. I also worked to help land the “Action Cable Overview” guide. Despite the negative reaction of many community members to this newly added Rails component, it really isn’t that bad, and provides a missing “blessed way” in Rails to deal with WebSockets.
I’d like to take this opportunity to thank everyone on the Rails Core + Committers Teams. Y’all do stellar work, and help to keep Rails a community-driven project. Special shoutout to Rafael Franca and Matthew Draper for reviewing and merging so many of my PRs. Special shoutout to Sean Griffin for being one of the lead maintainers of Active Record — this is one of the most difficult to understand parts of the Rails codebase (edge cases everywhere!), and major props are deserved for doing some major work recently to improve how it gets business done.
Of course, thank you to the Rails Community for all of your pull requests and issues opened! We truly do appreciate all of your work, and it’s a blast to be able to interact with so many different people on a daily basis.
If you’re looking to contribute to Rails, please hop on in! At the time of this writing, there are over 600 open pull requests to be reviewed, and over 400 open issues that need bugfixing help. There’s never been a better time to start working! The main “Contributing to Rails” guide lives here, and Steve Klabnik has a great blog post entitled “How can I contribute to Ruby on Rails?”.
If you have any questions / comments for me, feel free to leave them in the comments below, tweet at me (I’m @applerebel), or shoot me an email (firstname.lastname@example.org). Thanks for reading!