<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  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 xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" />
  <link rel="stylesheet" href="../style/style.css" type="text/css" />
        <title>Incubation Status Template - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row">
<div class="span12">
  <a href="http://www.apache.org/"><img src="http://incubator.apache.org/images/asf_logo_wide_small.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="62%"/></a>
</div>
<div class="span4">
<a href="http://incubator.apache.org/"><img src="../images/egg-logo2.png" alt="Apache Incubator" border="0"/></a>
</div>
</div>
  <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  
  <div class="row">
   <div class="span4">
    <form action="http://www.google.com/search" method="get">
     <input value="incubator.apache.org" name="sitesearch" type="hidden"/>
     <input size="20" name="q" id="query" type="text" value="search..."
      onclick="if(this.value == 'search...') {this.value = ''}"/>
     <input name="Search" value="Go" type="submit"/>
    </form>
          <div class="menuheader">General</div>
    <menu compact="compact">
          <li><a href="../index.html">Welcome</a></li> 
          <li><a href="../incubation/Process_Description.html">Incubation Overview</a></li> 
          <li><a href="../incubation/Incubation_Policy.html">Incubation Policy</a></li> 
          <li><a href="../guides/index.html">Incubation Guides</a></li> 
          <li><a href="../incubation/Roles_and_Responsibilities.html">Roles and Responsibilities</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> 
          <li><a href="../whoweare.html">Who We Are</a></li> 
          <li><a href="../sitemap.html">Site Map</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects/index.html">Project List</a></li> 
          <li><a href="../clutch.html">Clutch Report</a></li> 
          <li><a href="../ip-clearance/index.html">IP Clearance</a></li> 
          <li><a href="../history/index.html">Incubator History</a></li> 
            </menu>
      <div class="menuheader">Entry Guides</div>
    <menu compact="compact">
          <li><a href="../guides/proposal.html">Proposal Guide</a></li> 
            </menu>
      <div class="menuheader">Podling Guides</div>
    <menu compact="compact">
          <li><a href="../guides/committer.html">Podling Committers</a></li> 
          <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> 
          <li><a href="../guides/mentor.html">Podling Mentor</a></li> 
          <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> 
          <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> 
          <li><a href="../guides/sites.html">Podling Websites</a></li> 
          <li><a href="../guides/graduation.html">Graduation</a></li> 
          <li><a href="../guides/retirement.html">Retirement</a></li> 
            </menu>
      <div class="menuheader">Other Guides</div>
    <menu compact="compact">
          <li><a href="../guides/participation.html">Participation</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="../guides/pmc.html">Incubator PMC (IPMC)</a></li> 
          <li><a href="../guides/chair.html">IPMC Chair</a></li> 
          <li><a href="../guides/lists.html">Mailing Lists</a></li> 
          <li><a href="../guides/website.html">Incubator Website</a></li> 
            </menu>
      <div class="menuheader">ASF</div>
    <menu compact="compact">
          <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> 
          <li><a href="http://www.apache.org/foundation/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
            </menu>
    <!-- start Ads Server -->
    <iframe src="http://www.apache.org/ads/buttonbar.html"
     style="border-width:0; float: left" frameborder="0" scrolling="no"
     width="135" height="265"></iframe>
    <!-- end Ads Server -->
   </div>
   
   <div class="span12">
            <h2 id='Quickstep+Project+Incubation+Status'><img src="../images/redarrow.gif" />Quickstep Project Incubation Status</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise. For more general
         project status, look on the project website.</p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>Quickstep is a high-performance database engine. It is designed to (1) convert data to insights at bare-metal speed, (2) support multiple query surfaces including SQL (the first, and current, version only supports SQL), and (3) deliver bare-metal performance on any hardware (including running on a laptop, running on a high-end (single node) server, and running on a distributed cluster). Since its inception, the project has been planned to deliver a high-performance single node system first, followed by a distributed system.</p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<ul>
        <li>2016-03-29 Project enters incubation.</li>
      </ul>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info</h2>
<div class="section-content">
<ul>
        <li><a href="http://quickstep.incubator.apache.org">Apache Quickstep (incubating) website</a></li>
      </ul>
<ul>
        <li><a href="https://cwiki.apache.org/confluence/display/QUICKSTEP/">How to contribute to Apache Quickstep (incubating)</a></li>
      </ul>
<table class="colortable" width="100%">
        <tr>
          <th>item</th>
          <th>type</th>
          <th>reference</th>
        </tr>
        <tr>
          <td>Website</td>
          <td>www</td>
          <td id="www">
            <a href="http://quickstep.incubator.apache.org/">http://quickstep.incubator.apache.org/</a>
          </td>
        </tr>
        <tr>
          <td>.</td>
          <td>wiki</td>
          <td id="wiki">
            <a href="https://cwiki.apache.org/confluence/display/QUICKSTEP">https://cwiki.apache.org/confluence/display/QUICKSTEP</a>
          </td>
        </tr>
        <tr>
          <td>Mailing list</td>
          <td>dev</td>
          <td id="mail-dev"><code>dev</code><code>@</code><code>quickstep.incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>.</td>
          <td>commits</td>
          <td id="mail-commits"><code>commits</code><code>@</code><code>quickstep.incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>.</td>
          <td>user</td>
          <td id="mail-user"><code>user</code><code>@</code><code>quickstep.incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>.</td>
          <td>issues</td>
          <td id="mail-issues"><code>issues</code><code>@</code><code>quickstep.incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>.</td>
          <td>private</td>
          <td id="mail-private"><code>private</code><code>@</code><code>quickstep.incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>Bug tracking</td>
          <td>.</td>
          <td id="tracker">
           <a href="https://issues.apache.org/jira/browse/QUICKSTEP">https://issues.apache.org/jira/browse/QUICKSTEP</a>
          </td>
        </tr>
        <tr>
          <td>Source code</td>
          <td>GIT</td>
          <td id="git">
            <a href="https://git-wip-us.apache.org/repos/asf/incubator-quickstep.git">https://git-wip-us.apache.org/repos/asf/incubator-quickstep.git</a>
          </td>
        </tr>
        <tr>
          <td>.</td>
          <td>GitHub mirror</td>
          <td id="github">
            <a href="http://github.com/apache/incubator-quickstep">http://github.com/apache/incubator-quickstep</a>
          </td>
        </tr>
        <tr>
          <td>.</td>
          <td>Website content and docs</td>
          <td id="svn">
            <a href="https://svn.apache.org/repos/asf/incubator/quickstep">https://svn.apache.org/repos/asf/incubator/quickstep</a>
          </td>
        </tr>
        <tr>
          <td>Mentors</td>
          <td>cos</td>
          <td>Konstantin Boudnik</td>
        </tr>
        <tr>
          <td>.</td>
          <td>jhyde</td>
          <td>Julian Hyde</td>
        </tr>
        <tr>
          <td>.</td>
          <td>rvs</td>
          <td>Roman Shaposhnik</td>
        </tr>
        <tr>
          <td>Committers</td>
          <td>.</td>
          <td>Jignesh M. Patel</td>
        </tr>
        <tr>
          <td>.</td>
          <td>cos</td>
          <td>Konstantin Boudnik</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Harshad Deshmukh</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Jianqiao Zhu</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Zuyu Zhang</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Marc Spehlmann</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Saket Saurabh</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Hakan Memisoglu</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Rogers Jeffrey</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Leo John</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Adalbert Gerald</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Soosai Raj</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Udip Pant</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Siddharth Suresh</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Rathijit Sen</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Craig Chasseur</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Qiang Zeng</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Shoban Chandrabose</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Navneet Potti</td>
        </tr>
        <tr>
          <td>.</td>
          <td>.</td>
          <td>Yinan Li</td>
        </tr>
        <tr>
           <td>.</td>
           <td>.</td>
           <td>Sangmin Shin</td>
         </tr>
         <tr>
           <td>.</td>
           <td>.</td>
           <td>James Paton</td>
         </tr>
         <tr>
           <td>.</td>
           <td>.</td>
           <td>Shixuan Fan</td>
         </tr>
         <tr>
           <td>.</td>
           <td>rvs</td>
           <td>Roman Shaposhnik</td>
         </tr>
         <tr>
           <td>.</td>
           <td>jhyde</td>
           <td>Julian Hyde</td>
         </tr>
         <tr>
           <td>.</td>
           <td>dhruba</td>
           <td>Dhruba Borthakur</td>
         </tr>
      </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports</h2>
<div class="section-content">
<ul>
        <li><a href="http://wiki.apache.org/incubator/May2016">May 2016</a></li>
      </ul>
</div>
        <h2 id='Incubation+work+items'><img src="../images/redarrow.gif" />Incubation work items</h2>
<div class="section-content">
<h3 id='Project+Setup'>Project Setup</h3>
<div class="section-content">
<p>This is the first phase on incubation, needed to start the project at Apache.</p>
<p>
          <em>Item assignment is shown by the Apache id.</em>
          <em>Completed tasks are shown by the completion date (YYYY-MM-dd).</em>
        </p>
<h4 id='Identify+the+project+to+be+incubated'>Identify the project to be incubated</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2016-04-11</td>
              <td>Make sure that the requested project name does not already exist. <a href="http://www.apache.org/foundation/marks/naming.html">Please follow
                the guide to ensure a suitable project/product name.</a></td>
            </tr>
          </table>
</div>
<h4 id='Infrastructure'>Infrastructure</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2016-04-11</td>
              <td>Ask infrastructure to create source repository modules
                  and grant the committers karma. Tracking via <a href="https://issues.apache.org/jira/browse/INFRA-11645">INFRA-11645</a></td>
            </tr>
            <tr>
              <td>2015-04-11</td>
              <td>Ask infrastructure to set up and archive mailing lists.</td>
            </tr>
            <tr>
              <td>2015-04-11</td>
              <td>Ask infrastructure to set up issue tracker (JIRA).</td>
            </tr>
            <tr>
              <td>2015-04-11</td>
              <td>Ask infrastructure to set up wiki (Confluence).</td>
            </tr>
            <tr>
              <td>2015-04-11</td>
              <td>Ask infrastructure to set up svn pubsub website.</td>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>Migrate the project to our infrastructure.</td>
            </tr>
          </table>
</div>
<h4 id='Interim+responsibility'>Mentor-related responsibility/oversight</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2016-04-11</td>
              <td>Subscribe all Mentors on the pmc and general lists.</td>
            </tr>
            <tr>
              <td>2016-04-11</td>
              <td>Give all Mentors access to the incubator Git repository. 
                (to be done by the Incubator PMC chair or an Incubator PMC
                Member wih karma for the authorizations file)</td>
            </tr>
            <tr>
              <td>2016-04-11</td>
              <td>Tell Mentors to track progress in the file
                  'incubator/projects/quickstep.html'</td>
            </tr>
          </table>
</div>
<h4 id='Copyright'>Copyright</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2015-04-12</td>
              <td>Check and make sure that the papers that transfer rights to the ASF
                  been received. It is only necessary to transfer rights for the
                  package, the core code, and any new code produced by the project.
              </td>
            </tr>
            <tr>
              <td>2015-04-12</td>
              <td>Check and make sure that the files that have been donated have been
                  updated to reflect the new ASF copyright.</td>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>The Apache RAT check was added to check and make sure that the files that have been donated have been
                  updated to reflect the new ASF copyright.</td>
            </tr>
          </table>
</div>
<h4 id='Verify+distribution+rights'>Verify distribution rights</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2016-04-12</td>
              <td>Check and make sure that for all code included with the distribution
                  that is not under the Apache license, we have the right to combine
                  with Apache-licensed code and redistribute.
               </td>
            </tr>
            <tr>
              <td>2016-04-12</td>
              <td>Check and make sure that all source code distributed by the project
                  is covered by one or more of the following approved licenses: Apache,
                  BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially
                  the same terms.</td>
            </tr>
          </table>
</div>
<h4 id='Establish+a+list+of+active+committers'>Establish a list of active committers</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>Check that all active committers have submitted a contributors
                  agreement.</td>
            </tr>
            <tr>
              <td>2016-04-11</td>
              <td>Add all active committers in the podling description file.</td>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>Ask root for the creation of committers' accounts on
                  people.apache.org.</td>
            </tr>
          </table>
</div>
<h4 id='Project+specific'>Project specific</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>Produce first Apache Incubating release.</td>
            </tr>
          </table>
</div>
</div>
<h3 id='Incubation'>Incubation</h3>
<div class="section-content">
<p>These action items have to be checked for during the whole incubation process.</p>
<p>
          <em>These items are not to be signed as done during incubation, as they
              may change during incubation.</em>
          <em>They are to be looked into and described in the status reports and
              completed in the request for incubation signoff.</em>
        </p>
<h4 id='Collaborative+Development'>Collaborative Development</h4>
<div class="section-content">
<ul>
            <li>Have all of the active long-term volunteers been identified and
                acknowledged as committers on the project?
            </li>
            <li>Are there three or more independent committers? (The legal definition
                of independent is long and boring, but basically it means that there
                is no binding relationship between the individuals, such as a shared
                employer, that is capable of overriding their free will as
                individuals, directly or indirectly.)</li>
            <li>Are project decisions being made in public by the committers?</li>
            <li>Are the decision-making guidelines published and agreed to by all of
                the committers?</li>
          </ul>
</div>
<h4 id='Licensing+awareness'>Licensing awareness</h4>
<div class="section-content">
<ul>
            <li>Are all licensing, trademark, credit issues being taken care of and
                acknowleged by all committers?</li>
          </ul>
</div>
<h4 id='Project+Specific'>Project Specific</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>Figure out how to publish project documentation.</td>
            </tr>
          </table>
</div>
</div>
<h3 id='Exit'>Exit</h3>
<div class="section-content">
<p>
          <em>Things to check for before voting the project out.</em>
        </p>
<h4 id='Organizational+acceptance+of+responsibility+for+the+project'>Organizational acceptance of responsibility for the project</h4>
<div class="section-content">
<ul>
            <li>If graduating to an existing PMC, has the PMC voted to accept it?</li>
            <li>If graduating to a new PMC, has the board voted to accept it?</li>
          </ul>
</div>
<h4 id='Incubator+sign-off'>Incubator sign-off</h4>
<div class="section-content">
<ul>
            <li>Has the Incubator decided that the project has accomplished all of
                the above tasks?</li>
          </ul>
</div>
</div>
</div>
       </div>
   </div>
  
   <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span16 footer">
     Copyright &#169; 2009-2016 The Apache Software Foundation<br />
     Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
     Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
     
     
    </div>
  </div>
 </div> 
 </body>
</html>
