On Thu, 15 Aug 2013 11:22:14 +0200, Antoine Pitrou <solipsis@pitrou.net> wrote:
">

(original) (raw)




On Thu, Aug 15, 2013 at 8:29 AM, R. David Murray <rdmurray@bitdance.com> wrote:
On Thu, 15 Aug 2013 11:22:14 +0200, Antoine Pitrou <solipsis@pitrou.net> wrote:

> On Thu, 15 Aug 2013 11:16:20 +0200

> Victor Stinner <victor.stinner@gmail.com> wrote:

> > 2013/8/15 Antoine Pitrou <solipsis@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).