[Zope-CMF] CMF 1.4 Roadmap
Jeffrey P Shell
jeffrey@cuemedia.com
Thu, 30 Jan 2003 16:45:15 -0700
On Thursday, January 30, 2003, at 01:15 AM, Yuppie wrote:
>>> 2.) DCWorkflow integration
>>> --------------------------
> [...]
>> It has been a goal to ship DCWorkflow as part of CMF for quite a while
>> now; we had some additional goals which made it harder than just
>> including the product in the release tarball:
>> - We wanted to rename the product to 'CMFWorkflow'.
-1. While DCWorkflow doesn't make much sense nowadays with the
renaming of DC=>ZC, DCWorkflow (as mentioned below) is 'just' another
workflow agent type for the Workflow Tool. Calling it CMFWorkflow
would make it sound like it was *the* only option. Sometimes, being
able to write a full custom agent in Python is a better path. For a
very complex action/planning workflow, I know I found this to be the
case.
>> - Any rename (see below) requires a mandatory conversion script to
>> repair persistent instances which "knew" the old location of their
>> classes.
>>> ChrisW proposed to move DCWorkflow to CMFCore. What do other people
>>> think? Any volunteers to work on this?
>> -1 Putting it into a different package will mean breaking lots of
>> sites: the workflow instances in the ZODB know that their class can
>> be
>> found in 'Products.DCWorkflow'.
> CMFWorkflow needs a conversion script, CMFCore needs one. Can't see
> any difference and why the first is what you want and the second one
> is -1.
>
> DCWorkflow is 'just' an other workflow for CMFCore.WorkflowTool, so
> why does it need to be a product on it's own if we have to write a
> conversion script anyway?
>
> But from a more pragmatic point of view: If the renaming blocks
> integration for an other release (or for ever), I could also live with
> the name DCWorkflow.
Actually, the ZODB (or maybe it's a Pickle thing) helps out here with
the concept of "module aliases". In CMFCore.__init__.py, one could
include::
import DCWorkflow # Local package - CMFCore/DCWorkflow
__module_aliases__ = (
('Products.DCWorkflow.foo', DCWorkflow.foo),
)
It has to be more thought out than that, obviously, but that's the gist
of it - map an old module name to a new module object. This has been
around for a long time - the primary place I remember seeing it was in
support for the renaming of Aqueduct (from whence came database
adapters and SQL Methods) when Zope was open sourced. A lot of
renaming went on between Principia 1.8bN (1,8 never had a final
release) and Zope 1.9 (the first Zope release), but all existing code
continued to run due to tricks like this.