joerg       2004/06/09 13:29:41

  Modified:    site     history.html incubation.html index.html
                        whoweare.html
  Added:       site     versioning.html
  Log:
  website update (mostly only the copyright year)
  
  Revision  Changes    Path
  1.13      +5 -1      cocoon-site/site/history.html
  
  Index: history.html
  ===================================================================
  RCS file: /home/cvs/cocoon-site/site/history.html,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- history.html      5 Feb 2004 00:32:23 -0000       1.12
  +++ history.html      9 Jun 2004 20:29:41 -0000       1.13
  @@ -162,6 +162,10 @@
   <li>
   <a href="http://cocoon.apache.org/mirror.cgi";>Download</a>
   </li>
  +    
  +<li>
  +<a href="versioning.html">Versioning</a>
  +</li>
     
   </ul>
   </li>
  @@ -363,7 +367,7 @@
   </tr>
   <tr>
   <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font 
size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy;
  -          2003&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
  +          2003-2004&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
                 document.write(" - "+"Last Published: " + 
document.lastModified);
               //  --></script></font></td>
   </tr>
  
  
  
  1.8       +5 -1      cocoon-site/site/incubation.html
  
  Index: incubation.html
  ===================================================================
  RCS file: /home/cvs/cocoon-site/site/incubation.html,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- incubation.html   5 Feb 2004 00:32:23 -0000       1.7
  +++ incubation.html   9 Jun 2004 20:29:41 -0000       1.8
  @@ -162,6 +162,10 @@
   <li>
   <a href="http://cocoon.apache.org/mirror.cgi";>Download</a>
   </li>
  +    
  +<li>
  +<a href="versioning.html">Versioning</a>
  +</li>
     
   </ul>
   </li>
  @@ -430,7 +434,7 @@
   </tr>
   <tr>
   <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font 
size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy;
  -          2003&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
  +          2003-2004&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
                 document.write(" - "+"Last Published: " + 
document.lastModified);
               //  --></script></font></td>
   </tr>
  
  
  
  1.15      +5 -1      cocoon-site/site/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/cocoon-site/site/index.html,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- index.html        5 Feb 2004 00:32:23 -0000       1.14
  +++ index.html        9 Jun 2004 20:29:41 -0000       1.15
  @@ -162,6 +162,10 @@
   <li>
   <a href="http://cocoon.apache.org/mirror.cgi";>Download</a>
   </li>
  +    
  +<li>
  +<a href="versioning.html">Versioning</a>
  +</li>
     
   </ul>
   </li>
  @@ -351,7 +355,7 @@
   </tr>
   <tr>
   <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font 
size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy;
  -          2003&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
  +          2003-2004&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
                 document.write(" - "+"Last Published: " + 
document.lastModified);
               //  --></script></font></td>
   </tr>
  
  
  
  1.12      +5 -1      cocoon-site/site/whoweare.html
  
  Index: whoweare.html
  ===================================================================
  RCS file: /home/cvs/cocoon-site/site/whoweare.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- whoweare.html     5 Feb 2004 00:32:23 -0000       1.11
  +++ whoweare.html     9 Jun 2004 20:29:41 -0000       1.12
  @@ -162,6 +162,10 @@
   <li>
   <a href="http://cocoon.apache.org/mirror.cgi";>Download</a>
   </li>
  +    
  +<li>
  +<a href="versioning.html">Versioning</a>
  +</li>
     
   </ul>
   </li>
  @@ -401,7 +405,7 @@
   </tr>
   <tr>
   <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font 
size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy;
  -          2003&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
  +          2003-2004&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
                 document.write(" - "+"Last Published: " + 
document.lastModified);
               //  --></script></font></td>
   </tr>
  
  
  
  1.1                  cocoon-site/site/versioning.html
  
  Index: versioning.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>The Apache Cocoon Versioning Manifesto - DRAFT</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
  <!--================= start Navigation Path ==================-->
  <table summary="navigation path" width="100%" border="0" cellpadding="0" 
cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img 
height="1" width="5" alt="" src="skin/images/spacer.gif" 
class="spacer"><!--===== breadcrumb trail (javascript-generated) ====--><font 
size="2" face="Arial, Helvetica, Sans-serif"><script src="skin/breadcrumbs.js" 
language="JavaScript" type="text/javascript"></script></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  </table>
  <!--================= end Navigation Path ==================-->
  <!--================= start Banner ==================-->
  <table summary="header with logos" width="100%" border="0" cellpadding="0" 
cellspacing="0">
  <tr>
  <!--================= start Group Logo ==================-->
  <td bgcolor="#294563"><a href="http://cocoon.apache.org/";><img border="0" 
class="logoImage" alt="Apache Cocoon" 
src="images/cocoon-project-logo.png"></a></td>
  <!--================= end Group Logo ==================-->
  <!--================= start Project Logo ==================--><td 
width="100%" align="center" bgcolor="#294563"><a 
href="http://cocoon.apache.org/";><img border="0" class="logoImage" alt="Apache 
Cocoon" src="images/cocoon-logo.gif"></a></td>
  <!--================= end Project Logo ==================-->
  <!--================= start Search ==================--><td valign="top" 
rowspan="2" bgcolor="#294563">
  <form target="_blank" action="http://www.google.com/search"; method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" 
bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif" 
class="spacer"></td><td nowrap="nowrap"><input value="cocoon.apache.org" 
name="sitesearch" type="hidden"><input size="15" name="q" id="query" 
type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif" 
class="spacer"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                        the Apache Cocoon site
                        
                        
                      </font></td><td><img height="1" width="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" 
src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td><td><img alt="" border="0" 
height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td>
  <!--================= start Search ==================--><td 
bgcolor="#294563"><img height="10" width="10" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <!--================= start Tabs ==================-->
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td width="6"><img alt="" height="8" width="6" 
src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" style="height: 1.8em" border="0" 
cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" 
src="skin/images/tabSel-left.gif"></td><td valign="middle" 
bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, 
Sans-serif"><b><a class="base-selected" 
href="index.html">Home</a></b></font></td><td valign="top" width="5" 
bgcolor="#4C6C8F"><img height="5" width="5" alt="" 
src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  </div>
  <!--================= end Tabs ==================-->
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  </table>
  <!--================= end Banner ==================-->
  <!--================= start Menu, NavBar, Content ==================-->
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" 
cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <!--================= start left top NavBar ==================-->
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, 
Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  </table>
  </td>
  <!--================= end left top NavBar ==================--><td 
bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif" 
class="spacer"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" 
height="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td 
nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <!--================= start Menu items ==================-->
  <div class="menu">
  <ul>
  <li>
  <font color="#CFDCED">About Cocoon</font>
  <ul>
      
  <li>
  <a href="index.html">Welcome</a>
  </li>
      
  <li>
  <a href="whoweare.html">Who we are</a>
  </li>
  
      
  
      
  <li>
  <a href="history.html">History</a>
  </li>
      
  <li>
  <font color="#CFDCED">News</font>
  <ul>
        
  <li>
  <a href="news/index.html">Latest</a>
  </li>
        
  <li>
  <a href="news/archives.html">Archives</a>
  </li>
      
  </ul>
  </li>
      
    
  </ul>
  </li>
  <li>
  <font color="#CFDCED">Projects</font>
  <ul>
      
  <li>
  <font color="#CFDCED">Cocoon</font>
  <ul>
        
  <li>
  <a href="1.x/">Cocoon 1.x</a>
  </li>
        
  <li>
  <a href="2.0/">Cocoon 2.0</a>
  </li>
        
  <li>
  <a href="2.1/">Cocoon 2.1</a>
  </li>
      
  </ul>
  </li>
      
  <li>
  <a href="lenya/">Lenya</a>
  </li>
      
  <li>
  <a href="http://cocoon.apache.org/mirror.cgi";>Download</a>
  </li>
      
  <li>
  <span class="sel"><font color="#ffcc00">Versioning</font></span>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="#CFDCED">Community</font>
  <ul>
      
  <li>
  <a href="http://wiki.cocoondev.org/";>Wiki docs</a>
  </li>
      
  <li>
  <a href="community/members.html">Members</a>
  </li>
      
  <li>
  <a href="community/contrib.html">Contributing</a>
  </li>
      
  <li>
  <a href="community/committer.html">Committer Tips</a>
  </li>
      
  <li>
  <a href="community/mail-lists.html">Mail Lists</a>
  </li>
      
  <li>
  <a href="community/mail-archives.html">Mail Archives</a>
  </li> 
    
  </ul>
  </li>
  <li>
  <font color="#CFDCED">Links</font>
  <ul>
      
  <li>
  <a href="link/index.html">Cocoon Links</a>
  </li>
      
  <li>
  <font color="#CFDCED">Live Sites</font>
  <ul>
        
  <li>
  <a href="link/livesites-1.x.html">Cocoon 1.x</a>
  </li>
        
  <li>
  <a href="link/livesites-2.0.html">Cocoon 2.0</a>
  </li>
        
  <li>
  <a href="link/livesites-2.1.html">Cocoon 2.1</a>
  </li>
      
  </ul>
  </li>
      
  <li>
  <a href="link/hosting.html">Cocoon Hosting</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  <!--================= end Menu items ==================-->
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" 
src="skin/images/spacer.gif" class="spacer"></td><td bgcolor="#294563"><img 
width="1" height="1" alt="" src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" 
bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" 
src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" 
width="10" alt="" src="skin/images/spacer.gif" class="spacer"></td><td 
valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img 
height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" 
cellspacing="0">
  <!--================= start middle NavBar ==================-->
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" 
alt="" src="skin/images/spacer.gif" class="spacer"></td><td align="left" 
width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, 
Helvetica, Sans-serif">
                  &nbsp;
                  
                  </font><img width="10" height="8" alt="" 
src="skin/images/spacer.gif" class="spacer"></td><td align="right" width="50%" 
bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, 
Sans-serif">
                  &nbsp;
                  
                  </font><img width="10" height="8" alt="" 
src="skin/images/spacer.gif" class="spacer"></td><td width="10" 
bgcolor="#CFDCED"><img width="10" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <!--================= end middle NavBar ==================-->
  <!--================= start Content==================-->
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td><td colspan="2" align="left" 
width="100%">
  <div class="content">
  <table class="title" summary="">
  <tr>
  <td valign="middle">
  <h1>The Apache Cocoon Versioning Manifesto - DRAFT</h1>
  </td>
  </tr>
  </table>
  <ul class="minitoc">
  <li>
  <a href="#basics">Basics</a>
  </li>
  <li>
  <a href="#usage-compatibility">Usage Compatibility</a>
  </li>
  <li>
  <a href="#extension-compatibility">Extension Compatibility</a>
  </li>
  <li>
  <a href="#exceptions">Deprecation and Exceptions</a>
  </li>
  <li>
  <a href="#blocks">Blocks and Block Stability</a>
  </li>
  <li>
  <a href="#external-libs">External Libraries</a>
  </li>
  <li>
  <a href="#examples">Exsamples</a>
  </li>
  <li>
  <a href="#repositories">Versioning and Repositories</a>
  </li>
  <li>
  <a href="#reality">Realitiy</a>
  </li>
  </ul>
      
  <div class="frame warning">
  <div class="label">Warning</div>
  <div class="content">DRAFT INITIAL VERSION</div>
  </div>
  
      
  <p>
        This document covers how the Cocoon project is versioned. 
        Since Cocoon is a framework, it is very important to define a stable 
API 
        for users and developers. However, we also need to move Cocoon forward, 
        technologically. To balance these two needs, a strict policy of 
versioning 
        is required, which users can rely upon to understand the limitations, 
        restrictions, and the changes that can occur from one release to the 
next.
      </p>
  
      
  <a name="N10012"></a><a name="basics"></a>
  <h3>Basics</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          Versions are denoted using a standard triplet of integers: 
        </p>
  <p>
          MAJOR.MINOR.PATCH. 
        </p>
  <p>
          The basic intent is that MAJOR versions are incompatible, large-scale 
          upgrades of the API. MINOR versions retain usage and extension 
compatibility 
          with older minor versions, and changes in the PATCH level are 
perfectly 
          compatible, forwards and backwards.
        </p>
  <p>
          Following the main design principle of Cocoon, the pyramid of 
contracts, 
          we distinguish between users and developers of Cocoon. A very rough 
distinction 
          between them is that a user writes the application using Cocoon 
without 
          coding Java. There is one exception to this rule: flow script - the 
java 
          script is also written by the user.
        </p>
  <p>
          A developer codes Java and provides additional functionality for the 
user, 
          so a developer extends Cocoon.
        </p>
  <p>
          Therefore we distinguish between usage compatibility (user API) and 
          extension compatibility (developer API). Both compatibility levels 
cover 
          some kind of "source" compatibility. Cocoon does not provide binary 
          compatibility. But as Cocoon is distributed as a source release that 
          you have to compile anyway, it's safer to compile your own 
application 
          code (if any) using the version of Cocoon that your application runs 
on.
        </p>
  <p>
          There are several reasons why recompilation is recommended. We 
strongly
          advise to compile Cocoon (or any other Java application) with the same
          JDK that is later used in production.
        </p>
  <ul>
          
  <li>
            Ensures that you have reliable operating environment. For example if
            you compile a Java application with JDK 1.4 in JDK 1.3 compatible 
mode
            it still can happen that your application doesn't run properly with 
JDK 1.3!
            This is not Cocoon specific!
          </li>
          
  <li>
            Allows you to easily configure which parts you want. The selection 
of
            wanted blocks is currently evaluated at build time, so if you want
            to have an additional block/remove a block in your Cocoon 
installation,
            you have to rebuild Cocoon.
          </li>
          
  <li>
            You will get warned about deprecated parts of the API.        
          </li>
        
  </ul>
  </div>
      
  <a name="N1003A"></a><a name="usage-compatibility"></a>
  <h3>Usage Compatibility</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          
  <em>Usage</em> compatibility guarantees that an application written by 
          a Cocoon user is compatible. All files developed by a typical Cocoon 
          user like xml files, sitemaps, stylesheets (elements and namespace 
declarations) 
          keep on being picked up by the machinery and are dealt with correctly 
          (sitemap semantics, generator/transformer-picked up elements, config 
          file entries...). 
        </p>
  <p>
          In fact this should cover everything (including flow script) but 
except 
          your own Java code.
        </p>
  <p>
          Applications that write against a particular version will remain 
usage 
          compatible against later versions, until the major number changes.
        </p>
  <p>
          Writing an application against a version means that this application 
          does not use any deprecated API of that version. Therefore minor 
version 
          changes are only usage compatible from one minor version to the 
direct 
          following one. For example 2.2 is usage compatible to 2.1. But 2.3 is 
not 
          necessarily usage compatible to 2.1, although it is usage compatible 
          to 2.2. As long as you don't use deprecated API (and the API you rely 
          on does not get deprecated), your application is usage compatible 
across 
          all minor versions.
        </p>
  <p>
          Example: 
        </p>
  <ul>
          
  <li>a feature is introduced in 2.0 and used by the application.</li>
          
  <li>it is deprecated in 2.2</li>
          
  <li>it will be removed in 2.3</li>
        
  </ul>
  <p>
          If the time inbetween two minor releases is very short, then it might 
          happen that deprecated parts will be kept in the following minor 
release 
          and are removed in a follow-up minor release. This is in order to 
ensure 
          that users have time to update their applications if they use the 
deprecated 
          parts.
        </p>
  <p>
          However, if an application uses an API which has become available in 
a 
          particular minor version, it (obviously) will no longer operate 
against 
          previous minor versions.
        </p>
  </div>
      
  <a name="N10065"></a><a name="extension-compatibility"></a>
  <h3>Extension Compatibility</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          
  <em>extension</em> compatibility guarantees that your own extensions to what 
          Cocoon provides (your Java classes that interface directly with API 
in the 
          Cocoon distribution) compile and operate.
        </p>
  <p>
          Applications that write against a particular version will remain 
extension 
          compatible against later versions until the major or the minor number 
          changes (Please note the difference to the usage compatibility). 
However, 
          the Cocoon developers take care that even if the minor number 
changes, 
          most of the their own code still works and operates properly. 
Incompatible 
          changes between minor versions are kept to a minimum. Frequent new 
releases 
          of Cocoon ensure that developers have a smooth transition path.
        </p>
  <p>
          If an interface/class changes in an incompatible way between minor 
          version changes, the Cocoon documentation will contain a detailed 
update 
          guide that contains a solution for every incompatible change. So 
following 
          this guide should make the update smoothly.
        </p>
  </div>
      
  <a name="N10078"></a><a name="exceptions"></a>
  <h3>Deprecation and Exceptions</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          To continue the Cocoon development and to keep up with the 
innovations,
          parts of Cocoon might get deprecated; this includes parts of the user
          API and also parts of the developer API.
        </p>
  <p>
          If a part of the user API is deprecated, this will be flagged through 
          run-time warnings that appear in the logs but remain supported. This
          indicates that an upcoming minor (or major) release will no longer 
          support this.
        </p>
  <p>
          If a part of the developer API is deprecated it will be removed with 
          the next major, minor or patch release. However, the need for removing
          deprecated stuff between two patch releases is really very rare and
          will only happen if the cost of keeping it is much higher than the
          cost that might occur from updating the application. 
        </p>
  <p>
          For developers there is one exception to this rule: private API. 
Cocoon
          has some internal classes and interfaces that are not meant to be used
          by a Cocoon developer (someone extending Cocoon). These pieces of
          Java code are clearly marked in the Javadocs and should not be used.
          They might change even between a patch version change in an 
incompatible
          way without providing a workaround!      
        </p>
  </div>
      
  <a name="N1008B"></a><a name="blocks"></a>
  <h3>Blocks and Block Stability</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          Cocoon currently allows optional functionality to be included or 
excluded 
          using a simple system called blocks, in which the functionality is 
included 
          or excluded at compile time.
        </p>
  <p>
          [NB. This is a precursor to a more complete block system which is 
          currently under development.]
        </p>
  <p>
          A block can have one of three statuses: unstable, stable or 
deprecated. 
          An unstable block has an API that can change without notice. A stable 
block 
          is subject to the same versioning process as described in this 
document. 
          Similarly, when the entire functionality of a block is deprecated, it 
will 
          be handled in the same way as any other deprecated code within Cocoon.
        </p>
  </div>
      
  <a name="N1009B"></a><a name="external-libs"></a>
  <h3>External Libraries</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          Cocoon uses a set of external libraries (like for example Avalon, 
                Xalan or Xerces). Between any release, even patch releases,
                the versions of the external libraries might be updated to any 
version.
                Cocoon only updates external libraries if there are good reasons
                for it, like important bug fixes or new features that will be
                used by the new Cocoon version.
        </p>
  <p>
          Therefore if your application is written against a special API of an 
          external library it might be that this API of the external library 
          changes inbetween two Cocoon versions and therefore your application 
          does not work properly anymore (or even does not compile anymore).
          Unfortunately, this issue is out of the scope of Cocoon.
        </p>
  <p>
          The documentation of Cocoon contains a list of the libraries and the
          version changes between libraries from one Cocoon release to another.
        </p>
  </div>
      
  <a name="N100AD"></a><a name="examples"></a>
  <h3>Exsamples</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          Here are some examples to demonstrate the compatibility:
        </p>
  <pre class="code">
  Original Version    New Version    Usage Compatible    Extension Compatible
  2.2.3                  2.2.4          Yes                      Yes
  2.2.3                  2.3.1          Yes                      No
  2.2.3                  3.0.0          No                       No
        </pre>
  <p>
          Note: while some of the cells say "no", it is possible that the 
versions 
          may be compatible, depending very precisely upon the particular APIs 
          used by the application.
        </p>
  </div>
      
  <a name="N100C1"></a><a name="repositories"></a>
  <h3>Versioning and Repositories</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          Cocoon is very innovative and new features are added very frequently. 
This
          results in new functionality that justify a minor version change on 
its own.
          In addition, to move Cocoon forward technologically, some features 
have
          to be removed/deprecated which of course results in a minor version 
change
          as well.
        </p>
  <p>
          So, Cocoon will potentially release several versions with minor 
version
          changes in a year and only a few patch releases. Of course, if a patch
          release is required, for example if a potential security issue is 
found
          etc., the patch release will be made available asap.
        </p>
  <p>
          This high innovention has - at least in theory - the price of 
maintaining
          several branches at once in order to be able to apply patches to older
          versions. 
        </p>
  <p>
          To reduce this to a minimum, Cocoon uses one repository per major 
version.
          The HEAD of the repository always contains the latest version. If a 
new
          minor release is required, the version in the repository is directly 
changed
          to this minor version (e.g. from 2.1.4 to 2.2). The current state is
          tagged and if the need for a 2.1.5 release arises, a branch is 
created.
        </p>
  <p>
          However, due to the compatibility rules explained above, there should 
only
          be a reason for a patch version if major problems occur (like security
          issues). In any other case, the Cocoon community expects the 
applications
          to migrate to the new minor version release which should be fairly 
simple.
        </p>
  <p>
          In addition Cocoon has a sandbox repository to test new features.
        </p>
  </div>
      
  <a name="N100DA"></a><a name="reality"></a>
  <h3>Realitiy</h3>
  <div style="margin-left: 0 ; border: 2px">
  <p>
          The above expresses the intentions of the Cocoon community to support 
a 
          release management contract to all the users of the framework.  
However 
          reality observes that the path to hell is paved with good intentions. 
          In case anyone finds clear violation or signs of potential problems 
of these 
          good intentions, please report those to the mailing lists or issue
          tracker so that proper action can be taken (which might be reverting
          some changes and/or assigning a different version number).
        </p>
  <p>
          If you have read this, you might get the impression that updating your
          application from one Cocoon to another one will be very time 
consuming.
          Or that we are acting arbitrarily in deprecating stuff here and there.
        </p>
  <p>
          Of course this is not the case :) Before we introduce new features, 
new
          API we discuss this in great detail, so this should reduce potential
          errors in the design to a minimum. In addition, deprecating stuff is
          also handled with great care. So, in the end, this guide establishes
          rules that detail how we handle such rare situations. It is not a
          free ticket for the Cocoon developers to deprecate/change/remove stuff
          as they want.
        </p>
  </div>
    
  <div class="attribution"></div>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" 
src="skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <!--================= end Content==================-->
  </table>
  </td>
  </tr>
  </table>
  <!--================= end Menu, NavBar, Content ==================-->
  <!--================= start Footer ==================-->
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" 
border="0">
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" 
src="skin/images/spacer.gif" class="spacer"><a 
href="skin/images/label.gif"></a><a href="skin/images/page.gif"></a><a 
href="skin/images/chapter.gif"></a><a 
href="skin/images/chapter_open.gif"></a><a 
href="skin/images/current.gif"></a><a href="/favicon.ico"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font 
size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy;
            2003-2004&nbsp;The Apache Software Foundation. All rights 
reserved.<script type="text/javascript" language="JavaScript"><!--
                document.write(" - "+"Last Published: " + 
document.lastModified);
              //  --></script></font></td>
  </tr>
  <tr>
  <td colspan="2" align="left" bgcolor="#CFDCED" class="logos"></td>
  </tr>
  </table>
  <!--================= end Footer ==================-->
  </body>
  </html>
  
  
  

Reply via email to