Trick or Treat!

It’s so amazing. I’ve been waiting for that for a long time, and just
in time for halloween, Jim comes out with a really nice treat. For
those that are not aware of the implications, Zope 2 has what is
considered (by me) the grandfather of the metaclasses, and it is
called ExtensionClass. ExtensionClass comes from a looong time ago, I
think that they are from around the time Zope ran on Python 1.5 (just
so you know, I didn’t even knew Zope by that time).

What does that buy us? Well, it allows us to use new features like
descriptors, metaclasses, and things like that. BTW, I forgot to ask
Jim if its already possible to mix ExtensionClass and
metaclasses (/me takes note).

So… as I mentioned to Jim, I plan to give it a try, using the
products on the Collective. Thats probably enough of a testbed for
it, and let’s see how good (or how bad) it turns out.

My guess is that, once solved the problems on Zope and CMF core (which
Jim already did), it should be trivial to fix most of the products in
the Collective, and even Plone, as most of them use just simple
subclassing. I guess that the one which can give me more trouble is
Archetypes, which adds quite some classes to the mix (and does some
nasty tricks to make the developer life easier).

So, wish me good luck and a good weekend! More on the topic over the
saturday :)


2 thoughts on “Trick or Treat!

  1. ExtensionClasses
    ExtensionClasses predate Zope. They predate Principia actually. I remember trying to read Jim’s paper on them back in 1997 and my head kept exploding. So yes – they’re deeeep old things (and explain many of the issues of why it takes Zope a while to catch up to current Python releases – we stayed on Python 1.4 for a long time. I don’t think Zope moved to Python 1.5 until it was actually open sourced).
    I’ll be so happy when their black magic is significantly less scary :).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s