<?xml version="1.0"?>
<!--
 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.
-->

<document>

 <properties>
  <title>Apache Turbine&#8482;</title>
 </properties>

 <body>

 <section name="What is Apache Turbine?">
 
 <p>
    Apache Turbine&#8482; is a servlet based framework that allows experienced Java
    developers to quickly build secure web applications. Parts of
    Turbine can also be used independently of the web portion of Turbine
    as well. In other words, we strive to make portions of Turbine
    easily available for use in other applications.
 </p>

 <p>
    <strong>A web based application is an application where users use
    their favorite web browser in order to access secure business
    logic.</strong>
 </p>

  <subsection name="Build a Web App">  
   <p>With Turbine + Maven you could easily develop a lightweighted and robust web app in a structured way.
   Find an example using Maven archetype mechanism <a href="https://github.com/apache/turbine-archetypes">here</a>.
   </p>
 </subsection>

 <p>
    <strong>A platform for building applications, not just running
    them.</strong>
 </p>

 <p>
    Many commercial (and non-commercial!) software companies will
    attempt to sell you an "Application Server", but what few people
    realize is that it is only half of the battle to creating a web
    application. There is often quite a lot of code that your engineers
    end up re-inventing the wheel with or grabbing various packages from
    all over the net with various licenses that you may or may not agree
    to.
 </p>

 <p>
    The point of Turbine is to collect that code into one location and
    make it easy to create re-usable components (such as
    ParameterParsing, Database Connection Pools, Job Scheduling,
    GlobalCaches, integration with other tools such as Torque, Velocity,
    etc...) all under a <a href="license.html">license</a>
    (Apache) that allows you to create useful websites for your
    customers without worrying about viral code. Turbine is not the end
    all answer, but it sure is a nice way to make your development life
    easier.
 </p>

 <p>
    This framework has an intended audience that is directed at web
    engineers, not necessarily the web designers or front end engineers. By using this
    framework, it is possible for the web engineers to build intuitive
    high level systems for the web designers and front end engineers to use, but the low level
    framework is strictly for web engineers. Turbine is not a web
    application server. It is a tool for building web applications. Your
    <a href="http://tomcat.apache.org/">servlet engine</a> is your
    application server and the application that you develop using this
    framework is your web application.
 </p>

 <p>
    <strong>Integration with Velocity is well
    defined and makes doing applications using these tools painless for
    both the developers and the web designers or front end engineers!</strong>
 </p>

 <p>
    Turbine can be integrated with existing <a
    href="http://velocity.apache.org/engine/">Velocity</a>, <a
    href="http://java.sun.com/products/jsp/">Java Server Pages (JSP)</a>
    and <a href="http://cocoon.apache.org/">Cocoon</a> technologies by
    specially creating Screens that use Services to parse templates.
    Screens can also be created to read files from other websites as
    well as off disk. This makes it easy to have designers simply put
    the body of a page on disk and Turbine can serve these files when
    requested. All of this is described in more detail in the
    documentation section below.
 </p>

 <p>
    The reason why Turbine works so well is because it applies object oriented
    principles to the entire process of building a complex secure web application.
    We try to follow the
    <a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html">Model
    2 methodology</a> yet expand on it to encompass "View" techologies other
    than just JSP as well as more mature methodologies such as
    <a href="./howto/action-event-howto.html">Action
    Event</a> handling. Turbine is consided as Model 2 <strong>+ 1</strong>. :-) Please
    see the <a href="model2+1.html">discussion</a> of Model 2+1 for more information.
 </p>
 
 <p>You may want to use JSON (de)serialization technics using Fulcrum JSON with Jackson 2, Gson or use Jackson mapper directly. 
    Extending the models into any kind of views by following client view modelling, see e.g.
    <a href="https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel">MVVC</a> should be no problem.     
    You could achieve this in many ways, e.g. using Turbine plain JSON screen, Turbine JSON-RPC or customizing in 
    Velocity Javascript templates.
 </p>

 <p>
    This all sounds like a bunch of marketing talk, but in reality,
    Turbine has been developed by developers for developers. We are not
    trying to sell you something that does not really work, instead we
    are trying to solve (or do something about) the problems that our
    fellow developers keep having over and over again. Come be a part of
    the revolution!
 </p>

 </section>

<section name="Where do I get releases?">

 <p>
    Download the current main release sources and binaries through the Apache mirror system at 
    <a href="http://www.apache.org/dyn/closer.cgi/turbine">the turbine download site</a>.
  </p>
  
  <p>
    Currently, the best way to get started with Turbine is to use the
    Maven Archetypes, find it on <a href="https://github.com/apache/turbine-archetypes" 
    title="Turbine Maven Archetype on GitHub">GitHub</a>. 
    Eihter use it with a hosted database or use the 
    <a href="https://github.com/apache/turbine-archetypes/blob/master/src/main/resources/archetype-resources/docs/DOCKER-README.md">docker profile</a>. 
    See also the <a href="https://blogs.apache.org/turbine/entry/maven_archetypes_for_apache_turbine">blog post</a>
    in the <a href="https://blogs.apache.org/turbine/">Turbine Blog</a> for usage information. 
  </p>

</section>

<section name="How do I contribute, give feedback, fix bugs and so on?">

<p>
We really need and appreciate any contributions you can give. This
includes documentation help, source code and feedback. Discussion
about changes should come in the form of source code and/or very
detailed and well thought out constructive feedback. The <a
href="how-to-help.html">How To Help</a> document has details and hints
how to get engaged with Turbine Development. We also have a <a
href="todo.html">To Do</a> document that describes work to do with
the current Turbine code.
</p>

<ul>
    <li>
        We have a <a href="https://turbine.apache.org/contact.html">Turbine mailing
        lists</a> for discussion.</li>
    <li>
        Create issues and Comment in Apache JIRA system <a href="https://issues.apache.org/jira/projects/TRB/">Turbine
        </a></li>   
     <li>
        You can access the <a href="https://github.com/apache/turbine-core/">Turbine Git trunk branch (rw)
        repository</a></li>
     <li>
        You can also access the archived (since 2021) <a href="https://svn.apache.org/viewvc/turbine/core/trunk/">Turbine SVN
        repository (read only)</a></li>
    
    <li>
        You can access the <a href="https://github.com/apache/turbine-archetypes/">Turbine Archetype Git (rw)
        repository</a></li>
     <li>
        You can access the <a href="https://github.com/apache/turbine-build/">Turbine Git build environment repository</a>. 
        This is a GIT modules structure, which should help to manage all Turbine components in one place.
     </li>
    <li>
        You can find more about the Turbine Ecosystem on <a href="https://gitbox.apache.org/repos/asf#turbine"> gitbox.apache.org (rw)
       </a> or on <a href="https://github.com/orgs/apache/repositories?language=&amp;q=turbine&amp;sort=&amp;type=" target="_new">Github</a> </li>

 
</ul>

 <img src="images/logo.gif" alt="Apache Turbine"></img>


</section>

 </body>
 </document>
