@@ -18,7 +18,7 @@ \section{Introduction}
1818}
1919
2020A new release of Python, version 2.0, will be released some time this
21- summer . Beta versions are already available from
21+ autumn . Beta versions are already available from
2222\url {http://www.pythonlabs.com/products/python2.0/}. This article
2323covers the exciting new features in 2.0, highlights some other useful
2424changes, and points out a few incompatible changes that may require
@@ -54,6 +54,92 @@ \section{What About Python 1.6?}
5454described in this document are only in 2.0, because a lot of work was
5555done between May and September.
5656
57+ % ======================================================================
58+ \section {New Development Process }
59+
60+ The most important change in Python 2.0 may not be to the code at all,
61+ but to how Python is developed.
62+
63+ In May of 2000, the Python CVS tree was moved to SourceForge.
64+ Previously, there were roughly 7 or so people who had write access to
65+ the CVS tree, and all patches had to be inspected and checked in by
66+ one of the people on this short list. Obviously, this wasn't very
67+ scalable. By moving the CVS tree to SourceForge, it became possible
68+ to grant write access to more people; as of September 2000 there were
69+ 27 people able to check in changes, a fourfold increase. This makes
70+ possible large-scale changes that wouldn't be attempted if they'd have
71+ to be filtered through the small group of core developers. For
72+ example, one day Peter Schneider-Kamp took it into his head to drop
73+ K\& R C compatibility and convert the C source for Python to ANSI
74+ C. After getting approval on the python-dev mailing list, he launched
75+ into a flurry of checkins that lasted about a week, other developers
76+ joined in to help, and the job was done. If there were only 5 people
77+ with write access, probably that task would have been viewed as
78+ `` nice, but not worth the time and effort needed'' and it wouldn't
79+ never have been done.
80+
81+ SourceForge also provides tools for tracking bug and patch
82+ submissions, and in combination with the public CVS tree, they've
83+ resulted in a remarkable increase in the speed of development.
84+ Patches now get submitted, commented on, revised by people other than
85+ the original submitter, and bounced back and forth between people
86+ until the patch is deemed worth checking in. This didn't come without
87+ a cost: developers now have more e-mail to deal with, more mailing
88+ lists to follow, and special tools had to be written for the new
89+ environment. For example, SourceForge sends default patch and bug
90+ notification e-mail messages that are completely unhelpful, so Ka-Ping
91+ Yee wrote an HTML screen-scraper that sends more useful messages.
92+
93+ The ease of adding code caused a few initial growing pains, such as
94+ code was checked in before it was ready or without getting clear
95+ agreement from the developer group. The approval process that has
96+ emerged is somewhat similar to that used by the Apache group.
97+ Developers can vote +1, +0, -0, or -1 on a patch; +1 and -1 denote
98+ acceptance or rejection, while +0 and -0 mean the developer is mostly
99+ indifferent to the change, though with a slight positive or negative
100+ slant. The most significant change from the Apache model is that
101+ Guido van Rossum, who has Benevolent Dictator For Life status, can
102+ ignore the votes of the other developers and approve or reject a
103+ change, effectively giving him a +Infinity / -Infinity vote.
104+
105+ Producing an actual patch is the last step in adding a new feature,
106+ and is usually easy compared to the earlier task of coming up with a
107+ good design. Discussions of new features can often explode into
108+ lengthy mailing list threads, making the discussion hard to follow,
109+ and no one can read every posting to python-dev. Therefore, a
110+ relatively formal process has been set up to write Python Enhancement
111+ Proposals (PEPs), modelled on the Internet RFC process. PEPs are
112+ draft documents that describe a proposed new feature, and are
113+ continually revised until the community reaches a consensus, either
114+ accepting or rejecting the proposal. Quoting from the introduction to
115+ PEP 1, `` PEP Purpose and Guidelines'' :
116+
117+ \begin {quotation }
118+ PEP stands for Python Enhancement Proposal. A PEP is a design
119+ document providing information to the Python community, or
120+ describing a new feature for Python. The PEP should provide a
121+ concise technical specification of the feature and a rationale for
122+ the feature.
123+
124+ We intend PEPs to be the primary mechanisms for proposing new
125+ features, for collecting community input on an issue, and for
126+ documenting the design decisions that have gone into Python. The
127+ PEP author is responsible for building consensus within the
128+ community and documenting dissenting opinions.
129+ \end {quotation }
130+
131+ Read the rest of PEP 1 for the details of the PEP editorial process,
132+ style, and format. PEPs are kept in the Python CVS tree on
133+ SourceForge, though they're not part of the Python 2.0 distribution,
134+ and are also available in HTML form from
135+ \url {http://python.sourceforge.net/peps/}. As of September 2000,
136+ there are 25 PEPS, ranging from PEP 201, `` Lockstep Iteration'' , to
137+ PEP 225, `` Elementwise/Objectwise Operators'' .
138+
139+ To report bugs or submit patches for Python 2.0, use the bug tracking
140+ and patch manager tools available from the SourceForge project page,
141+ at \url {http://sourceforge.net/projects/python/}.
142+
57143% ======================================================================
58144\section {Unicode }
59145
0 commit comments