<!DOCTYPE html>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you 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. 
-->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Apache Gobblin</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <link rel="icon"
          type="image/png"
          href="http://gobblin.io/favicon.ico">
    <!--===============================================
      CSS files
    =================================================-->
    <link rel="stylesheet" href="../assets/css/bootstrap.css" media="screen">
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
    <link rel="stylesheet" href="../assets/css/custom.min.css">
    <link rel="stylesheet" href="../assets/css/gobblin.css">
    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="../assets/js/html5shiv.js"></script>
      <script src="../assets/js/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <!--===============================================
      Gobblin Navigation Space <start>
    =================================================-->
    <div id="navigation"></div>

    <!--===============================================
      Gobblin Navigation Space <end>
    =================================================-->
    <!--===============================================
      Gobblin Center Space <start>
    =================================================-->
    <div class="container">
        
      <div class="page-header" id="primary-content">
          
        <div class="row">
          <div class="col-md-12">

            <div id="content">
                <h1 class="title" style="margin-top:-5px; font-size: 3em; margin-top: -5px;">Contributor Guide</h1>

                <p>This page contains resources and documentation for Gobblin contributors. </p>

                <h2 id="external-project-resources">External project resources<a class="header-link" href="#external-project-resources"><i class="fa fa-link"></i></a></h2>

                <ul>
                  <li><a href="https://issues.apache.org/jira/browse/GOBBLIN" target="_blank">JIRA</a> for tracking issues</li>
                  <li><a href="https://github.com/apache/incubator-gobblin/pulls" target="_blank" rel="nofollow">GitHub</a> for code reviews (via pull requests)</li>
                  <li><a href="https://travis-ci.org/apache/incubator-gobblin" target="_blank" rel="nofollow">TravisCI</a> for automated builds</li>
                </ul>

                <h2 id="development-docs">Development docs<a class="header-link" href="#development-docs"><i class="fa fa-link"></i></a></h2>

                <ul>
                  <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Contributor%27s+Guide" target="_blank">Contributor's Guide</a> - a guide for Contributors of Gobblin</li>
                  <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Committer%27s+Guide" target="_blank">Committer's Guide</a> - a guide for new or seasoned Committers of Gobblin</li>
                  <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Common+Pitfalls" target="_blank">Common Pitfalls</a> - common tricky situations faced by devs and users</li>
                  <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Design+Docs" target="_blank">Design Documents</a> - major technical design decisions</li>
                </ul>

                <h2 id="release-guides">Release guides<a class="header-link" href="#release-guides"><i class="fa fa-link"></i></a></h2>

                <ul>
                  <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Release+Process" target="_blank">Release Process</a> - comprehensive step by step guide to making a release</li>
                </ul>

                <h2 id="project-governance">Project governance<a class="header-link" href="#project-governance"><i class="fa fa-link"></i></a></h2>

                <ul>
                  <li><a href="https://www.apache.org/foundation/bylaws.html" target="_blank">Bylaws</a> for Apache projects</li>
                  <li><a href="https://community.apache.org/committers/consensusBuilding.html" target="_blank">Consensus Building</a> for Apache projects</li>
                  <li><a href="https://community.apache.org/committers/lazyConsensus.html" target="_blank">Lazy Consensus</a> for Apache projects</li>
                </ul>
              </div>
          </div>
        </div>
          
        <hr>
        <footer style="margin-bottom: 0em; margin-top: 0em;">
          <div id="footer">
              <div class="row">
                  <div class="col-sm-6">
                      <div class="footer-section__policies-section--policies">
                          <p style="font-size: 12px; line-height: 1.5em;">
                            Copyright © 2021 <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a>
                            <br>
                            Apache, Apache Gobblin, the Apache feather and the Gobblin logo are trademarks of The Apache Software Foundation
                            <br>
                         </p>
                      </div>
                </div>
                <div class="col-sm-6">
                    <p style="font-size: 12px; line-height: 1.5em; text-align: right;">
                        <!-- REQUIRED BY APACHE [START] -->
                        <a class="external" href="https://www.apache.org/">Foundation</a> | 
                        <a class="external" href="https://www.apache.org/licenses/">License</a> | 
                        <a class="external" href="https://www.apache.org/events/current-event">Events</a> | 
                        <a class="external" href="https://www.apache.org/security">Security</a> | 
                        <a class="external" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> | 
                        <a class="external" href="https://www.apache.org/foundation/thanks.html">Thanks</a> 
                        <!-- REQUIRED BY APACHE [END] -->
                    </p>
                </div>
              
            </div>
          </div>
        </footer>
      </div>
    <!--===============================================
      Gobblin Center Space <end>
    =================================================-->
    </div>

    <!--===============================================
      Javascript files
    =================================================-->
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="../assets/js/bootstrap.min.js"></script>
    <script src="../assets/js/jquery.particleground.min.js"></script>
    <script src="../assets/js/custom.js"></script>
    <script src="../assets/js/gobblin.js"></script>
  </body>
</html>
