The new PEP 3000, describing some meta-meta-issues.

This commit is contained in:
Guido van Rossum 2006-04-05 20:06:03 +00:00
parent b99673dd63
commit de237d3e7a
1 changed files with 105 additions and 0 deletions

105
pep-3000.txt Normal file
View File

@ -0,0 +1,105 @@
PEP: 3000
Title: Python 3000
Version: $Revision$
Last-Modified: $Date$
Author: Guido van Rossum <guido@python.org>
Status: Active
Type: Process
Content-Type: text/x-rst
Created: 05-Apr-2006
Post-History:
Abstract
========
This PEP sets guidelines for Python 3000 development. Ideally, we
first agree on the process, and start discussing features only after
the process has been decided and specified. In practice, we'll be
discussing features and process simultaneously; often the debate about
a particular feature will prompt a process discussion.
Naming
======
Python 3000, Python 3.0 and Py3K are all names for the same thing.
The project is called Python 3000, or abbreviated to Py3K. The actual
Python binary, once it is released, will be named Python 3.0.
PEP Numbering
=============
Python 3000 PEPs are numbered starting at PEP 3000. PEPs 3000-3099
are meta-PEPs -- these can be either process or informational PEPs.
PPEs 3100-3999 are feature PEPs. PEP 3000 itself (this PEP) is
special; it is the meta-PEP for Python 3000 meta-PEPs (IOW it describe
the process to define processes). PEP 3100 is also special; it's a
laundry list of features that were selected for (hopeful) inclusion in
Python 3000 before we started the Python 3000 process for real. PEP
3099, finally, is a list of features that will *not* change.
Timeline
========
We need a meta-PEP for the Python 3000 timeline. At this moment, I
hope to have a first alpha release out sometime in 2007; it may take
another year after that (or more) before the first proper release,
named Python 3.0.
I expect that there will be parallel Python 2.x and 3.x releases for
some time; the Python 2.x releases will continue for a longer time
than the traditional 2.x.y bugfix releases. Typically, we stop
releasing bugfix versions for 2.x once version 2.(x+1) has been
released. But I expect there to be at least one or two new 2.x
releases even after 3.0 (final) has been released, probably well into
3.1 or 3.2. This will to some extend depend on community demand for
continued 2.x support, acceptance and stability of 3.0, and volunteer
stamina.
It's quite possible that Python 3.1 and 3.2 will be released much
sooner after 3.0 than has been customary for the 2.x series. The 3.x
release pattern will stabilize once the community is happy with 3.x.
Compatibility and Transition
============================
We need a meta-PEP to describe the compatibility requirements. Python
3000 will break backwards compatibility. There is no requirement that
Python 2.9 code will run unmodified on Python 3.0. I'm not sure
whether it is reasonable to require that Python 2.x code can be
mechanically translated to equivalent Python 3.0 code; Python's
dynamic typing combined with the plans to change the semantics of
certain methods of dictionaries, for example, would make this task
really hard. However, it would be great if there was some tool that
did at least an 80% job of translation, pointing out areas where it
wasn't sure using comments or warnings. Perhaps such a tool could be
based on something like Pychecker.
Meta-Contributions
==================
Suggestions for additional text for this PEP are gracefully accepted
by the author. Draft meta-PEPs for the topics above and additional
topics are even more welcome!
Copyright
=========
This document has been placed in the public domain.
..
Local Variables:
mode: indented-text
indent-tabs-mode: nil
sentence-end-double-space: t
fill-column: 70
coding: utf-8
End: