The Open Source Primer: Part 3 - Why Contribute
Open source communities grow strong when there are many and diverse participants. For many popular 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 project has a clear interest in participating. Individuals may participate for their own enjoyment or to build skills and a reputation that boost their career.
But this white paper focuses on participation from users, 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?
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 longterm benefits of a project that remains stable and reliable while evolving along with the new demands that may be placed upon it. By being an active contributor, your needs are represented directly in the project and help drive its direction in a way that aligns well with your needs.
In addition, participation 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 project will help maintain, influence, or in worst case fork the project to extricate yourself from the commercial relationship.
One common benefit of contributing 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 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 a community can also be a source of job candidates. Nothing like seeing someone in action!
Open source essentially opens up 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 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 you start and what commitment is required?
There are many levels of commitment, you can choose one today and increase or pull back on your commitment as you need to.
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: 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 with it. 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.
Open source project 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: Take a look at the source code. Ask questions. Engage in the discussion of new features. Suggest improvements. More eyes makes 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.
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 ( http://www.apache.org/foundation/how-it-works.html#management) which WSO2 uses as our governance model for all our projects.
Please also see the Community page for instructions on how to make a contribution.