I do think pip is pretty conservative about backwards compat other than the 
security related changes I've been doing. 

I think we can find the middle ground that lets things work smoothly here :). I 
was just making sure that we wernt going to have to keep things around for 
really long times like python 4 ;)

On Jul 14, 2013, at 3:35 AM, Nick Coghlan <ncogh...@gmail.com> wrote:

> On 14 July 2013 17:13, Donald Stufft <don...@stufft.io> wrote:
>> I think it would be reasonable for the pip maintainers to be asked to 
>> declare a public API (even if that's "None") using the naming scheme or an 
>> import warning and declare a backwards compatibility policy for pip itself 
>> so that people can know what to expect from pip. I do not however, believe 
>> it is reasonable to bind pip to the same policy that CPython uses nor the 
>> same schedule. (If you weren't suggesting that I apologize).
> 
> The main elements of CPython's backwards compatibility policy that I consider 
> relevant are:
> 
> * Use leading underscores to denote private APIs with no backwards 
> compatibility guarantees
> * Be conservative with deprecating public APIs that aren't fundamentally 
> broken
> * Use DeprecationWarning to give at least one (pip) release notice of an 
> upcoming backwards incompatible change
> 
> We *are* sometimes quite aggressive with deprecation and removal even in the 
> standard library - we removed contextlib.nested from Python 3.2 as a 
> problematic bug magnet well before I came up with the contextlib.ExitStack 
> API as a less error prone replacement in Python 3.3. It's only when it comes 
> to core syntax and builtin behaviour that we're likely to hit issues that 
> simply don't have a sensible deprecation strategy, so we decide we have to 
> live with them indefinitely.
> 
> That said, I think the answer to this discussion also affects the answer to 
> whether or not CPython maintenance releases should update to newer versions 
> of pip: if pip chooses to adopt a faster deprecation cycle than CPython, then 
> our maintenance releases shouldn't bundle updated versions. Instead, they 
> should follow the policy:
> 
> * if this is a new major release, or the first maintenance release to bundle 
> pip, bundle the latest available version of pip
> * otherwise, bundle the same version of pip as the previous release
> 
> This would mean we'd be asking the pip team to help out by providing security 
> releases for the bundled version, so we can get that without breaking the 
> public API that's available by default.
> 
> On the other hand, if the pip team are willing to use long deprecation cycles 
> then we can just bundle the updated versions and not worry about security 
> releases (I'd prefer that, but it only works if the pip team are willing to 
> put up with keeping old APIs around for a couple of years before killing them 
> off once the affected CPython branches go into security fix only mode).
> 
> Cheers,
> Nick.
> 
> -- 
> Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to