13 Feb 2004
(updated 13 Feb 2004 at 03:25 UTC) »
Zope 3 sprint
I spent most of a week in Melbourne for the 2nd Australian Zope
Sprint. I've been lurking on the zope3-dev mailing list for a long time,
but never really spent any effort to get familiar with Zope 3, let alone get
involved. It's been on the infamous mental TODO list...
The first three days of the event were a tutorial on Zope 3 by Jim Fulton,
with regular "hands-on" sessions. Probably the pace could've been a little
faster, but I thought the tutorial was very good, and Jim is (unsurprisingly)
very familiar with the material, and makes a good teacher. As someone who
currently earns money developing on Zope 2, Zope 3 looks really really nice.
Trading multiple inheritance madness for interfaces and adapters looks like it's
paid off really well.
The next three days were the sprint. I volunteered to work on object
location events with Mike, but that quickly turned into working on adding
"subscription" adapters to Zope's component system, because it turned out to be
a necessary prerequisite. Jim had planned to implement partial adapters for
some time, and thought that was what we needed, but after some discussion it
became clear that there were two different behaviours, and we decided to call
the one we needed "subscription adapters". Partial adapters can wait until
another day, but hopefully some of our work can be reused for that.
We got to the point where we had largely implemented the ability to use
subscription multiadapters to replace the IAddNotifiable interface — so that
code can register an interest in, say, "object moved" events for a specific
instance, or maybe all objects of a certain type, by registering a subscription
adapter from (SomeObjectType, IObjectMovedEvent) to ISubscription. The previous
scheme required that an object implemented IAddNotifiable, which doesn't help
much if a third-party object, like a catalog, wants to know about events on an
object. Unfortunately, we didn't get as far as converting any existing uses to
the new infrastructure. I hope to get around to finishing that soon.
Every night we went out for dinner at a cafe or restaurant somewhere.
Usually we'd go to somewhere on or near Lygon St, which was packed with Italian
restaurants and was the closest place. Eating out with people is always
enjoyable; it's a pity I can't really afford to do it all the time. It suits
lazy people that enjoy eating (like me) very well :) It's also a very pleasant
way to spend some time with interesting people you meet at conferences like
these. I find pubs and bars tend to be too noisy to allow groups of more than 3
or 4 to talk meaningfully. Thinking of people, it's good to have finally met
Anthony, who is a fellow Australian Twisted hacker... if you're going to PyCon,
make sure you see his talk on shtoom titled
"Scripting Language My Arse".
Thanks to hypatia, Twisted has joined the planetary system
with Planet Twisted. This entry
is partially written just so that I will finally appear on it, even though it's
barely related to Twisted ;)
Post Linux.conf.au, I was nicely energised for random projects. I mucked
about with glade a bit (with no actual results — yet), and played with D-BUS's
python bindings, which are written in Pyrex, so I got an excuse to learn that,
too. Unfortunately, starting lots of cool mini-projects isn't the same as
finishing them. I need to find some motivation to sit down and do that at some
point. Wanting to port small(ish) projects like pyDHCPd and archd to Twisted [Memo to
the universe: Python probably doesn't need yet another networking framework.
Please look around before writing your own] gives me more things to start,
rather than more time to finish what I've already started. Hopefully I'll
manage to finish a few things soon.
Blah. The current situation is pretty demotivating, but it should all be
resolved, one way or another, soon. Life goes on.