<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-->
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
        <meta name="Author" content="Malcolm Edgar"/>
        <meta name="description" lang="en" content="Apache Click Java web application framework"/>
        <meta name="keywords" lang="en" content="Apache Click, Click, Click Framework, Java, JEE, J2EE, web application framework, open source"/>
        <title>Apache Click</title>
        <link rel="stylesheet" type="text/css" href="../../help.css"/>
        <style type="text/css">
            th { text-align: left; }
            td { vertical-align: top; white-space: nowrap; }
        </style>
    </head>
    <body>

        <h1>Developer Guide</h1>

        This is the developer guide for Click which includes tasks such as checking out
        source code, creating releases and contributing to the project.

        <ul>
            <li>
                <a href="source-code.html">Source Code</a>
            </li>
            <li>
                <a href="building.html">Building Click</a>
            </li>
            <li>
                <a href="releasing.html">Creating a Release</a>
            </li>
            <li>
                <a href="releasing-subprojects.html">Creating a Release for Subprojects</a>
            </li>
            <li>
                <a href="contributing.html">Contributing</a>
            </li>
        </ul>

        <!-- FOOTER -->
        <div id="footer">
            <hr/>
            <p>
            <a target='_blank' href='http://www.apache.org' title='Apache Software Foundation'>
            <img id="asf-logo" src="http://www.apache.org/images/asf-logo.gif" alt="Apache Software Foundation"/>
            </a>
            Copyright &copy; 2001-2013 Apache Software Foundation. Apache Click,
            Click, Apache, the Apache feather logo, and the Apache Click project logo are
            trademarks of The Apache Software Foundation.
            <a href="http://cayenne.apache.org/privacy-policy.html">Privacy policy.</a>
            </p>
        </div>

    </body>
</html>

