[stdlib-sig] standardizing the deprecation policy (and how noisy they are)

Ben Finney ben+python at benfinney.id.au
Sun Nov 8 23:43:19 CET 2009

Guido van Rossum <guido at python.org> writes:

> On Sun, Nov 8, 2009 at 1:35 PM, Michael Foord <michael at voidspace.org.uk> wrote:
> > Almost no-one is ever going to run Python with PendingDeprecation
> > warnings switched on, so there should be at least one 'noisy'
> > release in my opinion.
> I disagree. The -3 option is an example of a better approach: silent
> by default, warnings enabled by a command line flag. If we can trust
> developers to use -3 to check for Py3k incompatibilities, we should
> also be able to trust them to check for deprecation warnings
> explicitly.

That doesn't seem to follow. The Python 2 → Python 3 transition has
received a *huge* amount of attention (in the Python world), to the
point which pretty much the *only* thing many people know about Python 3
is “it breaks backward compatibility”. So it's not surprising that
people are explicitly looking for ways to tell whether their code will
break in the transition, and consequently many people using the ‘-3’
flag. I think this is a special case.

A transition between minor versions of Python, on the other hand, does
not inherently have the same clanging alarm bell associated with it:
indeed, by contrast with Python 2 → Python 3, the message is that the
upgrade from Python N.M → Python N.M+1 will be a *compatible* upgrade. I
would expect consequently far fewer developers go actively looking for
compatibility problems.

> (Another argument to think about: if you download and install some 3rd
> party code, deprecation warnings about that code are *only noise*
> since they are not yours to fix. Warnings in a dynamic language work
> very different than warnings in a compiled language.)

Right, so the users can then pressure the third party to fix their code
before it stops working altogether in a future version. When the user
complains to the Python community, we can publicly shame the third party
into testing and declaring their supported Python versions.

After all, they only need to see whether it runs without warnings; they
don't even need to remember to turn on any special flags.

 \           “Let others praise ancient times; I am glad I was born in |
  `\                                      these.” —Ovid (43 BCE–18 CE) |
_o__)                                                                  |
Ben Finney

More information about the stdlib-sig mailing list