Open source communities grow strong when there are many and diverse participants. For many popular open source projects, there are a few major contributors – usually the authors of the original code – but a long tail of community members that help keep a project current, relevant, and of the highest quality.
There are many motivations for joining an open source community – a software vendor relying on the open source project has a clear interest in participating. Individuals may start contributing to open source for their own enjoyment or to build skills. From making pull requests to having the privilege of being included in a community of diverse individuals, contributing to open source could be your gateway to a successful career.
But this white paper focuses on participation from users on open source projects, especially for employees of a user organization who participate as part of their job duties. What could be the benefits of contributing such resources to an open source project, for which there are no direct returns?
Protecting Technology Investment
One of the primary drivers for sponsoring an open source project is to protect your investment in the technology. As a user, you value the long term benefits of a project that remains stable and reliable while evolving along with the new demands that may be placed upon it. By getting started in contributing for open source projects, your needs are represented directly in the project and help drive its direction in a way that aligns well with your needs.
In addition, knowing how to contribute to open source projects helps build expertise that may be useful should the vendors you use in conjunction with a project become misaligned. In the worst cases a vendor could go out of business or be acquired by a company with poor alignment with your vision. In this case, any expertise you have in the open source project will help maintain, influence, or in the worst case fork the open source project to extricate yourself from the commercial relationship.
One common benefit of contributing to open source projects is to relieve yourself of the sole responsibility to support extensions or improvements. Code you write and successfully contribute is supported and evolved further by the open source community and by vendors providing additional services.
If you rely on a project and want it to be supported by a vibrant, diverse community, it behooves you to be an integral part of that community. If not you, who?
Open source is very attractive to technical staff. With an open source license, it’s extremely amenable to go-getters who proactively build expertise in the product (as a user or as a contributor.) Technical staff views the ability to participate and contribute to an open source project as an employee benefit, that is both enjoyable as well as builds their professional capabilities and stature.
Collaboration with peers around a technology helps bring new insights into your organization and discover what is working well (or not) within other companies.
Being part of an open source community can also be a source of job candidates. Nothing like seeing someone in action!
Cause It's The Right Thing To Do
Open source essentially opens a technology in a way that gives you many of the rights of ownership – influence on the direction, ability to evolve it, decisions about process. If you are a “part-owner” of a technology, and are deriving benefit from it, it is the right thing to do to support the open source community in proportion to the value you receive and not just be a freeloader. Sure, it's technically possible to mooch off a project and let others put up all the investment while you reap the rewards, but if everyone did that where would we be?
Now that you are convinced that some level of support or contribution to an open source community is in both your interest and the interest of the society at large, how do first timers start and what commitment is required to contribute to open source software?
Open source contribution has many levels, you can choose one today and increase or pull back on your commitment as you need to. Before contributing to an open source project, be well-versed on the code of conduct if a project has any to assess what is expected from you.
Contribute as a Community Member
There are many ways to contribute that don't take much commitment, or even legal review. You can and should get started with them right away.
Spread the word: contributing to open source is not exclusive to sending a pull request, one of the simplest but indispensable ways you can contribute to an open source project is simply to promote it. Mention it to your peers. Tweet or blog about it. Share your experiences on your mailing list. Attend a community event. This helps attract more community and builds momentum around the project. It's simple and it's free!
File bugs/suggest improvements: if you see something that needs to be improved, please share it! Open source benefits hugely from direct interaction with users, and anything positive or negative that you can share will affect the project quickly.
Help others: building some expertise on the product? Share it with others. There are always questions on user forums like stackoverflow.com that could benefit from your knowledge. And by helping others you are building your own reputation as an expert.
Contribute as a Developer
Open source projects typically reserve commit and process voting rights to individuals who have proven their capabilities and commitment to the project. But there are many ways to contribute technically to a project that don’t require elevation to committer status – although these activities are precisely what will earn you that status.
Evaluate source code: Look at the source code. Ask questions. Engage in the discussion of new features. Suggest improvements. More eyes make for better code!
Submit fixes as patches: If you see something that needs fixing, just fix it! Without committer access to the source code, you can still submit your fix as a "diff." A committer will evaluate it and if it is good will check it in for you. Note that typically these diffs require you to agree to a "Contribution License Agreement," that basically confirms that you will allow the contribution to be released as open source and you don’t know of any intellectual property that it violates. This is basic housekeeping to ensure the open source project maintains clear provenance.
Test release candidates: Let's face it, you can never test too much! If there is a release candidate, try it in your environment to see if it meets the quality bar.
Improve the documentation: Or the home page. Or create a cool logo. Or develop some good training material. Lots of ways to help a project beyond the source code itself, and there is always a need for these less glamorous of tasks.
Most projects follow a well-established governance process that supports massively distributed work and decision making by a highly distributed group of individuals. One of the best known, and the one WSO2 uses, is the Apache Way.
The Apache Way reserves “committer” status, rights, and obligations to those who have demonstrated their capability and commitment to the project. These rights include full write access to the source code, the ability to vote (primarily on releases, adding new committers, and new features.)
New committers are voted in by existing committers, based solely on their contributions, without regard to who their employer is. It’s a pure meritocracy.
Contributing to WSO2 Projects
At WSO2, there is no corporate interference in project governance. The existing committers vote in new committers based solely on their history of meaningful contribution. This means committers from outside WSO2 are encouraged to participate and welcomed to earn committer status.
Committer status is given to individuals and transcends the employment relationship. A committer changing jobs but still committed to the project retains their status. Please see the collaboration process from the Apache Way ( https://www.apache.org/foundation/how-it-works.html#management) which WSO2 uses as our governance model for all
Please also see the Community page for instructions on how to contribute.
Also see TCO Factor and Open Source Primer