Contacts
Toby Dickenson, tdickenson@geminidataloggers.com
Proposal Status
Please record any feedback as Python20MigrationDiscussion
Problems
Python 2.0 has been released. Despite the large jump in version number, this is a fairly
conservative upgrade to the Python language and it should not be too difficult to migrate
Zope to this new version.
We need to decide on the migration path to 2.0.
The priority is getting the next major release of Zope (2.3.0)
be safe to use with either 1.5.2 and 2.0.
Those things that can not be added safely (given the time limits)
should be left to a later revision.
For how long do we maintain the 1.5.2
compatabile branch? This primarily depends on the following issues:
Ensure that python 2.0 does not break anything in the Zope core, and does not expose
any security holes. We need to look at:
Changes to bytecodes and ASTsx in relation to DTML security and
PythonMethodsx (including bytecodehacks)
Ensure that we understand any effects of string methods. (It appears that Zopes new
private-by-default rule takes care of security problems)
Any effects of Python 2.0's garbage collection (including performance; there are some
parameters to tweak).
Ensure that we understand any affects of unicode objects. (Note that these objects are
one of the few that often raise exceptions when converted to an 8-bit string; this
exposes several existing bugs in Zope)
Python 2.0 has several new features that would be very useful in Zope.
Support for unicode strings. This is previously covered by
the proposal at UnicodeSupport, with an implementation at
http://www.zope.org/Members/htrd/wstring. This implementation
is now fairly mature, and I intend including this before 2.3.0.
Support for Python 2.0's garbage collection mechanism.
Cycles involving ExtensionClassx objects can not yet be broken.
(this is a longer term goal)
There is an opportunity to merge some previously forked modules:
cPickle, asyncore, expat.
Zope Products will have issues similar to those affecting the Python core.
Proposed Solution
Create a cvs branch that will build out-of-the-box on Python 2.0,
to allow product developers to prepare for the transition.
Construct a list of potential problem areas. Eliminate the problems.
Merge the branch bekfore 2.3.0
Risk Factors
Deliverables
Documentated migration strategy.
Security review of identified problem-areas.
A branch that builds on 2.0, with support for any new features.
Documentation of the interaction with those new features.
|