[Zope] RFC: Proposed backward-compatibility policy

Jim Fulton jim at zope.com
Wed Oct 27 10:09:00 EDT 2004


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

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org


More information about the Zope mailing list