<div>
  <h2 id="the-apache-software-foundation">The Apache Software Foundation
    <a class="headerlink" href="#the-apache-software-foundation" title="Permanent link">¶</a>
  </h2>
  <p>The <a href="https://www.apache.org">Apache Software Foundation</a> provides support for the Apache community of open-source software projects. The Apache projects are defined by collaborative consensus based processes, an open, pragmatic software license and a desire to create high quality software that leads the way in its field. Apache Lucene, Apache Solr, Apache PyLucene, Apache Open Relevance Project and their respective logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</div>
