Most of my experience in open-source communities comes from the nine years I was involved in the Evergreen Integrated Library System project as the coordinator of the Massachusetts Library Network Cooperative (MassLNC). I not only learned to work with librarians, developers and other contributors to build a vibrant open-source community, but I also had the opportunity to meet with people from other open-source projects to learn about their processes and experiences. In almost every instance, the topic of sustainability came up.
Sustainability of open-source projects was the topic of this week’s #ChatOpenS Twitter chat. These monthly chats are organized by the folks at Equinox Open Library Initiative, a non-profit organization dedicated to the support of open-source software in libraries. Xiaoyan Song, Electronic Resources Librarian at NC State University Libraries and member of the CORAL open-source community, guest moderated this month’s chat . I, unfortunately, could not participate, but Xiaoyan’s questions got me thinking about ways communities can keep their momentum going.
Let’s chew over the definition of sustainability for a second:
the ability to be maintained at a certain rate or level.
Oxford Langauges
When an open-source project begins, there is likely to be heightened activity and enthusiasm around the software as contributors build something new. If it’s successful, more contributors will hopefully join the community, increasing the level of activity, bringing new ideas, and necessitating the establishment of more processes to manage their contributions. As the primary features of the software are developed and core documentation is created, this activity begins to decrease to a level that should be more sustainable over time. Contributors come and go, and enthusiasm may start to wane, but the project needs to continue growing. As the software matures even more, infrastructure may age, requiring minor to significant refactoring. Maintaining the project at the same level as the early years may be difficult as communities struggle with these issues.
I see four critical elements to maintaining sustainability of an open-source project:
- Sustained contributions from multiple contributors. Contributions often come from developers and other contributors scratching their own itch (or the itch of their institution). Build a community that supports this practice. These contributions are not be limited to code, but also include documentation, testing, translations, web site maintenance, outreach, community support, and any other activity that supports people’s use of the software.
- Funding. Money is needed for servers, to host events that bring people together, to sponsor development, and, most importantly, to pay people to make the aforementioned contributions. I know we like to call them ‘volunteers’, but with library open-source, most people are contributing on behalf of an organization they are working for.
- Established and uncomplicated processes that are consistently followed. These processes help communities manage the aforementioned contributions and ensure that people’s efforts are recognized. It also helps to build predictability for end users.
- Planning. It’s easy to get bogged down in the day-to-day tasks of managing the project and scratching your own itch. But you also need to periodically take a step back, look at the big picture, and identify areas that need attention and large features that may not get attention without community planning.
I could write a blog post on each of these areas alone (and I may end up doing so if I run out of ideas for blog post topics), but I think the critical thing is to maintain balance in all four of these activities. One trait I’ve noticed in some library open-source projects is they are inclined heavily focus on the planning without as much attention paid to building a mechanism for multiple people to contribute. We’re librarians – we love to plan! And planning is essential, but there also needs to be an avenue for people to make contributions outside of those larger planning efforts, as long as it doesn’t conflict outright with those plans. If that contribution is seen as useful to one person, chances are, there are several other people who will want to use it.
The Twitter chat ended with this final question: Is there anything individuals can do to move the needle forward for sustainability? Individuals can start by contributing and supporting an environment that is respectful to other community members and responsive to their contributions. After establishing themselves as responsible helpers in the community, individuals also shouldn’t be afraid to step into leadership positions where they can engage more in planning and the establishment and support of non-complicated processes.
Many thanks to Xiaoyan for inspiring this blog post!
On a final note, did you know there is an entire podcast series devoted to the topic the health and sustainability of open-source communities? I’m looking forward to exploring it!