Brian provides tried and tested tips for making your open source project easier to contribute to. Including, thinking through the different ways people can contribute, the power of contribution guidelines, the importance of welcoming new members, as well as why you might consider sponsoring contributors.
All right. What's up you all? It's Bdougie. My given name is Brian Douglas, but you'll find me Bdougie everywhere on the internet, bdougieYO on Twitter. And I'm really pleased to actually talk about one of my favorite subjects, which is open source and community.
Open source is something near and dear to my heart. It's something that I've always felt like I could write code or I can copy and past code at least. But when I started doing open source or started using open source, it kind of unlocked a lot of opportunity for me when it comes to development.
So with that said, I'm going to jump in. And I want to jump in with like a little bit of a story or history lesson. Recently, my son, he stayed at home from school and he's been really into learning about black inventors.
So we have this book for him and my wife, since he stayed at home from school, made him actually do like a little bit of an assignment talking about art. The assignment itself was reading a book about black inventors and then writing like five things he'd learned from there.
One of the inventors that comes up is Booker T. Washington, because he's done a lot of stuff when industry and sort of unlocking a lot of stuff for black Americans, specifically HBCUs. So HBCUs are historically black colleges and universities.
And Booker T. Washington, the first one he threw together was actually Hampton University. Hampton University was all about hospitality. They would teach black Americans how to work in hospitals and work at restaurants and work at hotels and just sort of provide hospitality for just other Americans as well.
And it was like after slavery ended and folks were integrating into society, this was like an inroad for folks to just learn tips and tricks and the trade. So they exist in that. I just wanted to mention that because I actually learned how to code through a bootcamp, and it's not too dissimilar of trade schools. Boot camps are specifically.
I want to mention that correlation because I think when you have a framework for people to learn new skills and integrate themselves into new jobs, it unlocks a lot of different opportunities. And some of the opportunities I want to mention is like with open source.
So every year, Linux Foundation actually throws together this open source report and they usually partner with somebody. A couple years ago, they partnered with Dice Jobs. They identified that open source is super impactful for jobs and companies.
So I just want to mention that. Open source is very valuable. It was valuable for my career. And my career today it actually is at GitHub. I work as a director of developer advocacy. My goal is to teach people how to leverage GitHub tools and features in very meaningful ways.
So we unlock a lot of automation through actions or a lot of community development through GitHub discussions. I build a lot of tips and tricks and video and content that my team does as well. So I also work on this project on the side called Open Sauced and I'm super excited to be working on this more regularly pretty soon.
This is a pathway for you to find your next open source contribution or your next open source project, and also find a way to find insights on your open source projects as well. Now, as mentioned, this is Brian Douglas. This is me. And that's what I look like on the internet.
I joke all the time that I'm a Beyonce advocate. And Beyonce advocate is really just a joke that I came up years ago with because what I love to do is I love to empower other people within my community to do really big and great things. And Beyonce does very similar stuff with the Beyhive.
We don't have to get into it now, but I just want to mention that. Just check out my old talk. Now, my pathway to open source, it's a long, meandering path. It's very similar to my path in the coding. And I have my entire story out there on the GitHub ReadME project.
So github.com/readme. Just search for Brian Douglas and you'll find me. It really just starts with I got a finance degree. I'd always been a good copy and paster and could write a little bit of code, but it wasn't until at the point where I got a finance degree, got into tech sales, and then found out that you can actually get a job writing code that I made the leap in the jump. And I learned that from Googling.
And at the time when I took my first full-time engineering role, I found some folks who wanted to build a project together. And at the time, I had no idea to do. I had no idea how to do Node.js on the server. That's the project that we were actually trying to work on and was using Node.js.
So I went on GitHub, I found the project through Googling, and then discovered that it solved most of my problems. But unfortunately, when I started using it, I had a bunch of problems. So I found the maintainer on GitHub, found their email on their profile, emailed them directly.
And then from there, to my surprise, they responded to me. I just was kind of blown away they responded. They answered all my questions. I got unstuck. We got to ship this project for like a community that we were building.
And he later told me like from this week and a mentorship that he was just answering my questions, he's like, "Oh, by the way, I'm in Thailand at a K-pop concert." And I was just blown away because he is like a digital nomad.
And I didn't know that was a thing, that you could just like travel the world and write code for fun. Not even for fun, for work. Have a full-time job and travel the world. I was blown away just like that. You just don't know what you don't know until someone tells you it.
So I learned about digital nomadacy or nomadic lifestyle. But then also in the same vein, I learned how open source works and how to collaborate. And I also learned that you can open up GitHub issues instead of emailing maintainers directly.
There's this quote by from Gucci Mane. And if you're tell me who Gucci ,ane is, he's the godfather of trap music. So trap music really got popularized like in the mid 2010s really with like the mumble app.
But it's been around for a while, at least since I was in college in the mid 2000 odds. But anyway, going back to Gucci Mane, he had an interview on Tumblr, of all places. Shout out the Tumblr. And this individual was interviewing Gucci Mane, asking him, how do you get the sauce?
How do you have the skillset to be one of the best rappers of all time? He had a very long meandering response. But his main response was, "If you don't got sauce, then you lost." And the sauce is something that I never knew I could obtain until I had an experience with my mentor or maintainer friend in Thailand.
And once I figured that out, my entire career completely changed to the point where I found that open source was like a gateway to unlock a lot of different activities, a lot of different career moves, a lot of different opportunity.
And so I built a project to maintain my own open source contributions. It was basically a CRM. It's still called open source. And what I did is I built a UI on top of GitHub's issues. And for anybody who wants to maintain or contribute to projects for the first time, you can stalk projects and identify insights about how to contribute and what's happening.
Now, we've evolved this project a lot since then. And I say we, because we have got 60 plus contributors who are part of our community who have been helping. And now we're basically identifying through Git data, what are projects that are having really good upticks for contribution?
What are projects that are good for our first time contributors? What are projects that are maintained by companies that you potentially could get hired into? What are projects that are paying for contract work?
So this is all insights that we're trying to sort of co-locate into one platform, which is open sauced, which we're not there yet today, but I would love help. I would love feedback. And if you are doing open source or if you're at a company doing open source, just reach out to me. I definitely have lots of questions and I'm sure I can answer a lot of your questions as well.
So today Open Sauced is open sourced. It's an open source project that find your next open source contribution. We've been growing community during this Open Sauced repo. I want to get into some tips and tricks on how I maintain community, but also how I have built different frameworks to onboard more people into the community and keep them interested.
So the first question most people are asking, and you might be asking this right now is, how do I get into open source? I've got a bunch of answers, and I think everybody's got a bunch of answers.
But the first step is, if you are using projects... You're going to get this answer already. So I'm just going to give it to you. If you're using a project, if you go to any GitHub repo and go to /contribute, it'll show you all good first issues, all documentation PRs that you can contribute to, as well as some other stuff. And they're all unassigned stuff.
So if you don't find anything in there, it's probably because no one's opened up an issue for that stuff. And the second best thing you do is if you don't find any good first issues is go open up an issue. And the way to do that is go use the project.
So if you're not using the project, probably not going to be able to contribute to it. If you're using a project, open up an issue every time you find a bug and then talk to the maintainer, be friendly. Because sometimes if you want a friend, you got to be a friend.
Other things is like Hacktoberfest. Every October, DigitalOcean puts on this large event online, which is called Hacktoberfest. Tons of projects participate, tons of projects sponsor it. And they provide opportunity for folks to make their first contributions for their first time ever.
So there's a lot of documentation, a lot of events. So definitely participate if you're interested. Open Sauced will definitely be a part of this in 2022 as well. Now, one thing I do, and I'm going to get to some stuff that we do.
We also have documentation. Folks who contribute to Open Sauced, there's some stuff we've built that it's complicated. So what we do is we explain all the complicated things like dark mode. It seems trivial to put together, but to put it together in a project that's been around for six years, it wasn't trivial.
So we wanted the write documentation on it. If you want to contribute to dark mode or contribute to something else, like our GraphQL API, we will teach you GraphQL. We've got documentation on it. And if you don't understand the documentation, I definitely have ways that you can help write this together.
We can write documentation together as well. It's a great contribution. Now, back in 2020, folks, we were enamored with like all these Tiger King and The Last Dance. Michael Jordan is specifically not Tiger King.
But Michael Jordan's Last Dance documentary, where it was his last hurrah. So he had retired from basketball and then he came back and then he retired again. And the second time he retired, it was like everybody knew this was it. He's going away. He's going to go do another thing.
So he had like this sort of last hurrah like, "I'm not coming back. Goodbye." Ironically, he did come back years later. But anyway, that's besides the point. But during this tour, they sort of identified, what made Michael Jordan, Michael Jordan?
What was the thing, the framework that built him to be who he was? Was it because he spent more time practicing than everybody else? Well, the answer is yes. But I'll get into that in a second. But I just want to remind everybody, like, at this time, it was a couple years after the NBA Jam era.
So folks were just dunking on tops of dunks and tops of dunks. And it looked just like this. This is real life. And mind you, basketball's five on five. So the one person would just like take the ball from one end of the court and dunk into the other opponents hoop.
So like the Shut Up and Jam! era, like Charles Barkley. So what I'm getting at is statistics kind of broke that up a bit. Everybody thought, "Oh, you know what?" And it's the same thing with code.
Back in the day, you could be the one person writing code from the back end, the front end, and call yourself a full stack developer and keep the DevOps going and run the server from your kitchen or whatever.
But those days are over. You've got to basically leverage more people on the team when it comes to engineering. And it's the same thing with basketball. And what they did with statistic, they identified on the court there's a one point what they call Area 31.
It's right off the foul line and it's always on the left side of the rim because most players are right-handed. So it's very difficult to defend this shot. And 31% of these shots go in. So if you know that and if you know exactly, like if you're a developer and you know you're going to deploy on Fridays or you're going to deploy after test pass, you start building automation around that.
So the same thing with sports, you automate to get the ball directly to that point, which is Area 31. Now, I bring this up because when you think about Area 31 and five people in the court, if you're the first teammate and you've got a two and you've got a number four over here, when you run your place, you always know the four is going to be here, the two's going to be here.
So if you're ever in trouble or if you're ever double teamed, you know someone's wide open. And it's the same thing when it comes to programming, the same thing when it comes to open source. You identified the pattern and the framework to make sure that everybody's successful at all times.
So in the case of Michael Jordan, it was called the triangle offense. And when you have just two other people around you, you always make a triangle. So you always know who to kick the ball out to at all times.
Now, in the context of Open Sauced and open source, I discovered something called the triage team. And this is something I had no knowledge of prior to 2020. But GitHub had created a new feature. And people had been doing this for years, but GitHub created a feature to make this easier. It's called the triager role.
So inside your organization, you can create a triager role specifically for a team. And anybody who needs to label issues, to triage issues, they can join this team. Now, what this makes, it's a great onboarding ramp for contributors.
And what I did in 2020 when I discovered this is I created a triager team for my project. And we had about seven people join Open Sauced. And this was like the pinnacle point of when open source really started taking off and I built login functionality so that anybody can use the product.
We grew our community very quick around the idea of a triager role. And that anybody could just use the product, open up an issue, triage the issue. And then I would tell them exactly how to fix it.
And it actually alleviated a ton of bandwidth for me personally as a maintainer of this project, because I started educating other people on how to contribute to the code base I created for years. And we sold this idea from Express.JS, but also Node.JS has this.
I think the Babbel team also has this. The Blitz.JS team also had this as well. So a lot of teams and a lot of open source communities are now using this tool as like this is the framework of how you get people started from zero to no contributions to maintainer.
Some other stuff we do is we enforce this other feature, which is called Linked Issues. And Linked Issues, if you aren't familiar, on the right pane of your PR, you can actually link an issue directly. You can always use shorthand.
So if you do pound into the number of the issue, you can link it to your PR. And the reason why we use Linked Issues is because events like Hacktoberfest, folks will come in and they'll want to make a contribution, but their contribution might not be something that we're interested in contributing to or taking that contribution from.
And mainly if we don't discuss it first or maybe it was something that was not needed, we ask that a issue is open first. So if you have an idea, open an issue. I know not everybody's confident opening issue, but that's why we have other ways for you to communicate with us.
But in this reason, if you open the issue, it's a better chance of your PR getting merged. Because a lot of PRs are going to open it in open source, they don't get merged. And it's mainly because they either weren't needed or didn't follow the contributing guide or they didn't join like some sort of triager team or some sort of like onboarding ramp.
So what we've done, we had this discussion, me and another contributor. And this contributor actually just took it on their own accord to build a GitHub action on how to make compliance a thing when it comes to PR.
So did you add a title? Did you add a description? Did you link an issue? Did the test all pass? Did you do X, Y, Z? All this stuff is now built in automation and you get a nice comment from the action to say, "Hey, you missed a step. Could you please fix the issue? Could you remove the boil plate, answer the question?"
All this stuff is stuff that we want to enhance the experience for a first time contributor. So the first time contributor is not going to get their peer close without no notification. They're going to nudge and that are basically answering some questions for us before we can start reviewing it.
Now, I went and bought first. But what I really want to actually say is like it should be human first. So if you want to make a contribution, find a human to talk to. I think so many contributions get shut down or get missed or overlooked because someone came in with no hello, no goodbye.
A lot of folks walk into my DMS and just like they don't ever say anything. So if you come in through with like just an emoji or just a hi, it's hard for me to respond because I got 12 of those in my DMS.
So my response to most of those is like, "Hey, can you please ask a question or could you say why you're here?" It'd be great. It'd be easier, because I've got 12 more people I have to respond to. So just this week, somebody hit me up in a DM and said, "Hey, I was using one of your projects and it turns out that there's a bug."
And I'm like, "That's cool." This is exactly what happened to me years ago with this Thailand developer who was going to that K-pop concert. He actually went through the steps and answered my questions and got me unstuck.
So folks who are coming to my DMS with like a GitHub repo, with a question, with an issue, I'll respond to that. It's so much easier. Now, usually what I do is I try to kick those questions or the responses to a public channel.
So I think the worst thing I can do is take this conversation privately, go back and forth and solve this problem for this person and no one else benefits for it. So that's why I push people out to GitHub issues. So that way it's a public experience that people can learn from if they have the same issue as well.
And that's a really, really good way to grow a community around like, hey, it turns out this bug or this dependency is broken. Let's update this dependency. So the other thing I want to mention is Discord. Discord is a great place for community.
If you have an open source community that has no Discord, I recommend Discord because it's a great way for people to provide impact, but also get impact from community. Discord is a lot to maintain.
I do recommend you throw your Discord into like an orbit so you know exactly what's happening. And realistically, it's a great place for people who don't know how to do code contributions to then provide non code contributions, which is make sure people who come to the community get a hello, which is exactly what we do for our Discord.
So our new channel, which is for the new members channel, you get thrown right into there as soon as you join Discord. And folks on the triage team and also the maintainer team, they're trained to basically say hello when someone joins.
And just this week, we've had multiple people come through and they get a hello from somebody who's notable within the industry or someone who's notable within the community. And they're no longer just like thrown into community not knowing what to do next.
So there's a concept of like a Tumblr, where these are individuals who start conversations. I'm actually going to start doing this in the Discord as well, where people just inject conversation regularly within the Discord.
Other things is discussions. Now, these discussions, these DMs, sometimes that makes sense for the Discord. But when it's conversation that leads to contribution, I try to start those conversations in GitHub Discussions.
GitHub Discussions is a relatively new feature, but it's extremely useful. I highly recommend if you aren't using Discussions as well, enable them, ask questions, and prime the community with things that they can participate and sort of chill out and ask questions like tangential to the community.
Now, specifically for the compliance action, we did have that first in Discord. But eventually what Matt did is he brought that to a GitHub Discussion. So now every time you go to the compliance action or you go to the documentation, it is like a actual first place of record of where this conversation started.
And if you didn't know this, but a lot of GitHub stuff is SEO-friendly. So discussions will show up. If you're looking for PR compliance, this GitHub Discussion will show up alongside of the action you can install.
Now, I'm going to round up this conversation with one last thing that I want to talk about is like sustainable open source contributions. I think a lot of times open source, you think of nights and weekends.
And to be kind of frank, I don't spend a lot of my nights and weekends on open source or my open source contributions. I tend to do a lot of my contributions at work. It is a benefit that I do work at GitHub, which this is allowed and I can do this.
But I also didn't used to work at GitHub and I would provide contribution on regular work time as well. And it's because I just always made time for this. I just highly recommend, if you have a manager or if you're looking to grow your career as an engineer, or you just want to get into developer relations or something similar, ask your team, ask your manager, is there opportunity to grow community around code, around GitHub repos?
And I think a lot of times you could ask, or you can ask for forgiveness. That's also a thing if you just want to do it. But honestly, I think there's so much opportunity. And I think if we could do a better job of just making open source sustainable, but also obtainable for folks, I think we can grow community to be a larger, impactful thing too as well.
So some stuff I've been doing is GitHub sponsors actually sponsor my contributors. Open Sauced, we have some of our top contributors I'm sponsoring them directly. Some of them I contract them directly in larger projects that I have ideas for.
And the reason for that is that I think that open source doesn't always have to be free help. I think it's great that folks can do free contribution. I think that it's a part of the growth in the community. But sometimes folks, as they're learning how to code, they do need sort of that kickback or that level up.
So in particular, I like growing the black engineering community. And I know that open source for the black engineers, it's not as big of a thing for just white engineers or anybody else. So what I'm getting at is I want to bring more people who look like me into open source.
So I explicitly grew a community called Awesome Black Developers. And these are folks who are doing open source. And to make it easier for people to find mentors and people to contribute alongside, I just created an easy list for people to find folks who are like themselves to figure out where they can contribute as well.
Because I think that's the other half of it. You want to be in a comfortable place. Not every project is for everybody. Not every community is for everybody. But if you could find your community, it's going to be a much better experience.
And then there's this quote from MLK, which it kind of summarizes a lot of my impact and what I'm trying to do in open source, which is, folks, they talk about the idea of pulling yourself up by your bootstraps.
But if you have no boots to pull yourself up, then how are you going to pull yourself by your bootstraps. So things like sponsorship and things like giving away free resources and documentation and courses like, those are all ways for people to sort of figure out the ropes of how to do open source.
And that's why things like Open Sauced, I want to make sure that there is a pathway for people to find contribution and to become contributors for the first time, second time, next time. I mentioned this tweet as well, where I tweeted out a couple months ago that you could do open source at work.
I spent some breaths on that just earlier. But I just want to reiterate that I totally get that not everybody can do open source at work. There's places that are limiting. But I would say we're in a very great hiring market.
If you want to find places to do open source, join our community. I know in our jobs channel folks are reaching out and saying like, "Hey, we're looking for this developer, this type of developer."
And so if you're looking for a place that will let you do open source, just reach out. I'm happy to show you the place that can do that. I'd also mentioned that we have this organization called the All In program specifically at GitHub.
It's been run by GitHub. We reached out to 25 HBCU students. They teach them open source and they teach them how to contribute and get mentorship from open source maintainers. So if you're open source project and you want to be involved, definitely join that community.
If you're a student, actually, because we're expanding this to more students as well, definitely check it out in the fall. You want to sign up definitely this summer because it's a great program and you get introduced to tons of open source maintainers. So check it out.
And then check me out on GitHub. Bdougie is my GitHub handle. I rebuilt my profile as a MySpace page. So I've got some documentation and some blog post about it. So definitely check that out.
All the stuff that I talk about, all the frameworks that I put into place, I do these short videos called Issues with Brian. I throw them up on the Open Sauced YouTube channel.
And it's really just to, if someone comes through, if a new contributor comes through, they have a place to go learn from me how to do this stuff. We can jump on a zoom and we can pair or get on a Discord.
But if anybody just wants to sort of test the waters, you have all the code, it's open source, all the videos, all the streams. I stream every Wednesday and Thursday on Twitch. I do that intentionally so anybody can find the project and find their inroads and their pathway to open source. So I'll leave you with this. If you don't got sauce, then you lost. And stay sauce, everyone. See you.