[z3-five] RFC: The future of Products.Five

Philipp von Weitershausen philipp at weitershausen.de
Mon Oct 30 00:01:33 CET 2006


Problem
-------

A lot of us are trying to backport or create additional Zope 3-related 
technology in Zope 2. Whit Morriss, for instance, needs integer IDs in 
Five, the Plone project is heavily using local components now and will 
sooner or later need a more sophisticated site manager implementation 
than PersistentComponents. There's also the need for customizing global 
template-based views ("Customerize" button), something that doesn't even 
exist in Zope 3 yet.

I don't think all of these things should go into the Products.Five 
anymore, for several reasons:

* We're trying to get away from writing products and into writing Python 
packages that can e.g. be installed as eggs.

* Some of these things are not essential to bringing Zope 3 technology 
into Zope 2 (e.g. like the intid stuff), so it may be questionable 
whether it should ship with Zope 2/Five out of the box.

* Starting with Zope 2.10, Products.Five is actually getting smaller 
which is a trend I would like to continue to see. And if I manage to 
land my Acquisition refactoring in 2.11, Products.Five will pretty soon 
decrease in size tremendously, and there are also other things in 
Products.Five that should really be in Zope 2 proper (e.g. OFS).


Proposal
--------

So, what I'm proposing is to feature-freeze the Products.Five package 
and just basically keep making it work for future Zope versions. Five 
1.6 (current trunk) will work for Zope 2.11 (current trunk), Five 1.7 
for 2.12, etc. So, essentially there won't be Five feature releases in 
between anymore, which means we can put Products.Five into the 
Zope/lib/python/Products proper.

New stuff will be added in standard Python packages that may or may not 
ship with Zope 2, Plone or whoever needs them. I personally almost don't 
care, it's really only about defining the right egg dependencies in 
Plone 3.0 or Zope 2.11, I would assume (see also 'Risks' below). This 
seems like the release manager's job who would include stuff based on 
requests from the community and package maintainer's recommendations.

The namespace for these packages should probably be 'five', as we 
already have five.intid and five.customerize and we are, after all, the 
Five project.


Advantages
----------

* We'll be able to use stuff we get for Python packages for free, such 
as installation via eggs, Cheeseshop presence and much less majyck for 
initialization.

* Stuff that we create as part of the Five project does not necessarily 
have to end up in Zope 2. Currently, stuff added to Products.Five 
eventually always ends up in some Zope 2 release which means we'll have 
to maintain it forever, no matter how crappy it turns out to be (e.g. 
Products.Five.site).

* Development of certain components can move much faster than even Five. 
New things like five.intid or five.customerize can be experimented with 
and already be in the right place if they turn out to be stable. If not, 
they won't harm Products.Five, either. Individual packages rather than 
one big one also reduces the amount of work that has to be done by the 
Five release manager (IOW my work ;)).


Risks
-----

* If five.* packages need ZCML config (and I know some will), they will 
either have to be included the Zope 3 way (site.zcml or package-includes 
slug in your instance's 'etc' directory), or we need to come up with an 
approach that Zope 2 people are more comfortable with. I think an egg 
entry point would be a compelling solution. There are plans to do this 
in Zope 3 even so that you can provide configuration from Python instead 
of ZCML. I expect this to land in Zope 3.4 which means we should be able 
to take advantage of it in 2.11.

* It is unclear to me at this point what Zope 2's egg story will be. I 
*hope* that 2.11 will get the same egg story as the Zope 3.4 that ships 
with it does, though noone has talked about eggifying Zope 2 yet. We 
should probably do that.


Comments welcome :)



More information about the z3-five mailing list