<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at May 27, 2013
 | 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="20130527" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva Documentation - 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>

    
              <!-- Google Analytics -->
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-140879-5']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
    </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                                  <a href="../../" id="bannerLeft">
                                                                                                <img src="../../images/archiva.png"  alt="Apache Archiva"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
                </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="./" title="Apache Archiva">
        Apache Archiva</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../index.html" title="Apache Archiva">
        Apache Archiva</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Team list</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2013-05-27</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 1.4-M4</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">Introduction</li>
                                
      <li>
    
                          <a href="quick-start.html" title="Quick Start">
          <i class="none"></i>
        Quick Start</a>
            </li>
                  
      <li>
    
                          <a href="tour/index.html" title="Feature Tour">
          <i class="none"></i>
        Feature Tour</a>
            </li>
                  
      <li>
    
                          <a href="release-notes.html" title="Release Notes">
          <i class="none"></i>
        Release Notes</a>
            </li>
                  
      <li>
    
                          <a href="../../download.html" title="Downloads">
          <i class="none"></i>
        Downloads</a>
            </li>
                              <li class="nav-header">Users Guide</li>
                                
      <li>
    
                          <a href="userguide/browsing.html" title="Browsing">
          <i class="none"></i>
        Browsing</a>
            </li>
                  
      <li>
    
                          <a href="userguide/searching.html" title="Searching">
          <i class="none"></i>
        Searching</a>
            </li>
                  
      <li>
    
                          <a href="userguide/delete-artifact.html" title="Deleting an Artifact">
          <i class="none"></i>
        Deleting an Artifact</a>
            </li>
                  
      <li>
    
                          <a href="userguide/using-repository.html" title="Using as a repository">
          <i class="none"></i>
        Using as a repository</a>
            </li>
                  
      <li>
    
                          <a href="userguide/deploy.html" title="Deploying to repository">
          <i class="none"></i>
        Deploying to repository</a>
            </li>
                  
      <li>
    
                          <a href="userguide/virtual-repositories.html" title="Configuring Virtual Repositories">
          <i class="none"></i>
        Configuring Virtual Repositories</a>
            </li>
                  
      <li>
    
                          <a href="userguide/rss.html" title="Rss Feeds in Archiva">
          <i class="none"></i>
        Rss Feeds in Archiva</a>
            </li>
                              <li class="nav-header">Administrators Guide</li>
                                                                                                                      
      <li>
    
                          <a href="adminguide/installing.html" title="Installing Archiva">
          <i class="icon-chevron-right"></i>
        Installing Archiva</a>
                  </li>
                  
      <li>
    
                          <a href="adminguide/databases.html" title="Databases">
          <i class="none"></i>
        Databases</a>
            </li>
                  
      <li>
    
                          <a href="adminguide/repositories-content-storage.html" title="Repositories Content Storage">
          <i class="none"></i>
        Repositories Content Storage</a>
            </li>
                                                                                                        
      <li>
    
                          <a href="adminguide/security.html" title="Security">
          <i class="icon-chevron-right"></i>
        Security</a>
                  </li>
                                                                                                                                                                                                                                                                          
      <li>
    
                          <a href="adminguide/configuration.html" title="Archiva Configuration">
          <i class="icon-chevron-right"></i>
        Archiva Configuration</a>
                  </li>
                  
      <li>
    
                          <a href="adminguide/webservices/rest.html" title="REST Apis">
          <i class="none"></i>
        REST Apis</a>
            </li>
                  
      <li>
    
                          <a href="adminguide/configuration-files.html" title="Configuration Files">
          <i class="none"></i>
        Configuration Files</a>
            </li>
                  
      <li>
    
                          <a href="adminguide/system-status.html" title="System Status">
          <i class="none"></i>
        System Status</a>
            </li>
                                                                                                        
      <li>
    
                          <a href="adminguide/logging.html" title="Log Files">
          <i class="icon-chevron-right"></i>
        Log Files</a>
                  </li>
                  
      <li>
    
                          <a href="adminguide/reports.html" title="Reports">
          <i class="none"></i>
        Reports</a>
            </li>
                              <li class="nav-header">Customising Archiva</li>
                                
      <li>
    
                          <a href="customising/writing-consumer.html" title="Writing a Consumer Plugin">
          <i class="none"></i>
        Writing a Consumer Plugin</a>
            </li>
                              <li class="nav-header">More Information</li>
                                
      <li>
    
                          <a href="http://cwiki.apache.org/confluence/display/ARCHIVA/Index" class="externalLink" title="Archiva Wiki">
          <i class="none"></i>
        Archiva Wiki</a>
            </li>
                              <li class="nav-header">ASF</li>
                                
      <li>
    
                          <a href="http://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works">
          <i class="none"></i>
        How Apache Works</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/" class="externalLink" title="Foundation">
          <i class="none"></i>
        Foundation</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache">
          <i class="none"></i>
        Sponsoring Apache</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                              <li class="nav-header">Project Documentation</li>
                                                                                                              
      <li>
    
                          <a href="project-info.html" title="Project Information">
          <i class="icon-chevron-down"></i>
        Project Information</a>
                    <ul class="nav nav-list">
                      
      <li>
    
                          <a href="license.html" title="Project License">
          <i class="none"></i>
        Project License</a>
            </li>
                      
      <li class="active">
    
            <a href="#"><i class="none"></i>Project Team</a>
          </li>
              </ul>
        </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="http://archiva.apache.org/docs/1.4-M4/" 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>
          
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
               
        
        
        <div id="twitter">
    
    <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="left" data-size="medium" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

        </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>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>Image</th><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><img src="http://www.gravatar.com/avatar/a49e2c09c4c36374c40e6cb819157eda?d=mm&amp;s=60" alt="" /></td><td><a name="oching"></a>oching</td><td>Maria Odea B. Ching</td><td><a class="externalLink" href="mailto:oching@apache.org">oching@apache.org</a></td><td>-</td><td>PMC Chair</td><td>+8</td><td><span id="developer-0">+8</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/1db61ec29963d4a77ef2275140144fd4?d=mm&amp;s=60" alt="" /></td><td><a name="brett"></a>brett</td><td>Brett Porter</td><td><a class="externalLink" href="mailto:brett@apache.org">brett@apache.org</a></td><td>ASF</td><td>PMC Member</td><td>+10</td><td><span id="developer-1">+10</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/6559d4b2de15cb1433fc13c34599e4c7?d=mm&amp;s=60" alt="" /></td><td><a name="carlos"></a>carlos</td><td>Carlos Sanchez</td><td><a class="externalLink" href="mailto:carlos@apache.org">carlos@apache.org</a></td><td>ASF</td><td>PMC Member</td><td>+1</td><td><span id="developer-2">+1</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/89d1772a8f19085482a13decc709cda2?d=mm&amp;s=60" alt="" /></td><td><a name="epunzalan"></a>epunzalan</td><td>Edwin Punzalan</td><td><a class="externalLink" href="mailto:epunzalan@apache.org">epunzalan@apache.org</a></td><td>-</td><td>PMC Member</td><td>-8</td><td><span id="developer-3">-8</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/3fe23ff82e7920b5941e18515adf9bba?d=mm&amp;s=60" alt="" /></td><td><a name="nicolas"></a>nicolas</td><td>Nicolas De Loof</td><td><a class="externalLink" href="mailto:nicolas@apache.org">nicolas@apache.org</a></td><td>-</td><td>PMC Member</td><td>+1</td><td><span id="developer-4">+1</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/bab29f762bea8e578505424443d8cd41?d=mm&amp;s=60" alt="" /></td><td><a name="olamy"></a>olamy</td><td>Olivier Lamy</td><td><a class="externalLink" href="mailto:olamy@apache.org">olamy@apache.org</a></td><td>Talend</td><td>PMC Member</td><td>Australia/Melbourne</td><td><span id="developer-5">Australia/Melbourne</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/c8686cad245196c9e392201ad7bb364f?d=mm&amp;s=60" alt="" /></td><td><a name="dennisl"></a>dennisl</td><td>Dennis Lundberg</td><td><a class="externalLink" href="mailto:dennisl@apache.org">dennisl@apache.org</a></td><td>ASF</td><td>Committer</td><td>+1</td><td><span id="developer-6">+1</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/76f1823568e5f31931bd32415a4cffa7?d=mm&amp;s=60" alt="" /></td><td><a name="martinc"></a>martinc</td><td>Martin Cooper</td><td><a class="externalLink" href="mailto:martinc@apache.org">martinc@apache.org</a></td><td>ASF</td><td>Committer</td><td>-</td><td><span id="developer-7">-</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/07a0055c4259569aff19ee558ee3999d?d=mm&amp;s=60" alt="" /></td><td><a name="mbaclay"></a>mbaclay</td><td>Marecor M. Baclay</td><td><a class="externalLink" href="mailto:mbaclay@apache.org">mbaclay@apache.org</a></td><td>-</td><td>Committer</td><td>+8</td><td><span id="developer-8">+8</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/026acc6fb60c44ed137de35517837065?d=mm&amp;s=60" alt="" /></td><td><a name="jzurbano"></a>jzurbano</td><td>Jevica Arianne B. Zurbano</td><td><a class="externalLink" href="mailto:jzurbano@apache.org">jzurbano@apache.org</a></td><td>-</td><td>Committer</td><td>+8</td><td><span id="developer-9">+8</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/27790393b874159fe05609ca7ed812f9?d=mm&amp;s=60" alt="" /></td><td><a name="jbonofre"></a>jbonofre</td><td>Jean-Baptiste Onofr&#xe9;</td><td><a class="externalLink" href="mailto:jbonofre@apache.org">jbonofre@apache.org</a></td><td>Talend</td><td>Committer</td><td>+1</td><td><span id="developer-10">+1</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/030e414fc478d45703ba0cbf6fa431f9?d=mm&amp;s=60" alt="" /></td><td><a name="skygo"></a>skygo</td><td>Eric Barboni</td><td><a class="externalLink" href="mailto:skygo@apache.org">skygo@apache.org</a></td><td>ASF</td><td>Committer</td><td>+1</td><td><span id="developer-11">+1</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/aeb4e8e65a6c91233e1a9128d8989093?d=mm&amp;s=60" alt="" /></td><td><a name="alecharp"></a>alecharp</td><td>Adrien Lecharpentier</td><td><a class="externalLink" href="mailto:alecharp@apache.org">alecharp@apache.org</a></td><td>Zenika</td><td>Committer</td><td>+1</td><td><span id="developer-12">+1</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/38f7796e51a469f8efc08de2d88fa335?d=mm&amp;s=60" alt="" /></td><td><a name="joakime"></a>joakime</td><td>Joakim Erdfelt</td><td><a class="externalLink" href="mailto:joakime@apache.org">joakime@apache.org</a></td><td>ASF</td><td>Emeritus</td><td>-5</td><td><span id="developer-13">-5</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="jvanzyl"></a>jvanzyl</td><td>Jason van Zyl</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-14">-</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="bayard"></a>bayard</td><td>Henri Yandell</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-15">-</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="kenney"></a>kenney</td><td>Kenney Westerhof</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-16">-</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="aheritier"></a>aheritier</td><td>Arnaud Heritier</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-17">-</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="bellingard"></a>bellingard</td><td>Fabrice Bellingard</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-18">-</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="jdumay"></a>jdumay</td><td>James William Dumay</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-19">-</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="jmcconnell"></a>jmcconnell</td><td>Jesse McConnell</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-20">-</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/efe7252f3b18253bf4318062ece95a3b?d=mm&amp;s=60" alt="" /></td><td><a name="evenisse"></a>evenisse</td><td>Emmanuel Venisse</td><td><a class="externalLink" href="mailto:evenisse@apache.org">evenisse@apache.org</a></td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-21">-</span></td></tr><tr class="b"><td><img src="http://www.gravatar.com/avatar/b38a3be83226b10b399985496c058e4c?d=mm&amp;s=60" alt="" /></td><td><a name="jtolentino"></a>jtolentino</td><td>Ernesto Tolentino Jr.</td><td><a class="externalLink" href="mailto:jtolentino@apache.org">jtolentino@apache.org</a></td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-22">-</span></td></tr><tr class="a"><td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td><td><a name="wsmoak"></a>wsmoak</td><td>Wendy Smoak</td><td>-</td><td>-</td><td>Emeritus</td><td>-</td><td><span id="developer-23">-</span></td></tr></table></div><div class="section"><h3>Contributors<a name="Contributors"></a></h3><a name="Contributors"></a><p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p><table border="0" class="table table-striped"><tr class="a"><th>Name</th></tr><tr class="b"><td>Steffen Grunwald</td></tr><tr class="a"><td>Stefan Prange</td></tr><tr class="b"><td>John Michael Luy</td></tr><tr class="a"><td>Martin H&#xf6;ller</td></tr><tr class="b"><td>Stephen Gargan</td></tr><tr class="a"><td>Dario Oliveros</td></tr><tr class="b"><td>james ahlborn</td></tr><tr class="a"><td>Jim Jackson</td></tr><tr class="b"><td>Daniel Harvey</td></tr><tr class="a"><td>Aleksandr Tarutin</td></tr><tr class="b"><td>Teodoro Cue Jr.</td></tr><tr class="a"><td>Jan Ancajas</td></tr><tr class="b"><td>Jens M&#xfc;hlenhoff</td></tr><tr class="a"><td>Dawn Angelito</td></tr><tr class="b"><td>Henry Isidro</td></tr><tr class="a"><td>Antoine Veret</td></tr><tr class="b"><td>Christian Gruber</td></tr><tr class="a"><td>Allan Ramirez</td></tr><tr class="b"><td>Pete Marvin King</td></tr><tr class="a"><td>Joel Sudiacal</td></tr><tr class="b"><td>Milos Kleint</td></tr><tr class="a"><td>Nick Gonzalez</td></tr><tr class="b"><td>Maria Catherine Tan</td></tr><tr class="a"><td>Dan Tran</td></tr><tr class="b"><td>Gwen Harold Autencio</td></tr><tr class="a"><td>Mark Jeffery</td></tr><tr class="b"><td>Fabrice Daugan</td></tr><tr class="a"><td>Doron Solomon</td></tr><tr class="b"><td>Michal Stochmialek</td></tr><tr class="a"><td>Julien Henry</td></tr><tr class="b"><td>Andreas Baumann</td></tr><tr class="a"><td>Adelita L. Padilla</td></tr><tr class="b"><td>Daniel Triphaus</td></tr><tr class="a"><td>Patti Arachchige Eshan Sudharaka</td></tr><tr class="b"><td>Shinsuke Sugaya</td></tr><tr class="a"><td>Marcus Dimand</td></tr><tr class="b"><td>Catalino Pineda Jr.</td></tr><tr class="a"><td>Warner Pinero</td></tr><tr class="b"><td>Dave Brosius</td></tr><tr class="a"><td>Jim Sellers</td></tr><tr class="b"><td>Igor Galic</td></tr><tr class="a"><td>Mark Struberg</td></tr><tr class="b"><td>Marc Jansen Tan Chua</td></tr><tr class="a"><td>Lucien Weller</td></tr><tr class="b"><td>Greg Michael Meneses</td></tr><tr class="a"><td>Chris Graham</td></tr><tr class="b"><td>Fredrik Jonson</td></tr><tr class="a"><td>Lester Ecarma</td></tr><tr class="b"><td>Eirik Bj&#xf8;rsn&#xf8;s</td></tr><tr class="a"><td>Jan Ancajas</td></tr><tr class="b"><td>Damien Blugeon</td></tr><tr class="a"><td>John Michael Luy</td></tr><tr class="b"><td>Wolfgang Strunk</td></tr><tr class="a"><td>Jevica Arianne B. Zurbano</td></tr><tr class="b"><td>Stefan Prange</td></tr><tr class="a"><td>Napoleon Esmundo C. Ramirez</td></tr><tr class="b"><td>Brent Atkinson</td></tr><tr class="a"><td>Antoine ROUAZE</td></tr></table><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', '+10');
    offsetDate('developer-2', '+1');
    offsetDate('developer-3', '-8');
    offsetDate('developer-4', '+1');
    offsetDate('developer-5', '10');
    offsetDate('developer-6', '+1');
    offsetDate('developer-8', '+8');
    offsetDate('developer-9', '+8');
    offsetDate('developer-10', '+1');
    offsetDate('developer-11', '+1');
    offsetDate('developer-12', '+1');
    offsetDate('developer-13', '-5');
}

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

    <hr/>

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

                                                                  <?xml version="1.0" encoding="UTF-8"?>
<div class="row span12">Apache Archiva :: Documentation, Archiva :: Documentation, Apache, the Apache feather logo, and the Apache Archiva :: Documentation project logos are trademarks of The Apache Software Foundation.</div>
                                                          <?xml version="1.0" encoding="UTF-8"?>
<div class="row span12">
  <a href="http://archiva.apache.org/docs/1.4-M4/privacy-policy.html">Privacy Policy</a>
</div>
                  
        
          
    
    
                
    <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
    </div>
        </div>
    </footer>
  </body>
</html>