Skip to content

Commit 08ba0ef

Browse files
committed
draft 1: pycon sprints
1 parent 2127d0e commit 08ba0ef

File tree

1 file changed

+289
-0
lines changed

1 file changed

+289
-0
lines changed
Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
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

Comments
 (0)