Learn how to get over that first hurdle of getting involved in open-source!
"I should really get more involved in open-source" is something that's always on the back of our minds. You are fully aware of how rewarding it could be but that perfect opportunity to contribute never comes up.
Ian Sutherland, a maintainer of Create React App and contributor to NodeJS, used to be in that position. He had always struggled with getting into open source, he wanted to do something substantial but nothing ever came up. One day, he noticed a tiny bug in create react app. Ian quickly fixed it and put in a PR. Once he was past the first PR barrier, making additional ones was so much easier.
Fear is a big barrier to entry. People are maybe afraid they're going to do something silly, make a silly mistake and look foolish, but you really have to get over that as well. To get over it try to start small. When you start small, what was once a mountain to climb is now a hill. The stakes are much lower and success is still extremely rewarding!
Sometimes, getting involved can happen organically through opportunities from people you meet. Ian got involved with Node randomly at the Vancouver Node Interactive Conference during a collaborator summit. And an open-source raid group was formed in Kent's discord where they collaborate on helping out with various open-source projects. So remember that you don't have to do it alone, and look out for opportunities with others.
Next time you are hesitant to try something new, try starting smaller!
Kent C. Dodds (00:00):
Hello friends. This is your friend Kent C Dodds, and I am super excited to be joined by my friend, Ian Sutherland say hi, Ian.
Ian Sutherland (00:07):
Hi Kent. Thanks for having me.
Kent C. Dodds (00:08):
You're welcome. I, I did ask you to say hi, Ian. So there's, just kidding.
Ian Sutherland (00:14):
I'm not good at following instructions.
Kent C. Dodds (00:16):
That's our thing for season four. So everybody listening is probably groaning right now because they hear that at the beginning of every episode. But anyway, I'm excited to chat with you. I have known you Ian for I don't know. I think we first started interacting when you were contributing to Create React app. That's probably where we've met.
Ian Sutherland (00:40):
That's right, yes.
Kent C. Dodds (00:42):
So I've been using Create React app since the beginning. It was transformative for me because before, when I was teaching React, I always had to make my own little Webpack config. And it was super annoying because it was just like, "Oh gosh, this is just as a small little thing. And it has nothing to do with what I'm trying to teach people, but I have to do this. And, I have to make sure that it works on everybody's machines and it was just a disaster."
And then Create React app comes around and then, "Oh, okay. So now I just have them install this." And half of the people have used Create React app before. So even if there was a problem, they'd know what to do because they have experience. And so yes, it made a huge difference for me as an educator and all of Epic Reacts workshops, every one of them is using Create React app under the hood. And it just has drastically simplified things for me. So yes, all of that to say big, thank you for the work that you've done.
Ian Sutherland (01:38):
That's great to hear.
Kent C. Dodds (01:40):
Well, it's awesome. So anyway, you're not just Create React app. You are a multifaceted person and I'd love the audience to get to know you a little bit. So can you give us a intro to yourself and then we can get into our chat?
Ian Sutherland (01:54):
Yes for sure. So these days I'm working as one of the engineering leads at a FinTech startup in Canada called Neo. And then beyond that I'm one of the maintainers of Create React app. And I have also been contributing to the Node.js project for a couple of years. And just the beginning of this year, I became an official member of the Node.js team.
Kent C. Dodds (02:19):
Well, that's awesome. Congratulations.
Ian Sutherland (02:22):
Kent C. Dodds (02:23):
And so that's not your full-time thing. Like you're not just full-time on open source as making millions on all those downloads.
Ian Sutherland (02:32):
No, sadly not. Sometimes, I love my job. Don't get me wrong, but I would love it if I could work full-time on open source, maybe one day, that's kind of the dream.
Kent C. Dodds (02:41):
Hmm. Yeah. Yeah. That would be a lot of fun. You have those avenues and oh, shoot, what is his name, creator of Webpack? Shoot.
Ian Sutherland (02:56):
Kent C. Dodds (02:57):
Tobias. Yes, of course. Tobias. Yeah. And so people who get a lot of funding and Henry Zhu being able to go full-time on the open source thing. And I think that's awesome, but there's just so few and far between where that ends up working and I'm really encouraged by Ryan Florence and Michael Jackson and their work on remix where they're actually experimenting with like "Hey, let's try and charge for the open source for the software."
Ian Sutherland (03:28):
Yeah. I really like seeing that. And I think like the tailwind guys are another good example of that. It's good to see people having success with that model or just having success with going full-time in open source. Those people are, they're an inspiration, one day that's where I want to be.
Kent C. Dodds (03:48):
Yeah. At the end of the day, we just want to make it sustainable. Right?
Ian Sutherland (03:51):
Kent C. Dodds (03:51):
So that you can make the world a better place in the way that how best without worrying about where your paycheck is coming from.
Ian Sutherland (03:59):
Kent C. Dodds (04:00):
Yeah. Well that's great. So I'm excited to chat with you Ian. I want to get to know your story a little bit. How you got into open source for those listening. If I'm not mistaken, you weren't on the ground floor with Create React app, you joined on later after it was created. Is that right?
Ian Sutherland (04:22):
Yeah, that's right. I came in around, I think shortly after version one was released and work was underway on version two.
Kent C. Dodds (04:32):
Hmm yeah. So I'm curious how you got into that and maybe there's some backstory before that, how you just got into open source in general. I'd love to hear about.
Ian Sutherland (04:41):
Sure. Yeah. I actually more or less did get started in open source with Create React app. I had done a couple really small things prior to that through work. I had released some tiny open-source project related to puppet, which is like a configuration management tool that I think no one ever saw or used. And I had made a couple other small contributions to really unknown libraries, but I had always really wanted to get more involved in open source. And I had kind of struggled with how to do that. I think I kind of thought that I needed to make my own big splashy project like babble or something or needed to make a really substantial, significant contribution to an existing project. And so I was waiting for the perfect sort of opportunity, but it never really came along and I don't know, life rarely works that way I think.
Kent C. Dodds (05:46):
Ian Sutherland (05:48):
Then one day kind of like you were saying, I've been using Create React app since the very beginning, since it was first released. And I remember coming across some little bug while I was trying to do something and I just thought to myself, you know what, I bet I can fix this bug. And so I jumped into the source code, figured out what was going on. I don't remember actually what the exact issue was, but it was something really minor. I probably only changed like one or two lines of code to fix it. And then once I actually fixed it and got to working, so I figured, "Hey, I should submit this PR." I've done this work. This will help other people. I'm just going to put it up.
So instead of waiting for that perfect opportunity, I just solved a tiny little problem and opened up a PR. And that was a really good feeling, seeing that PR get accepted and merged. You get a little rush from it. It was exciting and that made me just want to do more. So that's kind of what started it all. And then I just continued making tiny little bug fixes or enhancements and things like that. And then one thing, that's kind of a good way to get started in an open source project because you become known to the other maintainers and people that are working on the project and sometimes conversations will start out of that maybe on Twitter or like for Create React app now we have a discord server where we invite contributors to chat about stuff. And so being part of those conversations can really lead to larger opportunities. Like I find issues on an open source project.
They're usually bugs that people encounter and things like that. A lot of projects don't plan big new features via issues. And so I find instead that those kinds of things tend to happen in some of those conversations. And so I started talking with Dan Abramov and Joe Haddad. Dan had kind of been spending less time on the project at that point because he was busy with React stuff. So Joe was taking on more of like the leadership of the project. So yeah, I just started talking with them more and some discussions happened around some larger features that they were kind of interested in. And so I just volunteered. I said, hey, this particular feature sounds interesting. I would love to try that. And so that's how I started to get more involved in the project.
Kent C. Dodds (08:25):
It's interesting. I actually have a pretty similar start to my open source journey too. Like I had a couple of little small projects and then I started contributing. I decided to make a pull request to fix a bug rather than hope they fix it. You file the issue and maybe they'll fix it. But I decided I'd fix that. And then once you get past that first pull request, making additional ones becomes just so much easier that it's the first pull request that is just so much of a hill to climb. But once you get past that, then it is just very natural to keep on making little bug fixes or adding little features. And then eventually I took over the project and it's called Angular formerly, and now it's not a thing anymore it's archived. People still use it for sure, but I don't maintain it anymore, but that was a very similar sort of beginning.
And, and I can really appreciate that for you it was just like, let's just do this little thing and then this little thing, and then eventually it got to the point where you just became comfortable enough to say, "Hey, I want to try this bigger thing." And I think one of the things that is difficult for people as they see this big project and they think, "Oh my goodness, like, I can't even imagine fixing a bug in this because it's just so big or it's so widely used, it's probably, you have magic incantations to make things work," but it ends up just being code.
Ian Sutherland (09:55):
Kent C. Dodds (09:55):
And something that you can figure out.
Ian Sutherland (09:57):
Right. And I mean, that is one of the beautiful things about open source is that you can just go open up the source code and then start looking through it. And, you probably don't have to understand all of it if you're just looking to fix one little issue or bug and over time, you'll learn more. I mean, it's similar with work I think too. You're not going to know the entire code base back to front on your first day. You have to explore and find your way around and learn and build that knowledge up over time so. I think another thing that's challenging with that first pull request in open source is you also need to clone the project, get it running, figure out how to run all the tests, then make your change. And then even beyond that, you need to read the contributing guidelines, figure out what the process is for getting your PR submitted. So there's a lot of administrative work that goes along with that. But once you figure that out the first time, it becomes really easy to just go through that process for future pull requests.
Kent C. Dodds (10:59):
Yeah. I think that there are things that those of us who have gone down that path before we can do to make that easier, but ultimately it comes down to the person hits a wall, something they've never done before and they have to just push through that first little bit so that however hard it is, you do have to take that first step of getting through that before you can proceed. Where do you get the motivation to take that first step on something new?
Ian Sutherland (11:36):
Yeah. I mean, that's a good question. I don't know what actually was the thing that finally motivated me to submit that first pull request. It was just the way I was feeling that day or something. And I found the bug in the code and I fixed it. I was feeling pretty good about that and thought, "Yeah, you know what, I'm just going to go for it and put up this PR." I think I had also hesitated in the past. There's a little bit of a fear I think people have of working in public on an open source project. People are maybe afraid they're going to do something silly, make a silly mistake and look foolish in front of people or something, but you really have to get over that as well.
And for the most part, everyone in open source that I've interacted with is incredibly nice. Everyone makes mistakes. I still make silly mistakes in Create React app PRs because I don't work in that code base every day. I forget things. I make mistakes. It's totally normal. So I think you also need to get over that fear a little bit. And probably the people that work on the project are more than happy to help you if you just put up, if you get stuck and put up a PR and say, "Here's what I've got, I'm stuck. I don't know what else to do." Chances are someone's going to jump in and help you out.
Kent C. Dodds (12:58):
That's true. And I think saying things like that can kind of help people overcome their fears on open source in particular. And I think that most of these new things that we want to just start getting into most of the time the thing that stops us from actually taking that first step or doing something to get into this, whatever it is that we want to, there could be various motivations, but we want to get into something, but we're not doing it. And I think that the biggest reason is fear. It comes down to fear of something. Do you have any strategies or things, experiences where you've tried something new and you overcame that fear, what do you do to overcome that initial fear of doing something new?
Ian Sutherland (13:49):
Well, I mean, that was kind of the case for me again, with open source. I think that was one of the things that had held me back in the past was both wanting to do perfect job or do a really big, significant contribution. And then two, the fear of just kind of looking foolish or failing. And I think starting small is a good tactic for overcoming that. And also you were mentioning motivation, if the thing that you're starting with is some huge feature, that's a big hill to climb. In addition to all of those things that I was mentioning, that you have to learn about how the project works and how the team works and how to submit PRs and stuff. You're really taking on a lot there.
So I think my advice would just be start small and just do something small and that will kind of help you, or at least for me, it helped me sort of overcome those fears. And then it becomes, it starts to feel good after that. Like I said, that first PR, it got merged and I felt really great about that. And it really motivated me and gave me confidence to go do another one and another one. And then you just build on that to the point where you can be making more major contributions to project or working on larger, more complex projects. That's how I got in to Node.js. That was a very difficult project to get started on.
Kent C. Dodds (15:24):
Yeah. I really like the strategy of starting with something really small because it makes me think that if you're just starting basketball, for example, your first shot is not going to be a half court shot. If you're hoping to make it and everything, you're going to start pretty close to the rim. And then over time and stuff, when you learn the more you can take it back a little further. But I think that, like you said, there are a lot of small things, there's just so much you don't know, and you don't even know all of the things you don't know, when you're just getting started with something new. And so by doing something small, it increases your chance for success, which is positive, but it also decreases the impact of a failure as well, which can really reduce the amount of fear that you face. And so it just becomes easier to just go for it rather than saying, "Okay, we want you to rebuild Webpack from scratch or something like that. Okay I guess."
Ian Sutherland (16:32):
And I think that's how a lot of our industry works as well, right? Like we've moved away from things like the waterfall methodology and I think that's kind of akin to trying to achieve perfection on that first take, whereas we've embraced more of like agile and those kinds of methodologies where the idea is just start and just do something and then iterate on it and make it better over time. So I think really kind of embracing that attitude outside of work, I think can be really beneficial.
Kent C. Dodds (17:06):
Yeah. Are there other experiences of things that you have decided to start doing other than open source that you can tell us?
Ian Sutherland (17:16):
Yeah, for sure. So actually another big one for me actually is just public speaking. I'm one of those people that's just deathly afraid of public speaking, but I would always imagine it as I'm giving a conference talk in front of thousands of people or something, and then I would think, oh, that's, that's terrifying. I could never do that. So I've kind of tried to apply this same sort of methodology over the last few years and just taking small steps there. There are great opportunities at work. For example, if you're on a team, your team hopefully does things like lunch and learns or other kind of knowledge sharing sessions. So those can be a really great way to just start to kind of practice some of your public speaking skills in front of a friendly audience, or hopefully they're friendly.
Kent C. Dodds (18:10):
Yeah. If they're not friendly when you give a lunch and learn, then you've got other problems probably.
Ian Sutherland (18:16):
Exactly. So really same kind of approach there where it's, just start with maybe a 15-minute lunch and learn, or another thing I've been doing recently is some panel discussions at meetups or other things like that. So those have been helping me to ease into doing this kind of thing more. And then I'm hoping over the rest of this year to maybe do like a couple meetup talks, a few other things like that, that we are kind of getting closer to that conference talk sort of.
Kent C. Dodds (18:52):
Hopefully by the end of the year or something, we can start going back to conferences and stuff.
Ian Sutherland (18:57):
Yeah, exactly. That would be great. Although this is really a golden age for people that are kind of afraid of public speaking, because a lot of conferences you can submit a prerecorded talk.
Kent C. Dodds (19:07):
Yeah, that's true. That's kind of nice.
Ian Sutherland (19:09):
Yeah. So that's definitely another area where I'm kind of trying to apply the same methodology of just starting small, practice. Those little talks are a great way to hone some of your speaking skills and even just get down some of the basics of presenting, make sure your editor tech size is big enough, little things like that. So yeah, that's really been helping me a lot. And then like at the beginning of this year, I actually posted on Twitter and said, "Hey, I'm really interested in doing, more live streams and podcasts and stuff this year. Like if you want to have me on your show, please reach out." And so I've been slowly building up and doing those kinds of things and hopefully by the end of the year, I would feel comfortable giving a small conference talk.
Kent C. Dodds (20:02):
Yeah. And I don't think you would have any trouble getting into a conference as a maintainer of Create React app. Like I said, it's just been enormously impactful. I don't need to tell you that. It's so useful. So I feel like just the biggest takeaway for me is when you start small, you are able to get through all of the things that you don't know. You mentioned that your font size and stuff, your first talk, you're going to forget that. You may not even think about it, and another thing is recording yourself or doing some sort of analysis on your performance, whether that be a talk or an open source thing or a blog or whatever it is that you've done, having some sort of record and analysis on how you've done, it can help a lot as well I think.
Ian Sutherland (21:02):
Yeah, exactly. Even another little thing is learning how to make decent slides. That's not a skill I think that most people just have and that actually takes a lot of practice to get good at that so.
Kent C. Dodds (21:15):
Yeah. I have this blog post on how to get experience as a software engineer and the TLDR of that is you get experience by having experiences, which is a weird way to say it, but that's really where it comes from. And if fear is stopping you from getting new experiences, then do things to reduce the impact of failure or to reduce that fear in some way. And I think that by doing that then you can take that first step. You learn all of the things on this thing. Maybe you fail, maybe you succeed, either way, you've learned a lot and your next iteration will be even better.
Ian Sutherland (22:00):
Yeah. That's a really key thing is even if you do fail, even if maybe you put up that first PR and it gets rejected for some reason, you probably learned a lot, even just going through that process and don't be afraid to try again.
Kent C. Dodds (22:15):
Absolutely. Okay. So we do have a little bit of time, and I'm glad because I wanted to ask you about getting involved in the node project, because that's one that I look at and I'm just like, "Whoa." I haven't contributed to node. And it just seems like such a huge thing. I know that they're very welcoming to contributors and they're actually a really good example in the open-source community in that way, but it just seems overwhelming. I feel it's all in C or something like stuff that I don't know. So yeah. I'd love to hear your story of how you got involved in the node project.
Ian Sutherland (22:52):
Yeah for sure. I definitely agree with you. It is a very welcoming project. It's not difficult to get into for those reasons. I had tried a few times, just scanning through the issues, looking for bugs and stuff to fix. And it's a very, I'm not even really sure how to put it, it's just very obtuse, to jump into. The code is complicated. So the bugs are complicated and I think really the best way is to have someone help you. And there is like a mentorship program that node does. So that can be a good way to get involved. For me though, I was at the node interactive conference in Vancouver in I think it was 2018 and it's two days of conference and then there's a two-day collaborators summit after the conference. Because everyone that works on the project, comes from all over the world. And so people are together for this conference.
So they take advantage of that and say like, "Okay, we're going to set aside two days and do all kinds of meetings and sessions and like breakout sessions and things like that." And so I just attended that collaborator summit like an observer. I didn't work on the project or anything at that time, but they're very welcoming. Anyone's welcome to come and observe. And then at one point they were doing some breakout sessions and someone said, 'Hey, you know we're meeting over here to talk about tooling and like building dev tools with node." And I thought, "Hey, that seems relevant." And so, yeah, I went and sat in, participated a little bit in the conversation.
It was really interesting to hear what some of the other people had to say, what their kind of pain points were using node for building these sorts of things. And it turns out that actually there wasn't a tooling group at that point. That was kind of the first meeting. And so we all decided at that point that, okay, we're going to form the node tooling group. We're going to meet every couple of weeks and we're going to talk about some of these things. And so that's kind of how I got involved and then just participating in those meetings and the other members were all very kind to me and helped mentor me a little bit, especially Ben Coe, he was one of the.
Kent C. Dodds (25:24):
Ian Sutherland (25:25):
You probably know Ben?
Kent C. Dodds (25:26):
Holy cow. I like that guy a lot.
Ian Sutherland (25:28):
Yeah. He's a great guy. We took on a couple of projects that we decided we wanted to work on in the tooling group. One of them was bringing support for recursive file removal into core rather than using the rimraf package. And so I worked on that and Ben helped me a lot to get that work accomplished. And so that's one of the things that we've done as part of that group. And then we worked on a couple of other initiatives that are underway right now. We're working on bringing recursive copy into node.
Kent C. Dodds (26:05):
That'd be nice. I could use that.
Ian Sutherland (26:08):
Yeah. We're also working on a simplified, like argument parser to be part of the core as well.
Kent C. Dodds (26:15):
That would be nice.
Ian Sutherland (26:17):
Kent C. Dodds (26:18):
I can see why Ben would be involved in that for sure.
Ian Sutherland (26:21):
Yeah, exactly. Those are all nice things where if you're trying to build a simple CLI or something, it would just be really nice to have those available versus having to pull in some third party packages. So that's the kind of work that we've been doing, but it goes back to what I was saying with Create React app to where you just want to just put yourself in the right place for those opportunities to come along by participating in those meetings and having those conversations, those kinds of opportunities to work on some of those features came along and I had people that were nice enough to mentor me and help me. So yeah, you just have to start somewhere, and then be in the right place to take on more opportunities.
Kent C. Dodds (27:08):
You know, what I'm hearing is it seems like community is another great way to combat the fear of doing something new. If you can get a group of people together to help you accomplish the thing. So like instead of starting a podcast all on your own, if you can get a couple other people together to do it together that can help. There's actually this group that started in my discord and they've since moved out into their own thing, that's called the OSS raid group where they go together and they have an org on GitHub and they'll fork the project from the org. And then they all contribute to this branch and then make a PR that has six or seven people who've contributed commits and stuff. And they all just do it together and it's this community thing that is really interesting and unique.
Ian Sutherland (28:00):
I really love that idea.
Kent C. Dodds (28:03):
Yeah. It's very cool. They've contributed to some of my stuff and lots of what they do is like, "We'll get your test coverage to a 100%" or different things like that where they don't have to have a total understanding of the domain of everything, but it's very cool. And I think, just talking with you, it seems like having a community of other people can make a really big impact on how easy it is to get started with something.
Ian Sutherland (28:31):
Yeah, for sure. That's one, like I said, that's a really great idea what those people are doing, and two, yeah, I think that's really, some of the power of that is like you're saying by being part of a community or a larger group, it takes a little bit of the pressure off of the individual. You have some other people to lean on. I mean, it's just like working on a team at work, right? You have people that are there to back you up and people you can lean on when you need help. So yeah, I think that's a really great idea.
Kent C. Dodds (29:00):
Yeah. That's great. And at the end of the day, like everything is more fun when you're doing it with other people, right? Sometimes it's nice to just be alone for a little bit and everybody needs their alone time. But in general, I think life is just more interesting and fun when you have other people to experience it with.
Ian Sutherland (29:18):
Well I think that's sort of a fundamental aspect of open source too, right? Like open sources is definitely not an individualistic pursuit. It is all about community and other people that are going to use your project and your work and that are going to help you build them.
Kent C. Dodds (29:38):
Absolutely. Open sources people like you. You know this, and I know this, when you start into open source, at least for me, I thought that I was going to be coding a lot. But when you really get into it, you spend way more time talking to people than you spend coding.
Ian Sutherland (29:55):
Yep. But that's also how you and I know each other, I've met lots of other great people through open source. So that's definitely one of the beautiful things about it.
Kent C. Dodds (30:08):
The computer doesn't return your affections. So you can spend a lot of time coding and stuff and you can feel really good about things, but really the rewarding stuff comes from the relationships that you build as you go through the whole experience.
Ian Sutherland (30:22):
Kent C. Dodds (30:24):
Well, cool. We're reaching down to the end of our time, and we do have a homework assignment to give everybody, and that is when there's something new you want to do, don't worry about starting small, just start. Anything else to add to that Ian?
Ian Sutherland (30:39):
No, I couldn't have said it better myself.
Kent C. Dodds (30:41):
Well, you did help me craft that, that's how that works. Great. So Ian, we actually are going to do a back-to-back episode. So folks don't miss that. We're going to talk about building your own tools, but before we wrap up, what's the best place for people to connect with you online?
Ian Sutherland (30:59):
Probably the best way to connect with me is through Twitter @iansu.
Kent C. Dodds (31:05):
Awesome. Good. All right. Thanks everybody. And we'll catch you in the next one. Bye.
Ian Sutherland (31:11):