[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