Forum OpenACS Q&A: Response to Article on ACS x Zope

Posted by Jimmie Houchin on
I am in the process of building my personal (at home) development machine. I will be installing both Zope and OpenACS. Yes, and PyWX. :)

I currently have most of my intellectual investment in learning Zope. So most of the designs for my site are from a Zope worldview. However, I want a high quality solution which lends it's self to ease of development, management and extensibility. Now in this context ease is a relative term.

I have studied Zope primarily as a user and have not yet delved into it's source. Zope is an incredibly complex animal. I think most likely that ACS isn't quite as complex. As I develop my site I will be developing both head to head to determine which in my mind and skills is the most viable solution for me. Each have their pros and cons.

One thing that Zope brings to the table now that I don't believe is ready yet in ACS is users, groups and delegation of capabilities and access. I know there is some code in there for this but I am not aware of how it compares to Zope yet. One of Zope's foundational philosophies is customers who have customers who have customers.

This philosophy being built into Zope provides users, roles and permissions as a native part of Zope. This provides great support for building communities and delegating responsibilities with limited and appropriate priviledges.

As Titus mentions Acquisition is a very powerful part of Zope. It allows for interesting object traversal via url. This is a great blessing when used right. It can also bite your rear. :)

One of Zope's strengths is it relatively database agnostic. If you have a legacy database or have database preference due to having purchased it or having an intellectual investment in it. Then you can use it. The ZODB is always available to store your data but it is not required that you store your data in it.

Coming soon to Zope is mountable databases. The ZODB upto this point was limited to a single file. Soon a Zope app can create multiple ZODBs. This will allow for you design you app in better way. The ZODB is also reasonably storage agnostic. There is coming soon a RelationalStorage for the ZODB. This will allow the ZODB to use a RDBMS of your choice to store it's data.

The ZODB isn't really that scary. It has also proven to be stable and safe. All of it's writes are appends. So if something dies mid transaction it should be safe up to that point. Also prior to packing the ZODB it creates a backup. It has it's pros and cons, but no one should be afraid of it.

This does increase Zope's data storage options. It does not change it's complexity. To a certain extent you have to use and see if the pleasure is worth the pain. Ouch! Did I realy say that. :)

From what I've seen about ACS 4.0, it will be adding some features which are in Zope's arena. I haven't spent much time looking at it yet so I'll have to get back on it. But hopefully aD will be able to incorporate these features and improve ACS without increasing complexity. And it looks as if that one thing they are trying to reduce.

Enough for now.

Jimmie Houchin