Open source project management: a complete guide
How to build and enable productive open source software development teams
15-minute read
Open source software (OSS) is known to be one of the most critical components of modern software development. In fact, according to Forrester and Gartner, 80-90% of new application code is open source. The open source development model drives modern software innovation.
But, who is managing these projects, and how are they doing it?
Managing open source projects goes far beyond basic project management. It’s about governance, processes, and tools for creating and scaling the efficient development of software by communities for the benefit of everyone. Several factors play into managing successful open source projects, such as enabling openness, transparency, inclusivity, and diversity, to name a few. Increasingly, the ability to remove process friction and provide a great contributor experience is emerging as a key ingredient in open source.
In this guide on how to manage open source projects, we’ll not only cover the basics of what open source is and how these projects are managed, but we’ll also attempt to answer what makes a great open source community and how you can efficiently build one from the bottom up.
Alright, let’s jump into it!
What is open source software?
Open source software, in the simplest terms, is software that is available for anyone to use, modify, share, and build upon entirely free of charge. Most modern software builds on open source code to solve problems, add value, and address market needs. To be considered officially “open source,” open source software must be licensed under a license approved by the Open Source Initiative.
Why is open source software important?
Software applications today contain more open source code than proprietary code. The open source model provides multiple benefits to software development teams and organizations, including increased agility and flexibility, better code quality by design, cost-effectiveness, community support, and faster time-to-market for commercial products and services.
Effective management of open source projects is important because open source is the lifeblood of the software industry. The availability of high-quality open software is crucial to the modern digital economy. You can compare the functionality of open source software to that of water – we need it to live. Clean water is vital for countless things, such as drinking, hygiene, growing crops, and manufacturing. Because of this, maintaining its quality is critical to everyone. Similarly, the availability and condition of open source software impacts the quality of the ecosystem of products that are built using that software, and it benefits all members of the community to ensure it is maintained and its quality remains high.
Loved by developers. Trusted by managers.
Zenhub’s developer-centric approach, combined with powerful agile reporting and performance insights, sprint planning, and workflow automations, makes it the perfect place for devs and managers to collaborate.
Should you contribute to open source?
The short answer is YES. All contributors, no matter their level of experience or background, are important as they add to the project’s diversity, offering their unique perspectives and expertise. You may be a recent computer science graduate, but that fourth-year course that’s fresh in your head may have made you more mindful of an issue than a more experienced developer. Don’t doubt your ability – embrace your background!
As far as choosing where to contribute, here are some great reasons you might choose a particular project:
You use the project frequently
These types of contributors are critical because they benefit from it the most and understand where the software's gaps are since they use it so heavily. In fact, companies like Google and Microsoft hire entire teams to dedicate to open source contributions because their businesses rely so much on the quality of the open source code.
The project would help you develop a particular skill
Open source projects are a great way to gain coding experience. Suppose you're a junior developer or you're interested in learning a new language or working on a new type of software. In that case, open source software is a great way to build your portfolio and gain confidence in your coding skills.
The project interests you
Open source communities are great places to meet people with similar passions and interests. As you’re perusing GitHub, you might come across some projects you’ll want to get involved in simply because they speak to your interests. Go ahead and join in – open source projects can be for fun too!
How are open source projects managed?
Open source projects, like businesses, typically begin with one or a small group of people doing a lot. As they grow in usage and visibility, they attract more contributors and higher-level contributors (known as maintainers and committers) who help scale the project.
In this section, we’ll cover the steps you’ll need to take to manage an open source project successfully. These include defining goals and organizational structure, creating documentation, facilitating communication, and building a community. Let’s get started!
Note: All open source projects are unique in how they are run and may not look identical to what is outlined in this guide. Trust your judgment when managing your own project!
Step 1: Establish a vision for your open source project
Before you can create a usable project and build a community around it, you need to establish a vision.
Vision is what rallies a community around a common goal. A vision tells your community what your project is and, perhaps more importantly, what it isn’t. Not only does this allow contributors to make more meaningful contributions, but it also allows users of your project to know when it's appropriate to fork it.
For your project, define:
- What key functionalities do you wish your project to achieve? What do you want the first few releases to look like?
- What key functionalities do you wish your project to achieve? What do you want the first few releases to look like?
Once you’ve answered these questions, place your ideas on a formalized roadmap. This will help keep things organized and easy to visualize.
In addition to defining a vision, define what success looks like for your project. Success goes beyond releases – it can mean a lot of things when you build an open-source project. Whether it’s a personal goal or a project-wide goal, here are some examples of goals you might have:
- Build a portfolio or establish yourself as a respected software developer
- Reach a certain number of users or contributors
- Reach a certain number of stars on GitHub
- Establish a well-known open-source brand (for this, you may use marketing KPIs like # of followers on Twitter, newsletter subscribers, event attendees, etc.)
The important thing is to answer the question: “What does success mean for my project?” If it has nothing to do with building a community and is solely release-based – that’s totally fine, but remember, you can get to where you want to go faster when you build a larger, more engaged community!
Step 2: Create transparency with documentation
The idea of transparency is deeply embedded in the concept of open source development. While publicly releasing software is transparent in and of itself, maintaining these projects requires continuous transparency on various levels to keep their communities productive.
There are many ways to create transparency. However, arguably the most important way is through documentation. Documentation allows for knowledge transfer of everything you know about what you’ve created so far so that others can build upon it.
Earlier, we discussed the importance of having a “vision” and road mapping that vision. Roadmaps are a form of documentation – a means of keeping your community informed and on the same page. In addition to roadmaps, many other documents will keep your members informed. Here are the most common:
The “READ ME” document
A “READ ME” is usually one of the first documents created for an open source project. It includes:
- A description of what the project is
- The project’s purpose and use cases for the open source code
- How to get started using the code
- Community guidelines (i.e. how to interact appropriately with others in the community)
- An open source license
The “contributing file”
A contributing file contains information about getting started contributing to a project. Some helpful information commonly held in the file includes:
- Project vision: This includes the scope of the project, links to the roadmap, and any other information that helps users understand the project's current direction. This will prevent users from suggesting unnecessary contributions and keep them on track.
- Types of contributions welcome: An important part of creating an inclusive community is letting users know where their unique expertise is needed most. Most open source projects cannot accept all types of contributions, so creating documentation that outlines the project's current needs and roles available gives all users a fair opportunity to contribute in a meaningful way. You may also wish to include links to epics or issues that require assistance.
- Approval process: In addition to being transparent about the types of contributions that are welcome, you should also outline the approval process for contributions, how often contributions are reviewed, and when it is appropriate to follow up with maintainers about a contribution. Don't leave users in the dark – contributing is a time investment, and everyone's work deserves acknowledgment, even if it doesn't make it to a release.
- When to expect commit access: Users who invest a lot of time into a project deserve special acknowledgment. In the open source world, commit access is that kind of acknowledgment. It's not always necessary to provide hard rules for when users can expect to receive commit access. Still, it may be encouraging for users who are often contributing to know they will be given access at some point. You can also set branch protection rules in GitHub, which allow maintainers to enforce regulations on when a collaborator can push changes to a branch in your repo.
- Rules for contributors: Outlining rules for contributors can keep your community a safe and positive place to collaborate. Rules for contributing may include a code of conduct, how often you are expected to contribute based on your role, how issues are to be filled out (you can include templates), and any other rules you may wish to have as part of your project management process.
- Additional supporting documentation: All projects are different and may require different types of documentation. Try and think like a contributor (both one who is new and familiar with your project) to understand what things you would like your maintainers to be transparent about. You might release a response to recent issues or questions about your project or a regular update about milestones. Remember that “documentation” is not necessarily a formal document. Other types of documentation may include social media posts, newsletters, email communications, press releases, videos, etc. At the end of the day, documentation is anything that keeps your community transparent and informed – feel free to get creative with it!
Step 3: Defining open source leadership roles
Leadership is an essential part of any community. Identifying key contributors that can take responsibility for overseeing the project, reviewing contributions, determining the roadmap, and ensuring the community is a positive, inclusive space is critical to the project’s success.
Once your project starts getting off the ground, you’ll want to start defining key roles that people within your community can play.
Roles within the committer and contributor levels
There are plenty of ways to contribute to open source projects, even beyond software development. Here are some of the ways you can add value to open source communities:
Coding: The most common way users can contribute to open source projects is by providing code that addresses software gaps or fixes software bugs.
Documentation writing & maintenance: Good documentation is a really important part of any software project. As a writer for the open source community, your tasks may be updating documentation, creating documentation that helps users understand how to use the software, or translating that documentation into other languages for a worldwide audience.
Marketing: In the open source industry, marketing is critical for ensuring that people know about the software, can easily understand how to use it, and contribute to it. It's about generating a project's visibility and resources to succeed, including users, maintainers, and sponsors. As a marketer, you may create how-to articles, produce videos and screencasts, promote the project on social media, write blogs and newsletters, issue press releases, and more.
Step 4: Build community
Community keeps users engaged, productive, and collaborative in the open source world. So far in this guide, we’ve covered a lot of things that make up a strong foundation for building a community, such as establishing a vision, creating transparency through documentation, and formalizing roles and responsibilities. Still, great open source communities have other elements that go beyond these foundational pieces.
Here are some other elements that make great open source communities:
Fairness and equality
Everyone should be subject to the same contributor rules and have the same opportunities to contribute and earn higher roles within the community based on their own merit. This doesn’t mean anyone can contribute anything. This means that so far as contributors follow the rules, their opportunities are the same as anyone else.
Here are some tips for encouraging fairness and equality:
- Be transparent about rules for contribution
- Be transparent about how to earn higher roles within the community
Fostering diversity
Fostering diversity within your community means making sure you’re welcoming new perspectives and unique contributions. Sometimes open source projects become dominated by people from a single organization or by a smaller collective of people within the community. While initially, the dedication from these groups may seem helpful, it can alienate other members and prevent new ideas and perspectives from shaping your project.
Here are some tips for encouraging diversity:
- Do not give special privileges to specific organizations or parties of people.
- Provide resources to help less experienced contributors contribute meaningfully to your project, such as flagging certain issues as “for beginners.”
- Do not tolerate inappropriate behaviour or discrimination in your community (you can mention this in your community code of conduct).
Effective and open communication
Communities cannot be built in silos. Establishing open and effective communication habits within your community early on can prevent your team from becoming siloed, duplicating work, and not taking advantage of available resources and expertise.
Here are some tips for facilitating effective and open communication:
- As mentioned above, document everything. Any discussions done on or offline should be publicly visible somewhere.
- Reduce video or offline meetings – this will make it easier to keep all of the conversations you have with other members publicly visible. We recommend using tools such as planning poker for asynchronous story point estimation to reduce meetings.
- Keep roadmaps regularly updated – this will ensure all community members are always on the same page. To reduce the manual labor of updating roadmaps, try Zenhub’s real-time road mapping tool.
Tools for managing open source projects
Throughout this guide, you may have noticed a few common themes, such as the importance of transparency and documentation, communication, and having a vision. These factors, which facilitate collaboration and community, can be better achieved with the right tools. Below is a list of some tools you might want to consider using in your open source community:
Issue trackers
Issue trackers keep track of all the bugs and problems users have had with your software. They may also be used to keep track of features that are part of your roadmap. It's especially important for issues to be filled out correctly to avoid unnecessary meetings and confusion.
Messaging programs
Some open source projects use messaging programs (such as Slack or Discord) for real-time casual conversation and collaboration.
Project management tools
Project management tools can do many of the above tasks while streamlining project planning. Project management tools geared towards software developers like Zenhub allow you to track issues from GitHub, organize them into Epics, and place them onto a roadmap.
Discussion forums
Many projects use designated discussion forums to discuss answers to questions that can benefit from various perspectives. Some projects will only use the issue trackers for all conversations and not use any forums for discussion.
Public roadmaps
Open source teams use public roadmaps to keep contributors aligned with their goals for transparency around where a project is headed.
Marketing tools
To keep open source projects transparent, you may use marketing tools to facilitate mass communications, such as email building tools, press release software, website builders, or social media management tools.
When choosing tools, keep in mind that open source users, more than regular users, are hesitant to adopt new tools since their level of commitment to these projects isn’t akin to how much commitment they would have at a paid job. Because of this, we recommend choosing tools that are easy to use and can integrate with your source code, like Zenhub.
Open source project examples
Not sure where to start? Check out some of our favourite open source projects for inspiration:
OpenSSL: Provides free encryption tools and is now used by most HTTPS websites to keep them secure.
Swagger API: Creates a full suite of design and development tools for use during the entire API development lifecycle.
Kubermatic Kubernetes Platform: Kubermatic is a complete Kubernetes management solution for enterprises, addressing the operational challenges of managing Kubernetes at scale.
freeCodeCamp: freeCodeCamp is a project started to teach users coding skills through a series of practical modules.
Cypress: The Cypress open source community creates tools for facilitating testing in Javascript.
Conclusion
Open source projects are about so much more than achieving a functional release – they are opportunities to build long-lasting communities of people working towards the same goals.
When starting a project, it’s essential not to overlook the factors that make open source communities great – like transparency, diversity, open communication, and inclusivity. How you begin your project – with plenty of documentation, a defined vision and goals, clear roles and responsibilities, and rules that facilitate inclusivity and cooperation – will significantly impact your community’s happiness and subsequent success.
Loved by developers. Trusted by managers.
Zenhub’s developer-centric approach, combined with powerful agile reporting and performance insights, sprint planning, and workflow automations, makes it the perfect place for devs and managers to collaborate.