[Zope] IPC9 Thoughts aka YACR

ender kthangavelu@earthlink.net
Fri, 9 Mar 2001 18:07:45 -0800


Yet Another Conference Report from IPC9

my thoughts on spending a few days at the conference. 

it was a blast. i finally got to put some faces to some names that i see on 
this list and other python lists, and got a chance to hang out with some DC 
folks. these guys like to party.

word to the wise, beware those bearing snake tatoos:)

Zope Stuff

-DC reaches out to developers.

DC in its everlasting wisdom has seen the light. namely, that zope should be 
KISSing developers not forcing them on the infamous Z (rotate 90%) learning 
curve. Zope will grow its market share and  walk new roads when Zope embraces 
the developers that use it so they can create kickass products with their 
favorite appserver. 

so how does this mystical feat happen. (check list)

   1. DC realizes that this is a good thing (TM). X Check 
   2. Zope goes modular, components and interfaces all the way. (Its coming).
   3. Documentation is driven by interfaces and written for developers. (Its 
Coming)

-Interfaces and Components
This talk by Michel Pelletier was cool. Michel demonstrated some of the ideas and 
technologies that Zope will be embracing.

I think this part has been overlooked by most of the conference reports, but 
i feel it is the best thing to happen to zope since.... well zope.

nutshell version. components, interfaces, services, adaptors, something i 
forgot.

basically everything zope has an interface, instead of subclassing a 
half-dozen classes to get standard zope behavior you can have your objects 
implement the proper interface and be done with it. Interfaces are all about 
separating the API from the implementation. which in the case of zope is 
desparetly needed. but wait there's so much more. you can hook up objects 
with different interfaces via adaptors. you can have some objects provide 
services like discovery of objects with particular interfaces... 

michel didn't finish his presentation but the kicker was a demo of a new type 
of publishing based on the component/interface architecture. drool factor X. 
i could use this in applications right now, if only DC would release the code 
(hint, hint, hint...). oh well, i'll settle for the paper for now.

basically it worked like this, the publishing method would take an object and 
the Interface of the request (standard would be HTTPRequest) and a factory 
object would return an adaptor object which could connect the two interfaces. 
the publish method would call the adaptors traverse function to get the next 
object if didn't exist then it would call the last object found's publish 
method.

imagine the possbililties, selectively opening up your zope objects to new 
protocols (xmlrpc, soap). traversing sql/ldap databases. zope arch outside of 
the web.... 

but there is so much more to the component model, you can walk up to an 
object and ask it what interfaces it supports so you can interact with it 
dynamically at run time. you can generate accurate documentation about your 
objects from the interfaces. you could create some nifty translators that 
would make your objects xpcom accessible, generate wdsl. (these are michel's 
ideas not mine). zope developers, get excited. the changes won't come all at 
once but the gradual changes might be astonishing enough. to see some 
examples of interfaces, basic components in action dig through the CMF. 
interfaces are in 2.3 btw lib/python/Interfaces

side note - i heard a saying that sometimes when you think you've got an idea 
you can talk to jim fulton, and he can just say you're wrong, and bam it hits 
you. you're wrong. and then it happened to me:)

-Debugging the zope way.

check it out, (it helps if you're running zeo so you can browse and type), 
else shutdown your zope.

cd lib/python/
python
>import Zope
>Zope.debug('http://localhost:8080/foo/index_html?bar=a)

(theres lots more to it than that but thats what i remember).

if something breaks you get to keep both pieces. aka i'm not being 
held responsible if you hose something.

-emacs is cool.

diehards unix types already knew this (whats vi?), but kenM of dc has a patch 
that jim fulton was using when demonstrating zope debuging that moved you to 
the appriopate file and method call.... my jaw is still recovering from the 
floor. i guess nowadays, when every python ide worth its salt (wing, komodo) 
can do this its no longer amazing, but damm i was impressed.

-ZEO is distributed zope (duh)
 i don't know why this didn't hit me before, but zeo lets you do all sorts of 
new apps with zope, basically offering cheap python distributed communication 
and interaction. i've been searching for ways to interact with zope my python 
proggies, but my thoughts previously have always focused on shared external 
data stores, i hadn't really thought long enough about ZEO possibilities.

-Pythonlabs goes ZODB
   - nough said
   - new berkely db zodb storage (no reference counting).
   - multimaster replication is good for you. (many moons will pass).

- can you say zope has great documentation.
not yet, but it looks like its coming.

- Emacs is the life, but wingide just took my soul.

i can't say enough good things about wing. bottom line, it saves me a lot of 
typing. i think the company is cool, they're giving back to the community 
both with key pieces of technology and offering open source developers free 
licenses. (please buy a copy anyways, they need the loot to make it boot).

did i mention that the source browser kicksass and you can debug zope with 
it:)

- I need more speed Scotty,
philip elby and ty sarna are back at it again. they're trying to make your 
head hurt, but this time they're armed with documentation, so the not so oo, 
AOP, GP, enlightened can grasp on to something.

meet transwarp, the successor to zpatterns. (interestingly enough philip 
admitted that zpatterns was one glorious hack on delegation in zope). and 
even better its not zope dependent. um... i can't really say much about this 
one just check out philip's zope.org page for more info. 

he started weaving and i started dodging:)

between this and the component technology that should come into zope

Other Web Stuff

-webware - what can i say.... i like it. its not mature yet, but the source 
is readable (i will never accept the 1 letter variable name optimizations in 
zope), and its based on existing mature technologies namely java servlets, 
j2ee's entity beans (the MiddleKit OR mapper) and Apple Enterprise Web 
Objects. since i'm posting to the zope list, i'll let you find the url. i 
think there is some potential for cross-pollination of ideas and code here, 
if the license issues are compatible (i think they are). TaskKit a generic 
python daemon scheduler would be extremely cool to have in zope. 

-pywx/aolserver - Micheal Haggerty and Titus Brown have pulled off one hell 
of a piece of enginerring IMO. they took aolserver, an extermely high 
performance multithreaded webserver (it powers aol, and ArsDigita.com bet 
their business on it a long time ago), that was years ahead of its time (it 
came out in like 95), and comes with persistent db connections, a rich api 
that rivals some operating systems, and tcl as scripting language, and they 
made python a first class peer with tcl in it. (i like run ons, can you 
tell). i watched them at the conference where they basically made a webware 
adaptor in like 20 mins.  zopitistas take note, these guys are seriously 
investigating replacing zserver with aolserver. besides having a high 
performance web server written in c, it will also allow you much greater 
flexibility in caching, since you can use aolserver to cache in memory 
(shared by all threads). incidentally i use aolserver with the acs 
(arsDigita) and its a nice platform, but if i could use python with it yikes, 
its scary. i can't even imagine using zope with it....


Random Artifacts

-java in zope. JPE ... nough said, check it at
also check phil harris's post on the matter to zope-dev a few months ago.
http://www.arakne.com/jpe.htm

-berkely db - robin dunn, updated cvs sometime today, because i just got the 
latest berkely db 3.2.9 linked up with bddb3 (the python module), and it 
passed the 130 odd unit tests included. very cool, nice work robin.

Sign This Petition - IPC10 in amsterdam. well that was the petition at ipc9.

dtml-contract - part shameless plug, part sheepless grin. i got some pointers 
from mr fulton on how to make this product work better, but i put out two 
releases which had indent errors in the same day. yikes, i think beer affects 
debugging:).  anyways this very cool dtml tag is now functional and ready for 
downloads at http://www.zope.org/Members/k_vertigo/ZopeProducts/PageContract
btw, if enough people bug me about the license being obnoxious i'll switch it 
to the LPGL (ChrisW, what are you waiting for:)

this concludes YACR

cheers

kapil thangavelu