<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Apache Allura&#153;</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="stylesheet" href="css/normalize.min.css">
        <link rel="stylesheet" href="css/main.css">

        <script src="js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
    </head>
    <body>

        <div class="header-container">
            <header class="wrapper clearfix">
                <h1 class="title">Apache Allura&#153;</h1>
                <a href="http://www.apache.org/"><img class="logo" src="img/asf_logo.gif"></a>
                <h3>Forge software for hosting software projects</h3>
                <!--
                <nav>
                    <ul>
                        <li><a href="#">nav ul li a</a></li>
                        <li><a href="#">nav ul li a</a></li>
                        <li><a href="#">nav ul li a</a></li>
                    </ul>
                </nav>
                -->
            </header>
        </div>

        <div class="main-container">
            <div class="main wrapper clearfix">
                <article>

                    <p>Apache Allura is an open source implementation of a software <em>forge</em>, a web site that manages source code repositories, bug reports, discussions, wiki pages, blogs, and more for any number of individual projects. Read about all of <a href="https://forge-allura.apache.org/p/allura/wiki/Features/">Allura's features</a> or <a href="https://forge-allura.apache.org/p/allura/wiki/Feature%20Comparison/">compare features to other OSS forge software</a>.</p>
                    <p>The Allura project is self-hosted on an instance of Allura:</p>
                    <ul>
                        <li><a href="https://forge-allura.apache.org/p/allura/git/">Git</a></li>
                        <li><a href="https://forge-allura.apache.org/p/allura/wiki/">Wiki</a></li>
                        <li><a href="https://forge-allura.apache.org/p/allura/tickets/">Tickets</a></li>
                    </ul>

                    <h2>Get Allura</h2>

                    <ul>
                        <li><a href="http://www.apache.org/dyn/closer.cgi/allura/allura-1.2.1.tar.gz">Download v1.2.1</a> released Feb 2015
                            <ul>
                                <li><a href="https://forge-allura.apache.org/p/allura/git/ci/asf_release_1.2.1/tree/CHANGES">Changelog</a></li>
                                <li><a href="http://apache.org/dist/allura/allura-1.2.1.tar.gz.md5">md5</a>, <a href="http://apache.org/dist/allura/allura-1.2.1.tar.gz.sha1">sha1</a>, <a href="http://apache.org/dist/allura/allura-1.2.1.tar.gz.sha512">sha512</a> sums</li>
                                <li>PGP <a href="http://apache.org/dist/allura/allura-1.2.1.tar.gz.asc">signature</a>
                    &amp; <a href="http://apache.org/dist/allura/KEYS">keys</a>
                                </li>
                            </ul>
                        </li>
                        <li><a href="https://forge-allura.apache.org/p/allura/git/ci/master/tree/INSTALL.markdown">Step-by-step installation instructions</a></li>
                        <li><a href="https://forge-allura.apache.org/p/allura/wiki/Install%20and%20Run%20Allura%20-%20Vagrant/">Quickstart with Vagrant VM</a></li>
                        <li><a href="https://forge-allura.apache.org/docs/#running-allura">Documentation</a></li>
                        <li>Need help? <a href="http://mail-archives.apache.org/mod_mbox/allura-users/">Use the users@allura mailing list</a></li>
                    </ul>

                    <h2>Development</h2>

                    <p>We welcome all developers and contributions. If you need any help making a fix or ideas for a new feature, send us an email on the mailing list, or ask in IRC (if we're around)</p>
                    <ul>
                        <li><a href="http://mail-archives.apache.org/mod_mbox/allura-dev/">dev@allura mailing list</a></li>
                        <li><a href="irc://chat.freenode.net/allura">#allura on Freenode IRC</a> (<a href="https://sourceforge.net/p/allura/chat/">archives</a>)</li>
                        <li><a href="https://forge-allura.apache.org/docs/#extending-allura">Developer Docs</a>
                            <ul>
                                <li><a href="https://forge-allura.apache.org/docs/contributing.html">Contributing Guide</a></li>
                            </ul>
                        </li>
                        <li><a href="https://builds.apache.org/job/Allura/">Jenkins CI build</a></li>
                    </ul>

                </article>
                <aside>
                    <h3>Apache Software Foundation</h3>
                    <ul>
                        <li><a href="http://www.apache.org/licenses/">License</a></li>
                        <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                        <li><a href="http://www.apache.org/security/">Security</a></li>
                        <li><a href="http://www.apache.org/">www.apache.org</a></li>
                    </ul>
                </aside>

            </div> <!-- #main -->
        </div> <!-- #main-container -->

        <div class="footer-container">
            <footer class="wrapper">
                Copyright &copy; 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
                <br>Apache, Allura, Apache Allura, and the Apache feather logo are trademarks of The Apache Software Foundation.
            </footer>
        </div>

        <!--
        don't need JS yet :)

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.0.min.js"><\/script>')</script>

        <script src="js/main.js"></script>
        -->
    </body>
</html>
