[Python-Dev] When to remove deprecated stuff (was: Deprecating the formatter module)

Brett Cannon brett at python.org
Thu Aug 15 14:38:50 CEST 2013

On Thu, Aug 15, 2013 at 8:29 AM, R. David Murray <rdmurray at bitdance.com>wrote:

> On Thu, 15 Aug 2013 11:22:14 +0200, Antoine Pitrou <solipsis at pitrou.net>
> wrote:
> > On Thu, 15 Aug 2013 11:16:20 +0200
> > Victor Stinner <victor.stinner at gmail.com> wrote:
> > > 2013/8/15 Antoine Pitrou <solipsis at pitrou.net>:
> > > > We don't have any substantial change in store for an eventual "Python
> > > > 4", so it's quite a remote hypothesis right now.
> > >
> > > I prefered the transition between Linux 2 and Linux 3 (no major
> > > change, just a "normal" release except the version), rather than the
> > > transition between KDE 3 and KDE 4 (in short, everything was broken,
> > > the desktop was not usable).
> > >
> > > I prefer to not start a list of things that we will make the
> > > transition from Python 3 to Python 4 harder. Can't we do small changes
> > > between each Python release, even between major versions?
> >
> > That's exactly what I'm saying.
> > But some changes cannot be made without breakage, e.g. the unicode
> > transition. Then it makes sense to bundle all breaking changes in a
> > single version change.
> A number of us (I don't know how many) have clearly been thinking about
> "Python 4" as the time when we remove cruft.  This will not cause any
> backward compatibility issues for anyone who has paid heed to the
> deprecation warnings, but will for those who haven't.  The question
> then becomes, is it better to "bundle" these removals into the
> Python 4 release, or do them incrementally?
> If we are going to do them incrementally we should make that decision
> soonish, so that we don't end up having a whole bunch happen at once
> and defeat the (theoretical) purpose of doing them incrementally.
> (I say theoretical because what is the purpose?  To spread out the
> breakage pain over multiple releases, so that every release breaks
> something?)

Incremental has one benefit, and that's we get to completely stop caring
sooner. =) By completely removing the module sooner lessens the chance of
errant bug reports, etc.

Doing the removal en-masse at massive release boundaries is that
compatibility for the stdlib can be stated as "Python 3" instead of "Python
3.3 and older" for those that continue to rely on the older modules.

I also don't know if we would want to extend this to intra-module objects
as well (e.g. classes). In which case we would need to clearly state that
anything deprecated is considered dead and under active bitrot and so do
not expect it to necessarily work with the rest of the module (e.g. new
APIs to work with the deprecated ones).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130815/affa2b1b/attachment.html>

More information about the Python-Dev mailing list