Author: hwright
Date: Tue Jun 28 02:46:36 2011
New Revision: 1140406

URL: http://svn.apache.org/viewvc?rev=1140406&view=rev
Log:
Release docs: Move the compatibility text into its own section, and update the
text slightly (with references to the API errata).

* publish/docs/community-guide/releasing.part.html
  (release-numbering): Adjust section head, remove compat text.
  (release-compat): New.

Modified:
    subversion/site/publish/docs/community-guide/releasing.part.html

Modified: subversion/site/publish/docs/community-guide/releasing.part.html
URL: 
http://svn.apache.org/viewvc/subversion/site/publish/docs/community-guide/releasing.part.html?rev=1140406&r1=1140405&r2=1140406&view=diff
==============================================================================
--- subversion/site/publish/docs/community-guide/releasing.part.html (original)
+++ subversion/site/publish/docs/community-guide/releasing.part.html Tue Jun 28 
02:46:36 2011
@@ -34,103 +34,14 @@ information.</p>
 
 
 <div class="h3" id="release-numbering">
-<h3>Release numbering and compatibility
+<h3>Release numbering
   <a class="sectionlink" href="<!--#echo var="GUIDE_RELEASING_PAGE" 
-->#release-numbering"
     title="Link to this section">&para;</a>
 </h3>
 
-<p>Subversion uses "MAJOR.MINOR.PATCH" release numbers, with the same
-guidelines as APR (see <a href="http://apr.apache.org/versioning.html";
->http://apr.apache.org/versioning.html</a>), plus a few extensions,
-described later.  The general idea is:</p>
-
-<ol>
-
-<li><p>Upgrading/downgrading between different patch releases in the
-       same MAJOR.MINOR line never breaks code.  It may cause bugfixes
-       to disappear/reappear, but API signatures and semantics remain
-       the same.  (Of course, the semantics may change in the trivial
-       ways appropriate for bugfixes, just not in ways that would
-       force adjustments in calling code.)</p>
-</li>
-
-<li><p>Upgrading to a new minor release in the same major line may
-       cause new APIs to appear, but not remove any APIs.  Any code
-       written to the old minor number will work with any later minor
-       number in that line.  However, downgrading afterwards may not
-       work, if new code has been written that takes advantage of the
-       new APIs.</p>
-</li>
-
-<li><p>When the major number changes, all bets are off.  This is the
-       only opportunity for a full reset of the APIs, and while we try
-       not to gratuitously remove interfaces, we will use it to clean
-       house a bit.</p>
-</li>
-
-</ol>
-
-<p>Subversion extends the APR guidelines to cover client/server
-compatibility questions:</p>
-
-<ol>
-
-<li><p>A patch or minor number release of a server (or client) never
-       breaks compatibility with a client (or server) in the same
-       major line.  However, new features offered by the release might
-       be unsupported without a corresponding upgrade to the other
-       side of the connection.  For updating ra_svn code specifically,
-       please observe these principles:</p>
-
-    <ol>
-
-    <li><p>Fields can be added to any tuple; old clients will simply
-           ignore them.  (Right now, the marshalling implementation
-           does not let you put number or boolean values in the
-           optional part of a tuple, but changing that will not affect
-           the protocol.)</p>
-   
-        <p>We can use this mechanism when information is added to an
-           API call.</p>
-    </li>
-   
-    <li><p>At connection establishment time, clients and servers exchange
-           a list of capability keywords.</p>
-   
-         <p>We can use this mechanism for more complicated changes,
-           like introducing pipelining or removing information from
-           API calls.</p>
-    </li>
-   
-    <li><p>New commands can be added; trying to use an unsupported
-           command will result in an error which can be checked and dealt
-           with.</p>
-    </li>
-   
-    <li><p>The protocol version number can be bumped to allow graceful
-           refusal of old clients or servers, or to allow a client or
-           server to detect when it has to do things the old way.</p>
- 
-        <p>This mechanism is a last resort, to be used when capability
-           keywords would be too hard to manage.</p>
-    </li>
-
-    </ol>
-</li>
-
-<li><p>Working copy and repository formats are backward- and
-       forward-compatible for all patch releases in the same minor
-       series.  They are forward-compatible for all minor releases in
-       the same major series; however, a minor release is allowed to
-       make a working copy or repository that doesn't work with
-       previous minor releases, where "make" could mean "upgrade" as
-       well as "create".</p>
-</li>
-
-</ol>
-
-<p>Subversion does not use the "even==stable, odd==unstable"
-convention; any unqualified triplet indicates a stable release:</p>
+<p>Subversion uses "MAJOR.MINOR.PATCH" release numbers. We do not use the
+"even==stable, odd==unstable" convention; any unqualified triplet indicates
+a stable release:</p>
 
 <pre>
    1.0.1  --&gt;  first stable patch release of 1.0
@@ -252,6 +163,116 @@ old name must be tossed and the next nam
 
 </div> <!-- release-numbering -->
 
+<div class="h3" id="release-compat">
+<h3>Inter-release compatibility
+  <a class="sectionlink" href="<!--#echo var="GUIDE_RELEASING_PAGE" 
-->#release-compat"
+    title="Link to this section">&para;</a>
+</h3>
+
+<p>Subversion follows strict compatibility, with the same
+guidelines as APR (see <a href="http://apr.apache.org/versioning.html";
+>http://apr.apache.org/versioning.html</a>), plus a few extensions,
+described later.  These guidelines are in place to ensure various forms of
+client/server interoperability, and make sure users have a clear upgrade
+path between MAJOR.MINOR Subversion releases.</p>
+
+<p>Compatibility can span a number of axis: everything from APIs and ABIs to
+command line output formats.  We try to balance to need to modify the existing
+architecture to support new features, while still supporting current users
+to the greatest extent possible.  The general idea is:</p>
+
+<ol>
+
+<li><p>Upgrading/downgrading between different patch releases in the
+       same MAJOR.MINOR line never breaks code.  It may cause bugfixes
+       to disappear/reappear, but API signatures and semantics remain
+       the same.  (Of course, the semantics may change in the trivial
+       ways appropriate for bugfixes, just not in ways that would
+       force adjustments in calling code.)</p>
+</li>
+
+<li><p>Upgrading to a new minor release in the same major line may
+       cause new APIs to appear, but not remove any APIs.  Any code
+       written to the old minor number will work with any later minor
+       number in that line.  However, downgrading afterwards may not
+       work, if new code has been written that takes advantage of the
+       new APIs.</p>
+
+    <p>(Occasionally, bugs are found which require the behavior of old APIs
+       to be modified slightly.  This typically only manifests itself in
+       various corner cases and other uncommon area.  These changes are
+       documented as <a 
href="http://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/";>API 
errata</a> for each MAJOR.MINOR release.)</p>
+</li>
+
+<li><p>When the major number changes, all bets are off.  This is the
+       only opportunity for a full reset of the APIs, and while we try
+       not to gratuitously remove interfaces, we will use it to clean
+       house a bit.</p>
+</li>
+
+</ol>
+
+<p>Subversion extends the APR guidelines to cover client/server
+compatibility questions:</p>
+
+<ol>
+
+<li><p>A patch or minor number release of a server (or client) never
+       breaks compatibility with a client (or server) in the same
+       major line.  However, new features offered by the release might
+       be unsupported without a corresponding upgrade to the other
+       side of the connection.  For updating ra_svn code specifically,
+       please observe these principles:</p>
+
+    <ol>
+
+    <li><p>Fields can be added to any tuple; old clients will simply
+           ignore them.  (Right now, the marshalling implementation
+           does not let you put number or boolean values in the
+           optional part of a tuple, but changing that will not affect
+           the protocol.)</p>
+   
+        <p>We can use this mechanism when information is added to an
+           API call.</p>
+    </li>
+   
+    <li><p>At connection establishment time, clients and servers exchange
+           a list of capability keywords.</p>
+   
+         <p>We can use this mechanism for more complicated changes,
+           like introducing pipelining or removing information from
+           API calls.</p>
+    </li>
+   
+    <li><p>New commands can be added; trying to use an unsupported
+           command will result in an error which can be checked and dealt
+           with.</p>
+    </li>
+   
+    <li><p>The protocol version number can be bumped to allow graceful
+           refusal of old clients or servers, or to allow a client or
+           server to detect when it has to do things the old way.</p>
+ 
+        <p>This mechanism is a last resort, to be used when capability
+           keywords would be too hard to manage.</p>
+    </li>
+
+    </ol>
+</li>
+
+<li><p>Working copy and repository formats are backward- and
+       forward-compatible for all patch releases in the same minor
+       series.  They are forward-compatible for all minor releases in
+       the same major series; however, a minor release is allowed to
+       make a working copy or repository that doesn't work with
+       previous minor releases, where "make" could mean "upgrade" as
+       well as "create".</p>
+</li>
+
+</ol>
+
+</div> <!-- release-compat -->
+
 <div class="h3" id="deprecation">
 <h3>Deprecation
   <a class="sectionlink" href="<!--#echo var="GUIDE_RELEASING_PAGE" 
-->#deprecation"


Reply via email to