[TransWarp] TransWarp and ZPatterns

Phillip J. Eby pje at telecommunity.com
Tue Aug 28 17:27:45 EDT 2001


At 01:28 PM 8/28/01 -0700, Dethe Elza wrote:
>Hi folks,
>
>I'm trying to grok ZPatterns and TransWarp.  I was exploring the idea of 
>creating a AOP tool for Zope/Python, so I'm glad you've beat me to it.

Well, if you're looking for the Python answer to Aspect/J, unfortunately 
TransWarp is far from there.  Technically, it's only capable of being the 
infrastructure for something like Aspect/J, and I don't even have 
method-wrappers written yet.  Declaratively specifying cutpoint sets and 
"aspect inheritance" are also way out of TW's league at this point in 
time.  On the other hand, TW already exceeds Aspect/J in the arena of 
generative programming (GP).


>  Now, of course, I have to understand it.

Don't look at me.  I just confuse people more when I try to explain things.  :)


>One question I have is, will work continue on ZPatterns, or is TransWarp 
>the main project now?

Yes.  :)  Both statements are true.  Maintenance continues on ZPatterns, 
and other developers have been making interesting spin-offs of ZPatterns 
(see the ZPatterns mailing list).  I've also given some idle thought to 
creating my own ZPatterns spin-off, using the lessons learned from the 
original, plus Steve's TransactionAgents, and a dash of the Observer 
pattern, mixed with a hint of the New Religion.


>Also, from reading through this list I see that CVS is the preferred way 
>to get a recent version.  Is there a list of what is more-or-less working 
>and what is broken?

Well, if there's a test for it, it works.  I try to keep the tests at 100% 
when I check things in.  Here's a list of what works:

* AOP - you can build "components" from "specifications"

* XMI - very hacky XMI implementation, supports XMI 1.0 only, and that 
rather poorly

* UML - you can read UML models written in XMI by popular (inexpensive or 
free) UML modelling tools, and you can execute various queries against 
them.  You can design aspects you'd like to include in the UML model (such 
as an ability to generate something from the model) and add it to the model 
using the AOP tools.

There are lots of miscellaneous things floating around in there that may or 
may not work.  Caveat hackor.  :)

My next likely area of hacking is the XMI library (again).  I'm starting 
from scratch with the intention of building a tool that fully and 
transparently supports either XMI 1.0 or 1.1, while presenting the same API 
to the developer, and which will create a simplified micro-DOM-like 
structure.  This structure will abstract away the XML rendering of the data 
and simply represent objects, attributes, and links.  XMI 1.1 support has 
become important to me because certain interesting metamodels (Notably CWM 
1.0, the Common Warehouse Metamodel) are only available in XMI 1.1 
form.  XMI 1.0 support is still important, however, because it seems most 
of the UML tools out there only know how to do XMI 1.0 as yet.


>Finally (for now), does TransWarp integrate in any way with the Zope CMF 
>or "new religion?"

You can integrate it, but it is not inherently integrated.  TW uses Zope's 
"Interface" package, but TW's idea of a "component" is simpler than 
Zope's.  To TW, a component is simply something you build from a 
specification.  It isn't required to do or be anything in particular.  But, 
if your specification specifies something that will look to Zope like a 
component, then by all means you should be able to use it as one.

My main concerns with future compatibility issues with the New Religion are 
in the areas of "persistent modules" and possibly the "service"-related 
API's.  If the semantics of persistent modules end up differing too much 
from regular Python modules, certain kinds of TW components could remain 
un-updated when a module they depend on is changed.

As for the "service" API's, right now the API for TW's 
"Service-Element-Feature" models is still in flux, and I'm hoping to ride 
out the instability of the New Religion service API concepts.  I don't want 
to end up with a notion of getService() in TW that differs too much (or too 
little) from that of Zope's getService(), for example.  TW uses the term 
"service" in roughly the same way as the New Religion, but it also has some 
more narrowly-defined uses of the term.





More information about the PEAK mailing list