|
| 1 | +--- |
| 2 | +layout: single |
| 3 | +title: "pyOpenSci beginner-friendly sprints at PyCon US 2024" |
| 4 | +excerpt: "" |
| 5 | +author: "Leah Wasser" |
| 6 | +permalink: /blog/pyopensci-pyconus-2024-sprints.html |
| 7 | +header: |
| 8 | + overlay_image: images/blog/2024/may/23-05-2024-get-involved.png |
| 9 | + overlay_filter: rgba(20, 13, 36, 0.8) |
| 10 | +categories: |
| 11 | + - blog-post |
| 12 | + - community |
| 13 | +classes: wide |
| 14 | +toc: true |
| 15 | +comments: true |
| 16 | +--- |
| 17 | + |
| 18 | +## pyOpenSci's approach to beginner-friendly sprints |
| 19 | + |
| 20 | +In previous posts, I talked about: |
| 21 | + |
| 22 | +* Our [incredible experience at PyCon US 2024](recap-pyos-pyconus-2024.html). |
| 23 | +* My [personal experiences with the Python packaging ecosystem and building consensus |
| 24 | + within the scientific Python community](python-packaging-friends-dont-let-friends-package-alone.html). |
| 25 | + |
| 26 | +Here, I want to discuss our sprint at PyCon US this year. Specifically, I want to |
| 27 | +explore the varied motivations and barriers associated with contributions to Open Source, |
| 28 | +and how pyOpenSci is addressing them. |
| 29 | + |
| 30 | + |
| 31 | + |
| 32 | +* I believe that we can get more people involved in Open Source if it's done the right |
| 33 | + way. But despite the word "open" in the name, Open Source is not necessarily open to |
| 34 | + all people. |
| 35 | +* By setting up infrastructure such as project boards and tagging issues as beginner- |
| 36 | + friendly, you are on your way towards a beginner-friendly sprint. |
| 37 | +* Be prepared to support people who are newer to Git and GitHub. Create opportunities |
| 38 | + for beginners to contribute to documentation, as their beginner lens is critical to |
| 39 | + ensuring the documentation is usable! Documentation contributions can also be |
| 40 | + implemented completely on GitHub without needing to use the command line! |
| 41 | +{: .notice--success } |
| 42 | + |
| 43 | +## pyOpenSci's PyCon US 2024 Sprint |
| 44 | + |
| 45 | +I've been running pyOpenSci sprints for about 2 years now. This year was my second year |
| 46 | +leading a PyCon US sprint for pyOpenSci. I've learned a lot! While last year we had 2 |
| 47 | +sprinters, this year we had a tremendous turnout of 18 people from several countries |
| 48 | +and across the United States for our 1-day sprint. This resulted in over 35 issues and |
| 49 | +pull requests where volunteers helped fix issues on our website, in our tutorials, and |
| 50 | +in our packaging and peer review guidebooks. Many long-standing issues and bugs were |
| 51 | +fixed thanks to this wonderful Python community. |
| 52 | + |
| 53 | +And I'm still working on closing up issues and pull requests now—weeks after the sprint |
| 54 | +ended! |
| 55 | + |
| 56 | +After such a tremendous experience this year, I wanted to share with you the things |
| 57 | +that we've learned at pyOpenSci about running beginner-friendly sprints. |
| 58 | + |
| 59 | +## What is a sprint like? |
| 60 | + |
| 61 | +If you haven’t been to a sprint before, it’s an experience every open source |
| 62 | +enthusiast should have. Sprints are where people come together to work on a |
| 63 | +project. For professional development sprints, this might mean a team working |
| 64 | +together on releasing a new feature. For open source, sprints can mean volunteers |
| 65 | +helping maintainers work on various parts of a project. |
| 66 | + |
| 67 | +As the Executive Director and Founder of pyOpenSci, I created most of this |
| 68 | +infrastructure to support our mission. While I cherish times when I can work on |
| 69 | +technical things, it’s hard to keep up. So, I really appreciate when community |
| 70 | +members help us tick off open issues, big and small. |
| 71 | + |
| 72 | + |
| 73 | +## Barriers to contribute to open source |
| 74 | + |
| 75 | +There are many barriers for contributors, including: |
| 76 | + |
| 77 | +* Time to contribute. |
| 78 | +* Skills to contribute. |
| 79 | +* Confidence in skills / fear of contributing the wrong thing. |
| 80 | +* Privilege: This is a loaded one. Open Source can't be diverse if it requires privilege |
| 81 | + to participate. |
| 82 | + |
| 83 | +And last but not least: |
| 84 | + |
| 85 | +* GitHub: This is the big one. Using Git and GitHub is always one of the |
| 86 | + biggest technical barriers that contributors encounter in their Open Source and data science |
| 87 | + journeys. |
| 88 | + |
| 89 | + |
| 90 | +### Contribution opportunities |
| 91 | + |
| 92 | +While barriers to contribution are abundant and hard, there are also many opportunities, |
| 93 | +including: |
| 94 | + |
| 95 | +* Learning and growing skills that may not be accessible in your day job. |
| 96 | +* Connecting with other developers, data scientists, and scientists in the community. |
| 97 | +* Engaging and being part of an online community or maintainer team. |
| 98 | + |
| 99 | +Or, maybe you're like me—an Executive Director of a community organization. Coding and |
| 100 | +development aren't in my job description, but to teach these topics, I need to keep my |
| 101 | +skills fresh. And, I love to code. That's where Open Source comes into my life! |
| 102 | + |
| 103 | +### Challenges vs opportunities |
| 104 | + |
| 105 | +So how do we align the challenges that contributors face with the potential opportunities? |
| 106 | + |
| 107 | +While new contributor sprints are not for everyone and assume some level of privilege |
| 108 | +in having the time and bandwidth to participate, they can be great for many. |
| 109 | + |
| 110 | +However, the sprint experience needs to be positive. Contributors need to gain something |
| 111 | +from contributing, and this requires: |
| 112 | + |
| 113 | +* time and care in designing the sprint and |
| 114 | +* time spent with new comers during the sprint. |
| 115 | + |
| 116 | +It's also important to note that this time required, is also a privilege for many maintainers who are already |
| 117 | +volunteering their time to maintain a project! |
| 118 | + |
| 119 | +However, if you do have the bandwidth to hold a sprint, there |
| 120 | +is a lot to be learned from understanding learner motivations and types. |
| 121 | + |
| 122 | +## Contributing vs learning |
| 123 | + |
| 124 | +The educator inside of me can't help but align my experience in Open Source with my |
| 125 | +learner motivations. For me personally, contributing to Open Source met two of my goals |
| 126 | +and interests: |
| 127 | + |
| 128 | +* **Applied (project-based) learning:** I love to learn. Coding and data science are my |
| 129 | + happy places. But the learning needs to be directly applicable. |
| 130 | +* **Student-directed learning:** I love to learn on my own time, following my own |
| 131 | + processes that work for me. Open Source allows me to do just that (and without the |
| 132 | + pressures of a specific deadline in most cases). |
| 133 | + |
| 134 | + |
| 135 | + |
| 136 | +### The power of project-based learning |
| 137 | + |
| 138 | +[Project-based learning](https://www.wpi.edu/project-based-learning/why-pbl) is founded on the idea that meaningful, applied projects are |
| 139 | +the best way to teach a topic. This works especially well in the data science space and |
| 140 | +is particularly effective with underrepresented groups. |
| 141 | + |
| 142 | +The idea behind project-based learning is that students select a topic they are |
| 143 | +personally interested in. If they are learning data science, they can find data to |
| 144 | +analyze and support their project. For underrepresented groups in STEM (and most |
| 145 | +learners), applied learning resonates because it involves a topic they care about and |
| 146 | +are motivated to pursue. Skills are learned in the process of achieving a meaningful |
| 147 | +outcome. |
| 148 | + |
| 149 | +It's similar to how you can immediately engage a diverse audience in GIS with Google |
| 150 | +Earth by asking them to zoom into the area where they live (place-based learning). |
| 151 | + |
| 152 | +As a volunteer maintainer of Stravalib, I am motivated to work on it because I learn in |
| 153 | +a very applied way. |
| 154 | + |
| 155 | +Sure, a sprint does not have the powerful outcome of a student understanding the |
| 156 | +impacts of climate change on their local tribal lands. But the concept is the same: |
| 157 | + |
| 158 | +> The learning motivation comes from a meaningful outcome that a student wants or cares |
| 159 | + about. |
| 160 | + |
| 161 | +In leading a sprint, asking that question of "what are your goals for today" will help you as a sprint leader to direct their efforts towards a successful path. |
| 162 | + |
| 163 | +### The power of student-directed learning |
| 164 | + |
| 165 | +Every person has different learning preferences. For many years, we taught people the |
| 166 | +same way: in a classroom, using the same books and approaches. However, alternatives |
| 167 | +allow learners to adapt their environment to their needs. |
| 168 | +[Student-directed learning](https://scholar.google.com/scholar?q=student-directed+learning&hl=en&as_sdt=0&as_vis=1&oi=scholart) |
| 169 | +is based on the idea that people learn differently and have different needs. By creating |
| 170 | +a hybrid learning environment where students decide how to learn, you empower them. |
| 171 | + |
| 172 | +Some learners benefit from hands-on demos, whether in a classroom or at the sprint |
| 173 | +table. They may pick things up quickly or need to watch and digest the demo. Others |
| 174 | +prefer reading quietly on their own, absorbing information, and trying things out until |
| 175 | +they figure it out. |
| 176 | + |
| 177 | +If a sprint is set up correctly, learners can parse through available issues. Carefully |
| 178 | +tagged issues direct them to ones that are beginner-friendly. These issues should not |
| 179 | +require extensive Git and GitHub expertise, ensuring a good first experience and an |
| 180 | +early win to build confidence. |
| 181 | + |
| 182 | +Contributors at the sprint can decide if they need direction, mentorship, or just a |
| 183 | +short tutorial/guidebook for making their first contribution using the GitHub |
| 184 | +interface. |
| 185 | + |
| 186 | +## The Anatomy of a pyOpenSci Sprint |
| 187 | + |
| 188 | +Based on our understanding of the learning motivations and challenges that new |
| 189 | +contributors might face, pyOpenSci has developed a workflow that we've found to |
| 190 | +be successful in empowering new contributors to make their first contributions. |
| 191 | + |
| 192 | +### Create opportunities for first-time contributors |
| 193 | + |
| 194 | +When someone joins your sprint, start by asking: |
| 195 | + |
| 196 | +1. What are you looking to achieve today? |
| 197 | +2. How comfortable are you with Git and GitHub? |
| 198 | + |
| 199 | +If the contributor is new to Git and GitHub, it can be empowering to direct them |
| 200 | +to review documentation with a fresh perspective. In our pyOpenSci sprints, |
| 201 | +beginners often find bugs and issues in our online packaging tutorials. Fixing |
| 202 | +these bugs is empowering for new contributors and helps pyOpenSci curate useful, |
| 203 | +current, and beginner-friendly content. |
| 204 | + |
| 205 | +If you have a package, let the user review your tutorials or docs. They can then |
| 206 | +either open issues or pull requests to address the issues. |
| 207 | + |
| 208 | +The beauty of documentation reviews is that any issues and PRs submitted can be |
| 209 | +done entirely using the GitHub interface. This is a true win/win for both the |
| 210 | +maintainer and the contributor. |
| 211 | + |
| 212 | +### Write useful constructive issues |
| 213 | + |
| 214 | +A good sprint begins with useful, labeled issues. The information in the body of |
| 215 | +an issue is critical. Be sure to include the specific details of the issue |
| 216 | +to be addressed with the lens of someone who is new to your project. |
| 217 | +Give potential contributors everything |
| 218 | +they need to start working, reducing questions during the sprint. For a table of |
| 219 | +10-20 people sprinting for pyOpenSci, this means the sprint leader will have less |
| 220 | +questions to answer during the sprint event. |
| 221 | + |
| 222 | +### Label issues as help-wanted and/or sprintable |
| 223 | + |
| 224 | +You never know when a contributor might be looking for a data science project to |
| 225 | +work on. It's always helpful totag issues that could be completed or started |
| 226 | +during a sprint as `sprintable` and `help-wanted` if you think someone outside |
| 227 | +of your team could tackle the issue. This tip came from |
| 228 | +[Inessa Pawson](https://github.com/InessaPawson), who has extensive experience |
| 229 | +with contributors through her work on the |
| 230 | +[Contributor Experience Project](https://contributor-experience.org/). |
| 231 | + |
| 232 | +### Collect issues in a single place - the help-wanted board |
| 233 | + |
| 234 | +Curate a `help-wanted` board that contains all the issues that could be completed |
| 235 | +by an outside community member in one place. |
| 236 | + |
| 237 | +Our pyOpenSci `help-wanted` board is a |
| 238 | +[GitHub project board](https://github.com/orgs/pyOpenSci/projects/3/views/2) |
| 239 | +that allows us to organize issues that we think others could work on by type, |
| 240 | +including: |
| 241 | + |
| 242 | +* Beginner-friendly |
| 243 | +* Python |
| 244 | +* DevOps / CI |
| 245 | + |
| 246 | +### Infrastructure and automation of issues |
| 247 | + |
| 248 | +PyOpenSci has many GitHub repositories where people might label an issue as |
| 249 | +`help-wanted` and forget to add it to our sprint help-wanted project board. To |
| 250 | +address this, we set up |
| 251 | +a [CI workflow](https://github.com/pyOpenSci/pyopensci.github.io/blob/main/.github/workflows/add-help-wanted.yml) |
| 252 | +that can be added to any repository. This workflow moves any issue labeled |
| 253 | +`sprintable` or `help-wanted` to our help-wanted GitHub project board. |
| 254 | + |
| 255 | +**GitHub project boards support project workflows** that auto-add issues to a |
| 256 | +project board with a specific label. However, our GitHub organization's open source |
| 257 | +subscription only allows for one project workflow of this kind associated with one |
| 258 | +repository, which is why we set up the GitHub action. |
| 259 | +{: .notice} |
| 260 | + |
| 261 | + |
| 262 | +### Make it truly beginner friendly |
| 263 | + |
| 264 | +To support beginners contributing to open source, consider having one or two helpers |
| 265 | +(depending on the size of your sprint) who can assist with: |
| 266 | + |
| 267 | +1. Understanding the issues |
| 268 | +2. Using Git/GitHub |
| 269 | +3. Directing them to beginner-friendly items |
| 270 | + |
| 271 | +In all of our sprints to date, we have had a mixture of people who: |
| 272 | + |
| 273 | +1. Know Git and GitHub but haven't contributed to open source before. Sometimes |
| 274 | + these people are developers and can tackle coding challenges! |
| 275 | +2. Are seasoned and just need enough information in the issue to be successful |
| 276 | + (see above section on issue content). |
| 277 | + |
| 278 | +Other times, you have people who really want to contribute but are uncomfortable |
| 279 | +with Git and GitHub and have never contributed to open source. These people will |
| 280 | +be incredibly empowered if you can create a smooth path to their first |
| 281 | +contributions. |
| 282 | + |
| 283 | +## How do we connect how people learn with open source and sprints? |
| 284 | + |
| 285 | +Well-lead sprints offer both new and seasoned contributors an opportunity to |
| 286 | +contribute to a project while also learning new skills. If you plan to support new |
| 287 | +contributors in your sprint, then |
| 288 | +then it's ideal to do some legwork before the sprint begins to ensure sprint |
| 289 | +attendees feel supported and have the help that they need, when they get stuck. |
0 commit comments