CMF 2.0 Release Update
tl;dr
I'd like to review the current status of a number of the CMF 2.0 roadmap items, and ask for feedback from the community on how they fit into a near-term release of a beta for CMF 2.0. In fact, I would like to release an alpha this weekend, followed by a more-or-less feature complete beta by the end of the month.
Release Goals
Expose Zope3 Interfaces for Content and Tools
This work is complete. The existing Zope2 interfaces are now create via a "reverse bridge" from the canonical Zope3 interfaces, and are deprecated.
Viewify Content Type Skins
The intent here is to convert the existing skin methods into views for each stock content type in the CMF. After my initial stab at such a view, Yvo Schubbe offered an alternative implementation. I have reviewed his version, and decided to use his pattern rather than mine. Jens Vagelpohl has volunteered to help finish this work, which is visible on the following branch:
This work won't be done in time for the alpha release. Finishing it represents the majority of the feature work to be done before the beta, in my opinion.
Split Out GenericSetup
This is done, for the most part. Florent Guillaume and Yvo Schubbe may have some bug squishing, to do for the most part with Unicode supprort in profile data.
Land Content Export / Import Support
The work I contemplated for the CMF is complete here: the framework for dumping and loading the content tree is in place, and has adapters for each of the stock CMFDefault content types. We need to look at the possilbility of extending the machinery to allow for "partial" export (e.g., export only a given subfolder), and surface it as an action.
I plan to move the GenericSetup product out to a separate top-level project, and include it in the CMF via a 'svn:external' link. It will be released as "GenericSetup 1.0", allowing other products (e.g., PAS) to depend on it without also depending on CMF.
Add Per-instance Marker Interface Support
Whit Moriss and Godefroid Chappelle landed Sidnei da Silva's Flon work in Five, making it possible to manipulate the marker interfaces provided by an individual instance (separate from those implemented in its class).
Publish Content and Container Events
Florent Guillaume landed the bulk of the work here, making Zope / Five support Zope3-style container events (a major effort). Still to do are "content-modification events", which should be emitted by the views for the content types.
Merge CMFonFive Features
Florent Guillaume and Lennart Regebro have merged the features of CMFonFive to the trunk, making that product obsolete, supported only for older releases of CMF / Five. There may be some breakage in the "fiveactions_tool"
Release CMF as Eggs
This work happened in two parts: Chris McDonough wrote the Basket product, with contributions from Rocky Burt and Casey Duncan. This product enables eggified products within Zope:
That work allows the CMF and third-party products to be distributed as eggs. It supports "non-zip-safe" eggs as well (those which expect to find resources, like skins, on the filesystem).
I worked on making the CMF distributable as a set of zip-safe eggs, including loading skin directories from the zipfile. Remaining work in this area includes making it possible to load setup profiles from an egg zipfile:
I do not foresee landing this branch in time for a 2.0 release: the changes are too disruptive, and need a fair amount of testing, as well as completing the feature set. Fortunately, Chris' work makes it possible for us to package CMF 2.0 as (non-zip-safe) eggs anyway.
Allow Local Skin Customization
Currently, the views for CMF 2.0 do not permit customization, although it is (theoretically, anyway) possible to set up local view registrations within the site. Although Phillip von Weitershausen and I plan to sprint on this topic at PyCon 2006 in February; I don't want to delay the 2.0 release for that work.
Open Questions
Given our schedule slippage, does it make sense to support CMF 2.0 only on Zope 2.9 and later? We originally proposed that it work on 2.8.3+, with Five 1.2. The gap between the two versions of the stack (Zope 2.8.x / Zope 3.0.x / Five 1.2.x vs. Zope 2.9.x / Zope 3.2.x / Five 1.3.x) has gotten increasingly painful to straddle over time.
I don't know how this release schedule affects the schedules / plans of the frameworks / applications "above" the CMF (CPS, Plone, etc.) I do know that Rob Miller has done a bunch of work to backport the GenericSetup / CMFSetup versions from the trunk to a 1.6 branch.