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

Posted by Albert Langer on

I've just spent a few days careful reading in Zopeland after a few days careful reading in OpenACS. As a complete newcomer to both, still not having DONE anything in either, my understanding is very limited. Still, most people who are busy doing things in one or the other don't have time to carefully read what's going on elsewhere, and are also more likely to have preconceptions about it.

For what it's worth here are some observations.

1. Zope has LOTS of documentation. Just very hard to find your way through it. Still immature but likely to be a great platform.

2. For access to RDBMs databases via SQL, Zope provides pretty much exactly the sort of data abstraction facilities that Ben was talking about in:

This keeps getting confused (at least to me) with the fact that Zope can ALSO use an RDBMs as the "storage" for its OODBMS instead of using an append only flat file. The Zope sql-abstraction facilities are EASIER to use than Tcl and DO NOT require an understanding of ZODB and the core internals of Zope.

Note: This does not imply that porting SQL code from Oracle to Postgresql would itself be any easier, just that it would not be entangled with presentation.

3. I still haven't found out how Zope handles connection pooling with external SQL queries.

4. Using an OODBMs for persistence has MAJOR advantages over using an RDBMs for MANY things and DOES include full support for transactions.
ZODB is "aggressively optimized" for many reads, few writes. That is exactly what is required for MANY web applications.

5. I haven't come across anything that indicates an appreciation that RDBMs also have MAJOR advantages for MANY OTHER things. I remain convinced that for OnLine Transaction Processing an RDBMs is inherently more scalable and deals with concurrent writes better (as well as being inherently less flexible, adaptable and harder to develop for and maintain than Zope).

6. As Kevin pointed out in the article that started this thread:


ACS: ArsDigita has developed an e-commerce module that does many of the things that does! Professional and customer reviews, gift certificates, discounts for certain groups of users, discounts for users with a coupon code and more. Plus, they have customer service management (an email handler that makes it easy to track email), and order management. The e-commerce module does not handle payment by check, but this should be relatively straightforward to code.

Zope: There is a product called EMarket, but it is not fully featured. We have our own home grown code. This code does, IMHO, a good job of product display. Zope doesn't (yet) have good, standardized support for members/users. This is coming very soon, though.

Advantage: ACS. There's no comparison in this category. ACS has great commerce features out of the box."

7. Ecommerce happens to be one of the areas where an RDBMs is a REQUIREMENT. I see nothing in in the Zope architecture that would prevent somebody competent in both RDBMs design and Zope from re-implementing the ACS ecommerce module in Zope (the same may also be true of other modules but I haven't looked).

8. Unfortunately there seems to be little overlap and little appreciation of the importance of an RDBMs for ecommerce apps in Zopeland so I am doubtful that this will happen there soon.

9. Since I'm neither interested in nor competent at building such a substantial application, but just need some of those facilities to be there, it looks like I have to use the ACS ecommerce, despite preferring the Zope platform.

10. Since ACS classic apparantly has little interest in an sql abstraction layer and OpenACS is primarily focussed on the porting of SQL code from Oracle to Postgresql, it occurs to me that OpenACS ought to be very interested in carefully studying the data abstraction layer in Zope and considering how to make that SQL code available to both platforms.

As I lack the skills to do that myself, but have an urgent need for a small part of the ACS ecommerce module and a future need for various things that Zope offers, I'm seriously contemplating trying to just run the two together, much like shunting users off to another site to handle the credit card processing.

Is that as brain damaged as it is inelegant?

Anyway, I have an immediate question which people here familiar with AOLserver should be able to answer easily. Will there be any hassle running Zope behind it on the same http port and IP address?

Zopeserver, like AOLserver is a single process. To allow flexibility, it is commonly installed behind Apache with a Persistent CGI or Fast CGI or a proxy pass through, using Apache for SSL support and URL re-write rules as described in the links below.

Is it reasonable to assume one can do pretty much the same with running Zopeserver behind AOLserver instead of Apache? (In particular a pointer to the AOLserver module for rewriting URLs would be helpful, I had a quick look but couldn't find it. Ditto for Persistent or Fast CGI support, presumably less common in AOLserver than in Apache since CGI just isn't the way it would otherwise be normally used).