To begin to address sustainability in Drupal and Open Source, it’s important to explore our journeys within the community. We need to examine how we work together to grow and build our software and community.
This is going to be one of the most challenging blog posts I have ever written because I am uncomfortable with the words: roles, maintainers, contributor and mentoring. All of these words help establish our Open Source projects and communities. Over the past two years, while working on the Webform module I have learned the value of how each of these aspects relates to one another and to our Open Source collaboration and community.
Why am I uncomfortable with these words?
I am uncomfortable with these words because my general mindset and work habit are very independent and individualistic, but living on this island does not work well when it comes to Open Source. And changing my mindset and habits are things that I know need to happen.
Like many programmers, I went to art school where I learned the importance of exploring and discovering one's individual creative process. Another thing I had in common with many people who went to art school - I needed to figure out how to make a living. I went to the Brooklyn Public Library and started surfing this new thing called the World Wide Web. I was curious, confident and intrigued enough to realize that this was something I could and wanted to do - I could get a job building websites.
I built my first website, http://jakesbodega.com, using MS FrontPage while reading the HTML Bible and tinkering on a computer in the basement of my folks’ big blue house. After six months of self-teaching, I got my first job coding HTML at a small company specializing in Broadway websites. Interestingly, with the boom of the Internet, everyone's roles were constantly changing as companies grew to accommodate more and more organizations coming online.
My first experience with the notion of a Content Management System (CMS) was completely breaking a website by deleting a single server-side include. Sadly, what followed was the technology lead not seeing my mistake as an opportunity to teach and mentor me, but to ridicule me for not understanding that a server-side include is just a directive to pull the content of another file into the current file. BTW, I take pride in being a member of a community where the notion of ridicule is never accepted - there’s truly nothing to be gained from it. Rather, the worst response one might get is a link to https://en.wikipedia.org/wiki/Server_Side_Includes.
This negative experience made me buckle down, buy more books, and take the mindset that I’d just figure it out, which I did. I literally built a custom CMS, called the Inettool, from scratch using ASP/JScript. When I recall that experience, I still wish that I’d had a better role model who understood their responsibility and role as a technical lead and mentor.
Discovering Open Source and Drupal changed my mindset. Besides not having to maintain a custom CMS, I am still in awe of the roles and responsibilities that people take on in the Drupal community.
Understanding the roles in open source
My son Ben, who you met in a recent blog post, and I recently listened to Command Line Heroes: OS Wars_part 1. Besides comparing Linus Torvalds to Luke Skywalker, which immediately hooks any twelve-year-old, the host, Saron Yitbarek, does a great job explaining how everyone thought the Open Source experiment, Linux, would fail. How could developers come together to build a free Operating System? Looking back now, the answer is that somehow developers took on different responsibilities and worked together to define new roles, including the concept of software maintainership and contribution.
The importance of the software maintainer
In free and Open Source software, a software maintainer or package maintainer is usually one or more people who build source code into a binary package for distribution, commit patches, or organize code in a source repository.
Wikipedia's description of a software maintainer is very intriguing because the role of a maintainer is being explicitly defined for Open Source software, however the rest of the description is very technical with no mention of mentoring or fostering a community around Open Source software.
In the Drupal community, we all understand and appreciate the value of core and contrib project maintainers. I think it’s pretty evident that I take the role and responsibility of being the maintainer of the Webform module very seriously. And though I receive a lot of appreciation, the reality is that the role of being a project maintainer can be exhausting. The role of maintaining a project is not just about writing code. I’ve probably earned most of my commit credits by just responding to general support questions and welcoming people in the Webform issue queue.
I really enjoyed Jeff Geerling’s (geerlingguy) presentation Just Keep Swimming: Don't drown in your open source project! because it explores, "the problems maintainers deal with on a daily basis, and equips you with tools to reduce the number of problems in the first place!"
I particularly appreciated Geerling’s dissection of the different types of contributors. I am continually discovering new types of contributors, and I never cease to be amazed how someone can glance at something as complex as the Webform module and solve bugs that have dumbfounded me for months.
Everyone is a contributor
Conceptually, everyone in Open Source is a contributor, they just operate at different levels. As a project maintainer, I am contributing to Drupal's module ecosystem. Someone speaking at an event about Drupal is contributing to the general awareness and education of people in our community.
If an Open Source project does not have contributors, it’s just code that is freely available. The notion that everyone is able to contribute is the force that binds our community together. We should never forget that contributors may one day become maintainers.
Mentorship is what grows our community
So I have to confess: I have never attended a code sprint. And my comfort zone of working independently means I am very uncomfortable with the notion of sitting in a room with other people writing code. For lack of a better phrase, I get "code sprint fright."
I now see the importance of code sprints. They bring our community together and strengthen our collaboration. If I really want the Webform module to grow, there is a limit to how much code I can write and maintain, however, there is an unlimited number of people available to help me write and maintain this code. If I ever want to step away from maintaining the Webform module in a responsible way, I need to mentor contributors who can take over the reins. I need to conquer my "code sprint fright."
When Leslie Glynn (leslieg), who is organizing the Design4Drupal (June 27 - 29), asked me if was going to attend the code sprints, I explained my fear of coding in public and she pointed out that I don't have to code at a sprint; rather, I can share ideas and help people solve their coding problems. It seemed like a great suggestion to ease me in. She made me optimistic that I can overcome this major personal hurdle.
I know mentorship and collaboration is the key to Open Source's success and it’s the most important thing we need to protect while working to make Open Source sustainable. The most important and underacknowledged role that makes Open Source happen is the project manager.
The most important and underacknowledged role: the project manager
Like most developers, I’m guilty of only seeing and discussing our process and community through the lens of someone who writes code. After this examination of roles, maintainers, contributors, mentoring, and process, I’ve realized that I have ignored what might be the most important and under acknowledged role in our community: the project manager.
When I look back at the problems and challenges I have discussed including on-boarding, contributing, and off-boarding, the role that is going to have the biggest impact is the project manager. It’s the project manager who can coordinate everyone’s efforts while also ensuring that everyone is successful and happy. It is important to acknowledge that project management is a distinct and important role, which most maintainers do while also reviewing patches and wrangling an issue queue.
I knew when I began writing this blog post that mentorship is key to improving Open Source sustainability. I did not expect to conclude that the role of project manager is what makes everyone's journey in Open Source possible, healthy and sustainable.
We need to reevaluate the simple notion that adding more developers to an Open Source project will improve its productivity and sustainability. At the same time, we need to realize that the role of a project manager is what coordinates and defines the process that builds successful and sustainable Open Source projects and communities.