<!doctype html>
<html lang=''>
<head>
   <meta charset='utf-8'>
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link rel="stylesheet" href="styles.css">
   <script src="js/jquery.js" type="text/javascript"></script>
   <script src="js/echarts.min.js"></script>
   <script src="js/script.js" type="text/javascript"></script>
   <script src="js/projects.js"></script>
   
   <title>Apache Projects and Committees Directory</title>
</head>
<body>

<div id="logo"><h1><div style="padding-top: 30px;">Projects and Committees Directory</div></h1></div>
<div id='cssmenu'>
<ul>
   <li class='active'><a href='/'><span>Home</span></a></li>
   <li><a href='committees.html'><span>Committees</span></a></li>
   <li><a href='projects.html'><span>Projects</span></a></li>
   <li><a href='releases.html'><span>Releases</span></a></li>
   <li class='last'><a href='timelines.html'><span>Timelines</span></a></li>
   <li style="background: none !important"><input type="text" style="margin-top: 20px;" onkeypress="checkKeyPress(event, this);" placeholder="Search..."/></li>
   <li style="float: right;"><a href='about.html'><span>About</span></a></li>
   <!--li style="background: none; float: right;"><a href="edit/"><img title="Edit project data" style="vertical-align: middle; margin-top: -5px; height: 24px; width: 24px;" src="images/edit.png"/></a></li-->
</ul>
</div>

<div id="contents">
   <h2>Welcome to the Apache Projects and Committees Directory</h2>
   <p>This site is a partial (*) catalog of Apache Software Foundation <a href="projects.html">projects</a> and their <a href="committees.html">management committees</a>.
      It is designed to help you find specific projects that meet your interests and to gain a broader understanding of
      the wide variety of work currently underway in the Apache community.
      <br>
      (*) Please note that some committees have <a href="projects.html?category#no-tlp-doap">not yet provided data</a> for the projects that they manage.
   </p>
   <!-- N.B. This ids in this section must agree with the code in projects.js -->
   <div id="details">
      <h3 style='text-align: center;'>There are hundreds of open source initiatives at the ASF:</h3>
      <ul style='width: 400px; margin: 0 auto; font-size: 18px; color: #269; font-weight: bold;'>
      <li><span id="committees">TBA</span> <a href='committees.html'>committees</a> managing <span id="projects">TBA</span> <a href='projects.html'>projects</a></li>
      <li><span id="podlings">TBA</span> incubating podlings</li>
      </ul>
      <!-- This div is cleared when loading is complete -->
      <div id="loading">
         <p style="text-align: center;">
            Loading data, please wait...<br/>
            <img src="images/loader.gif"/>
         </p>
         <p id="progress" style="text-align: center;"></p>
      </div>
      <noscript>
         <h2>Notice!</h2>
         <p>
            This site relies heavily on JavaScript.
            Please enable it or get a browser that supports it.
         </p>
      </noscript>
   </div>
</div>
<div id="footer">
   Managed by the <a href="https://community.apache.org">Apache Community Development Project</a>.<br/>
   Copyright&copy; the Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a><br/>
   Apache&reg; and the Apache logo are trademarks of The Apache Software Foundation.
</div>
<script type="text/javascript">
   window.onload = function () { 
      preloadEverything(buildFrontPage);
   };
</script>
</body>
</html>
