[Python-Dev] PEP 466: Proposed policy change for handling network security enhancements

Terry Reedy tjreedy at udel.edu
Mon Mar 24 00:54:20 CET 2014


On 3/23/2014 9:00 AM, Skip Montanaro wrote:
> On Sat, Mar 22, 2014 at 11:31 PM, Terry Reedy <tjreedy at udel.edu> wrote:
>> The download page for the final 2.7.z maintenance release could say
>> something like "We recommend that you move to the most recent Python 3
>> version if at all possible. If you cannot do that and you want to use Python
>> to run a server on the public internet, we urge you to instead use the
>> latest version of ServerPython 2.7.1s. This series is based on Python 2.7.z
>> but has been and will continue to be enhanced with security features
>> backported from Python 3."
>
> I'm unclear how this would be better than just biting the bullet and
> making a 2.8 release.

The first step is to 'bite the bullet' and admit that the proposal is 
for a fork of 2.7. (Martin use that word today and pointed out the 
analogy with Stackless Python.) I decided not to suggest '2.8' because 
a) we said there would be no 2.8 (though that could be reversed); b) 
once we say '2.8', there would be a mountain of proposals to change this 
and that; c) people will expect the change from 2.7 to 2.8 to be 
something like previous deltas, but it will not be; d) the security fork 
might have a change that would normally require a deprecation period, 
but there might not be; and e) once a 2.8 were released, it too would be 
closed to enhancements, so that 2.9, 2.10, 2.11.. would eventually be 
needed. I mentioned this as one possible solution, but one I do not 
like. In summary, "2.8 is to 2.7 as 2.7 is to 2.6, etcetera" would not 
be true, so lets not pretend or mislead people that is would be.

The fork series, not being a regular CPython series, would not be 
subject to the regular CPython rule of needing a new minor version 
number for each set of enhancements and spacing the sets 18 to 24 months 
apart.

 > On the one hand, the 2.7.x number suggests
> (based on the existing release protocol) that it should be a drop-in
> replacement for earlier 2.7 micro releases.

No CPython x.y.z has a two-digit number for z. I know that this is a 
subtle hint, which is why I also propose a new name. I do not think that 
anyone expects Stackless Python 2.7 to be an exact drop-in replacement 
for any 2.7.z, although it is for code that is not affected by its 
specialized alterations.

 > On the other hand, calling
> it something like "ServerPython" implies that it's not necessary for
> network client applications, when, if I read the PEP correctly, it
> most certainly would be.

Consider 'ServerPython' a placeholder for a better name. In my 
penultimate sentence "There are still details to be filled in or 
altered," I was specifically thinking of this.

> If you create a 2.8 release which is restricted to just the topic
> areas of the PEP (that is, no other stuff backported from 3.x, no
> requirement to add other non-security bug fixes, etc), the incremented
> minor version number tells people that a bit of extra care is required
> to upgrade. The lack of change in the code base outside the security
> apparatus should make update pretty trivial for most every
> non-networked application. If the PEP or something like it is
> approved, the work is still going to have to be done, no matter what
> you call it. Why not be transparent about it?

We agree on being transparent, even if we have different ideas on 
exactly what needs to be made clear.

-- 
Terry Jan Reedy



More information about the Python-Dev mailing list