[CompInaBox-discuss] CompInaBox -- Web rewrite update...
Brought to you by:
ericnielsen
From: Eric D N. <nie...@MI...> - 2006-05-03 16:19:43
|
I've been making slow, but steady progress on my rewrite of the web components of CIB. I'm nearing the point of initial code check-in to the sf.net repository for this code. Once I have about 3 more web actions/views established I should be able to post the code and invite others to help push the development -- I want to at least show my envisioned way of handling the common tasks associated with a web application -- list of foos, details on a foo, updating a foo, and testing authorization. Early/simple projects for others can be porting/reimplementing the calendar system and the front page announcements; slightly harder would be porting/reimplementing the result tracker or SlidingDoors admin or stats pages. Hardest would be assisting with the reimplementation of SlidingDoors registration and Team Admin. There has been some changes in the infrastructure requirements. If you are interesting in helping over the summer and beyond, here's the current list of required, optional, and being explored dependencies: Required: PHP5 (CIB was previously a PHP4 application) -- Reasons for change -- better object model and third-party dependencies PostGreSQL 8.1.x (CIB was previously based on the 7.4.x series) -- Reasons for change -- good time to update & savepoints are nice Smarty 2.6.13 (CIB previous used an inhouse code-generation/template system) -- Reasons for adoption -- its about time; its a good solution and helps maintain proper seperation of concerns Optional (but highly recommended) (both already in use) SimpleTest 1.0.1alpha3 -- Unit Testing framework PhpDocumentor 1.3.0rc6 -- Documentation Generator Currently being explored, Currently looking favorable Creole (and Jargon) -- a PHP DB abstraction layer. Unlike most other cross database layers, this one seems to take a "greatest feature union" approach as opposed to a "lowest common denominator" It emulates where needed, but falls back to native support where ever possible. I've been working push SQL further and further from the average coding tasks and I think that coupling my existing PhraseBook class with Creole's prepared statement support will yield a very type/quote-safe solution. I'm not likely to change DB back-ends and I'm not planning to comb over the schema looking to make it portable. Currently being explored, neutal Phing -- a PHP build tool, similar to Ant, Propel (below) requires it; I want to look to see if it (commandline) runs the Unit Test Suite more efficiently than the normal web launcher, if it does, its likely to get upgarded to favorable status. It would also be useful for documentation updates, download packaging, etc. Currently being explored, looking unfavorable Propel -- a port of Java's Torque persistence engine (ORM). This a code-generation approach to ORM is is basically a Row Gateway/Table Gateway hybrid solution. The code generator creates base classes to act in Row/Table Gateway forms for search, update, etc. It takes the approach that objects will have minimal logic (non-rich Domain Model) and it appears to practicalyl require a 1:1 mapping of classes to database tables. The latter is the primary reason for my current unfavorable review of Propel. It looks like a great product for other uses, especially for simpler systems where the DB schema almost completely determine the shape of the application. (Single use databases). I'm leaning towards a Data Mapper inspired solution (aka more like Java's Hibernate than Torque). I haven't seen any F/OSS PHP Hibernate inspired solutions, so I'm coding one myself. The solution I'm working on is different from the CIB Version 1 system of StoredObjects (an Active Record style solution). The new domain knowledge will have no knowledge of the persistence layer (so no more $db references being stored _everywhere_). I'm aiming for the persistence layer to be detachable from CIB for offering as a standalone OSS project after it gets more fleshed out. I plan to send more details about this layer in a seperate email in the near future. Eric |