<!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 class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <!--===============================================
          Gobblin Navigation Bar Header <start>
        =================================================-->
        <div class="navbar-header">
          <a href="/" class="navbar-brand">Apache Gobblin</a>
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#navbar-main">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <!--===============================================
          Gobblin Navigation Bar Header <end>
        =================================================-->
        <!--===============================================
          Gobblin Navigation Bar Options <start>
        =================================================-->
        <div class="navbar-collapse collapse" id="navbar-main">
          <ul class="nav navbar-nav">
            <li>
              <a href="/download">Download</a>
            </li>
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#" >Releases <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">0.12.0 (Upcoming)</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Pre Apache</li>
                <li><a href="https://github.com/apache/incubator-gobblin/releases/tag/gobblin_0.11.0" target="_blank">0.11.0 (Latest) <i class="fa fa-external-link"></i></a></li>
                <li><a href="https://github.com/apache/incubator-gobblin/releases" target="_blank">Archive <i class="fa fa-external-link"></i></a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#" >Documentation <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Home" target="_blank">Apache Wiki <i class="fa fa-external-link"></i></a></li>
                <li class="divider"></li>
                <li class="dropdown-header">ReadTheDocs</li>
                <li><a href="http://gobblin.readthedocs.io/en/latest/" target="_blank">Latest (0.11.0) <i class="fa fa-external-link"></i></a></li>
                <li><a href="http://gobblin.readthedocs.io/en/latest/Getting-Started/" target="_blank">Getting Started (0.11.0) <i class="fa fa-external-link"></i></a></li>
                <li><a href="http://gobblin.readthedocs.io/en/latest/Gobblin-Architecture/" target="_blank">Architecture (0.11.0) <i class="fa fa-external-link"></i></a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Wiki</li>
                <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Design+Docs" target="_blank">Design Documents <i class="fa fa-external-link"></i></a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="/get-involved">Get Involved</a></li>
                <li><a href="/contributor">Contributor Guide</a></li>
                <li><a href="/people">People</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Engagement</li>
                <li><a href="/mailing-lists">Mailing Lists</a></li>
                <li><a href="https://gitter.im/gobblin/Lobby" target="_blank">Gitter <i class="fa fa-external-link"></i></a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Meetups" target="_blank">Meetups <i class="fa fa-external-link"></i></a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Issue / Feature Tracking</li>
                <li><a href="https://issues.apache.org/jira/projects/GOBBLIN" target="_blank">Apache JIRA <i class="fa fa-external-link"></i></a></li>  
                <li><a href="https://cwiki.apache.org/confluence/display/GOBBLIN/Roadmap" target="_blank">Roadmap <i class="fa fa-external-link"></i></a></li>  
              </ul>
            </li>
          </ul>

          <ul class="nav navbar-nav navbar-right">
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#" aria-expanded="false">Apache Software Foundation<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="https://www.apache.org" target="_blank">Apache Homepage <i class="fa fa-external-link"></i></a></li>
                <li><a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank">License <i class="fa fa-external-link"></i></a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship <i class="fa fa-external-link"></i></a></li>
                <li><a href="https://www.apache.org/security" target="_blank">Security <i class="fa fa-external-link"></i></a></li>
                <li><a href="https://www.apache.org/foundation/thanks" target="_blank">Thanks <i class="fa fa-external-link"></i></a></li>
                <li><a href="https://www.apache.org/foundation/policies/conduct" target="_blank">Code of Conduct <i class="fa fa-external-link"></i></a></li>
              </ul>
            </li>
          </ul>

        </div>
        <!--===============================================
          Gobblin Navigation Bar Options <end>
        =================================================-->
      </div>
    </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 style="font-size: 3em; margin-top: -5px">Downloads</h1>

                    <p>Be sure to verify your downloads by these <a href="https://www.apache.org/info/verification" title="Verify" target="_blank">procedures</a> using these <a href="https://people.apache.org/keys/group/gobblin.asc" title="KEYS" target="_blank">KEYS</a> for any Apache release. Not valid for pre-Apache releases.</p>
                    <!--=============================================
                    Latest Release
                    ==============================================-->
                    <h2 id="current-releases">Current Releases<a class="header-link" href="#current-releases"><i class="fa fa-link"></i></a></h2>

                    <h3 id="latest-label-label-primary-">Pre-Apache 0.11.0 <strong class="label label-primary">latest</strong><a class="header-link" href="#latest-label-label-primary-"><i class="fa fa-link"></i></a></h3>

                    <p>The last release prior to Apache incubation is version 0.11.0. See the <a href="https://github.com/apache/incubator-gobblin/blob/gobblin_0.11.0/CHANGELOG.md" title="0.11.0 Release Notes" target="_blank">release notes</a> and <a href="https://github.com/apache/incubator-gobblin/blob/gobblin_0.11.0/CHANGELOG.md" title="0.11.1 CHANGES" target="_blank">CHANGES</a>.</p>

                    <p>The <a href="#" title="0.11.0 MD5 file hashes">MD5</a> and <a href="#" title="0.11.0 SHA1 file hashes">SHA1</a> hashes are NOT available for pre-Apache release.</p>

                    <table class="table">
                      <tbody>
                        <tr>
                          <td><strong>Generic Binaries</strong></td>
                          <td><a class="download_external" href="https://github.com/apache/incubator-gobblin/archive/gobblin_0.11.0.tar.gz" target="_blank">gobblin_0.11.0.tar.gz</a></td>
                          <td>ASC (not available)</td>
                        </tr>
                        <tr>
                          <td><strong>Source</strong></td>
                          <td><a class="download_external" href="https://github.com/apache/incubator-gobblin/archive/gobblin_0.11.0.zip" target="_blank">gobblin_0.11.0.zip</a></td>
                          <td>ASC (not available)</td>
                        </tr>
                      </tbody>
                    </table>

                    <h4 id="documentation">0.11.0 Documentation<a class="header-link" href="#documentation"><i class="fa fa-link"></i></a></h4>
                    <ul>
                      <li><a class="download_external" href="https://github.com/apache/incubator-gobblin/blob/gobblin_0.11.0/README.md" target="_blank">README</a></li>
                      <li><a href="http://readthedocs.org/projects/gobblin/downloads/htmlzip/latest/" title="0.11.0 user manual" target="_blank">HTML User Manual</a></li>
                      <li><a href="http://gobblin.readthedocs.io/en/latest/Getting-Started/" title="0.11.0 examples" target="_blank">Examples</a></li>
                      <li><a class="download_external" href="#">Javadoc</a></li>
                    </ul>

                    <!--=============================================
                      Older Releases (Archived)
                    ==============================================-->
                    <h2 id="older-releases">Older Pre-Apache releases<a class="header-link" href="#older-releases"><i class="fa fa-link"></i></a></h2>

                    <p>Older releases can be found in the <a href="https://github.com/apache/incubator-gobblin/releases" target="_blank">archives</a>.</p>
                </div>
            </div>
        </div>
        <hr>
        <footer style="margin-bottom: 0em; margin-top: 0em;">
          <div id="footer">
            <img src="../assets/images/incubator_feather_egg_logo.png" height="60">
            <br>
            <br>
            <p style="font-size: 12px; line-height: 1.5em;">
            Apache Gobblin is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
            </p>
            <p style="font-size: 12px; line-height: 1.5em; margin-top: 2em; margin-bottom: 2em;">
            Copyright © 2017 <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a>
            <br>
            Apache, Apache Gobblin (incubating), the Apache feather and the Gobblin logo are trademarks of The Apache Software Foundation
            </p>
          </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>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-3216387-4', 'auto');
      ga('send', 'pageview');

    </script>
  </body>
</html>
