[00:00.000 --> 00:12.520] Hi, everyone. Thank you for coming to my presentation. This is my first time at FOSDEM. Clearly, [00:12.520 --> 00:25.680] first time in Belgium. Brussels is such a lovely city. But I think we lucked out. And [00:25.720 --> 00:33.200] I must say, I don't mind taking a break from the sun. I'm hoping to return and explore the [00:33.200 --> 00:41.600] city more outside of the ULB campus. So please send the recommendations my way. Let's start. [00:41.600 --> 00:51.400] I would like to thank the community Devrim organizers for inviting me to speak and share [00:52.000 --> 01:00.440] the work of my team. My name is Inessa Posen. I work on NAMPAI and am part of Contribute [01:00.440 --> 01:09.960] Experience Lead Team. Here's the plan for the next 25 minutes. First, I'll introduce the rest of my [01:09.960 --> 01:18.840] team. I will introduce you briefly the projects that they're working on. Then I will share my [01:18.840 --> 01:32.200] thoughts on why Contribute Experience matters. I will also talk in more detail about how we are [01:32.200 --> 01:40.400] making Contribute Experience better within the sci-fi ecosystem. If you were wondering about [01:40.400 --> 01:47.160] the numbers in the title, just like in the university course catalog, we will dive a little [01:47.200 --> 02:01.440] bit deeper into the topic. I will briefly touch on how we evaluate our progress in our work of [02:01.440 --> 02:10.840] community building and providing Contribute Experience. And also talk about the project [02:10.840 --> 02:17.960] health metrics that we pay most attention to. Finally, I will introduce the Contribute Experience [02:17.960 --> 02:26.960] project, a new community of practice, an open source project, a community-driven project. And I [02:26.960 --> 02:37.280] will invite you all to join if you're interested in this topic. Just keep in mind that building, [02:37.840 --> 02:46.880] thriving open source communities takes a lot of years and it takes some time to talk about it. So [02:46.880 --> 02:54.720] 20 minutes will not be enough to cover everything, but hopefully it will be enough to start the [02:54.720 --> 03:06.000] conversation. So a few more words about me. In case you're wondering about my accent, I'm originally [03:06.080 --> 03:14.600] from Ukraine. I've been living in the United States for some time now. I'm a Pythonista, meaning [03:14.600 --> 03:23.200] that I'm advocating for adoption of the Python programming language. I've been organizing the [03:23.200 --> 03:30.440] South Florida Pi Ladies chapter, the maintainer summit at Picon US since 2020. I'm also very [03:30.480 --> 03:40.480] active in the sci-fi community. In December 2021, I stepped into the role of Contribute Experience [03:40.480 --> 03:52.520] Lead. And before that, I was very active contributor to NumPy on several subprojects within the [03:52.520 --> 04:01.520] NumPy community. In 2021, I joined the steering council of the NumPy project, which is a [04:01.520 --> 04:12.240] governing body. And I pay a lot of attention to other projects in the sci-fi community. I do [04:12.240 --> 04:19.760] consulting, mainly on the topics of Contribute Experience, Project Governance, Community [04:19.760 --> 04:32.760] Management, Contribute Support. We're a team of three. And I'd like to introduce the rest of the [04:32.760 --> 04:41.360] Contribute Experience Lead team, Melissa Mendoza. She's in Brazil. It's probably too early for her [04:41.440 --> 04:51.960] to join us. I asked her to add a few bullet points to introduce herself. So this is me listening [04:51.960 --> 05:00.800] to her own words. And Noa Tamir. Noa, if you're watching, hi. She's in Berlin. So hopefully, [05:01.680 --> 05:14.000] she's joining us. Noa also added her introduction. I should mention that Melissa is working as a [05:14.000 --> 05:22.880] Contribute Experience Lead for two projects, sci-fi and matplotlib. And Noa is looking after [05:23.680 --> 05:38.360] contributors at matplotlib and pandas. I mentioned that as of December 2021, I am working on NumPy. I [05:38.360 --> 05:49.360] am compensated to work on open source. And this was made possible by Chan-Zacharyk initiative. We [05:49.360 --> 05:59.440] received funding for four foundational projects, sci-fi, NumPy, matplotlib and pandas. This grant [05:59.440 --> 06:12.960] allowed us to create a dedicated role to take care of the contributors in each project. I must also [06:13.440 --> 06:23.120] mention that the four libraries, Python libraries, that our team is working on are quite different in [06:23.120 --> 06:32.640] terms of the contributor community, governance models, policies and therefore priorities when it [06:32.640 --> 06:43.960] comes to contributor support are somewhat different. And now let's talk about you. Yes, you. I'm always [06:43.960 --> 06:52.360] very curious about how others start in open source. And since there are quite a few of you, I will not [06:52.360 --> 06:58.840] ask you to introduce one by one, but I have a question for you. Please raise your hand if you are a [06:59.160 --> 07:09.280] contributor to open source. Very nice. Please keep your hand raised if your first time experience [07:09.280 --> 07:20.160] contributing to open source was great. Well, I would say about 40 percent, maybe slightly less. [07:20.160 --> 07:32.800] I have an opinion that I would like to share. I would like to use the stage to share. And I think [07:32.800 --> 07:38.480] that contributing to open source, starting contributing to open source shouldn't be like [07:38.480 --> 07:44.840] receiving bad customer service. We've all been in this situation when you call to ask a simple [07:44.840 --> 07:54.600] question and then you put on hold for an hour. It also should not feel like you are climbing Mount [07:54.600 --> 08:07.400] Everest and have to face a great beard to have your first pull request merged. So our team set out on [08:07.400 --> 08:15.080] a mission to make everyone's first time contributor experience, first time experience contributing to [08:15.080 --> 08:21.880] open source great. And now I'm going to share how we're doing it with the projects that we're working on. [08:29.720 --> 08:36.200] Governance and policymaking are maybe not the most intuitive places to start, but they're very, very [08:36.200 --> 08:48.800] important. Given the limitation of time, I will not be going into detail as much as I could. And please [08:48.800 --> 08:55.880] feel free to come to me after this presentation to ask more about the bullet points that I put on the [08:55.880 --> 09:07.800] slides. I'll be pretty brief. Reviewing code of conduct and the related policies. That was our [09:07.800 --> 09:19.280] priority from the start. It's very common nowadays for projects to have code of conduct, but sometimes [09:19.280 --> 09:29.000] they are very inefficient. In terms of it's very hard to find information where you go for help if you [09:29.000 --> 09:43.720] need. Who decides on complaints? What is in the scope of code of conduct? What interactions are in the [09:43.720 --> 09:57.840] scope of conduct? And so on. Another thing that you might come across is that there is no policy on how [09:57.840 --> 10:08.280] community members change. They just join and there is no election process, nomination process. And it can [10:08.600 --> 10:24.920] be, it can be curveball in certain situations. So make sure that your code of conduct is a working policy is very [10:24.920 --> 10:35.280] important because we all want our contributors to feel safe in our communities. Policies on progression from a [10:35.280 --> 10:48.480] contributor to a team project leader. Your project needs new leaders. If you're serious about sustainability, you [10:49.000 --> 11:00.440] need to be prepared to share decision making power. Also, if you would like to retain your contributors, how do [11:00.560 --> 11:09.200] you, how do you motivate them to stay and to take on more responsibilities? I would recommend giving them [11:09.200 --> 11:20.080] recognition and visibility of their work and having policies how you progress to leadership positions is very [11:20.080 --> 11:28.560] important. I would say that most projects in Python community still lack in these policies and this is [11:28.560 --> 11:39.520] something we are actively working on. The restification of the roles. We don't expect a cardio [11:39.520 --> 11:48.240] surgeon to do anesthesia. Then why do we expect a software engineer to be good at creating educational [11:48.240 --> 11:56.120] materials or organizing events? And then why we also expect community events organizers to be seasoned, [11:56.960 --> 12:07.160] seasoned software engineers. To have a thriving open source project, you need contributors with diverse skill [12:07.400 --> 12:19.360] skill sets and diversifying pathways of contribution is something that is still quite new in terms of implementation. [12:20.080 --> 12:34.400] I think I covered. Oh, yes. And bring visibility and recognition to non-code work. The Python community is on [12:34.560 --> 12:44.360] GitHub and green squares on GitHub became sort of a currency and also a huge incentive. And you can see the [12:44.360 --> 12:55.280] dynamics within especially smaller projects where contributors take on the work that gives you green [12:55.280 --> 13:06.280] squares, more green squares, darker green squares. It's really hard to solve this problem. One solution that I came [13:06.280 --> 13:18.880] up with for our projects is to make all work, including non-code work, visible. And it's not a perfect solution, but it's [13:21.080 --> 13:26.160] the one that we can offer working within the system that we have. [13:26.160 --> 13:43.440] Supporting newcomers. I'll be very brief because I know I'm right through the time. This is what we are doing for [13:43.960 --> 13:54.160] supporting our newcomers. Everyone heard about the importance of technical documentation before we decided to make it [13:54.800 --> 14:09.160] even better. We work with millennials. We work with now Generation Z and Alpha will be around the corner. So [14:09.800 --> 14:18.160] Doc Street's Contributor Guidelines, tutorials on Jupyter books, YouTube videos and even comics. We utilize in every format [14:18.160 --> 14:30.080] that is available to make NumPy and other projects. I work mostly on NumPy and this is something that I was leading [14:31.040 --> 14:42.560] with the NumPy project to make it more accessible and easy to start contributing. Also creating safe spaces to ask [14:42.560 --> 14:53.400] questions. Every project that is part of the grant has newcomers hours. We do peer programming sessions. We have dedicated [14:53.400 --> 15:04.880] Slack channels and also we host regular newcomer sprints. And of course, very, very important. Time EPR, triage and code review. [15:06.320 --> 15:18.280] I also would like to bring your attention to Gitpod and GitHub code spaces. There are many reasons to use these tools [15:19.000 --> 15:31.080] for our ecosystem. Building a development environment can be challenging, especially for newcomers. Having a cloud-based [15:31.960 --> 15:44.760] virtual environment for newcomers has been a huge help for us, especially holding newcomer sprints virtually. So this is something [15:44.760 --> 15:53.640] that I highly recommend considering if your dev environment setup is pretty complicated. Also, keep in mind that not everyone has [15:54.640 --> 16:10.720] access to the machines that allow to build locally. Next I'll speak, next I'll talk about supporting active contributors. [16:10.720 --> 16:24.560] In this part of the presentation, I'll be talking about NumPy mostly. We have teams and this is the progress of the work that we've been [16:24.560 --> 16:37.080] doing on diversifying contribution pathways. We also hold community events. NumPy community events calendar is very busy. We have two, three [16:37.080 --> 16:53.640] events every week. And this information is broadcasted to the contributor community through several channels. We also recognize that the NumPy [16:53.640 --> 17:01.280] contributor community doesn't speak English only. And we have been doing a lot of work in the past two years, translating our [17:01.280 --> 17:15.040] documentation, translating our YouTube videos. Yes, so this is something that I think is bringing NumPy closer to other parts of the [17:15.040 --> 17:26.960] world, non-English speaking parts of the world. Alternating meeting times to accommodate every part of the world. This is something fairly new. And I must say I had some [17:26.960 --> 17:40.080] reservations getting up at 6 a.m. for some of the meetings, especially when we had very low numbers, one, two people showing up. And just recently, we got some [17:40.080 --> 17:55.240] traction. And the last newcomers meeting, we had 10 people. Some of them joined before the start of the meeting. So that was a very exciting moment for me that the [17:55.240 --> 18:10.520] community is learning about the alternating time slots and the joining. And the last thing I would like to mention is that we are doing some work on web [18:10.520 --> 18:24.680] accessibility. We understand that there is a huge number of people who have visual disabilities or sometimes don't have access to the [18:24.680 --> 18:50.000] technology that requires the same work of web accessibility. I'm sorry. We all agree that creating a welcoming to newcomers community takes a lot of [18:50.000 --> 19:09.480] work. And it takes a lot of work, requires lots of bandwidth from maintainers as well. Early on, I decided to think how we can optimize the work of our [19:09.480 --> 19:26.880] maintainers to lower the burden. And this is the solutions that we implemented so far. We have code review guidelines. We have been using saved replies, which has worked really well for our [19:26.880 --> 19:49.920] community. We identified questions that are frequently asked. And we are hoping GitHub will allow saved replies on the organization level. So if there are GitHub people in the audience, please take a note. Yes. We are also using GitHub [19:49.920 --> 20:19.600] projects. My focus is on first-time contributors. And I actively triage first-time contributors PRs every day and bring attention to our maintainers as needed. We're also planning on leadership transition. Succession planning. And just recently we had Melissa [20:19.600 --> 20:39.520] transition away from the documentation team leader. She had a lot of phone chip late. And now we have two new documentation team leads. One of them is an alumni of Google season of code of docs. I'm sorry. [20:39.520 --> 21:06.200] Now, the part that Bitersia folks in the audience will probably find interesting. Looking at the list of the project health metrics developed by Keros, a Linux foundation project focused on creating metrics [21:06.200 --> 21:35.880] can be overwhelming. And there is no size fits all. Being a department of one, I had to decide what metrics I want to prioritize. And this is what I decided to focus on. Time to first response to review PR by first-time contributor. And time to first response to review PR. And the reason for that is that there are some studies, and I think a general [21:35.880 --> 22:04.000] consensus that reviewing first PR from a first-time contributor is very important for retention. Besides the metrics suggested by Keros, I've set North Star for NAMPAI to measure our efforts in creating a welcoming to newcomer's culture. After being actively involved with open source community for some time, and also being a community [22:04.000 --> 22:33.960] organizer and community manager. And now, as a contributor experience lead, I believe a second contribution is a great indicator of the experience contributors newcomers had with the project. I also must mention that you should not forget about qualitative research. It's not, it's sometimes hard to a gorge if understanding about the experience. [22:34.000 --> 23:03.960] The experience of your contributors, some numbers, and just talking to them, also having the post event surveys is a good way to get feedback from your newcomers. Okay, my time is up, so I'll just fly through. So if you're interested in the conversation about contributor experience, we've started a project. [23:04.000 --> 23:26.960] It's called the contributor experience project, and it's a community of practice. Please take a photo. This is how to connect with us. To close, I'd like to give a shout out to my team members and to NAMPAI team. [23:26.960 --> 23:37.920] And also to the chance I can be an initiative for supporting open science and open source. Feel free to reach out to me if you have any questions about my work. Thank you.