<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.6 at 2016-09-12 
 | Rendered using Apache Maven Fluido Skin 1.5
-->
<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="20160912" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Shiro :: Web &#x2013; Team list</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.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.5.min.js"></script>

                      </head>
        <body class="topBarDisabled">
          
        
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                                  <a href=".." id="bannerLeft">
                                                                                                <img src="../images/apache-shiro-logo.png"  alt="Shiro"/>
                </a>
                      </div>
        <div class="pull-right">              <div id="bannerRight">
                                                                                                <img src="../images/asf_logo.png" />
                </div>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
              
                              <li class="">
                    <a href="../index.html" title="Apache Shiro">
        Apache Shiro</a>
                    <span class="divider">/</span>
      </li>
                <li class="">
                    <a href="./" title="Apache Shiro :: Web">
        Apache Shiro :: Web</a>
                    <span class="divider">/</span>
      </li>
        <li class="active ">Team list</li>
        
              
                  <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2016-09-12</li>
              <li id="projectVersion" class="pull-right">
                    Version: 1.3.2
        </li>
            
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
              
                <ul class="nav nav-list">
                    <li class="nav-header">Parent Project</li>
                              
      <li>
  
                          <a href="../index.html" title="Apache Shiro">
          <span class="none"></span>
        Apache Shiro</a>
            </li>
                                        <li class="nav-header">Project Documentation</li>
                                                                                                                                                                                                                                                                                                
      <li>
  
                          <a href="project-info.html" title="Project Information">
          <span class="icon-chevron-down"></span>
        Project Information</a>
                    <ul class="nav nav-list">
                    
      <li>
  
                          <a href="index.html" title="About">
          <span class="none"></span>
        About</a>
            </li>
                    
      <li>
  
                          <a href="source-repository.html" title="Source Repository">
          <span class="none"></span>
        Source Repository</a>
            </li>
                    
      <li>
  
                          <a href="plugin-management.html" title="Plugin Management">
          <span class="none"></span>
        Plugin Management</a>
            </li>
                    
      <li>
  
                          <a href="mail-lists.html" title="Mailing Lists">
          <span class="none"></span>
        Mailing Lists</a>
            </li>
                    
      <li>
  
                          <a href="issue-tracking.html" title="Issue Tracking">
          <span class="none"></span>
        Issue Tracking</a>
            </li>
                    
      <li>
  
                          <a href="plugins.html" title="Project Plugins">
          <span class="none"></span>
        Project Plugins</a>
            </li>
                    
      <li>
  
                          <a href="project-summary.html" title="Project Summary">
          <span class="none"></span>
        Project Summary</a>
            </li>
                    
      <li>
  
                          <a href="dependency-management.html" title="Dependency Management">
          <span class="none"></span>
        Dependency Management</a>
            </li>
                    
      <li>
  
                          <a href="dependencies.html" title="Dependencies">
          <span class="none"></span>
        Dependencies</a>
            </li>
                    
      <li>
  
                          <a href="license.html" title="Project License">
          <span class="none"></span>
        Project License</a>
            </li>
                    
      <li class="active">
  
            <a href="#"><span class="none"></span>Project Team</a>
          </li>
                    
      <li>
  
                          <a href="integration.html" title="Continuous Integration">
          <span class="none"></span>
        Continuous Integration</a>
            </li>
              </ul>
        </li>
                                                                                                                                                                              
      <li>
  
                          <a href="project-reports.html" title="Project Reports">
          <span class="icon-chevron-right"></span>
        Project Reports</a>
                  </li>
            </ul>
              
                
          <hr />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <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>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span10" >
                                  
            <div class="section">
<h2><a name="The_Team"></a>The Team</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><a name="Members"></a>Members</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>URL</th>
<th>Organization</th>
<th>Organization URL</th>
<th>Time Zone</th>
<th>Actual Time (GMT)</th></tr>
<tr class="b">
<td><a name="aditzel"></a>aditzel</td>
<td>Allan Ditzel</td>
<td><a class="externalLink" href="mailto:aditzel@apache.org">aditzel@apache.org</a></td>
<td><a class="externalLink" href="http://www.allanditzel.com">http://www.allanditzel.com</a></td>
<td>Apache Software Foundation</td>
<td>-</td>
<td>-5</td>
<td><span id="developer-0">-5</span></td></tr>
<tr class="a">
<td><a name="jhaile"></a>jhaile</td>
<td>Jeremy Haile</td>
<td><a class="externalLink" href="mailto:jhaile@apache.org">jhaile@apache.org</a></td>
<td><a class="externalLink" href="http://www.jeremyhaile.com">http://www.jeremyhaile.com</a></td>
<td>Mobilization Labs</td>
<td><a class="externalLink" href="http://www.mobilizationlabs.com">http://www.mobilizationlabs.com</a></td>
<td>-5</td>
<td><span id="developer-1">-5</span></td></tr>
<tr class="b">
<td><a name="lhazlewood"></a>lhazlewood</td>
<td>Les Hazlewood</td>
<td><a class="externalLink" href="mailto:lhazlewood@apache.org">lhazlewood@apache.org</a></td>
<td><a class="externalLink" href="http://www.leshazlewood.com">http://www.leshazlewood.com</a></td>
<td>Katasoft</td>
<td><a class="externalLink" href="http://www.katasoft.com">http://www.katasoft.com</a></td>
<td>-8</td>
<td><span id="developer-2">-8</span></td></tr>
<tr class="a">
<td><a name="kaosko"></a>kaosko</td>
<td>Kalle Korhonen</td>
<td>kaosko@apache.org</td>
<td><a class="externalLink" href="http://tynamo.org">http://tynamo.org</a></td>
<td>Apache Software Foundation</td>
<td>-</td>
<td>-8</td>
<td><span id="developer-3">-8</span></td></tr>
<tr class="b">
<td><a name="pledbrook"></a>pledbrook</td>
<td>Peter Ledbrook</td>
<td><a class="externalLink" href="mailto:p.ledbrook@cacoethes.co.uk">p.ledbrook@cacoethes.co.uk</a></td>
<td><a class="externalLink" href="http://www.cacoethes.co.uk/blog/">http://www.cacoethes.co.uk/blog/</a></td>
<td>SpringSource</td>
<td><a class="externalLink" href="http://www.springsource.com/">http://www.springsource.com/</a></td>
<td>0</td>
<td><span id="developer-4">0</span></td></tr>
<tr class="a">
<td><a name="tveil"></a>tveil</td>
<td>Tim Veil</td>
<td><a class="externalLink" href="mailto:tveil@apache.org">tveil@apache.org</a></td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td><span id="developer-5">-</span></td></tr>
<tr class="b">
<td><a name="bdemers"></a>bdemers</td>
<td>Brian Demers</td>
<td><a class="externalLink" href="mailto:bdemers@apache.org">bdemers@apache.org</a></td>
<td><a class="externalLink" href="http://about.me/brian.demers">http://about.me/brian.demers</a></td>
<td>Sonatype</td>
<td><a class="externalLink" href="http://www.sonatype.com/">http://www.sonatype.com/</a></td>
<td>-5</td>
<td><span id="developer-6">-5</span></td></tr>
<tr class="a">
<td><a name="jbunting"></a>jbunting</td>
<td>Jared Bunting</td>
<td><a class="externalLink" href="mailto:jbunting@apache.org">jbunting@apache.org</a></td>
<td>-</td>
<td>Apache Software Foundation</td>
<td>-</td>
<td>-6</td>
<td><span id="developer-7">-6</span></td></tr></table></div>
<div class="section">
<h3><a name="Contributors"></a>Contributors</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', '-5');
    offsetDate('developer-1', '-5');
    offsetDate('developer-2', '-8');
    offsetDate('developer-3', '-8');
    offsetDate('developer-4', '0');
    offsetDate('developer-6', '-5');
    offsetDate('developer-7', '-6');
}

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

    <hr/>

    <footer>
            <div class="container-fluid">
                      <div class="row-fluid">
                                      <p >Copyright &copy;                    2004&#x2013;2016
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All rights reserved.    
      </p>
                </div>

        
                </div>
    </footer>
        </body>
</html>
