Ancient City Ruby 2016

FOSS like a Boss!

For some, open source software is a way of life. For others it's a dark and scary place -- full of fear, uncertainty and doubt. The hard reality is: nobody truly knows what they're doing and we're all just one teeny step from getting rumbled.

Let's explore what it takes to contribute to popular open source software and dispel the myths. By the end of the talk I guarantee you'll be throwing pull requests like a BOSS or your money back! (OK, maybe not that money part)

Ancient City Ruby 2016

00:00:00.000 The next time we have Ben Lovell from London, let's give a round of applause for this presentation. Hello! It's great to be back here; this is my third time now, and I want to say a little bit about Hashrocket.
00:00:11.160 I love Hashrocket, and I'm really pleased that they invited me back for the third time. I was trying to think earlier about how I could repay the favor, so I decided to redesign the Hashrocket logo for free. So, the 18 syntax is old and dated, right? And Sam knows this.
00:00:24.029 I mean, nobody uses it anymore, right? So I thought I'd try and update it. Let's see how this works out—if you like it, you can pay for it.
00:00:39.050 So we've got the 19 thing going on, but then, of course, the name Hashrocket doesn't make any sense anymore. I was thinking about this while I had lunch. Some people might think of one thing, and others might think of another.
00:01:01.240 So I wanted to disambiguate. Remember, you can use this for free, no charge, and I thought, 'Large Intestine.' Hello, this is a Large Intestine, you know, boutique web agency. It's not really going to work, so I needed to bring it into this century. I dropped some of the vowels; now we've got 'Large Intestine ER.' And anyway, as I said, you can feel free to use it.
00:01:17.790 So, I love poetry, and I'm from England; Shakespeare's my dog. I thought I'd write a sonnet just for you. Here it goes—this is going to suck so hard. There was a young man named Ben who was invited again. They just tended to use the words that we know and just end them with 'if.' He doffed, spoke for a bit, and if strange, random, he won't be invited again.
00:01:40.590 Yeah, that's my dog. So, I enjoyed Paolo's talk; it was fantastic. It amazes me how they can replicate human behavior. I mean, it's indistinguishable from real life, so I hope you got your snake case entrance in. Come on, there's mine! This is a faux snakeskin; don't worry. Yes, anyway, there is a talk, and I just wanted to cover the fact that the title is called 'FOSS like a Boss,' which is just a really catchy mnemonic. The whole talk really is about open source software.
00:02:50.610 I'm not necessarily interested in this style of freedom; I'm not overly interested in this style of freedom either. Although, you know, he's a smart guy. If someone thinks Netflix is an affront to freedom, then this one's for the Jackson brothers.
00:03:23.840 I want to start off with a question that I already know the answer to: who uses open source software here? Everybody, right? There's one person who said no. There was one person who said no—are you an alien?
00:03:44.940 So, I’m going to say, 'Why would you contribute to open source software? What's the point?' I'm going to talk about this from the perspective of the regular user of open source software. None of this is going to come from the maintainer's perspective, so I thought I’d best describe it. I’m going to bust some jargon and cover a few of the things they say and what they really mean.
00:04:43.110 One of them is about raising your public profile; that’s what they say. What they mean is you'll never meet these people in person. Another thing you hear is, 'You’ll travel the world and speak at conferences.' It’s all connected to the whole public profile thing.
00:05:02.520 What it really means is you’re going to spend months of time preparing talks, you're going to be in airports, you’ll have jet lag, and you’ll have speaking anxiety. Let’s talk about altruism—the concern for or devotion to the welfare of others. Now, what that really means is you're going to provide critical components to businesses making millions of dollars from all.
00:05:54.330 And my personal favorite is the GitHub CV. Well, I tried to think of the best way to describe this, and I came up with a couple of images. There's a ball, and there's some (unsure). And I guess you're starting to think now—hold up a minute; this guy is supposed to encourage us to contribute to open source software, right? I'm going to try and do that in a sensible way.
00:06:47.500 This is Ryan Bigg, and he’s somebody that has recently fallen out of the open source community. This is someone who contributed loads to the community. I’m sure at least half of you use software that this guy's written. He’s mentioned that maintaining open source software for free is not sustainable long-term, and that kind of makes me sad.
00:07:13.510 Now, this is my buddy, GitHub's Xarbatov, so you might know this guy from Robocop or the Ruby style guide. He says users act like customers, and they’re not your customers. They’re making money from your free time. And there’s this foundational principle that people who pay the least expect the most.
00:08:07.620 So here's a picture of an open-source maintainer. This is the wasteland of open source projects. There’s another maintainer there, still fairly aggrieved and kind of sad. It's a stressful existence. And this is a user; it's the most blissful nirvana. They’ve got nothing to worry about, and they’re still the angriest people in the world.
00:08:54.150 It can suck being a maintainer having all this expectation piled upon you. So, I'm going to try and encourage you to make OSS great again.
00:09:14.822 The best effect is I might need to take my glasses off here. This is a striking familial resemblance. I wanted to describe this guy with pictures, so I chose an ass and a hat—asshat. Ok, I’m sorry if I offended anybody.
00:09:46.577 And for those of you that haven't been offended yet, just give it time. I completely stole this from somewhere on the internet but it really resonated with me. 'Trump is what would happen if the comments section became a human and ran for president.' We actually have a street named after Donald Trump; you might have heard this expression, 'Up the creek.' We say 'Up Trump's creek.' You know, just to give kind of a well-rounded perspective, I decided to get Hillary involved.
00:10:32.660 So, scary that is actually scary.
00:11:39.060 And I remember some guy earlier stole my joke, you know! Anyway, I was going to talk about this first, and somebody beat me to it, and you know, yeah, this whole thing about JavaScript, Ruby, and Java being phased out. But I was looking for signatures and I saw DT.
00:11:58.150 And I was kind of like looking for Trump quotes, and I found this: 'As has been stated continuously in the press, people are using JavaScript, Ruby, and Java unabated.' And this is from Donald Trump. Now back to your regular broadcast.
00:12:21.720 This is actually a quote from someone that I know, and I’m going to tell you a little story.
00:12:35.478 Last summer, I was teaching a boot camp for a group of eight students. I should probably know the number, shouldn’t I? There were eight students at a boot camp that took place during the summer over three months, and they came from varied backgrounds. Some had programmed before; some hadn’t. There was one guy in particular. We sat down and were going through one of the exercises.
00:13:30.460 We hit a problem with the Ruby documentation. He was reading it and said to me, 'Look, I followed the documentation, and this was just plain wrong.' I was like, 'Yeah, that happens sometimes.' I was thinking this and didn’t want to color his judgment about Ruby. He asked, 'What could we actually fix this?' I said, 'Of course, we could!' And he was shocked.
00:15:04.270 He said, 'You mean we could fork the Ruby code base, make these changes to the documentation, push them up, and they’d get merged?' I was like, 'Yeah, sure, let's try it!' So we did it, and we pushed it up. We waited six months. Things happened, civilizations formed, 16 million JavaScript frameworks were born and died.
00:16:28.970 Eventually, it got merged. This was after I left that organization, and it blew his mind. He learned two important things: 1) Open source can sometimes be a bit slow, and 2) You can contribute to open source; it's there for you.
00:17:57.610 You might say, 'This is just a basic documentation patch.' I wish a startup would come up with something that, anytime somebody says, 'This is just a documentation patch,' a boxing glove would come out of the nearest laptop and punch them square in the nose.
00:19:23.670 There’s no such thing as 'just' this kind of patch or 'just' this kind of patch. This is going to help someone in the future—it's not a shortcut to a solution. People won’t spend minutes or hours like we did spinning our gears trying to figure out what was going on.
00:20:55.350 At the moment, there are a lot of transformative things going on in government. I worked for these guys for a while, and this is me at my desk. Recently, I changed allegiances to another part of the government, the Treasury. This is me at my desk at the Treasury.
00:22:24.354 One of the problems with government is that traditionally, we've liked to build our systems like this. We build Death Stars. So, let me give you an example; one project was for the NHS, the National Health Service, and the expected cost of this project was 2.3 billion pounds. That's not exactly cheap!
00:23:54.960 Because procurement is completely broken in government, they designate these agencies tasked with extracting as much money as possible from the government in a short time span. And this particular agency extracted 12 billion pounds from the government without any transparency in this process.
00:24:44.280 None of this stuff was open source—there were taxpayers paying lots and lots of money for this, and eventually, the project wasn't delivered at all. This means 12 billion pounds worth of taxpayers’ money just disappeared.
00:25:53.570 The government uses open source for transparency. Different government departments are working on shared infrastructure, and it’s great that we can share these kinds of components and find cost savings from doing that. Open source has been a real big win for the government.
00:27:07.840 Oh, and I understand that you folks have your own open-source standards as well when you're building government projects. A funny story: I was searching for a logo for 18F, and the first hit that came up on Google was this. Perhaps it says a lot about America!
00:28:25.600 So, back to the Death Star, one cool thing that popped up the other day: This is a junior member of my team, Tatiana, who tweeted this. One thing we do in government is we have all our templates available as open source, so other government departments can use it. This results in a consistent and regular style.
00:29:38.600 So, this is kind of what the GovUK website looks like with the regular GovUK content. A bright spark came along and reproduced a whole load of God from the first order! The amount of time and effort this person put into this was incredible; it’s really funny.
00:31:01.400 Like one of the things they did is: what we do is support the Prime Minister and ensure the effective running of government. Their alternative reads better to me; we use advanced military technology in a strong-handed approach to bring the rule of law back to the galaxy.
00:32:05.640 Remove your sandcastle and grassy knoll. That’s pretty much interchangeable; you could swap that copy around, and it would work.
00:32:53.360 It’s probably best for me to give you some ideas about what constitutes a contribution, as it’s not always just code. The reality is, since GitHub is the canonical source of open-source software, pretty much whatever GitHub says is a contribution is a contribution.
00:33:11.450 Opening issues on open-source projects is classified as a contribution, right? You've got your little empty square here, and you admit that this sucks.
00:34:06.660 Guess what happens? You get a green contribution square for telling somebody that they suck. If you want a full timeline, just go to every single project you find and tell a maintainer that they suck. But seriously, do not do that.
00:34:34.660 Unless you want to take responsibility.
00:34:46.270 Imagine this: you’re a maintainer, you’ve built this software, and one day, someone tells you you suck. You need to reevaluate your life's goals, like what you're doing and you spend time, energy, and effort doing that. But in closing the issue, you don’t get any recognition on your contribution graph, and that sucks.
00:35:39.360 Here’s a statistic: if you get hundreds of issues opened on your project, and you spend time triaging, you know, responding to issues, you don’t get a contribution for that! It’s always been a sore point for me.
00:36:23.280 One of the important things you can do for your friendly neighborhood open-source maintainer is to give thanks. This is how the internet works, right? I love the work of this guy.
00:36:59.540 One of the things you can do is open issues to tell someone that they suck and get a contribution. Guess what? You can also open issues to say thanks to people and you’ll get a contribution tick. As I said, in a world of angry users who are full of expectation, those little thank yous add up to a lot.
00:37:49.070 And as I said, they’ll get you a contribution checkbox if that means anything to you. If you didn't believe me, just the other day, a friend of mine tweeted about how much a thank you meant.
00:38:26.050 So, I encourage you all to say thanks once in a while—just wait until the end of the talk.
00:39:06.800 I also want to cover the paradox about the GitHub timeline. Most people's activity—their window into open source contributions, is basically the GitHub timeline.
00:39:54.690 When you have showers, there are bigger contributors than you—this shower went hard. This is the biggest streak I've ever seen before.
00:40:21.900 I was looking at my buddy Constantine's timeline. Constantine is the only person who can challenge a shower for contributions. I saw something; I was like, 'What? I'm not going to...'
00:40:56.000 So I asked him, 'I'm curious; what happened on September 24, 2015?' He said in typical Constantine style, 'I had some lows.'
00:42:07.220 So there’s one more contribution you can make: you can help with open issues. If you use a gem at work, you know, you take and never really give.
00:43:05.700 Just try to go through the issues, see what’s open, see if there’s anything you can triage. If you’re not an experienced or confident developer, many big open source projects tag issues with labels like 'easy,' 'beginner,' or 'needs assistance'—those kinds of things.
00:44:02.030 Also, a great contribution you can make is donating some money to open source software maintainers. I’m going to put my money where my mouth is. I’ll donate 176 pounds 80 pence, which in freedom money is $250.
00:45:14.560 That’s my Twitter handle; you can come and find me after if you’re a maintainer of an open-source project. Except for JavaScript, because at this stage, money’s not going to help you.
00:46:12.210 That's a joke, by the way... I don't mean it! But if you're a maintainer of an open-source project, come and find me or tweet me and send a link to your Amazon wish list or your PayPal email address. I promise I will donate some money to you.
00:46:57.470 Ruby Together is a nonprofit organization. You donate money to them, and they repurpose it for critical components or pieces of infrastructure. Specifically, I believe in the Ruby community.
00:47:36.760 Things like Bundler, Ruby Gems—all these kinds of things that we all rely on but none of us contribute to financially.
00:48:35.770 Another great thing you can do is community outreach. Back in the day, I was using Celluloid and trying to hack on it. I had no idea what I was doing. I did regular stuff—sort of tidied up some of the code, removed some white space.
00:49:39.740 I felt like making contributions. I was at a loss, really. But I was using Celluloid in a professional setting, so I decided to go speak about the thing I knew nothing about.
00:50:40.620 This was actually the very first talk I ever gave in the Ruby community. Someone on YouTube had an opinion about this. I don’t want to take this airtime to criticize this person— I love Ruby, and I like Celluloid.
00:51:35.570 I feel meaningless words, come what may! You know, I'm a mature guy and let it slide right over me. ‘He's a poopy head.' You can contribute documentation; it’s something that none of us necessarily want to do.
00:52:38.350 Yet, it can be really helpful, especially when projects are in their infancy. Spec documentation is not documentation.
00:53:19.640 Saying that documentation fixes or documentation pull requests are not meaningful is false. They are meaningful to some people.
00:54:45.770 And of course, code merge to master is a contribution! Now, I specifically shied away from talking about all the different contributions you can make to open-source projects in terms of code committed.
00:56:04.420 If you want some pointers on that, come find me after. That could be a talk in itself. One thing the JavaScript folks are missing at the moment is a left-pad solution.
00:57:22.400 Left-padding strings is important and a tough problem to solve. If any of you have skills and have left-padded strings before, please help contribute!
00:58:12.440 So, we’ve spoken about some of the contributions you can make. I want to cover a checklist before you make a contribution.
00:59:42.490 If you’re about to embark on a really big feature, don’t do it blind; ask the maintainer first. See if they’ve got something lined up. Check if there are already open pull requests or closed pull requests trying to address this issue.
01:00:30.770 The worst thing that can happen is you can spend an almost inordinate amount of time crafting something beautiful, only for the maintainer to come along and say, 'I'm really sorry, but it just doesn't suit our vision or there's a competing pull request.' That’s happened to me before, and it’s a little disheartening.
01:01:29.660 Read the contributing guide: some projects have specific styles. They might expect code written in a particular way. There might be a whole bunch to consider before contributing.
01:02:32.196 Understand that just because you opened a pull request, the chances are it might never get merged. That’s something people get wrong.
01:03:24.440 As contributors, our needs are different from the maintainer's. We think that once we've opened a pull request, we’re done. We drop the mic. But for the maintainer, that’s when their journey starts.
01:03:56.930 They have to maintain your code for eternity until it gets deleted from the project or the project moves on. During the review process, you might not hear things that you want to.
01:04:49.660 And sometimes, out in the field, it can be tricky. For example, Kim Jong Il is not relocating to San Francisco; you can forget about that!
01:05:58.690 One interesting fact: he actually contributed to Rails. I don’t know if you saw that recently, but yeah!
01:06:45.830 Anyway, sometimes you're going to contribute something and wait for it to be reviewed. Once you open a pull request, it's like time stands still.
01:07:55.740 So here’s one piece of advice: don’t incessantly ping the maintainer for a response. This doesn’t help speed things up. It just applies pressure on the maintainer. They’re already stressed enough.
01:08:56.890 Anytime you give a plus one, it lands in their inbox as yet another reminder that they’re not spending enough time on reviewing your code or that project.
01:09:41.190 And I saw this recently, which was amazing: someone contributed a piece of software, and the maintainer said they’d take a look later. Much later because they were Ukrainian, and they were currently involved in a revolution.
01:10:50.320 You got the contributor asking and those folks were struggling as they were busy trying to fix their country. It's a bit of a mess!
01:12:05.020 Okay! Here’s where I try to rationalize a seemingly random collection of memes and largely unrelated thoughts.
01:20:31.130 Number 1: Maintainers are a scarce resource that we should try and protect. Freezing beer for maintainers is just crazy; we should try and contribute where we can!
01:21:25.700 Freeing an open-source maintainer is doing this long term is completely unsustainable.
01:22:07.550 You should give thanks as much as possible. You should contribute by any means, right? Well, that brings us to the end of the talk.
01:23:30.540 Of course, the Hashrocket crew loves their water sports, surfing, and stuff. Some of the people in the crowd have a phobia of sharks.
01:24:21.300 I know some of you remember from last year. I apologize to those who were here last year because what I'm doing know is technical term—to rehash jokes!
01:25:30.070 There are these sharks that have probes on them so they can be tracked, right? That means you won’t just suddenly run into a hungry shark while swimming.
01:26:14.690 Last year, I decided I wanted to make a startup idea. I never really got anywhere with this, so if anyone wants to take it and run, feel free to!
01:27:37.740 Hot single sharks in your area! I tweeted these people and was serious about this. I even expressed interest in licensing the technology!
01:29:09.480 I replied, 'A couple of sharks kicking back, no pressure, let’s see how it goes.' I wanted to give them a nudge this year. Years passed, almost to the day, I wondered if you’d given my shark dating pitch any thought.
01:30:21.380 Hit me up, I haven’t had any bites yet! Regardless of that, I felt a bit bummed out.
01:31:10.830 I was just playing with my little prototype at home, and I actually came up with a hit! So, we got this cute little lady and this guy!
01:32:30.000 But don’t worry, they’re safe because someone in South Carolina made some shark cages.
01:32:51.700 Anyway, that brings me to my end for the day.
01:33:05.930 So, I wanted to say thank you to Lurch and Theresa, and this is where you give a rapturous applause.
01:33:40.370 Thank you, and don't forget the $250! Or the £876.60.
01:33:50.200 I can take questions.