On 2020-02-03 12:55, Thomas Wouters wrote:


On Mon, Feb 3, 2020 at 10:53 AM Petr Viktorin <encu...@gmail.com <mailto:encu...@gmail.com>> wrote:

    On 2020-01-31 19:47, Mike Miller wrote:
     >
     > On 2020-01-23 07:20, Victor Stinner wrote:
     >  > Python 3.9 introduces many small incompatible changes which
    broke tons
     >
     >
     > There's a well-known and established way of signaling breaking
    changes
     > in software platforms—it is to increment the major version number.
     >
     > Rather than debating the merits of breaking code on 3.9 or 3.10,
     > wouldn't it make more sense to do it in a Python 4.0 instead?  Well,
     > either of these strategies sound logical to me:
     >
     > - Python 4.0 with removal of all of the Python 3-era deprecations
     > - Continuing Python 3.1X with no breaks
     >
     > In other words, we should keep compatibility, or not.  In any
    case, from
     > the looks of it these will be tiny breaks compared to the Unicode
     > transition.

    The Unicode transition also looked very small back when 3.0 was planned.
    It only takes one such not-so-little thing to make a big breaking
    release like 3.0. And even if all the changes were little, I wouldn't
    want to inflict 10 years of papercuts at once.


I agree with the sentiment that gradual deprecations are more easily managed, this statement about Python 3.0 is not true. The unicode transition was never thought to be small, and that's *why* 3.0 was such a big change.

Alright, "very small" is an overstatement. But it did seem much smaller than it turned out to be. https://docs.python.org/3.0/whatsnew/3.0.html lists it as the last of the big breaking changes, while most of the porting efforts were spent on it.


We knew it was going to break everything, so we took the opportunity to break more things, like the behaviour of indexing bytestrings. (Bytestrings were even going to be *mutable* for a while.) I think we can all agree that it was a mistake, and that's certainly something we don't want to repeat: even if we defer actual removal of features for a x.0.0 release, it must not become carte blanche for breaking things. >

    When the changes are rolled out gradually across minor releases, those
    that cause unforeseen trouble in real-world code can be identified in
    the alphas/betas, and rethought/reverted if necessary.


That's also the case if things are (loudly) deprecated *but not removed* until a x.0.0 release. The replacement would already be in use for years before the old way would go away.

I fear that this is only so if no unexpected issues come up.
If we do a loud deprecation, how can we be sure we did it right?




    Ethan Furman wrote:
     > I've gotta say, I like that plan.  Instead of going to x.10, go
    to x+1.0.  Every ten years we bump the major version and get rid of
    all the deprecations.

    I don't. I hope the 10-year (and counting) transition from Python 2 to
    Python 3 will not become a tradition.
    I'd rather iterate on making removals less drastic (e.g. by making the
    DeprecationWarnings more visible). Iterate with a feedback loop, rather
    than do a one-time change and hope that everything goes well.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/X5RBXEEB5BFPXGGGT2MTG4KZL3OBXQFD/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to