<!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.
-->
<head>
  	<meta charset="utf-8">
  	<meta http-equiv="X-UA-Compatible" content="IE=edge">

 	<title>Griffin - Apache Griffin Latest Download</title>
 	<meta name="description" content="Apache Griffin - Big Data Quality Solution For Batch and Streaming">

	<meta name="keywords" content="Griffin, Hadoop, Security, Real Time">
	<meta name="author" content="eBay Inc.">

	<meta charset="utf-8">
	<meta name="viewport" content="initial-scale=1">

	<link rel="stylesheet" href="/css/animate.css">
	<link rel="stylesheet" href="/css/bootstrap.min.css">

	<link rel="stylesheet" href="/css/font-awesome.min.css">

	<link rel="stylesheet" href="/css/misc.css">
	<link rel="stylesheet" href="/css/style.css">
	<link rel="stylesheet" href="/css/styles.css">
  	<link rel="stylesheet" href="/css/main.css">
  	<link rel="alternate" type="application/rss+xml" title="Griffin" href="http://griffin.apache.org/feed.xml" />
  	<link rel="shortcut icon" href="/images/favicon.ico">

  	<!-- Baidu Analytics Tracking-->
	<script>
	var _hmt = _hmt || [];
	(function() {
	  var hm = document.createElement("script");
	  hm.src = "//hm.baidu.com/hm.js?fedc55df2ea52777a679192e8f849ece";
	  var s = document.getElementsByTagName("script")[0];
	  s.parentNode.insertBefore(hm, s);
	})();
	</script>

	<!-- Google Analytics Tracking -->
	<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','//www.google-analytics.com/analytics.js','ga');
	  ga('create', 'UA-68929805-1', 'auto');
	  ga('send', 'pageview');
	</script>
</head>

<body>
<!-- header start -->
<div id="home_page">
  <div class="topbar">
    <div class="container">
      <div class="row" >
        <nav class="navbar navbar-default">
          <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <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="/"><img src="/images/logo.png" height="44px" style="margin-top:-7px"></a> </div>
            </div>
          </div>
          <!-- /.container-fluid -->
        </nav>
      </div>
    </div>
  </div>

</div>
<!-- header end -->
<div class="container-fluid page-content">
  <div class="row">
    <div class="col-md-10 col-md-offset-1">
      <!-- sidebar -->
      <div class="col-xs-6 col-sm-3" id="sidebar" role="navigation">
        <ul class="nav" id="adminnav">
        
        <li class="heading">Getting Started</li>
        
          <li class="sidenavli  "><a href="/docs/quickstart.html" data-permalink="/docs/latest.html" id="">Quick Start</a></li>
        
          <li class="sidenavli  "><a href="/docs/quickstart-cn.html" data-permalink="/docs/latest.html" id="">Quick Start (Chinese Version)</a></li>
        
          <li class="sidenavli  "><a href="/docs/usecases.html" data-permalink="/docs/latest.html" id="">Streaming Use Cases</a></li>
        
          <li class="sidenavli  "><a href="/docs/profiling.html" data-permalink="/docs/latest.html" id="">Profiling Use Cases</a></li>
        
          <li class="sidenavli  "><a href="/docs/faq.html" data-permalink="/docs/latest.html" id="">FAQ</a></li>
        
          <li class="sidenavli  "><a href="/docs/community.html" data-permalink="/docs/latest.html" id="">Community</a></li>
        
          <li class="sidenavli  "><a href="/docs/conf.html" data-permalink="/docs/latest.html" id="">Conference</a></li>
        
        <li class="divider"></li>
      
        <li class="heading">Development</li>
        
          <li class="sidenavli  "><a href="/docs/contribute.html" data-permalink="/docs/latest.html" id="">Contribution</a></li>
        
          <li class="sidenavli  "><a href="/docs/contributors.html" data-permalink="/docs/latest.html" id="">Contributors</a></li>
        
        <li class="divider"></li>
      
        <li class="heading">Download</li>
        
          <li class="sidenavli  current"><a href="/docs/latest.html" data-permalink="/docs/latest.html" id="">Latest version</a></li>
        
          <li class="sidenavli  "><a href="/docs/download.html" data-permalink="/docs/latest.html" id="">Archived</a></li>
        
        <li class="divider"></li>
      
        <li class="sidenavli">
          <a href="mailto:dev@griffin.apache.org" target="_blank">Need Help?</a>
        </li>
        </ul>
      </div>
      <div class="col-xs-6 col-sm-9 page-main-content" style="margin-left: -15px" id="loadcontent">
        <h1 class="page-header" style="margin-top: 0px">Apache Griffin Latest Download</h1>
        <blockquote>
  <p>Version <strong>0.6.0</strong> is the latest release.</p>

  <p>You can verify your download by following these <a href="https://www.apache.org/info/verification.html">procedures</a> and using these <a href="https://dist.apache.org/repos/dist/release/griffin/KEYS">KEYS</a>.</p>
</blockquote>

<h1 id="060">0.6.0</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/griffin/0.6.0/CHANGES.txt">griffin 0.6.0 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/griffin/0.6.0/griffin-0.6.0-source-release.zip">griffin-0.6.0-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/griffin/0.6.0/griffin-0.6.0-source-release.zip.sha512">griffin-0.6.0-source-release.zip.sha512</a></li>
      <li><a href="https://archive.apache.org/dist/griffin/0.6.0/griffin-0.6.0-source-release.zip.asc">griffin-0.6.0-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=griffin.git;a=tag;h=refs/tags/griffin-0.6.0">griffin-0.6.0</a></li>
    </ul>
  </li>
</ul>


      </div><!--end of loadcontent-->
    </div>
    <!--end of centered content-->
  </div>
</div>
<!--end of container-->


<!-- footer start -->
<div class="footerwrapper">
    <div class="container">
        <div class="row">
            <div class="col-md-3">
                <img src="/images/incubator_feather_egg_logo.png" height="60">
            </div>
            <div class="col-md-9">
                <div style="margin-left:auto; margin-right:auto; text-align:center;font-size:12px;">
                    <div>
                        Apache Griffin is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache 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.
                    </div>
                </div>
            </div>
        </div>
        <div class="row" style="padding-top:10px;">
            Copyright © 2018 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br>
			Apache Griffin, Griffin, Apache, the Apache feather logo and the Apache Griffin logo are trademarks of The Apache Software Foundation.
        </div>
		<div class="row text-center" style="padding-top:10px;">
			<a href="https://www.apache.org/events/current-event.html">
				<img src="https://www.apache.org/events/current-event-234x60.png" alt="ASF Current Event">
			</a>
		</div>
    </div>
</div>
<!-- footer end -->

<!-- JavaScripts -->
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>



</body>
</html>
