27. What Happened?
On March 5, 2019 Pusheenocat opened a pull request
- It was reviewed 6 times, 80 total comments, green multiple times
28. What Happened?
On March 5, 2019 Pusheenocat opened a pull request
- It was reviewed 6 times, 80 total comments, green multiple times
- The review stalled for 1 month, another month, and then 4 months
29. What Happened?
On March 5, 2019 Pusheenocat opened a pull request
- It was reviewed 6 times, 80 total comments, green multiple times
- The review stalled for 1 month, another month, and then 4 months
- A community member said “Hey, this would be useful!”
30. What Happened?
On March 5, 2019 Pusheenocat opened a pull request
- It was reviewed 6 times, 80 total comments, green multiple times
- The review stalled for 1 month, another month, and then 4 months
- A community member said “Hey, this would be useful!”
- Stalled for another 4 months
31. What Happened?
On March 5, 2019 Pusheenocat opened a pull request
- It was reviewed 6 times, 80 total comments, green multiple times
- The review stalled for 1 month, another month, and then 4 months
- A community member said “Hey, this would be useful!”
- Stalled for another 4 months
- Closed
32. What Happened?
On March 5, 2019 Pusheenocat opened a pull request
- It was reviewed 6 times, 80 total comments, green multiple times
- The review stalled for 1 month, another month, and then 4 months
- A community member said “Hey, this would be useful!”
- Stalled for another 4 months
- Closed
- “They forgot about me.”
33. What Happened?
On March 5, 2019 Pusheenocat opened a pull request
- It was reviewed 6 times, 80 total comments, green multiple times
- The review stalled for 1 month, another month, and then 4 months
- A community member said “Hey, this would be useful!”
- Stalled for another 4 months
- Closed
- “She wasn’t persistent enough. She didn’t follow instructions.”
105. I understand this, but a new contributor needs
more support from the community.
A new contributor needs guidance.
I didn’t know what to do, and was forgotten.
This is not a community I would come back to.
✅ Communicate clearly, and respectfully
106. Adding an Executor to Airflow
A contributor overflow exception
A new contributor needs guidance...
143. What did we learn?
- A project cannot only assume one kind of contributor
- Not all contributors want to please, even if they want to add a feature
144. What did we learn?
- A project cannot only assume one kind of contributor
- Not all contributors want to please, even if they want to add a feature
- You should absolutely not bring personal issues up in a review
- “Why is this so hard for you” does not belong there.
145. What did we learn?
- A project cannot only assume one kind of contributor
- Not all contributors want to please, even if they want to add a feature
- You should absolutely not bring personal issues up in a review
- “Why is this so hard for you” does not belong there.
- Contributor and developer have shared responsibility for making progress
- Clearly communicate expectations and ideas
- The contributor is responsible as long as tests don’t pass, requests for changes
present
- The reviewer(s) are responsible in all other cases
146. What did we learn?
- A project cannot only assume one kind of contributor
- Not all contributors want to please, even if they want to add a feature
- You should absolutely not bring personal issues up in a review
- “Why is this so hard for you” does not belong there.
- Contributor and developer have shared responsibility for making progress
- Clearly communicate expectations and ideas
- The contributor is responsible as long as tests don’t pass, requests for changes
present
- The reviewer(s) are responsible in all other cases
- Expect the contributor to be informed within the scope of the contribution.
147. Adding an Executor to Airflow
A contributor overflow exception
Technical discussions require empathy.
148. How to be empathetic?
- Why are they here?
- The other party has goals that drive their incentives and actions. What are they?
149. How to be empathetic?
- Why are they here?
- The other party has goals that drive their incentives and actions. What are they?
- What are our shared goals?
- Focus on shared goals, and use them to re-center.
150. How to be empathetic?
- Why are they here?
- The other party has goals that drive their incentives and actions. What are they?
- What are our shared goals?
- Focus on shared goals, and use them to re-center.
- What don’t I know?
- What expectations does the other party have that I should ask about?
160. Adding an Executor to Airflow
A contributor overflow exception
Each of us is living our own developer story...
161. Adding an Executor to Airflow
A contributor overflow exception
We’re part of a much bigger open source story.
162. Adding an Executor to Airflow
A contributor overflow exception
The community is responsible for the experience.
163. Adding an Executor to Airflow
A contributor overflow exception
You are responsible for creating positive experience.
164. Adding an Executor to Airflow
A contributor overflow exception
Who is the hero of the story?
165.
166. Adding an Executor to Airflow
A contributor overflow exception
Be like Elmo!
167. Adding an Executor to Airflow
A contributor overflow exception
Twitter and GitHub @vsoch
Editor's Notes
# Adding An Operator to Airflow: A Contributor Overflow Exception
Engaging with a new community is a common experience in OSS development. There are usually expectations held by the project about the contributor's exposure to the community, and by the contributor about interactions with the community. When these expectations are misaligned, the process is strained. In this talk, I'll discuss a real life experience that required communication, persistence, and patience to ultimately lead to a positive outcome.
## Biography
Vanessa Sochat is a research software engineer for the Stanford Research Computing Center. She received her PhD in Biomedical Informatics in 2016, and stayed at Stanford to focus on open source software development for scientific reproducibility. Her work includes development of container technologies, workflow software, and recipes for continuous integration. She is passionate about programming and system design, and continues to run the Singularity Hub container registry and maintain a large set of open source libraries. When not programming, Vanessa can be found eating avocados, recording podcast episodes or fun videos, making dinosaur noises, and running outside in the snow.
So let’s start with a very meta question. Why am I here? Well probably the same reason that you are here - today we want to talk about community.
Engaging with a new community is a common experience in OSS development. There are usually expectations held by the project about the contributor's exposure to the community, and by the contributor about interactions with the community.
When these expectations are misaligned, the process is strained. In this talk, I'll discuss a real life experience that required communication, persistence, and patience to ultimately lead to a positive outcome.
Once upon a time...
There were contributors, and there were reviewers.
The contributor might say “Hey! I’ve made these changes to the codebase. Could you please take a look?”
And the maintainers might say “Ah, you’ve made changes to the codebase! Let me take a look.”
But no, we’re already off a bit, because I can’t just shove people into such stark boxes. Let’s try again.
Once upon a time...
There were people.
And they cared a lot about different kinds of open source software. Containers! Programming languages! Workflow managers!
At the intersection of their communities is where collaboration happened. But people have their favorites so...
Let’s scootch them a little closer.
So let’s start with a special node - the open source developer, who can actually sit sometimes right in the middle of a web of projects. This is Pusheenacat, the open source developer.
So what happened to Pusheenacat?
Just to make this fun, I’m going to introduce to you three kinds of archetypes to help us think about this discussion.
Both contributors and reviewers have expectations and incentives.
Here is an easy example. A contributor might really care about the community, and the reviewers expect them to as well. This translates to simple things like being respectful, putting time and care into writing a response, or even just the emojis that you put on an issue comment.
Both parties want the review to be efficient.
The maintainer is someone that is uniquely responsible for the survival and longevity of the software. There can be more than one of course. I chose this particular picture because in a lot of cases, a maintainer plays a large role in interacting with people. In helping them, handling issues, or creating awareness for the library. This is a role that comes with a LOT of responsibility.
Maintainers are generally responsible for the project. This means it’s sustainability and its quality. This is stressful. Should a new feature be added, is it really needed or is it going to make maintaining the project harder? And also, this person needs to learn how to act cordial even in the face of a disgruntled contributor. The maintainer needs to learn to say no. Are the pull requests being reviewed, and are the issues being addressed? There is a lot of weight on the maintainers shoulders.
The long term contributor started contributing to the project at some point, and became familiar with it, or liked the community enough to stick around. He or she contributes by way of helping with issues, or being a reviewer on pull requests. This is a lot less stressful role than a core maintainer because they have less of a role in taking care of the long term sustainability or design of the project.
The job seeking deputy: The job seeking deputy is a contributor that is trying to impress you, the project. They are going to be overly polite, read every single piece of documentation that you have, and generally kiss ass. They need to look good because they want to prove themselves to you.
The worker bee: The worker bee is there because he has to be. Maybe his employer said “You need to do this thing for this software” OR maybe he’s getting paid by someone directly. It doesn’t matter. Because it’s a matter of business, this guy is incentivized to do everything right. He might not be aiming to please the project, but he’s possibly aiming to please his employer, and not get in trouble.
The wandering baker (is really interested in his or her craft, baking, and literally wanders around the open source landscape looking for new recipes /things to try. This person will put in the time and energy to share her recipe, but she isn’t going to stick around to be a permanent fixture in the bake shop.