<?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>Turbine Model 2+1</title>
 </properties>

<body>

<section name="What is model 2+1?">

<source test=""><![CDATA[
   To: turbine@list.working-dogs.com
   Subject: Re: Is Turbine MVC or HMVC?
   Date: Wed, 11 Oct 2000 14:04:52 +0200
   From: Christoph Reck Christoph.Reck@dlr.de
]]></source>

<p>
Turbine follows the MVC design pattern.
</p>
<p>
<ul>
<li>  Model      - the underlying data sources (via peers or beans)</li>
<li>  View       - one of the templating engines</li>
<li>  Controller - Turbine servlet plus your action+screen classes</li>
</ul>
</p>

<p>
Since the view and the controller are tightly coupled in Turbine,
it is stated to follow the Model2 design pattern, with a + 1
addition due to way actions are used (hence Model 2 + 1).
</p>

<p>
Turbine does not directly support the Hierarchical MVC pattern, but
it could be used this way by defining multiple module and template
paths (would impact performance). Note that in the HMVC each MVC
instance is self-contained and separable from the rest.
</p>

<p>
Note that many components within a MVC system follow themselves
the MVC pattern, therefore most MVC systems are also HMVC systems
(this also applies to Turbine as a whole, but your application with
Turbine is normally not HMVC).
</p>

<p>
Also note that you could use Turbine in a non MVC manner, but
normally it leads you to use it as MVC (which JSP does not).
</p>

<p>
I hope this clarifies your question,
Christoph
</p>

</section>

<section name="Jon's Comments">
<p>
That is a GREAT explanation and I'm going to use that for now on...except it
isn't entirely true. :-)
</p>

<p>
The +1 was a joke on my part to see what people would do with it. I figured
that people were believing this Model 2 hype with JSP and such and I wanted
to improve on it. I love playing with marketing games. I read that Model 2
paper and then figured that Turbine was better than what they declared as
Model 2.
</p>

<p>
Calling it Model 3 would have been like saying that Turbine was just a third
generation of Model 2. So, instead I figured that making it +1 just made it
appear to be an improved Model 2 model since that is what Turbine really is.
:-)
</p>

<p>
Oh yea...one more reason for the +1...
</p>

<p>
It is the Apache <a href="http://jakarta.apache.org/site/decisions.html">voting style</a>. :-)
</p>

<p>
Turbine is Model 2 .......... +1 ! :-)
</p>

<p>-jon stevens</p>
</section>

<section name="Resources">
<p>
<a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html">
Understanding JavaServer Pages Model 2 architecture</a>
</p>

</section>
</body>
</document>
