[Zope-dev] RFC: Proposed backward-compatibility policy

Chris McDonough chrism at plope.com
Wed Oct 27 10:26:41 EDT 2004


This sounds good.  I would add perhaps the concept of a 'smoke test'
application for backwards compatibility testing.

For Zope 2, the smoke test might be Plone or another large app written
on top of it.

Maybe someone involved in Zope 2 release management would volunteer to
run the "smoke test app" unit tests on each proposed Zope 2 release.  If
the unit tests didn't pass, it would block the release until the issue
was resolved.  I think Andreas does this in a sort of ad-hoc way with
Plone now but not sure.

Same for Zope 3, I just don't know what the smoke test app would be.

- C

On Wed, 2004-10-27 at 09:49 -0400, Jim Fulton wrote:
> Below is a proposed policy on backward compatibility for Zope.
> 
> Zope Policy on Backward Compatibility
> =====================================
> 
> Backward compatibility needs to be a very high priority.  Clean
> software also needs to be a high priority.  Unfortunately, these goals
> are often at odds.  Providing backward compatibility support makes
> code more complex and, thus, less maintainable. Going forward, we will
> address these conflicting goals in the following ways;
> 
> 1. During development, alpha testing, and beta testing of new releases,
>     any backward-incompatible change will be considered a bug.  That
>     is, we will make all effort to make sure that each release of Zope
>     is backward compatible with the previous two feature
>     releases.
> 
> 2. Backward compatibility support will be limited. When we make a
>     change that would require a change in software or data, we'll add
>     code to support the old software or data, but we will also add
>     code to generate deprecation warnings when that support code is
>     used.  The deprecation warnings will say specifically when the
>     backward-compatibility support will go away.  This time will
>     usually be expressed as a release number at least two feature
>     releases past the next feature release. (For example, if the next
>     feature release is release 3.1, then the backward compatibility
>     support would not be removed any sooner than release 3.3.)  In
>     other words, we will limit the time extent of backward
>     compatibility support, but we will give plenty of warning.
> 
>     When data changes are involved, we'll provide data conversion tools
>     that will be available before we begin the deprecation process.
> 
> An additional issue is that it is often difficult to figure out if
> subtle features are being used.  (For example, a change in an exception base
> class might affect some client that expected to catch the exception
> based on it's base exception.)  It is very hard for a developer to
> assess whether any applications are relying on a particular feature
> and thus whether backward-compatibility support needs to be provided.
> Often developers will make judgment calls. If they judge wrong, we
> need to catch this with testing.  This leads to a 3rd point:
> 
> 3. It is very important to catch backward compatibility problems
>     during development of new releases.   In particular, it is
>     important to test new Zope releases before they are released in
>     final form.  If a backward-compatibility problem is found before
>     the final release, it will be considered a bug and will be fixed
>     (by adding backward compatibility support) if at all possible
>     before the final release.  After the final release, we may choose
>     not to bother to fix backward-compatibility problems.  Consumers of
>     Zope have a right to backward compatibility, but they also have a
>     responsibility to test Zope against their applications during the
>     beta release cycle (or sooner) to make sure their applications
>     work.
> 
> 
> Questions? Thoughts?
> 
> Jim
> 



More information about the Zope-Dev mailing list