I've just started playing with Zope again, and this time I'm going to spend enough time with it to actually decide if it's crazy or I am :)
My project currently consists of a bunch of community "modules" written in PHP using MySQL as a data store. Each modules PHP code produces an XML page, by running a bunch of queries in the database, and performing some logic. These XML pages are then processed using XSLT, with a model very similar to Acquisition.
I'm getting very tired of the poor language design inherent in PHP, and wanted to start using Python again.
(Big reason for doing this work: In the current package, each module is only accessible from a hardcoded URL, such as /links for the Links module, etc. Many of my customers want to change the layout of their site, and in fact maybe have two Links modules, etc.)
So far, sounds like Zope would be a great system for me. It would give my customers a good platform to customize their sites, and give me a good platform to build my modules with.
Now, short of just doing it and then discovering what I did wrong, I'm hoping to get some advice from the Zope community on how to structure this system.
This is a fairly large system, I host about 10 customers per box, serving about 4MM page views. 99% of the pages are dynamic, doing real-time database queries.
Some of my first questions:
-Is Zope a good choice for this kind of project?
-Which is better: Store my content (Forum posts, Links, etc) in ZODB, or a MySQL database?
-Build my Product (right term?) in DTML/ZClasses (seems easier for my users to customize?) or build it in Python?
-Can I (easily) build this system in 4 layers:
Content -- actual low-level storage, rarely customized
Logic/Object Representation -- layer used to interact with the content, also rarely customized, although does have configuration options
XML (page contents) -- every URL should result in an XML document, containing all the information that will be presented on that page. Written in DTML?
XSLT (page rendering) -- the XML documents must be transformed into HTML/etc. These transformations, like the page contents should be inherited; excuse me, acquired.
-Simple things should be simple, Complex things should be possible. -- My users should be able to plop a Links module into their site, edit the Properties for that Object, and it works. If they want to change the way Links are categorized, they should be able to, although it'll take a while longer :)
Thanks for your Zen,