What are the attributes of a great open source maintainer?
TLDR: We interviewed 30+ open source maintainers to gather their perception about what are the attributes that contribute to a great open source maintainer. We identified four groups of attributes: social, personality, management, and technical.
We now want to understand if some attributes are more important than others. If you happen to contribute to open source (at least five commits per year), considering answering our survey.
We will donate 100 USD to an open source project if we have more than 100 answers. Read on to know more.
In the research literature, there is a couple of works that discuss that are the attributes of a great software engineer or a great manager of software engineers. For instance, one of these studies found that a great software engineer should handle complexity, be data-driven, and be creative. These works are essential to better understand the needs and challenges of being a software engineer these days.
However, we believe that the findings of these works are not easily translated to open source community. Working on an open source software project opens a new landscape of challenges and barriers that are not frequently observed when working in a proprietary software project.
For instance, open source maintainers do not need to care only about technical details of the program in order to, say, ease its maintenance and support its evolution (which software engineers also have to do). Maintainers also should care about 1) fostering a community around software, 2) helping new members to onboard and find their place, 3) thinking about the sustainability of the project in the long term, etc.
When working for a company, software engineers would hardly bother about these concerns.
To better understand what are the attributes the contribute that form the basis of a great open source maintainer, we conducted 30+ interviews with open source maintainers around the world (1/3 of them are women). These maintainers work on a diverse spectrum of open source projects (from operating systems, to browsers, to academic projects). We collected more than 150 unique attributes from these interviews. After applying some qualitative coding procedure, we ended up with four main group of attributes that might contribute to a great open source maintainer, namely: personality, social, management, and technical.
This groups attributes related to the type of person you are, shown by the way you behave, feel, and think. The three most reported personality attributes are:
- Patience: Patience is the ability to tolerate delay/trouble without getting upset. One interviewees mentioned that:
“Sometimes the maintainer wants a lot of things at once, so the contributor might ending up (sic) getting lost. So, it is important to be calm, and walk one step at a time.”
- Open minded: Open minded is the ability to consider new ideas, new opinions. One interviewee said:
“Have some kind of vision for where the project is going. But be open about that, so open to other ideas or open to things not quite working out as expected”.
- Enthusiasm: Enthusiasm is about being energetic and eager to work on the project. One interviewee mentioned that:
“the maintainer needs to be motivated with the project. If that doesn’t happen, she can’t do anything else; she can’t be be a good programmer, can’t be available, can’t have good communication, can’t develop technically in the project domain. Being motivated is a basis for everything else.”
This groups attributes related to how you deal with other people (in particular, during the time that you are not working). The three most reported social attributes are:
- Communication: Communication is the ability to exchange information in a sensible way. For instance, one interviewee said that:
“It is about how to explain the problem and create an answer that is understandable to anyone, regardless of the level of experience and context; this helps a lot. Knowing how to express yourself well, formatting your thinking in a clear way facilitates this asynchronous interaction.”
- Empathy: Empathy is the ability to understand and share the feelings of another. One interviewee mentioned that:
“When you have empathy, you have the ability to think from their point of view, and then you could understand and experience the pain that they went through. If somebody has gone through and used your project and fill an issue, that is a gift; that is not just somebody complain.”
- Community building: Community building is the ability to help and incentivize new members to keep participating into the project. One interviewee mentioned that it is important:
“knowing how to encourage new team members, that is, knowing how to assign challenges and tasks to encourage new team members […].”
Management refers to attributes that could help one to control and organize an open source project. The three most reported management social are:
- Vision: Vision is the ability to plan the future of the project with wisdom. One interviewee mentioned that:
“If you don’t have a macro view of the project, you might end up incorporating features that don’t have a coherence between them, or you end up generating a behavior in one part of the software and a contradictory behavior in another part.”
- Discipline: Discipline is the ability to ensure that the process, guidelines, and the code of conduct are being followed as close as possible. One interviewee mentioned that:
“Discipline for following project procedures (for instance, the commit message standards, the creation of automated test, practicing clean code, etc.)”
- Availability: Availability is the ability to be available to answer questions as quickly as possible. One interviewee mentioned that:
“Availability is about how much time you can devote to the project. You can’t become a core maintainer and then leave because you’re busy. You should know how to dose your availability with your dedication to keep something you would like to see still working and plan it according to your schedule with your life so that you don’t leave the project behind.”
Finally, this refers to attributes related to practical skills that are used to run (e.g., fix bugs or add new features) an open source project. The three most reported social attributes are:
- Technical excellence: Technical excellence is the ability to continuously learn while trying to enhance the quality of code. One interviewee mentioned that:
“Technical skill is important. If you don’t have that skill, you won’t be able to work things out on the project. You will not be able to give the final say in the face of a problem.”
- Quality assurance: Quality assurance is the ability to maintain a desired level of quality on her project, paying attention to every stage of the development cycle. One interviewee mentioned that:
“The maintainer is responsible for making sure everything is working, i.e. she has to make sure 1) that the pull request is following the contribution guidelines, 2) that the tests are passing, and 3) that she is not “breaking” anything so she will not release an inadequate versions. The maintainer should guarantee that this process is being conducted properly.”
- Domain experience: Domain experience is the ability to have specific experience in a given area of study. One interviewee mentioned that:
“My experience as a maintainer is solving problems that I have at my paid work. I tend to contribute more to things that I have done before, or the things that I have no one else has done yet and that I need to do. Knowing the problem domain makes me more engaged in the project.”
After curating the attributes, our next step is to prioritize them (are attributes more important than others?). To do so, we rely on you, open source contributor. If you have committed at least five times this year, consider answering our survey:
The survey is very simple. It has 20 questions, but you don’t have to write anything down; all questions are closed. You just need to rank if the aforementioned attributes make sense to you.
To motive you answering the questionnaire, we will donate 100 USD to an open source project (you can leave your suggestion at the end of the form).
The project will be randomly chosen, and on September 1st 2020 we will share the winner on Twitter (follow @gustavopinto).