blob: 58990439965f6874b12bace3e82832750eab738e [file] [view]
---
title: "Contribute to Apache Beam"
type: "contribute"
layout: "arrow_template"
aliases:
- /contribution-guide/
- /contribute/contribution-guide/
- /docs/contribute/
- /contribute/source-repository/
- /contribute/design-principles/
---
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Contribute to Apache Beam
Apache Beam is an open source project developed and maintained by a friendly community of users, contributors, committers, and project management committee (PMC) members.
Everyone is welcome to join and contribute to the project in multiple ways, not only with code contributions. Contributions like asking questions, reporting bugs, proposing new features, improving documentation, adding to the website, organizing events, or writing blog posts among other contributions, are welcome and recognized.
### What’s In It for You?
- Become a part of the worlds largest, most welcoming open source community
- Drive innovation for next-gen distributed data processing
- Make an impact by bringing advanced technology solutions into reality
- Empower your brand recognition and thought leadership in the data world
### Ways You Can Contribute
Heres a list of things you can do to get started contributing:
<div class="table-container-wrapper">
<table class="table-contribute">
<tr>
<th>Contribution</th>
<th>How to do it</th>
</tr>
<tr>
<td>Participate and share ideas</td>
<td class="list-text-size-md">
<ul>
<li>Subscribe to our <a href="/community/contact-us/">mailing lists</a> (<a href="mailto:dev@beam.apache.org">dev@beam.apache.org</a> and <a href="mailto:user@beam.apache.org">user@beam.apache.org</a>).</li>
<li>Stay in the loop of our <a href="https://github.com/apache/beam/issues">Issues product backlog</a>, participate in discussions to brainstorm solutions, and help the community solve their mailing list questions.</li>
</ul>
</td>
</tr>
<tr>
<td>File a bug</td>
<td class="list-text-size-md">
<ol class="no-bullet">
<li>Create a <a href="https://github.com/apache/beam/issues">GitHub issue</a> and mark it as a bug</li>
<br><span class="text--active">OR</span><br><br>
<li>Send an email to <a href="mailto:dev@beam.apache.org">dev@beam.apache.org</a> with subject: [Bug] &lt;bug summary&gt; and include as much detail as possible.</li>
</ol>
</td>
</tr>
<tr>
<td>Propose a feature</td>
<td class="list-text-size-md">
<ol class="no-bullet">
<li>Create a <a href="https://github.com/apache/beam/issues">GitHub issue</a> and mark it as a feature request</li>
<br><span class="text--active">OR</span><br><br>
<li>Send an email to <a href="mailto:dev@beam.apache.org">dev@beam.apache.org</a> with subject: [Feature Proposal] &lt;your idea&gt;.</li>
</ol>
</td>
</tr>
<tr>
<td>Fix an open issue</td>
<td class="list-text-size-md">
<ul>
<li>Comment “.take-issue on the <a href="https://github.com/apache/beam/issues">issue you'd like to work on</a>. This will cause the issue to be assigned to you.</li>
<li>Comment ".free-issue" on the <a href="https://github.com/apache/beam/issues">issue you'd like to not work on</a>. This will cause the issue to be unassigned from you.</li>
<li>If appropriate, make your change and open a <a href=https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork>Pull Request</a>.</li>
<li>Comment “.close-issue to close the issue once all work has been completed.</li>
<li>You can find good first issues using the <a href=https://github.com/apache/beam/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22>"good first issue" label</a>.</li>
<li>You can also find more developer documentation on <a href=https://cwiki.apache.org/confluence/display/BEAM/Developer+Guides>the wiki</a>.</li>
</ul>
</td>
</tr>
<tr>
<td>Improve documentation</td>
<td>
Click the edit icon in our documentation and itll take you to our <a href="https://github.com/apache/beam/">GitHub</a>, where you can automatically make the change you want and send a Pull Request.
</td>
</tr>
<tr>
<td>Improve the website</td>
<td class="list-text-size-md">
<ul>
<li>Follow the website <a href="https://github.com/apache/beam/blob/master/CONTRIBUTING.md">Contribution Guide</a> to make changes yourself.</li>
<li>Check our <a href="https://github.com/apache/beam/issues?q=is%3Aopen+is%3Aissue+label%3Awebsite">Website Backlog</a> in GitHub to find rooms for improvement, or propose one.</li>
</ul>
</td>
</tr>
<tr>
<td>Write a blogpost</td>
<td>
Tell a story about your custom use cases or share your recommendations and best practices.
</td>
</tr>
<tr>
<td>Share your success story</td>
<td>
Visit our <a href="/case-studies/">Case Studies</a> page and share your story or add your companys logo.
</td>
</tr>
<tr>
<td>Produce a social media publication</td>
<td>
Share the use cases that Beam helps empower or the data processing performance you achieved. Spread the word about the upcoming Beam Summits and conferences.
</td>
</tr>
<tr>
<td>Organize an event</td>
<td>
Send an email to <a href="mailto:dev@beam.apache.org">dev@beam.apache.org</a> to share your idea about the Beam event you want to organize.
</td>
</tr>
<tr>
<td>Build a new feature like a new IO connector or PTransform</td>
<td class="list-text-size-md">
<ul>
<li>Create and contribute a custom <a href="/documentation/programming-guide/#pipeline-io">I/O connector</a> for a specific data storage system you want to connect to, if it is not on <a href="/documentation/io/built-in/">the I/O list yet</a>.</li>
<li>Look at our project backlog to get some inspiration on what to build.</li>
<li>Follow our <a href="https://github.com/apache/beam/blob/master/CONTRIBUTING.md">Code Contribution Guide</a>.</li>
</ul>
</td>
</tr>
<tr>
<td>Share a code sample or template</td>
<td class="list-text-size-md">
<ul>
<li>Read our <a href="https://github.com/apache/beam/blob/master/CONTRIBUTING.md">Code Contribution Guide</a>.</li>
<li>Create your code sample or template. </li>
<li><a href="https://github.com/apache/beam/blob/master/CONTRIBUTING.md#make-your-change">Make a Pull Request</a> to add it to the Beam example folder.</li>
</ul>
</td>
</tr>
<tr>
<td>Test a release candidate</td>
<td>
Anybody can <a href="https://github.com/apache/beam/blob/master/contributor-docs/release-guide.md">propose a release</a> via the dev@beam.apache.org mailing list. Try Apache Beam releases in your projects, vote for release candidates, inform the community about the results and any issues found via <a href="mailto:dev@beam.apache.org">dev@beam.apache.org</a>. Learn more about how to validate a Beam release <a href="/blog/validate-beam-release/">here</a>.
</td>
</tr>
<tr>
<td>Other ideas?</td>
<td>
If you want to contribute in another way and youre not sure how to get started, send a proposal to <a href="mailto:dev@beam.apache.org">dev@beam.apache.org</a>.
</td>
</tr>
</table>
</div>
## Become a Committer
If you like contributing to Apache Beam, you are active in the Apache Beam mailing lists, Slack channel, or you attend/organize events, then you are a candidate to become a project committer.
Committers are community members that have write access to the projects repositories (i.e., they can modify the code, documentation, and website by themselves and also assist with code reviews and accept other contributions).
Even though there is no strict protocol to become a committer, the most important thing we look for is that you display the traits of an Apache Beam committer and that you have been consistently contributing to the project and community.
Candidates for new committers are suggested by current committers or PMC members, and voted upon by the PMC team. So if you would like to become a committer, engage with the community and keep contributing to Apache Beam. You might also want to talk to other committers and ask for their advice and guidance. Feel free to email any committer directly and ask for their advice!
## The Traits of an Apache Beam Committer
{{< contributor/row_of_traits committer_traits >}}
## Become a Project Management Committee (PMC) Member
The PMC is the official managing body of the project as per the Apache Software Foundation governance model: The Apache Way”. PMC members vote to set Apache Beams community and technical direction and are directly responsible for overseeing releases and the healthy development of the community.
PMC members are also responsible for ensuring their project follows certain core requirements set by the board or other corporate officers of the ASF, like following Legal, Branding, and Infrastructure related requirements, along with ensuring their community operates within the [ASF Code of Conduct](https://www.apache.org/foundation/policies/conduct#code-of-conduct).
Since the PMC members are responsible for establishing the Apache Beam vision and leading our community to work in harmony to achieve it, we look for committed individuals who can perform the responsibilities of the PMC, as well as lead our community to fulfill its vision. This is why we strive to build a diverse PMC that complements skills and expertise sharing the same sets of values.
Ideally, we find candidates among active community members that have shown initiative to shape the direction of Beam and have shown willingness to learn the official processes, such as how to create or verify releases, how to ensure trademark compliance for events, among others. We also expect PMC candidates to be level-headed, constructive, supportive, and willing to disagree and commit at times.
A PMC member is also a committer, so if they are not initiated already, they will automatically become committers when joining the PMC. Therefore, the traits of Apache Beam committers also apply to PMC members.
## Hear from the Community
<blockquote class="case-study-quote-block case-study-quote-wrapped">
<p class="case-study-quote-text">
Knowledge sharing and collaboration is something that comes naturally in the community. Together, we can work with the most complex problems and just solve them.
</p>
<div class="case-study-quote-author">
<div class="case-study-quote-author-img">
<img src="/images/matt_casters_photo.png">
</div>
<div class="case-study-quote-author-info">
<div class="case-study-quote-author-name">
Matt Casters
</div>
<div class="case-study-quote-author-position">
Co-founder
<br>Apache Hop
</div>
</div>
</div>
</blockquote>
<blockquote class="case-study-quote-block case-study-quote-wrapped">
<p class="case-study-quote-text">
I really enjoy working with Beam. The understanding of its internals empowers you to fine-tune the open source, customize it. Beam is very powerful and the abstraction is its most significant feature.
</p>
<div class="case-study-quote-author">
<div class="case-study-quote-author-img">
<img src="/images/talat_uyarer_photo.png">
</div>
<div class="case-study-quote-author-info">
<div class="case-study-quote-author-name">
Talat Ulyarer
</div>
<div class="case-study-quote-author-position">
Sr Principal<br>Software Engineer
<br>Palo Alto Networks
</div>
</div>
</div>
</blockquote>
<blockquote class="case-study-quote-block case-study-quote-wrapped">
<p class="case-study-quote-text">
My takeaway: everyone should join the [Apache Beam] mailing lists! This is where all the discussions happen, and it is a great place for learning. I also encourage everyone to attend and participate in conferences to meet and connect with the community.
</p>
<div class="case-study-quote-author">
<div class="case-study-quote-author-img">
<img src="/images/tobias_kaymak_photo.png">
</div>
<div class="case-study-quote-author-info">
<div class="case-study-quote-author-name">
Tobias Kaymak
</div>
<div class="case-study-quote-author-position">
Senior Data Engineer
<br>Ricardo
</div>
</div>
</div>
</blockquote>