<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Wink - Team list</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
                                                        
<link href="images/favicon.ico" rel="shortcut icon"/>
                                                        
<style type="text/css" media="all">@import
				url(css/site.css);</style>
                    </head>
  <body class="composite">
    <div id="banner">
                  <a href="http://incubator.apache.org/wink/" id="bannerLeft">
    
                                            <img src="images/apache-incubator-wink-white.PNG" alt="" />
    
            </a>
                        <a href="http://incubator.apache.org" id="bannerRight">
    
                                    <img src="http://incubator.apache.org/images/apache-incubator-logo.png" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
            
  
    
            <div class="xleft">
        Last Published: 22-07-09 22:40
                  &nbsp;| Version: 0.1-SNAPSHOT
                          |   
          wink
                        </div>
            <div class="xright">            <a href="">Repository</a>
            |
                <a href="http://svn.apache.org/viewvc/incubator/wink/" class="externalLink">SVN</a>
            |
                <a href="http://cwiki.apache.org/confluence/display/WINK/Index" class="externalLink">Wiki</a>
            |
                <a href="https://issues.apache.org/jira/browse/WINK" class="externalLink">Jira</a>
            
  

  
    
            
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
            
  
    
                   <h5>Main</h5>
            <ul>
              
    <li class="none">
                    <a href="index.html">Introduction</a>
          </li>
              
    <li class="none">
                    <a href="downloads.html">Downloads</a>
          </li>
              
    <li class="none">
                    <a href="documentation.html">Documentation</a>
          </li>
              
    <li class="none">
                    <a href="community.html">Community</a>
          </li>
              
    <li class="none">
                    <a href="faqs.html">FAQ</a>
          </li>
          </ul>
              <h5>Project Documentation</h5>
            <ul>
              
                
              
      
            
      
            
      
            
            
            
      
              
            <li class="expanded">
                    <a href="project-info.html">Project Information</a>
                  <ul>
                  
    <li class="none">
                    <a href="issue-tracking.html">Issue Tracking</a>
          </li>
                  
    <li class="none">
                    <a href="mail-lists.html">Mailing Lists</a>
          </li>
                  
    <li class="none">
                    <a href="license.html">Project License</a>
          </li>
                  
    <li class="none">
              <strong>Project Team</strong>
        </li>
                  
    <li class="none">
                    <a href="source-repository.html">Source Repository</a>
          </li>
              </ul>
        </li>
          </ul>
                                                 
                        
                        
            <a href="" title="" class="poweredBy">
                            <img alt="" src="images/white.jpg" />
            </a>
                               
  

  
    
            
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>The Team</h2>
<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</h3>
<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 class="bodyTable"><tr class="a"><th>Id</th>
<th>Name</th>
<th>Organization</th>
<th>Roles</th>
</tr>
<tr class="b"><td><a name="dims"></a>dims</td>
<td>Davanum Srinivas</td>
<td>-</td>
<td>mentor, committer</td>
</tr>
<tr class="a"><td><a name="kevan"></a>kevan</td>
<td>Kevan Miller</td>
<td>-</td>
<td>mentor</td>
</tr>
<tr class="b"><td><a name="stevel"></a>stevel</td>
<td>Steve Loughran</td>
<td>-</td>
<td>mentor</td>
</tr>
<tr class="a"><td><a name="bluk"></a>bluk</td>
<td>Bryant Luk</td>
<td>IBM</td>
<td>committer</td>
</tr>
<tr class="b"><td><a name="cjblythe"></a>cjblythe</td>
<td>Christopher James Blythe</td>
<td>-</td>
<td>committer</td>
</tr>
<tr class="a"><td><a name="damrhei"></a>damrhei</td>
<td>Dustin Amrhein</td>
<td>-</td>
<td>committer</td>
</tr>
<tr class="b"><td><a name="elib"></a>elib</td>
<td>Eli Baram</td>
<td>HP</td>
<td>committer</td>
</tr>
<tr class="a"><td><a name="elman"></a>elman</td>
<td>Elman Michael</td>
<td>HP</td>
<td>committer</td>
</tr>
<tr class="b"><td><a name="jdillon"></a>jdillon</td>
<td>Jason Dillon</td>
<td>-</td>
<td>committer</td>
</tr>
<tr class="a"><td><a name="jramos"></a>jramos</td>
<td>Jesse A. Ramos</td>
<td>-</td>
<td>committer</td>
</tr>
<tr class="b"><td><a name="martins"></a>martins</td>
<td>Martin Snitkovsky</td>
<td>HP</td>
<td>committer</td>
</tr>
<tr class="a"><td><a name="nfischer"></a>nfischer</td>
<td>Nadav Fischer</td>
<td>HP</td>
<td>committer</td>
</tr>
<tr class="b"><td><a name="ngallardo"></a>ngallardo</td>
<td>Nicholas L. Gallardo</td>
<td>IBM</td>
<td>committer</td>
</tr>
<tr class="a"><td><a name="tomershadi"></a>tomershadi</td>
<td>Tomer Shadi</td>
<td>HP</td>
<td>committer</td>
</tr>
</table>
</div>
<div class="section"><h3>Contributors</h3>
<p>There are no contributors listed for this project. Please check back again later.</p>
</div>
</div>
<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(){
}

window.onLoad = init();
</script>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2009
    
          The Apache Software Foundation
          
  

  
    
            
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
