<#--
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.
-->
    <div id="link-column">

        <h2>What is Apache OFBiz?</h2>
        <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/Apache+OFBiz+Project+Overview">Project Overview</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Is+OFBiz+for+Me">Is OFBiz for Me?</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Main+New+Features">Main New Features</a>
        <a href="comingsoon.html">Features Coming Soon</a>
        <a href="feature-list.html">Feature List</a>

        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+User+List">User List</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+User+Stories">User Stories</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/General+Material+for+Branding+and+Marketing">Brochures, etc</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/OFBiz+Documentation+Index">Documentation</a>
        <a href="VideosConf.html">Conference Videos</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Framework+Introduction+Videos+and+Diagrams">Framework Intro Videos</a>


        <h2>Demo Sites</h2>
        <h3>Trunk Demo</h3>
        <a href="http://demo.hotwaxmedia.com/ecommerce/control/main" target="_blank">eCommerce Demo</a>
        <a href="https://demo.hotwaxmedia.com/catalog/control/login/main?USERNAME=demoadmin&amp;PASSWORD=ofbiz" target="_blank">Management Apps</a>
        <h3>Release 4.0 Branch Demo</h3>
        <a href="http://demo40.hotwaxmedia.com/ecommerce/control/main" target="_blank">eCommerce Demo</a>

        <a href="https://demo40.hotwaxmedia.com/catalog/control/login/main?USERNAME=demoadmin&amp;PASSWORD=ofbiz" target="_blank">Management Apps</a>
        <h3>Other Demos</h3>
        <a href="http://docs.ofbiz.org/x/yg4" target="_blank">Alternative Demo Servers</a>

        <h2>Download OFBiz</h2>
        <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/Apache+OFBiz+Getting+Started">Getting Started (Read this first)</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/Copyright+and+License">Copyright &amp; License</a>

        <a href="https://ofbiz.apache.org/source-repositories.html">Source Access (Recommended)</a>
        <a href="http://build.hotwaxmedia.com/">Nightly Builds (Ready to use)</a>

        <h2>Resources &amp; Tools</h2>
        <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/OFBiz+Documentation+Index">Main Documentation Page</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/Mailing+Lists">Mailing Lists</a>

        <a href="https://issues.apache.org/jira/browse/OFBIZ">Issue Tracker (Jira)</a>
        <a href="https://ofbiz.apache.org/source-repositories.html">Source Repository (SVN)</a>
        <a href="http://fisheye6.cenqua.com/browse/ofbiz">Source Browse and Stats (Fisheye)</a>
        <!-- no RSS feed any more... <a href="http://www.ofbiz.org/rss/svnlog.rss">SVN Commit RSS Feed</a> -->
        <a href="http://api.ofbiz.org/">API Reference (Javadoc)</a>
        <a href="http://cwiki.apache.org/confluence/display/OFBIZ">Documentation Site: Wiki</a>

        <a href="VideosConf.html">Conference Videos</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Related+Books">Books</a>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Open+Source+Projects+and+Standards">Open Source Projects, Standards</a>

        <!-- DEJ20080122 commenting these out, may want to totally remove eventually as they are only of interest for historical purposes
        <h2>Old Resources</h2>
        <a href="http://lists.ofbiz.org">Old Mailing Lists</a>
        <a href="http://jira.ofbiz.org">Old Issue Tracker (Jira)</a>
        <a href="http://ofbizwiki.go-integral.com">Old Wiki</a>
        <a href="https://ofbiz.dev.java.net/">The Old Java.net Site</a>
        <a href="http://sourceforge.net/projects/ofbiz">The Old SourceForge.net Site</a>
        <a href="http://incubator.apache.org/projects/ofbiz.html">Apache Incubator Status</a>
        -->

        <h2>Apache OFBiz Related Blogs</h2>
        <a href="http://osofbiz.blogspot.com">Open Source Business and Open For Business by David E. Jones</a>

        <a href="http://ofbiz-new.blogspot.com">What's New in OFBiz by Si Chen</a>

        <h2>Apache OFBiz Communities</h2>
        <h3>Locales</h3>
  <!-- not really a community?
        <a href="http://www.nereide.biz/rubrique.php3?id_rubrique=5">France</a> -->
        <a href="http://www.ofbiz.de" target="_blank">Germany</a>
        <a href="http://www.ofbiz.in.th" target="_blank">Thailand</a>

        <a href="http://www.ofbiz.nl" target="_blank">Netherlands</a>
  <!-- currently not available
        <a href="http://www.ofbiz.co.uk" target="_blank">United Kingdom</a>
        <a href="http://www.ofbizchina.com">China</a> -->
        <a href="http://www.ofbiz.it" target="_blank">Italy</a>
        <!-- <div>NOTE: These sites are not official parts of OFBiz.org but are maintained by users and enthusiasts of OFBiz in different parts of the world and provide valuable resources and localized information.</div> -->
        <h3>Industries</h3>
        <a href="http://opentravelsystem.org">Travel</a>
        <a href="http://www.openegovernment.org">Government</a>

        <h2>Service Providers</h2>
        <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+Service+Providers" target="_blank"><b>Complete Listing on Wiki</b></a>
        <a href="http://www.hotwaxmedia.com/?atc=OFB" target="_blank"><b>Hotwax Media</b></a>
        <a href="http://www.antwebsystems.com" target="_blank"><b>Ant Websystems</b></a>
        <a href="http://www.opensourcestrategies.com/ofbiz/" target="_blank"><b>Open Source Strategies, Inc.</b></a>
        <a href="http://www.go-integral.com" target="_blank"><b>Integral Business Solutions</b></a>

        <a href="http://www.brainfood.com" target="_blank"><b>Brainfood</b></a>
        <a href="http://www.automationgroups.com" target="_blank"><b>Automation Groups International</b></a>
        <a href="http://openplus.co.uk" target="_blank"><b>Open Plus Ltd</b></a>
        <a href="http://www.opentrends.net/web/english/philosophy.html" target="_blank"><b>openTrends</b></a>
        <a href="http://www.nereide.biz" target="_blank"><b>Nereide</b></a>
        <a href="mailto:dirk.osterkamp@agrenon.com" target="_blank"><b>Agrenon GmbH</b></a>


        <h2>Apache Software Foundation</h2>
        <a href="http://www.apache.org" target="_blank"><b>Apache Software Foundation</b></a>
        <a href="http://www.apache.org/foundation/sponsorship.html" target="_blank"><b>Sponsorship</b></a>
        <a href="http://www.apache.org/foundation/thanks.html" target="_blank"><b>Sponsors</b></a>

        <h2>OFBiz Infra Sponsorship</h2>
        <h3>Demos, Nightly Builds, API Site, and Docs Site Provided by <a href="http://www.hotwaxmedia.com/?atc=OFB" target="_blank">Hotwax Media</a> and <a href="http://www.contegix.com/" target="_blank">Contegix</a></h3>

    </div>
