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.”},{