[00:00.000 --> 00:10.800] All right, oh wow, it started, hi everyone. [00:10.800 --> 00:13.000] First off, huge thanks to organizers for having me here. [00:13.000 --> 00:15.120] This is my first Boston. [00:15.120 --> 00:18.920] It's as chaotic as everyone said, but it's been a lot of fun going through everything. [00:18.920 --> 00:23.280] So I'm going to be talking about creating pathways that invest in you maintainers. [00:23.280 --> 00:25.480] This is based on a blog post I wrote before. [00:25.480 --> 00:29.200] I get it, I don't like to read either, so thanks for coming to my lightning talk. [00:29.200 --> 00:31.640] You can hear the blog post in spoken form. [00:31.640 --> 00:32.640] So my name's Abby. [00:32.640 --> 00:35.240] I run the open source maintainer programs at GitHub. [00:35.240 --> 00:38.120] So I care a lot about maintainers, about open source. [00:38.120 --> 00:42.600] And I do think that thinking about pathways for new maintainers is one of the most effective [00:42.600 --> 00:46.400] ways of thinking about your community and just where to invest and how to really build [00:46.400 --> 00:48.360] that up. [00:48.360 --> 00:50.960] So first, who here is the maintainer? [00:50.960 --> 00:52.920] It's a lot of you. [00:52.920 --> 00:53.920] Good job. [00:53.920 --> 00:55.920] Thank you so much for your work of maintaining. [00:55.920 --> 00:57.080] You're the backbone of open source. [00:57.080 --> 00:58.880] It's huge applause for the maintainers. [00:58.880 --> 01:02.640] Thank you. [01:02.640 --> 01:04.640] And are any of you solo maintainers? [01:04.640 --> 01:06.960] It's a couple. [01:06.960 --> 01:08.280] Okay. [01:08.280 --> 01:11.520] So I'm going to talk about a framework that I worked on when I was at Mozilla. [01:11.520 --> 01:14.280] So this is put together by a bunch of my colleagues there. [01:14.280 --> 01:17.160] But I do think a sustainable community needs a couple things. [01:17.160 --> 01:21.360] First it needs a way for new people to come into the community and a way to level up within [01:21.360 --> 01:22.840] that community. [01:22.840 --> 01:26.080] I learned this the hard way when I was in university. [01:26.080 --> 01:29.440] And when you're running student clubs, there's this four-year cycle where kids are going, [01:29.440 --> 01:33.760] not kids, they're adults, where adults are going through, people are going through. [01:33.760 --> 01:38.400] And if there's ever a year where you're not recruiting first years or freshmen, then four [01:38.400 --> 01:42.920] years later, your club just has no one to lead it and it sort of dies out. [01:42.920 --> 01:47.240] So that's a bit of an exaggerated cycle, but it still happens in the real world. [01:47.240 --> 01:50.240] Like people are going to stop working on this eventually, so you have to keep thinking about [01:50.240 --> 01:55.680] new people coming in and ways to replace yourself. [01:55.680 --> 01:58.200] So we're going to look at this mountain of engagement. [01:58.200 --> 02:01.560] And I'm going to talk through all these steps and we'll talk about best practices for just [02:01.560 --> 02:06.640] moving people up these steps in a way that really helps you become new maintainers. [02:06.640 --> 02:07.640] So it starts with discovery. [02:07.640 --> 02:09.800] How do they first hear about your project? [02:09.800 --> 02:12.720] Maybe they're at Fostum or on a mailing list or something. [02:12.720 --> 02:13.720] Next is first contact. [02:13.720 --> 02:16.400] Do they join your Discord server? [02:16.400 --> 02:19.360] Do they start your repo? [02:19.360 --> 02:20.360] And then participation. [02:20.360 --> 02:22.280] Maybe they start talking in the chat. [02:22.280 --> 02:23.720] Start making issues. [02:23.720 --> 02:24.720] Sustained participation. [02:24.760 --> 02:25.760] They keep coming back. [02:25.760 --> 02:26.760] They keep making issues. [02:26.760 --> 02:28.680] They start making pull requests. [02:28.680 --> 02:31.120] Start really doing things in the community. [02:31.120 --> 02:34.480] Networked participation, this is the one I'm really interested in, is when they start [02:34.480 --> 02:36.920] bringing others into the community. [02:36.920 --> 02:38.200] And then finally leadership. [02:38.200 --> 02:42.600] And this can be as little as hosting our next meetup or as big as maintaining the whole [02:42.600 --> 02:49.400] project and you can really identify what you're interested in and write that out. [02:49.400 --> 02:51.480] So starting with discovery. [02:51.480 --> 02:53.120] Some best practices. [02:53.120 --> 02:54.120] Have a public repository. [02:54.120 --> 02:55.120] Work at GitHub. [02:55.120 --> 02:58.160] Have a public repository somewhere. [02:58.160 --> 03:00.600] Some marketing is usually really helpful. [03:00.600 --> 03:02.440] Go to conferences like this. [03:02.440 --> 03:03.800] Talk about your project. [03:03.800 --> 03:06.160] Write on mailing list. [03:06.160 --> 03:09.040] Having an open source or free software license. [03:09.040 --> 03:10.960] And I'll say these first few steps. [03:10.960 --> 03:13.080] It's really like the basics of setting up your community. [03:13.080 --> 03:15.480] They'll be, you'll know a lot of these things. [03:15.480 --> 03:19.480] I think after the first three is when it gets to really interesting stuff that I think a [03:19.480 --> 03:21.080] lot of people could benefit from. [03:22.080 --> 03:26.000] All right, so now that they've heard about your project, why do they reach out and actually [03:26.000 --> 03:28.000] start participating? [03:28.000 --> 03:33.160] And I find that most people like actually like join a mailing list or sign up for something [03:33.160 --> 03:36.120] because they're really excited about the vision of the project or the mission. [03:36.120 --> 03:39.040] Like they're excited about what you're doing and they want to join in. [03:39.040 --> 03:43.160] So making sure that you've written that down clearly and like having as concise a vision [03:43.160 --> 03:46.880] as possible is helpful because then they can remember what they heard in your talk. [03:46.880 --> 03:51.800] Go home and then go join that and like look it up. [03:51.800 --> 03:56.000] Also having communication channels makes it really easy for people to first contact you. [03:56.000 --> 04:00.120] I know it's hard if someone just writes, oh, if you're interested in contributing, send [04:00.120 --> 04:01.120] me an email. [04:01.120 --> 04:07.000] And sending an email is such a high bar compared to like, oh, you can lurk in our, I'm a little [04:07.000 --> 04:09.320] jet lagged so my words are missing. [04:09.320 --> 04:11.320] But lurk in our IRC channel. [04:11.320 --> 04:13.200] And then finally like have this stuff in the read me. [04:13.200 --> 04:16.520] Have a nice welcome mat for your project. [04:16.640 --> 04:22.240] Okay, so now that they've gotten in contact, why do they actually participate? [04:22.240 --> 04:25.200] And this one's interesting from volunteerism research. [04:25.200 --> 04:29.040] They found that people are four times more likely to volunteer if they've had a personal [04:29.040 --> 04:30.320] invitation. [04:30.320 --> 04:34.120] So if you meet someone who you think would be a good contributor, if you personally invite [04:34.120 --> 04:40.160] them that makes them so much more likely to actually come and do things on your project. [04:40.160 --> 04:41.960] The next thing is be responsive. [04:41.960 --> 04:45.160] We found this at Mozilla especially depending on cultures. [04:45.160 --> 04:50.440] A lot of people like to request permission to join before actually joining. [04:50.440 --> 04:53.840] So we, and we were sort of ignoring a lot of those requests. [04:53.840 --> 04:56.520] So just being responsive to things, even if it's something that you don't think is that [04:56.520 --> 05:02.680] important, really gives them a nice signal that people like want to participate in this. [05:02.680 --> 05:05.360] And then the next year around setting expectations. [05:05.360 --> 05:09.800] So having things like your contributed guidelines, a code of conduct, those public issues and [05:09.800 --> 05:14.360] pull requests so people can understand how they're supposed to contribute to this and [05:14.360 --> 05:18.800] what happens if they, like, the different ways that they can contribute. [05:18.800 --> 05:21.920] So with the code of conduct, making sure you also have enforcement, that usually means [05:21.920 --> 05:24.240] like good governance that works. [05:24.240 --> 05:27.520] And with the public issues and pull requests, they can see how the work is actually happening [05:27.520 --> 05:28.760] and how it's being built. [05:28.760 --> 05:29.760] So people can see that. [05:29.760 --> 05:33.800] They'll be much more likely to actually participate than if it's behind like a black box. [05:33.800 --> 05:37.840] All right, so those first three, again, those who are like setting up the project, I think [05:37.840 --> 05:40.000] a lot of people have gotten really good at those three. [05:40.280 --> 05:45.600] But then when it gets to sustained participation, how do you keep people coming back? [05:45.600 --> 05:47.280] A big one here is recognition. [05:47.280 --> 05:49.000] So just saying thank you. [05:49.000 --> 05:53.440] So this could be as big as like an award ceremony or giving out like your annual, I know like [05:53.440 --> 06:00.920] Google gives out like grants to different, yeah, I'm really jet lagged, different contributors [06:00.920 --> 06:03.280] for their open source projects. [06:03.280 --> 06:05.920] But it's really don't forget a simple thank you. [06:05.920 --> 06:09.120] So just saying thank you to people makes it makes a big difference and makes them much [06:09.240 --> 06:11.680] likelier to come back and participate again. [06:11.680 --> 06:14.120] So if you get a good pull request, say thank you. [06:14.120 --> 06:16.680] And then, yeah, hopefully they can come back. [06:16.680 --> 06:19.560] And then I like this one connecting to the mission. [06:19.560 --> 06:21.800] So Marshall Ganz, he's a political theorist. [06:21.800 --> 06:25.000] So he talks about this in terms of like political campaigns. [06:25.000 --> 06:29.360] So say you volunteer to Canvas, your neighborhood, and you go and do all of the houses in your [06:29.360 --> 06:33.440] street, you go to maybe 20 homes, and you go back to headquarters, you give them your [06:33.440 --> 06:35.120] clipboard, and they say, oh, thanks. [06:35.120 --> 06:37.680] And they like put it in the pile with the rest of the clipboards. [06:37.680 --> 06:42.480] And it's not as motivating as if you go back to headquarters and they say, oh, well, you [06:42.480 --> 06:43.480] got 20 houses. [06:43.480 --> 06:44.760] Let's add those 20 to the board. [06:44.760 --> 06:45.760] They do little tick marks. [06:45.760 --> 06:47.520] We're like, oh, look at this. [06:47.520 --> 06:49.880] We reached 1,000 people today. [06:49.880 --> 06:51.280] You help us reach our goal. [06:51.280 --> 06:56.280] And then connecting that small work that the volunteer did to the broader mission makes [06:56.280 --> 06:59.560] a big difference of people actually coming back and being excited about what they're [06:59.560 --> 07:02.440] doing and seeing that they're actually making a difference here. [07:02.440 --> 07:04.520] So whenever you can connect to mission is really good. [07:04.520 --> 07:06.800] And then matching skills with interests. [07:06.800 --> 07:10.920] So try and understand why people are coming to your project, what do they want to be doing, [07:10.920 --> 07:14.480] and helping them actually get that kind of experience that goes a long way with sustained [07:14.480 --> 07:15.480] participation. [07:15.480 --> 07:16.480] All right. [07:16.480 --> 07:23.120] The one I was excited about, the network participation, here's the, I think, formalized mentorship [07:23.120 --> 07:25.800] is one of the best ways to get network participation. [07:25.800 --> 07:30.040] I know with mentorship programs, we're often really excited about the mentees, like these [07:30.040 --> 07:33.800] new people coming into open source, but I think it's just as important to have more [07:33.800 --> 07:36.320] mentors in your open source project. [07:36.320 --> 07:40.920] Because these mentors are people who are onboarding others, and they're taking a lot of the, they're [07:40.920 --> 07:45.920] starting to get into these leadership positions, so actually giving them a role where they're [07:45.920 --> 07:51.320] bringing others in and helping onboard them, yeah, it goes a long way. [07:51.320 --> 07:56.180] And then also professional development opportunities, if you can give them certificates or like [07:56.180 --> 08:00.120] LinkedIn recommendations, that's really helpful for that network participation. [08:00.120 --> 08:03.120] People get excited about this and tell others that they want to come. [08:03.120 --> 08:07.880] And then hackathons and socials are just like a low bar way for people to bring their friends. [08:07.880 --> 08:11.280] So if you have like a fun social, you can just invite, people can invite their friends [08:11.280 --> 08:15.760] too and just encourage people to invite their friends that helps them start being that networked [08:15.760 --> 08:19.340] participant in the community. [08:19.340 --> 08:22.760] And then finally, it's leadership, getting up to the top there. [08:22.760 --> 08:25.720] And again, I think personal invitation goes a long way here too. [08:25.720 --> 08:29.400] A lot of people are in a community and they're just waiting to be asked to be a leader. [08:29.400 --> 08:32.840] So depending on how your project governance works, you can be asking someone to run for [08:32.840 --> 08:36.760] leadership, asking them to become a leader. [08:36.760 --> 08:41.120] But yeah, really taking the initiative to reach out because a lot of people don't want [08:41.120 --> 08:44.560] to step up themselves, especially if they're from underrepresented groups. [08:44.560 --> 08:46.360] So making sure you're getting invitations out. [08:46.360 --> 08:50.200] And then having that clear governance, so people understand who is making decisions, [08:50.200 --> 08:54.040] how do you become a decision maker, how do you stop becoming a decision maker, and like [08:54.040 --> 08:55.680] how are decisions made. [08:55.680 --> 08:59.600] If those are written out, it makes it a lot easier for people to become a leader. [08:59.600 --> 09:04.080] And I'll say leader doesn't mean you're on that decision making group, it can be something [09:04.080 --> 09:08.120] else in the project, but governance is still really helpful for people who want to step [09:08.120 --> 09:10.080] into leadership. [09:10.080 --> 09:14.000] And with this, I think just having that good value exchange, especially if you have volunteers [09:14.000 --> 09:17.400] as leaders, making sure that it's worth their time. [09:17.400 --> 09:22.040] And I'm a huge fan of time boxing volunteer acts, asks. [09:22.040 --> 09:27.120] I've definitely been asked to be a maintainer for something, I say yes. [09:27.120 --> 09:31.600] And then three months later, I'm like, oh, I don't want to do this anymore, but then [09:31.600 --> 09:33.400] it's hard for me to back out. [09:33.400 --> 09:36.160] But if it was time box, I just wouldn't be renewed. [09:36.160 --> 09:42.080] And I've just been the worst maintainer for years because it just was never ending. [09:42.080 --> 09:45.400] So making sure, I like that time box piece and just making sure the value exchange is [09:45.400 --> 09:49.840] there, that people are getting what they want out of this experience, whether it's that [09:49.840 --> 09:54.560] professional development like we talked about, the connections experience, yeah, to get that [09:54.560 --> 09:55.560] there. [09:55.560 --> 09:58.200] So here's an overview of the whole mountain. [09:58.200 --> 10:03.280] And I find a lot of people, a lot of maintainers especially, like when you're starting a project, [10:03.280 --> 10:07.960] you're focusing a lot on those early steps, but then they often don't get to that like [10:07.960 --> 10:11.800] networked participation step. [10:11.800 --> 10:15.720] And I find you can get really burnt out just like saying thank you to all the people or [10:15.720 --> 10:18.280] like doing those personal asks to everyone. [10:18.280 --> 10:22.080] But if you have more mentors on board or more people in leadership in your project, they [10:22.080 --> 10:25.080] can take on a lot of that early step work too. [10:25.080 --> 10:30.720] So that you don't get as burnt out as your community scales and as it grows. [10:30.720 --> 10:36.360] So this is the mountain, so four minutes left. [10:36.360 --> 10:39.920] All right, so here's a link to that blog post. [10:39.920 --> 10:43.400] You can read this in written form and it links to a lot of the references I talked about. [10:43.400 --> 10:46.920] So I had the research on the volunteerism stuff and Marshall Ganz's work. [10:46.920 --> 10:51.640] And then it's a link to some of the materials that we put together at Mozilla that we use [10:51.720 --> 10:53.320] this in. [10:53.320 --> 10:55.560] So oh yes. [10:55.560 --> 11:01.020] We just launched maintainers.github.com, so we're reigniting the maintainer community [11:01.020 --> 11:02.680] at GitHub. [11:02.680 --> 11:06.160] So if you're interested in this kind of stuff, if you're a maintainer and you want to be [11:06.160 --> 11:10.520] talking about this with other maintainers, there is a private community so you can go [11:10.520 --> 11:12.160] there and join. [11:12.160 --> 11:15.720] There's a bit of a, it does a little check to see if you're a maintainer and if you [11:15.720 --> 11:20.400] are then you'll get an auto invite or you can fill in a few questions and then I'll [11:20.440 --> 11:23.760] review it and probably let you in. [11:23.760 --> 11:25.360] So huge thanks. [11:25.360 --> 11:27.160] Are there questions in Lightning Talks? [11:27.160 --> 11:28.160] No. [11:28.160 --> 11:31.440] I don't know, okay. [11:31.440 --> 11:32.560] But hi, I'm Abby. [11:32.560 --> 11:37.840] You can find me on Twitter or on Macedon. [11:37.840 --> 11:38.840] Thanks for your time. [11:38.840 --> 11:42.120] And I put stickers on the edge of the stage if you want to grab some. [11:42.120 --> 11:45.520] They're in like little individual packets because I didn't feel like taking them out. [11:45.520 --> 11:49.120] So you're welcome to take a whole packet or you search through and like take a sticker [11:49.200 --> 11:50.200] that you like. [11:50.200 --> 11:51.200] But thank you so much.