|
From: Todd O. <to...@da...> - 2001-04-10 19:53:41
|
In addition to completing my taxes (my wife doesn't believe in extensions), I've been reviewing the complete source code of many community sites (php unless otherwise noted), such as phpNuke, myphpnuke, mmbase (java), typo3, phpcms (german docs), opencms (java), phpreactor, ezpublish, Ars Digital (tcl), phpgroupware, netautor, and zope (python) and a few others. Here are my findings: If mmbase were written in php, then I would pick that one to start with (it's over 200,000 lines of java). mmbase has by far the most thought out object architecture of the group. Their "relation node" concept should be our model of inter-object relationships. Instead of scoping (as defined in ACS), where a group or user relates to an object, the relation node connects arbitrary object types. See http://www.datadx.com/phpwebsite/mmbase_thesis.pdf for a good explanation beginning on page 24 (or beginning of chapter 3). We should use the mmbase permission model or the ACS model (as modified by Clayton). This allows a more abstracted access control scheme. OpenCMS is a great package, but it's almost a java version of Zope, which I like better. The problem is the fundamental code changes that would have to be done to Zope or OpenCMS to convert from a tree (top-down hierarchical relationship) to a more general mesh architecture like mmbase. Nuke, typo3, phpcms, reactor and others can't scale to multiple site in the same database and also tend to embed HTML more. mmbase and opencms use xml extensively (sometimes to the extreme in my opinion), but their concept is good. We need to use XML more in phpWS. The xml-rpc in ezpublish is great. I propose we use xml-rpc for all inter-module communication like telling the email module to send mail based on a new user login "trigger". This makes the message passing almost ;) effortless and meets our commitment to open standards. phpGW has the best language processing in my opinion. It uses a database to store languages; phpcms and mmbase use XML language tags, which are more "official", but I really don't like. I think the phpGW model could use flat files, if they don't get too big. EVERYONE should download and read the source of the above packages so we can make phpWS a better product. It's not a cut and paste project here, but we need to decide what design elements we want to integrate into phpWS. Let's talk here. --Todd Owen |