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?
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 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!
Cause It's The Tight Thing To Do
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.
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: 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.
Contribute as a Developer
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.
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 ( 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.
Also see TCO Factor and Open Source Primer