jvanzyl     02/03/24 09:48:28

  Added:       xdocs    deprecation.xml
  Log:
  Adding jon's original deprecation doc as a guide to be used by all
  projects using maven.
  
  Revision  Changes    Path
  1.1                  jakarta-turbine-maven/xdocs/deprecation.xml
  
  Index: deprecation.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <document>
    <properties>
      <title>Deprecation Policy</title>
      <author email="[EMAIL PROTECTED]">Jon S. Stevens</author>
     </properties>
  
     <body>
  
   <section name="Deprecation Policy">
   <p>
   In order for people to be comfortable with development of code based on
   your project and not have to constantly worry about the rug being pulled out
   from underneath them, we have instituted the following policy. Our goal
   is to take this matter as an extremely serious practice. 
   </p>
   </section>
   
   <section name="The Rules">
  <p>
  <ol>
  <li>
  <strong>ALL</strong> existing class and method modification needs to go
  through a deprecation phase. We realize that this may make some of the
  API code look a bit ugly when you look at the source code, but this is a
  MUST have. It is recommend that developers who deprecate methods move
  them to the bottom of the .java file.
  </li>
  
  <li>
  <p>
  The amount of time between deprecation and removal must be at least one
  release of your project. It could be more than one version release before the
  deprecated item is removed, but it cannot be less than one version
  release. In other words, we can deprecate something in 2.1 and remove it
  in the release of 2.1.1. The amount of time between 2.1 and 2.1.1 could
  be measured in days, not months. Discussion will occur on the mailing
  list pertaining to the real number of versions between deprecation and
  removal. You will have a chance to express your concerns and we will
  take them into consideration. Most likely a major feature change will
  not be removed between a 2.1 and 2.1.1 release. Instead, we would wait
  until 2.2 to remove the deprecated items in that case.
  </p>
  
  <p>
  The reason why we do not feel that time is of importance is because 6
  months may not be a long enough time for a project to keep up and 2
  weeks might be fine for another project. By focusing on deprecation
  through releases, people can choose to code against a specific version
  of your project and feel comfortable that their code will compile for at
  least one released version. This also gives people the chance to compile
  against various previous releases to do incremental upgrades and find
  out what will break in the next release.
  </p>
  </li>
  
  <li>
  Any time a method is deprecated, notification <strong>MUST</strong> be
  sent to the developer mailing list documenting the methods that have
  been deprecated as well as the alternative use. This will allow people 
  to search the archives and find out when and why a method was deprecated
  as well as the procedure for upgrading to the latest methodology.
  </li>
  
  <li>
  Items that are not Java code related and cannot be deprecated (such as
  property key changes and DTD modifications) must be documented on the
  mailing list.
  </li>
  
  <li>
  All documentation must be updated at the time of modification to reflect
  the latest status of the code.
  </li>
  
  <li>
  Any patches or commits that do not follow these rules will be rejected
  and it is up to the person who has either checked in the modifications
  or sent the patch to submit a new patch, fix the problem or back the
  code out of CVS.
  </li>
  
  </ol>
  
  </p>
  
   </section>
   <section name="Developers: Suggestions for following The Rules">
   <p>
   When changing the signature of a public or protected method or class,
   this has the potential of breaking someones code who depends on the
   method or class. Since we are developing Open Source software, there is
   absolutely no way we can tell if someone is using our code or not.
   Therefore, in order to minimize the effect of changes, it is possible
   to use the concept of deprecation. When working on code, keep in mind
   the following guidelines:
   </p>
   
   <p>
      <ul>
          <li>
          When modifing an existing public or protected method or class
          first mark the existing method as deprecated and create a new
          one to replace the old one.
          </li>
          <li>
          Do not remove any public or protected classes/interfaces that
          have any chance of being used outside of the application.
          Instead, mark them as deprecated.
          </li>
          <li>
          When migrating code from one package to another, deprecate the
          old package and then have the old code reference the new code as
          a thin temporary wrapper. The deprecation tells people that the
          wrapper will be going away at some point in the future.
          </li>
          <li>
          Changes to configuration files needs to be well documented so
          that people can have a laundry list of foo->bar conversions.
          </li>
          <li>
          When changing a database schema, make sure to provide ALTER
          TABLE statements to modify the schema so that people can convert
          their existing databases easily.
          </li>
      </ul>
   </p>
   </section>
  
   </body>
  </document>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to