Why should you contribute to an open source project?
Participating in open source is a gift that keeps on giving. Everyone has their own motivations, but some of the benefits of connecting with the community in an active role include:
- Promotes learning and development of skills. It’s an opportunity to practice collaboration skills in roles that aren’t tied directly to performance reviews. It’s also an opportunity to develop other skills driven by your interests that you might not be part of your day job.
- Builds and promotes visibility. Your employer benefits from your participation in open source communities. It also helps you find new jobs, and potential co-workers.
What do you need?
The first thing you need to do is figure out your employer’s policies for contributing to open source and review your employment agreement. While I think every company using open source software should give every employee time to contribute, often the contribution policies are problematic even if individuals contribute on their own time and on their own equipment. If your company doesn’t have a policy or has a restrictive policy, sharing A Model IP and Open Source Contribution Policy may be helpful in providing guidance to improving the policy.
Specific software requirements will vary based on the project. Your skills in infrastructure as code or configuring continuous deployment pipelines may be extremely helpful to a project that hasn’t already codified these.
If you’ve never done a pull request, the first-contributions project has a walkthrough as part of the repository to show
What kind of contributions?
Operations engineers have a lot to offer to open source projects. Beyond developing features, areas of contribution can include:
- Reporting and Replicating Issues
- Mentoring
- Documentation
- Architecture Diagrams
- CI/CD pipeline
- Infrastructure as Code
- Separating Secrets from Code
- Maintaining Tests
- Review pull requests
- Project management
- Supporting other community members
Many large projects have contributor summits that give individuals the opportunity to meet and collaborate in person as well. In these summits, providing a ops perspective can help define the future direction of a project to be more robust and resilient.
What project?
Sometimes, the best question to ask is who rather than what. Who do you want to collaborate with? Understanding the who can help guide your focus to specific projects that give you the opportunity to work with those folks.
Other questions you might ask yourself is How long do you want to contribute for? Is this a one time contribution, or something you are willing to provide on-going support? Being clear with your own objectives can help you be successful in your selection of contributions.
💡 Just because something is on GitHub or Gitlab and “public”, even if there are CONTRIBUTING files, it doesn’t mean that the person wants collaborators or contributors. Sometimes folks are coding in the open. Before you invest a lot of work into a contribution, send an initial query through an issue or via a contact address.
Other times, it might be helpful to contribute to something that your company already depends on. This may help you fix something for the community at large that also helps you in your day job (and doesn’t require you maintaining a separate fork forever!).
You can also explore what is available or current in the industry at large that isn’t related to your company at all. It can help you learn about other areas that can help you filter future job opportunities.
Strategies for identifying projects
One method to find projects is to look for active projects in your skill sets.
With my Chef and infrastructure skills, I have found active Chef projects on the Chef Supermarket.
![Search and Organize Community Cookbooks] By searching cookbooks, and then choosing to order by Recently Updated, I find cookbooks that have recent activity.
From there I can examine recent cookbooks, and dig in more about the details of the cookbook. I can verify the project is properly licensed for open source and that the code is available and accessible in a shared version control repository (and not just a downloadable artifact).
I check whether the project has explicit contributing guidelines defined in a README.md or CONTRIBUTING.md.
I check whether the cookbook has any open unclaimed issues that I can provide value on.
Another method is to look at aggregating platforms for insight into projects that are available. Many of these are organized from a developer perspective.
For example, CodeTriage provides projects on GitHub based on language.
Mozillaprovides a more nuanced choose your adventure style of filtering asking a question that helps you drill down to a possible project to support.
A final method is to look for community inquiries.
For example, Carolyn Van Slyck put out a call for Porter contributors on Twitter in September of 2019. Porter has a welcoming website that states the project values and guidelines up front and lists the steps to take to get started contributing.
Another example, Karthik Gaekwad brought up VirtualBox on Twitter at the end of November 2019. Providing feedback about VirtualBox is contributing to open source. (There are other ways to contribute to VirtualBox as well if this is of interest.)
Identify possible contributions
Some projects will use labels to mark issues that are good for new contributors. These labels generally focus on documentation or code issues rather than any of the other areas that an operations engineer can add value.
💡 Be self-aware of behaviors you may have based on toxic situations in your workplace. Be kind. If you discover an open source project has toxic contributors, it’s ok to walk away from the project.
Wrap Up
While many of the resources out there focus on developers, system administrators, site reliability engineers, and other operations engineers have a lot to contribute to open source. We don’t have to accept software as is. We can shape and define desired directions.
If you want to have a greater impact and support open source as a whole, join the Open Source Initiative, a member-driven community non-profit that promotes the use of open source software.
If you want to dig more into how to contribute to Open Source, read VM Brasseur’s book Forge Your Future with Open Source.
I’d love to hear about your open source contributions. Share in the comments or with #OSSandTell on Twitter.
Additional Resources:
- A Model IP and Open Source Contribution Policy
- Forge your Future with Open Source by VM Brasseur
- Awesome GitHub Actions Repository
- Open Source Licenses
- Join the Open Source Initiative
- Open Source Licensing in the Real World
- Open Source Guides and the project