[Zope-dev] Open Letters and Zope 3

Shane Hathaway shane@zope.com
Mon, 03 Dec 2001 16:46:53 -0500


Folks,

There is a lot of exciting development happening in Zope 3, which is 
open to the public in CVS, and it's really an answer to many of the 
concerns raised in the "open letters" in the past few days.

Here are some of the things happening:

- The structure of the Python packages has been redone.  It will be much 
easier to see which packages can be used independently of Zope and which 
are meant for the Zope application.  (There are many packages that can 
be separated already, but it's not easy to figure out.)

- The new component architecture is having a very positive impact.  Deep 
multiple inheritance is a thing of the past.  The Python code is free of 
Zope framework clutter, besides occasional ZODB details.

- There are interfaces for everything from authorization to folders, so 
the API is being documented as it is written.

- ZPublisher has been refactored significantly and renamed to 
"Zope.Publisher".  No more string exceptions, no more "maybe_webdav" 
hacks, no more publishing modules.  Interfaces exist and more are planned.

- The HTTP server has been redone.  It is more optimized and there is a 
cleaner separation of the server (now "Zope.Server") and the publisher, 
making it easier to create alternate front-ends to the publisher (for 
speed).  There are also tuning options.

- There are unit tests for *everything*.

- We're using page templates instead of DTML.

I invite everyone to check out Zope 3X right away.  But before you do, 
read carefully:

We are first creating "Zope 3X", a version of Zope that is not 
compatible with Zope 2.  We are taking off the shackles and blazing 
forward, applying the lessons we learned from Zope 2 and CMF.  Soon we 
will create "Zope 3".  Zope 3 will add Zope 2 backward compatibility.


MINI-FAQ
========

Q: What is Zope 3X?
A: Zope 3X is Zope rebuilt from the ground up, applying the lessons 
learned from Zope 2 and CMF.

Q: What is Zope 3?
A: Zope 3 is Zope 3X plus compatibility with Zope 2 products.

Q: Will Zope 3X be compatible with Zope 2 products?
A: No.

Q: Will Zope 3 be compatible with Zope 2 products?
A: Yes.

Q: Will Zope 3X support DTML?
A: Probably not.

Q: Will Zope 3 support DTML?
A: Yes.

Q: Will Zope 3X be compatible with CMF?
A: No.

Q: Will Zope 3 be compatible with CMF?
A: Very likely, but a lot of the CMF ideas will be folded directly into 
Zope 3.  You might not need CMF anymore.

Q: Are Zope 3X and Zope 3 licensed under the new GPL-compatible ZPL 2.0?
A: Yes.

Q: Why is Zope Corp. doing all this rearchitecting when Zope really 
needs feature XX?
A: To make it easier for you, the developer.  We make the flour, you 
make the cake.  (Zope corp. will create major components also, but the 
best way to expand Zope is to empower developers.)

Q: What is the component architecture?
A: It's similar to other component architectures in that it lets you fit 
small pieces of functionality together.  While Zope 2 has many parts 
welded together with inheritance, Zope 3 will let you take things apart 
and put them together like legos.  See:
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/VisionStatement 


Q: How hard will it be to migrate a product to the component architecture?
A: There are patterns emerging that should make it straightforward and 
much easier than starting from scratch.

Q: Is I18N in the plans?
A: Yes.  It is time to start planning for internationalization.  If this 
is your strength, download and get to know Zope 3X and the component 
architecture wiki, get involved in the community, and please help!

Q: How can I help?
A: If you're interested in helping and you have time, educate yourself 
on the component architecture and Zope 3X then volunteer to assist in 
your particular area of expertise.

Q: Is there a tutorial?
A: Yes!  Look at the /Docs directory in CVS.  Note that it's still in 
development.

Q: When will Zope 3 be ready?
A: I don't really know, but it's moving forward quickly.


INSTRUCTIONS
============

To check out Zope 3X from CVS:

cvs -d :pserver:cvs.zope.org:/cvs-repository co -r Zope-3x-branch Zope3

To check out the tutorial:

cvs -d :pserver:cvs.zope.org:/cvs-repository co -d Tutorial \
   /Docs/ZopeComponentArchitecture/PythonProgrammerTutorial

Zope 3X requires Python 2.2b2.  To compile the extensions, run 
"python2.2 stupid_build.py".  To start the HTTP server on port 8080, 
"python2.2 z3.py" (it's very barebones right now; all the meat is in the 
code.)

To run all unit tests in /bin/bash (over 250 of them!):

PYTHONPATH=lib/python python2.2 utilities/unittestgui \
   Zope.Testing.allZopeTests



Again, this is all quite exciting and I hope you can join the action.

Shane