RailsConf 2013

Your First Rails Pull Request

Your First Rails Pull Request

by Mark McSpadden

The video titled 'Your First Rails Pull Request' features Mark McSpadden at Rails Conf 2013, where he provides guidance for developers interested in contributing to the Ruby on Rails framework. McSpadden emphasizes the importance of giving back to the Rails community and walks through both technical and non-technical aspects of making your first pull request.

Key points discussed include:
- Inspiration to Contribute: Contributors often aim to improve Rails, enhance their own understanding, or gain recognition within the community.
- Ecosystem Overview: Understanding the organization around Rails pull requests, including the roles of the core team and issues team, enhances communication and expectations.
- Motivations for Contribution: Contributors may want to make the world a better place, ease their own workflows, or achieve fame within the community.
- Selecting Issues: Developers can start contributing by addressing personal pain points, exploring the Rails issues list, or working on supporting gems, taking note that many issues require considerable effort.
- Getting Involved: McSpadden encourages participation in discussions via the Rails Core mailing list and direct communication on GitHub.
- Setting Up a Development Environment: He highlights the importance of using tools like Rails Dev Box to streamline the contribution setup.
- Pull Request Process: Key steps include researching the issue, coding, reviewing, testing changes, and submitting the pull request while adhering to guidelines like documenting changes and cleaning up commit history.

Examples & Anecdotes:
- McSpadden shares his personal journey in contributing to Rails, noting that during one year, he aimed to submit a pull request every month, which resulted in nine accepted contributions.
- He humorously mentions the diverse motives for contributing and the realities of the pull request process, such as the initial complexity followed by valuable learning experiences.

Conclusion & Takeaways:
The video encourages developers to take the leap into contributing to Rails, highlighting that the learning and improvement gained through the process far outweighs the challenges. McSpadden's insights and structured guidance provide a clear pathway for first-time contributors to engage with the community and become part of the open-source ecosystem.

In summary, Mark McSpadden inspires and equips developers to contribute to Rails with both confidence and clarity, underscoring that every contribution, regardless of its scale, enriches the entire community.

00:00:16.480 Okay, welcome! We're going to get started. Welcome to your first Rails pull request.
00:00:22.400 Other working titles for this talk have been "How to Submit a Pull Request to Rails Without Everyone Laughing at You" and "How to Submit a Pull Request to Rails Without Being a Complete Jerk." The second one is actually a lot harder than the first.
00:00:35.840 I am Mark McSpadden. You can find me on GitHub, Twitter, or just about any place where I try to grab the Mark McSpadden name. I work at Sabre. Who has heard of Sabre?
00:00:47.520 Like eight people, so we serve back-end travel systems, airline reservations, hotel reservations, and we own this company called Travelocity, which you might be familiar with. We do about a billion API calls a day, none of it in Ruby, and they don't let me touch any of it.
00:01:04.000 I run the tech side of Sabre Labs, a group of volunteers that fights with the stables. If you were here for that talk, we're based in Dallas. I helped organize the Dallas Ruby Brigade, and this year we had our first conference called Big Ruby.
00:01:21.200 Who has heard of Big Ruby? Like another five people. The conference in Dallas is going to happen again next year. It's about people doing big things with Ruby, and we received really good feedback from the content. In fact, you're in here, which means you're not next door at Brian's talk.
00:01:33.920 Brian gave a talk on services in Rails and the stuff they don't tell you at our conference. It's up on Confreaks, so you get a two-for-one by being here today.
00:01:52.000 Are you impressed yet? Have I established my authority as a speaker who should be up here? Please do not be impressed. I feel like I believe I belong out there. Someone else should be up here.
00:02:05.119 This is my GitHub open source graph. Who has a graph that looks better than that? Yeah, lots of people! Good job. Way to go!
00:02:16.640 So how did I end up here? To ask that, we will fast-forward back to the beginning of 2012. I've been doing Rails for almost seven years at the time, and I thought it was time for me to start giving back.
00:02:34.000 You know, you just have that feeling inside you. So, at the beginning of the year, it's the time of year we make bold proclamations, so I declared that I was going to submit a pull request to Rails every month for the whole year.
00:02:48.000 Now, a couple of things about bold proclamations: Number one, I don't make them in public anymore, so I just told myself this. Also, I didn't set the bar really high. Notice I said, "submit a pull request." I don't even care if it gets accepted at this point; just hitting the submit button is a big deal.
00:03:06.720 I'm sure you can see where this is going. Obviously, I failed, but I did end up with some pull requests—10 total pull requests to Rails, and nine of them were accepted. This talk is a little bit about what I learned along the way.
00:03:24.080 But big red disclaimer: I am not on the Rails core team, I'm not on the Rails issues team, and I'm not on any other secret Rails team that I don't even know exists. However, I feel that I am a lot like you, and that means I feel like I can help you with your first real pull request.
00:03:42.480 Speaking of you, how many of you have attempted to submit a pull request to Rails? Wow! There are like seven hands, eight hands. Okay, how many of you got accepted?
00:03:54.160 Oh good, great! Okay, how many of you have submitted a pull request to anything on GitHub? Oh, okay, that's a lot of hands.
00:04:08.000 Okay, so we're going to talk a little bit about why we contribute to Rails. Hopefully, you can get inspired that this is something you can actually do. I believe that you can do this; if I can do it, you can do it, trust me.
00:04:18.400 So why would you contribute to Rails? One reason is to make the world a better place. Oh, that's great!
00:04:24.639 Actually, I joke about this, but it kind of resonates with me from last year. If you were at Ernie's talk yesterday, a lot of people who were there inspired to make Active Record better, and you kind of come away thinking, "I'm going to do that!" I mean, I didn't do that; I had to work on these slides.
00:04:41.520 But hopefully, you went away and you're like, "I'm going to work on Active Record," which is a great motivation to make the world a better place.
00:04:53.759 Another motivation is to make your life easier. Maybe you think that by changing the way that Rails works, your job will be easier. I have to tell you, this is a really long play if this is your motivation.
00:05:06.160 This is a very scientific graph of your quality of life over time. You see the point at which you say, "I know, I'll submit a pull request." Your quality of life goes significantly down for a while.
00:05:17.840 Then it does come back up after the pull request process is complete, and then you do have a better life. But that can take variable time. It's kind of crazy.
00:05:29.280 So the third reason, which I think is actually the most important reason to submit a pull request to Rails, is to better understand Rails.
00:05:35.199 This is the gold star, double unicorn, rainbow reason. I've learned so much about not only the ecosystem and the tools around Rails, but also its internals, just by being willing to spend a few hours on a given day digging into an issue or trying to make something that I thought was important come to life.
00:05:53.840 I think this is the reason you should be trying to contribute to Rails, and it works out pretty well because it's self-serving.
00:06:00.479 Also, a fourth reason is to get famous. That's why you should contribute to Rails.
00:06:07.120 I'm kind of serious. Who's seen this site? Oh, this site is awesome! You learn about it when you get your first pull request submitted because you will be on the leaderboard of contributors to Rails at contributors.rubyonrails.org.
00:06:20.720 You can see here I'm number 336, but I'm also the sixth Mark on the list. I was like fourth, and then some other Marks got ambitious.
00:06:33.039 This becomes a game in and of itself, which I think is a really interesting element. It's a really fun thing to do.
00:06:38.720 There's also filters on it where you can sort by month. Like, one month I was really active, and I was like, 'I'm the third best this month!' This can be a motivator for you.
00:06:55.840 So hopefully one of those things kind of fits where you're at. You want to make Rails better, you want to make your life better, you want to better understand Rails, or you want to be famous.
00:07:07.039 So I want to give you a quick overview of the ecosystem around pull requests.
00:07:07.639 We don't talk about this much, but it's really hard to grasp unless you're in there. I want to set your expectations for what you can expect. I mentioned earlier that I work at a really big company, and we joke that no slide deck is complete without an org chart.
00:07:36.000 So I went looking for a Rails org chart, and there isn't one. So I present to you the first ever Rails org chart.
00:07:48.160 There is a core team, you guys are familiar with them. They make decisions about where Rails is going and they commit a lot of code.
00:07:58.640 There's also an issues team. How many of you are familiar with the issues team? A few of you, okay.
00:08:10.400 The issues team has been around for only about a year, and their main job is to triage issues as they come in.
00:08:20.640 At RailsConf last year, we had a ton of issues in Rails, and they have been amazing at taking that list, asking for more feedback, and closing issues that aren't relevant.
00:08:37.120 This group is probably the one you're going to interface with most if you're having conversations about your pull request.
00:08:55.040 Now, over here on the far left, there are more than just Rails in the Rails organization on GitHub.
00:09:06.399 There are people who maintain these gems, like Turbolinks and Jbuilder. Remember ActiveSupport's list? That's a different repo now.
00:09:24.800 They all have maintainers, and then there’s us. The reason I think big organizations have problems with open source sometimes is they don't get that org structure that everybody talks to everybody.
00:09:31.760 But we have this really unique ecosystem where at any point we can talk to any one of these people.
00:09:51.200 What you should know about the ecosystem is how to communicate. There are a couple of ways people that contribute to Rails communicate.
00:09:58.640 The first one is through the Rails core mailing list. Who has subscribed to this list? This is like the first actionable thing you can do: subscribe to the Rails core mailing list. It’s a Google group.”},{