<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-07-09
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20150709" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Metadata and Governance - Team list</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

                          
        
<script type="text/javascript">$( document ).ready( function() { $( '.carousel' ).carousel( { interval: 3500 } ) } );</script>
          
            </head>
        <body class="topBarEnabled">
          
                        
                    
                

    <div id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
                                  <div class="container" style="width: 68%;"><div class="nav-collapse">
            
                
                                <ul class="nav">
                          <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Atlas <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="index.html"  title="About">About</a>
</li>
                  
                      <li>      <a href="https://cwiki.apache.org/confluence/display/ATLAS"  title="Wiki">Wiki</a>
</li>
                  
                      <li>      <a href="https://cwiki.apache.org/confluence/display/ATLAS"  title="News">News</a>
</li>
                  
                      <li>      <a href="https://git-wip-us.apache.org/repos/asf/incubator-atlas.git"  title="Git">Git</a>
</li>
                  
                      <li>      <a href="https://svn.apache.org/repos/asf/incubator/atlas"  title="Svn">Svn</a>
</li>
                  
                      <li>      <a href="https://issues.apache.org/jira/browse/ATLAS"  title="Jira">Jira</a>
</li>
                  
                      <li>      <a href="https://cwiki.apache.org/confluence/display/ATLAS/PoweredBy"  title="Powered by">Powered by</a>
</li>
                  
                      <li>      <a href="http://blogs.apache.org/atlas/"  title="Blog">Blog</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Information <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="project-info.html"  title="Summary">Summary</a>
</li>
                  
                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
</li>
                  
                      <li>      <a href="http://webchat.freenode.net?channels=apacheatlas&uio=d4"  title="IRC">IRC</a>
</li>
                  
                      <li>      <a href="team-list.html"  title="Team">Team</a>
</li>
                  
                      <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
</li>
                  
                      <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
</li>
                  
                      <li>      <a href="license.html"  title="License">License</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/incubator/atlas/0.5.0-incubating/"  title="0.5-incubating">0.5-incubating</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="0.5.0-incubating/index.html"  title="current">current</a>
</li>
                  
                      <li>      <a href="0.5.0-incubating/index.html"  title="0.5-incubating">0.5-incubating</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Resources <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="index.html"  title="Overview">Overview</a>
</li>
                  
                      <li>      <a href="QuickStart.html"  title="Getting Started">Getting Started</a>
</li>
                  
                      <li>      <a href="Architecture.html"  title="Architecture">Architecture</a>
</li>
                  
                      <li>      <a href="InstallationSteps.html"  title="Installation">Installation</a>
</li>
                  
                      <li>      <a href="TypeSystem.html"  title="Type System">Type System</a>
</li>
                  
                      <li>      <a href="Configuration.html"  title="Configuration">Configuration</a>
</li>
                  
                      <li>      <a href="Security.html"  title="Security">Security</a>
</li>
                  
                      <li>      <a href="api/rest.html"  title="Rest API">Rest API</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
</li>
                  
                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
</li>
                  
                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
</li>
                  
                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
</li>
                          </ul>
      </li>
                  </ul>
          
                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
    
  <input value="http://atlas.incubator.apache.org" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
                            
            
            
            
    <iframe src="http://www.facebook.com/plugins/like.php?href=http://atlas.incubator.apache.org/atlas-docs&send=false&layout=button_count&show-faces=false&action=like&colorscheme=dark"
        scrolling="no" frameborder="0"
        style="border:none; width:80px; height:20px; margin-top: 10px;"  class="pull-right" ></iframe>
                        
    <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>

        <ul class="nav pull-right"><li style="margin-top: 10px;">
    
    <div class="g-plusone" data-href="http://atlas.incubator.apache.org/atlas-docs" data-size="medium"  width="60px" align="right" ></div>

        </li></ul>
                              
                   
                      </div>
          
        </div>
      </div>
    </div>
    
        <div class="container">
          <div id="banner">
        <div class="pull-left">
                                                  <a href=".." id="bannerLeft">
                                                                                                <img src="images/atlas-logo.png"  alt="Apache Atlas" width="200px" height="45px"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://incubator.apache.org" id="bannerRight">
                                                                                                <img src="images/apache-incubator-logo.png"  alt="Apache Incubator"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="index.html" title="Atlas">
        Atlas</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Team list</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2015-07-09</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 0.6-incubating-SNAPSHOT</li>
            
                            </ul>
      </div>

      
                        
        <div id="bodyColumn" >
                                  
            <div class="section">
<h2>The Team<a name="The_Team"></a></h2><a name="The_Team"></a>
<p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p>
<p>The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p>
<div class="section">
<h3>Members<a name="Members"></a></h3><a name="Members"></a>
<p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p>
<table border="0" class="table table-striped">
<tr class="a">
<th>Id</th>
<th>Name</th>
<th>Email</th>
<th>Organization</th>
<th>Roles</th>
<th>Time Zone</th>
<th>Actual Time (GMT)</th></tr>
<tr class="b">
<td><a name="venkatesh"></a>venkatesh</td>
<td>Venkatesh Seetharam</td>
<td><a class="externalLink" href="mailto:venkatesh@apache.org">venkatesh@apache.org</a></td>
<td>Hortonworks Inc.</td>
<td>committer, PPMC</td>
<td>-8</td>
<td><span id="developer-0">-8</span></td></tr>
<tr class="a">
<td><a name="rhbutani"></a>rhbutani</td>
<td>Harish Butani</td>
<td><a class="externalLink" href="mailto:rhbutani@apache.org">rhbutani@apache.org</a></td>
<td>Hortonworks Inc.</td>
<td>committer, PPMC</td>
<td>-8</td>
<td><span id="developer-1">-8</span></td></tr>
<tr class="b">
<td><a name="shwethags"></a>shwethags</td>
<td>Shwetha GS</td>
<td><a class="externalLink" href="mailto:shwethags@apache.org">shwethags@apache.org</a></td>
<td>Hortonworks Inc.</td>
<td>committer, PPMC</td>
<td>+05:30</td>
<td><span id="developer-2">+05:30</span></td></tr>
<tr class="a">
<td><a name="jmaron"></a>jmaron</td>
<td>Jon Maron</td>
<td><a class="externalLink" href="mailto:jmaron@hortonworks.com">jmaron@hortonworks.com</a></td>
<td>Hortonworks Inc.</td>
<td>committer</td>
<td>-5</td>
<td><span id="developer-3">-5</span></td></tr>
<tr class="b">
<td><a name="AAhn"></a>AAhn</td>
<td>Andrew Ahn</td>
<td><a class="externalLink" href="mailto:aahn@hortonworks.com">aahn@hortonworks.com</a></td>
<td>Hortonworks Inc.</td>
<td>committer</td>
<td>-8</td>
<td><span id="developer-4">-8</span></td></tr>
<tr class="a">
<td><a name="dkaspar"></a>dkaspar</td>
<td>David Kaspar</td>
<td><a class="externalLink" href="mailto:dkaspar@merk.com">dkaspar@merk.com</a></td>
<td>Merck &amp; Co Inc.</td>
<td>committer</td>
<td>+1</td>
<td><span id="developer-5">+1</span></td></tr>
<tr class="b">
<td><a name="ilasek"></a>ilasek</td>
<td>Ivo Lasek</td>
<td><a class="externalLink" href="mailto:ilasek@merck.com">ilasek@merck.com</a></td>
<td>Merck &amp; Co Inc.</td>
<td>committer</td>
<td>+1</td>
<td><span id="developer-6">+1</span></td></tr>
<tr class="a">
<td><a name="dfusaro"></a>dfusaro</td>
<td>Dennis Fusaro</td>
<td><a class="externalLink" href="mailto:dfusaro@aetna.com">dfusaro@aetna.com</a></td>
<td>Aetna Inc.</td>
<td>committer</td>
<td>-5</td>
<td><span id="developer-7">-5</span></td></tr>
<tr class="b">
<td><a name="chyzer"></a>chyzer</td>
<td>Chris Hyzer</td>
<td><a class="externalLink" href="mailto:chyzer@aetna.com">chyzer@aetna.com</a></td>
<td>Aetna Inc.</td>
<td>committer</td>
<td>-5</td>
<td><span id="developer-8">-5</span></td></tr>
<tr class="a">
<td><a name="dmarkwat"></a>dmarkwat</td>
<td>Daniel Markwat</td>
<td><a class="externalLink" href="mailto:dmarkwat@aetna.com">dmarkwat@aetna.com</a></td>
<td>Aetna Inc.</td>
<td>committer</td>
<td>-5</td>
<td><span id="developer-9">-5</span></td></tr>
<tr class="b">
<td><a name="gsenia"></a>gsenia</td>
<td>Greg Senia</td>
<td><a class="externalLink" href="mailto:gsenia@aetna.com">gsenia@aetna.com</a></td>
<td>Aetna Inc.</td>
<td>committer</td>
<td>-5</td>
<td><span id="developer-10">-5</span></td></tr>
<tr class="a">
<td><a name="james"></a>james</td>
<td>James Vollmer</td>
<td><a class="externalLink" href="mailto:james@target.com">james@target.com</a></td>
<td>Target Inc.</td>
<td>committer</td>
<td>-6</td>
<td><span id="developer-11">-6</span></td></tr>
<tr class="b">
<td><a name="adossett"></a>adossett</td>
<td>Aaron Dossett</td>
<td><a class="externalLink" href="mailto:adossett@target.com">adossett@target.com</a></td>
<td>Target Inc.</td>
<td>committer</td>
<td>-6</td>
<td><span id="developer-12">-6</span></td></tr>
<tr class="a">
<td><a name="mschussler"></a>mschussler</td>
<td>Mitch Schussler</td>
<td><a class="externalLink" href="mailto:mschussler@apache.org">mschussler@apache.org</a></td>
<td>JPMC</td>
<td>committer</td>
<td>-5</td>
<td><span id="developer-13">-5</span></td></tr>
<tr class="b">
<td><a name="vavasarala"></a>vavasarala</td>
<td>Viswanath Avasarala</td>
<td><a class="externalLink" href="mailto:vavasarala@slb.com">vavasarala@slb.com</a></td>
<td>Schlumberger Inc.</td>
<td>committer</td>
<td>-6</td>
<td><span id="developer-14">-6</span></td></tr>
<tr class="a">
<td><a name="avarma"></a>avarma</td>
<td>Anil Varma</td>
<td><a class="externalLink" href="mailto:avarma@slb.com">avarma@slb.com</a></td>
<td>Schlumberger Inc.</td>
<td>committer</td>
<td>-6</td>
<td><span id="developer-15">-6</span></td></tr>
<tr class="b">
<td><a name="bstortz"></a>bstortz</td>
<td>Barbara Stortz</td>
<td>bstortz@sap</td>
<td>SAP Inc.</td>
<td>committer</td>
<td>-8</td>
<td><span id="developer-16">-8</span></td></tr>
<tr class="a">
<td><a name="sriksun"></a>sriksun</td>
<td>Srikanth Sundarrajan</td>
<td><a class="externalLink" href="mailto:sriksun@apache.org">sriksun@apache.org</a></td>
<td>InMobi</td>
<td>committer, PPMC</td>
<td>+05:30</td>
<td><span id="developer-17">+05:30</span></td></tr>
<tr class="b">
<td><a name="ssuresh"></a>ssuresh</td>
<td>Suresh Srinivas</td>
<td><a class="externalLink" href="mailto:ssuresh@apache.org">ssuresh@apache.org</a></td>
<td>Hortonworks Inc.</td>
<td>committer</td>
<td>-8</td>
<td><span id="developer-18">-8</span></td></tr>
<tr class="a">
<td><a name="vranganathan"></a>vranganathan</td>
<td>Venkat Ranganathan</td>
<td><a class="externalLink" href="mailto:vranganathan@apache.org">vranganathan@apache.org</a></td>
<td>Hortonworks Inc.</td>
<td>committer</td>
<td>-8</td>
<td><span id="developer-19">-8</span></td></tr></table></div>
<div class="section">
<h3>Contributors<a name="Contributors"></a></h3><a name="Contributors"></a>
<p>There are no contributors listed for this project. Please check back again later.</p><script type="text/javascript">
function offsetDate(id, offset) {
    var now = new Date();
    var nowTime = now.getTime();
    var localOffset = now.getTimezoneOffset();
    var developerTime = nowTime + ( offset * 60 * 60 * 1000 )+ ( localOffset * 60 * 1000 );
    var developerDate = new Date(developerTime);

    document.getElementById(id).innerHTML = developerDate;
}

function init(){
    offsetDate('developer-0', '-8');
    offsetDate('developer-1', '-8');
    offsetDate('developer-2', '0');
    offsetDate('developer-3', '-5');
    offsetDate('developer-4', '-8');
    offsetDate('developer-5', '+1');
    offsetDate('developer-6', '+1');
    offsetDate('developer-7', '-5');
    offsetDate('developer-8', '-5');
    offsetDate('developer-9', '-5');
    offsetDate('developer-10', '-5');
    offsetDate('developer-11', '-6');
    offsetDate('developer-12', '-6');
    offsetDate('developer-13', '-5');
    offsetDate('developer-14', '-6');
    offsetDate('developer-15', '-6');
    offsetDate('developer-16', '-8');
    offsetDate('developer-17', '0');
    offsetDate('developer-18', '-8');
    offsetDate('developer-19', '-8');
}

window.onLoad = init();
</script></div></div>
                  </div>
          </div>

    <hr/>

    <footer>
            <div class="container">
              <div class="row span12">Copyright &copy;                    2015
                        <a href="http://www.apache.org">Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

                          
                <p id="poweredBy" class="pull-right">
                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
              </p>
        
                </div>
    </footer>
  </body>
</html>
