[Python-Dev] draft pep: backwards compatibility

Michael Foord fuzzyman at voidspace.org.uk
Fri Jun 19 13:16:30 CEST 2009


Benjamin Peterson wrote:
> Backwards compatibility seems to be an issue that arises a lot here. I
> think we all have an idea of it is, but we need some hard place to
> point to. So here's my attempt:
>   

Should this PEP include a note about features which require new syntax, 
particularly  new keywords?

The policy (AFAICT) is that if new keywords are created they are enabled 
with a future import (with a warning?) in the version they are 
introduced and then enabled by default in the next version.

All the best,

Michael Foord

>
> PEP: 387
> Title: Backwards Compatibility Policy
> Version: $Revision$
> Last-Modified: $Date$
> Author: Benjamin Peterson <benjamin at python.org>
> Status: Draft
> Type: Process
> Content-Type: text/x-rst
> Created: 18-Jun-2009
>
>
> Abstract
> ========
>
> This PEP outlines Python's backwards compatibility policy.
>
>
> Rationale
> =========
>
> As one of the most used programming languages today [#tiobe]_, the Python core
> language and its standard library play a critcal role in thousands of
> applications and libraries.  This is fantastic; it is probably one of a language
> designer's most wishful dreams.  However, it means the development team must be
> very careful not to break this existing 3rd party code with new releases.
>
>
> Backwards Compatibility Rules
> =============================
>
> This policy applys to all public APIs.  These include the C-API, the standard
> library, and the core language including syntax and operation as defined by the
> reference manual.
>
> This is the basic policy for backwards compatibility:
>
> * The behavior of an API *must* not change between any two consecutive releases.
>
> * A feature cannot be removed without notice between any two consecutive
>   releases.
>
> * Addition of a feature which breaks 3rd party libraries or applications should
>   have a large benefit to breakage ratio, and/or the incompatibility should be
>   trival to fix in broken code.
>
>
> Making Incompatible Changes
> ===========================
>
> It's a fact: design mistakes happen.  Thus it is important to be able to change
> APIs or remove misguided features.  This is accomplished through a gradual
> process over several releases:
>
> 1. Discuss the change.  Depending on the size of the incompatibility, this could
>    be on the bug tracker, python-dev, python-list, or the appropriate SIG.  A
>    PEP or similar document may be written.  Hopefully users of the affected API
>    will pipe up to comment.
>
> 2. Add a warning [#warnings_]_.  If behavior is changing, a the API may gain a
>    new function or method to perform the new behavior; old usage should raise
>    the warning.  If an API is being removed, simply warn whenever it is entered.
>    DeprecationWarning is the usual warning category to use, but
>    PendingDeprecationWarning may be used in special cases were the old and new
>    versions of the API will coexist for many releases.
>
> 3. Wait for a release.
>
> 4. See if there's any feedback.  Users not involved in the original discussions
>    may comment now after seeing the warning.  Perhaps reconsider.
>
> 5. The behavior change or feature removal may now be made default or permanent
>    in the next release.  Remove the old version and warning.
>
>
> References
> ==========
>
> .. [#tiobe] TIOBE Programming Community Index
>
>    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
>
> .. [#warnings] The warnings module
>
>    http://docs.python.org/library/warnings.html
>
>
> Copyright
> =========
>
> This document has been placed in the public domain.
>
>
> 
> ..
>    Local Variables:
>    mode: indented-text
>    indent-tabs-mode: nil
>    sentence-end-double-space: t
>    fill-column: 70
>    coding: utf-8
>    End:
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk
>   


-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog




More information about the Python-Dev mailing list