On Thu, 27 Aug 2015 at 14:39 Yury Selivanov <yselivanov.ml@gmail.com> wrote:

On 2015-08-27 5:31 PM, Yury Selivanov wrote:
> On 2015-08-27 5:24 PM, Brett Cannon wrote:
>>
>>     My proposal is to amend PEP 411 with two levels of provisional
>>     packages:
>>
>>     Level 1: Backwards incompatible changes might be introduced in point
>>     releases.
>>
>>     Level 2: Only backwards compatible changes can be introduced in
>>     new point
>>     releases.
>>
>>
>> How is this any different from the normal compatibility promise we
>> have for any non-provisional code in the stdlib?
>>
>> And by point release I assume you mean a new minor release, e.g. 3.5
>> -> 3.6.
>
> Right, my mistake, I indeed meant minor releases.
>
> The difference is that right now we don't introduce new features
> (regardless of backwards compatibility promises) for any
> non-provisional code in minor releases, we can only do bug fixes.
>
> My proposal is to enable asyncio receiving new strictly backwards
> compatible APIs/features (and bug fixes too, of course) in minor
> releases (3.5.x).
>

Turns out I was lost in terminology :)

Considering that Python versioning is defined as major.minor.micro, I'll
rephrase the proposal:

Level 1: Backwards incompatible changes might be introduced in new
Python releases (including micro releases)

Level 2: Only backwards compatible changes (new APIs including) can be
introduced in micro releases.

In that case I don't think it's a good idea for something that has widespread use to get new APIs in a micro release; I lived the 2.2.1/boolean event and I don't want to go through that again. If a module is used enough to warrant not breaking backwards-compatibility then it warrants not being provisional and being like any other module.