




<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Project &mdash; Airflow Documentation</title>
  

  
  
  
  

  
  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
        <script type="text/javascript" src="_static/jquery.js"></script>
        <script type="text/javascript" src="_static/underscore.js"></script>
        <script type="text/javascript" src="_static/doctools.js"></script>
        <script type="text/javascript" src="_static/language_data.js"></script>
    
    <script type="text/javascript" src="_static/js/theme.js"></script>

    

  
  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="License" href="license.html" />
    <link rel="prev" title="Apache Airflow Documentation" href="index.html" />
   
  <script>
    document.addEventListener('DOMContentLoaded', function() {
      var el = document.getElementById('changelog');
      if (el !== null ) {
        // [AIRFLOW-...]
        el.innerHTML = el.innerHTML.replace(
            /\[(AIRFLOW-[\d]+)\]/g,
            `<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
        );
        // (#...)
        el.innerHTML = el.innerHTML.replace(
            /\(#([\d]+)\)/g,
            `<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
        );
      };
    })
  </script>
    <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-140539454-1']);
    _gaq.push(['_trackPageview']);
  </script>
  <style>
    .example-header {
      position: relative;
      background: #9AAA7A;
      padding: 8px 16px;
      margin-bottom: 0;
    }
    .example-header--with-button {
      padding-right: 166px;
    }
    .example-header:after{
      content: '';
      display: table;
      clear: both;
    }
    .example-title {
      display:block;
      padding: 4px;
      margin-right: 16px;
      color: white;
      overflow-x: auto;
    }
    .example-header-button {
      top: 8px;
      right: 16px;
      position: absolute;
    }
    .example-header + .highlight-python {
      margin-top: 0 !important;
    }
    .viewcode-button {
      display: inline-block;
      padding: 8px 16px;
      border: 0;
      margin: 0;
      outline: 0;
      border-radius: 2px;
      -webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
      box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
      color: #404040;
      background-color: #e7e7e7;
      cursor: pointer;
      font-size: 16px;
      font-weight: 500;
      line-height: 1;
      text-decoration: none;
      text-overflow: ellipsis;
      overflow: hidden;
      text-transform: uppercase;
      -webkit-transition: background-color .2s;
      transition: background-color .2s;
      vertical-align: middle;
      white-space: nowrap;
    }
    .viewcode-button:visited {
      color: #404040;
    }
    .viewcode-button:hover, .viewcode-button:focus {
      color: #404040;
      background-color: #d6d6d6;
    }
  </style>

</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="index.html" class="icon icon-home"> Airflow
          

          
          </a>

          
            
            
              <div class="version">
                1.10.5
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Project</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#history">History</a></li>
<li class="toctree-l2"><a class="reference internal" href="#committers">Committers</a></li>
<li class="toctree-l2"><a class="reference internal" href="#resources-links">Resources &amp; links</a></li>
<li class="toctree-l2"><a class="reference internal" href="#roadmap">Roadmap</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="start.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="cli.html">Command Line Interface Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="api.html">REST API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="macros.html">Macros reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="_api/index.html">Python API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="privacy_notice.html">Privacy Notice</a></li>
</ul>

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

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="index.html">Airflow</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="index.html">Docs</a> &raquo;</li>
        
      <li>Project</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
            <a href="_sources/project.rst.txt" rel="nofollow"> View page source</a>
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <blockquote>
<div></div></blockquote>
<div class="section" id="project">
<h1>Project<a class="headerlink" href="#project" title="Permalink to this headline">¶</a></h1>
<div class="section" id="history">
<h2>History<a class="headerlink" href="#history" title="Permalink to this headline">¶</a></h2>
<p>Airflow was started in October 2014 by Maxime Beauchemin at Airbnb.
It was open source from the very first commit and officially brought under
the Airbnb GitHub and announced in June 2015.</p>
<p>The project joined the Apache Software Foundation’s Incubator program in March 2016 and the
Foundation <a class="reference external" href="https://blogs.apache.org/foundation/entry/the-apache-software-foundation-announces44">announced Apache Airflow as a Top-Level Project</a>
in January 2019.</p>
</div>
<div class="section" id="committers">
<h2>Committers<a class="headerlink" href="#committers" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><p>&#64;mistercrunch (Maxime “Max” Beauchemin)</p></li>
<li><p>&#64;r39132 (Siddharth “Sid” Anand)</p></li>
<li><p>&#64;criccomini (Chris Riccomini)</p></li>
<li><p>&#64;bolkedebruin (Bolke de Bruin)</p></li>
<li><p>&#64;artwr (Arthur Wiedmer)</p></li>
<li><p>&#64;jlowin (Jeremiah Lowin)</p></li>
<li><p>&#64;aoen (Dan Davydov)</p></li>
<li><p>&#64;msumit (Sumit Maheshwari)</p></li>
<li><p>&#64;alexvanboxel (Alex Van Boxel)</p></li>
<li><p>&#64;saguziel (Alex Guziel)</p></li>
<li><p>&#64;joygao (Joy Gao)</p></li>
<li><p>&#64;fokko (Fokko Driesprong)</p></li>
<li><p>&#64;ash (Ash Berlin-Taylor)</p></li>
<li><p>&#64;kaxilnaik (Kaxil Naik)</p></li>
<li><p>&#64;feng-tao (Tao Feng)</p></li>
<li><p>&#64;hiteshs (Hitesh Shah)</p></li>
<li><p>&#64;jghoman (Jakob Homan)</p></li>
<li><p>&#64;XD-DENG (Xiaodong Deng)</p></li>
<li><p>&#64;dimberman (Daniel Imberman)</p></li>
<li><p>&#64;potiuk (Jarek Potiuk)</p></li>
<li><p>&#64;basph (Bas Harenslak)</p></li>
<li><p>&#64;jmcarp (Joshua Carp)</p></li>
<li><p>&#64;KevinYang21 (Kevin Yang)</p></li>
<li><p>&#64;mik-laj (Kamil Breguła)</p></li>
<li><p>&#64;aijamalnk (Aizhamal Nurmamat kyzy)</p></li>
<li><p>&#64;milton0825 (Chao-Han Tsai)</p></li>
</ul>
<p>For the full list of contributors, take a look at <a class="reference external" href="https://github.com/apache/airflow/graphs/contributors">Airflow’s Github
Contributor page:</a></p>
</div>
<div class="section" id="resources-links">
<h2>Resources &amp; links<a class="headerlink" href="#resources-links" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><p><a class="reference external" href="http://airflow.apache.org/">Airflow’s official documentation</a></p></li>
<li><p>Mailing lists:</p>
<ul>
<li><p>Developer’s mailing list: <a class="reference external" href="mailto:dev-subscribe&#37;&#52;&#48;airflow&#46;apache&#46;org">dev-subscribe<span>&#64;</span>airflow<span>&#46;</span>apache<span>&#46;</span>org</a></p></li>
<li><p>All commits mailing list: <a class="reference external" href="mailto:commits-subscribe&#37;&#52;&#48;airflow&#46;apache&#46;org">commits-subscribe<span>&#64;</span>airflow<span>&#46;</span>apache<span>&#46;</span>org</a></p></li>
<li><p>Airflow users mailing list: <a class="reference external" href="mailto:users-subscribe&#37;&#52;&#48;airflow&#46;apache&#46;org">users-subscribe<span>&#64;</span>airflow<span>&#46;</span>apache<span>&#46;</span>org</a></p></li>
</ul>
</li>
<li><p><a class="reference external" href="https://issues.apache.org/jira/browse/AIRFLOW">Issues on Apache’s Jira</a></p></li>
<li><p><a class="reference external" href="https://gitter.im/airbnb/airflow">Gitter (chat) Channel</a></p></li>
<li><p><a class="reference external" href="https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Links">More resources and links to Airflow related content on the Wiki</a></p></li>
</ul>
</div>
<div class="section" id="roadmap">
<h2>Roadmap<a class="headerlink" href="#roadmap" title="Permalink to this headline">¶</a></h2>
<p>Please refer to the Roadmap on <a class="reference external" href="https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Home">the wiki</a></p>
</div>
</div>


           </div>
           
          </div>
          

<footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="license.html" class="btn btn-neutral float-right" title="License" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="index.html" class="btn btn-neutral float-left" title="Apache Airflow Documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
  <div class="footer">This page uses <a href="https://analytics.google.com/">
    Google Analytics</a> to collect statistics. You can disable it by blocking
    the JavaScript coming from www.google-analytics.com. Check our
    <a href="privacy_notice.html">Privacy Policy</a>
    for more details.
    <script type="text/javascript">
      (function() {
        var ga = document.createElement('script');
        ga.src = ('https:' == document.location.protocol ?
          'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        ga.setAttribute('async', 'true');
        var nodes = document.documentElement.childNodes;
        var i = -1;
        var node;
        do {
          i++;
          node = nodes[i]
        } while(node.nodeType !== Node.ELEMENT_NODE);
        node.appendChild(ga);
      })();
    </script>
  </div>


</footer>

        </div>
      </div>

    </section>

  </div>
  


  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>
