<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"/>
  <title>Apache Gearpump (Incubating): How to contribute</title>
  

  

  

  <link rel="stylesheet" href="./css/bootstrap-3.3.5.min.css">
  <style>
    body {
      padding-top: 60px;
      padding-bottom: 40px;
    }
  </style>
  <link rel="stylesheet" href="./css/main.css">
  <link rel="stylesheet" href="css/pygments-default.css">
  <script src="./js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
</head>
<body>
  <!--[if lt IE 7]>
    <p class="chromeframe">You are using an outdated browser. <a href="http://browsehappy.com/">Upgrade your browser today</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to better experience this site.</p>l
  <![endif]-->

  <div class="navbar navbar-inverse navbar-fixed-top" id="topbar">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="/">Apache Gearpump (incubating)</a>
      </div>
      <div id="navbar" class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
          <li><a href="overview.html">Overview</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Docs<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="releases/latest/index.html">Latest Release (0.8.0)</a></li>
              <li><a href="usecases.html">Use Cases</a></li>
              <li class="divider"></li>
              <li><a href="publications.html">Publications</a></li>
            </ul>
          </li>
          <li><a href="downloads.html">Downloads</a></li>
          <li><a href="faq.html">FAQ</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Community<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li class="dropdown-header">Community</li>
              <li><a href="community.html#mailing-lists">Mailing Lists</a></li>
              <li><a href="community.html#issue-tracker">Issue Tracker</a></li>
              <li><a href="community.html#source-code-repositories">Source Code Repositories</a></li>
              <li><a href="community.html#who-we-are">Who We Are</a></li>
              <li><a href="https://twitter.com/ApacheGearpump" target="_blank">Follow us on Twitter</a></li>
              <li class="divider"></li>
              <li class="dropdown-header">Contribute</li>
              <li><a href="how-to-contribute.html">How to Contribute</a></li>
              <li><a href="coding-style.html">Coding Style</a></li>
            </ul>
          </li>
        </ul>

        <ul class="nav navbar-nav">
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="license.html">License</a></li>
              <li><a href="//apache.org/foundation/how-it-works.html" target="_blank">How Apache Works</a></li>
              <li><a href="//apache.org/foundation" target="_blank">Foundation</a></li>
              <li><a href="//www.apache.org/foundation/sponsorship.html" target="_blank">Sponsoring Apache</a></li>
            </ul>
          </li>
        </ul>

<a class="ribbon hidden-xs" href="//github.com/gearpump/gearpump"><img src="img/forkme_right_red_aa0000.png" alt="Fork me on GitHub"/></a>

      </div>
    </div>
  </div>

  <div class="container" id="content" style="margin-bottom: 50px">
   
    <h1 class="title">How to contribute</h1>
   

   <p>Gearpump is developed by an open and friendly community. Everybody is cordially welcome to join the community and contribute to Gearpump. There are several ways to interact with the community and to contribute to Gearpump including asking questions, filing bug reports, implementing new use cases, proposing new features, joining discussions on the mailing lists, contributing code or documentation, improving the website, or testing release candidates.</p>

<h2 id="ask-questions">Ask questions!</h2>

<p>The Gearpump community is eager to help and to answer your questions. Please subscribe the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#045;&#115;&#117;&#098;&#115;&#099;&#114;&#105;&#098;&#101;&#064;&#103;&#101;&#097;&#114;&#112;&#117;&#109;&#112;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;&#063;&#115;&#117;&#098;&#106;&#101;&#099;&#116;&#061;&#083;&#117;&#098;&#115;&#099;&#114;&#105;&#098;&#101;">user mailing list</a>.</p>

<h2 id="file-a-bug-report">File a bug report</h2>

<p>Please let us know if you experienced a problem with Gearpump and file a bug report. Open the <a href="https://issues.apache.org/jira/browse/GEARPUMP">Issue Tracker</a> and click on the <em>New Issue</em> link. Please give detailed information about the problem you encountered and, if possible, add a description that helps to reproduce the problem. Thank you very much.</p>

<h2 id="propose-an-improvement-or-a-new-feature">Propose an improvement or a new feature</h2>

<p>Our community is constantly looking for feedback to improve Gearpump. If you have an idea how to improve Gearpump or have a new feature in mind that would be beneficial for Gearpump users, please open an issue in the <a href="https://issues.apache.org/jira/browse/GEARPUMP">Issue Tracker</a>. The improvement or new feature should be described in appropriate detail and include the scope and its requirements if possible. Detailed information is important for a few reasons:</p>

<ul>
  <li>It ensures your requirements are met when the improvement or feature is implemented.</li>
  <li>It helps to estimate the effort and to design a solution that addresses your needs.</li>
  <li>It allow for constructive discussions that might arise around this issue.</li>
  <li>Detailed information is also required, if you plan to contribute the improvement or feature you proposed yourself. Please read the Contribute code guide in this case as well.</li>
</ul>

<h2 id="test-a-release-candidate">Test a release candidate</h2>

<p>Gearpump is continuously improved by its active community. Every few weeks, we release a new version of Gearpump with bug fixes, improvements, and new features. Release testing is a big effort if done by a small group of people but can be easily scaled out to more people. The Gearpump community encourages everybody to participate in the testing of a release candidate. By testing a release candidate, you can ensure that the next Gearpump release is working properly for your setup and help to improve the quality of releases.</p>

<h2 id="contribute-code">Contribute code</h2>

<p>Gearpump is maintained, improved, and extended by code contributions of volunteers. The Gearpump community encourages anybody to contribute source code.</p>

<h2 id="looking-for-an-issue-to-work-on">Looking for an issue to work on?</h2>
<p>We maintain a list of all known bugs, proposed improvements and suggested features in the <a href="https://issues.apache.org/jira/browse/GEARPUMP">Issue Tracker</a>. Please have a look at the list, if you are looking for an issue to work on. Feel free to ask questions about issues that you would be interested in working on.</p>

<h2 id="contribute-documentation">Contribute documentation</h2>

<p>Good documentation is crucial for any kind of software. This is especially true for sophisticated software systems such as distributed data processing engines like Gearpump. The Gearpump community aims to provide concise, precise, and complete documentation and welcomes any contribution to improve Gearpump’s documentation.</p>

<p>Please report missing, incorrect, or out-dated documentation as an issue.
Gearpump’s documentation is written in Markdown and located in the <code>docs</code> folder in Gearpump’s source code repository.</p>

<h2 id="improve-the-website">Improve the website</h2>

<p>The Gearpump website presents Gearpump and its community. It serves several purposes including:</p>

<ul>
  <li>Informing visitors about Gearpump and its features.</li>
  <li>Encouraging visitors to download and use Gearpump.</li>
  <li>Encouraging visitors to engage with the community.</li>
</ul>

<p>We welcome any contribution to improve our website.</p>

<p>Please open an issue at the <a href="https://issues.apache.org/jira/browse/GEARPUMP">Issue Tracker</a> if you think our website could be improved.</p>

<h2 id="more-ways-to-contribute">More ways to contribute</h2>

<p>There are many more ways to contribute to the Gearpump community. For example you can</p>

<ul>
  <li>Give a talk about Gearpump and tell others how you use it.</li>
  <li>Organize a local Meetup or user group.</li>
  <li>Talk to people about Gearpump.</li>
</ul>

  </div> <!-- /container -->

  <footer class="navbar navbar-default navbar-fixed-bottom">
    <div class="container text-center" style="padding: 14px 0 10px 0; line-height: 150%">
      <p class="text-muted">
        Copyright © 2016 <a href="//apache.org" target="_blank">The Apache Software Foundation</a>.
        All Rights Reserved.<br/>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
      </p>
    </div>
  </footer>

  <script src="js/vendor/jquery-2.1.4.min.js"></script>
  <script src="js/vendor/bootstrap-3.3.5.min.js"></script>
  <script src="js/vendor/anchor-1.1.1.min.js"></script>
  <script src="js/main.js"></script>

  <!-- MathJax Section -->
  <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      TeX: { equationNumbers: { autoNumber: "AMS" } }
    });
  </script>
  <script>
    // Note that we load MathJax this way to work with local file (file://), HTTP and HTTPS.
    // We could use "//cdn.mathjax...", but that won't support "file://".
    (function(d, script) {
      script = d.createElement('script');
      script.type = 'text/javascript';
      script.async = true;
      script.onload = function(){
        MathJax.Hub.Config({
          tex2jax: {
            inlineMath: [ ["$", "$"], ["\\\\(","\\\\)"] ],
            displayMath: [ ["$$","$$"], ["\\[", "\\]"] ],
            processEscapes: true,
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
          }
        });
      };
      script.src = ('https:' == document.location.protocol ? 'https://' : 'http://') +
        'cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
      d.getElementsByTagName('head')[0].appendChild(script);
    }(document));
  </script>
</body>
</html>

