Status update on xajax and Willowgarden
I know I promised to post something last week, but I was just feeling too crummy. However, I’m much better this week and getting back into the swing of things. Man, I feel like most of June just completely disappeared on me.
Anyway, I want to give you all a status update on the two big PHP projects I’ve been working on, xajax and Willowgarden. First off, however, I want to thank my day-job employer, Commandtext, for allowing me to spend some time working on these projects during business hours.
xajax — I was really getting down and dirty with 0.5 until a few weeks ago, but what I did get done was lay down on “paper” a good foundation for the new modular architecture. The first programming stabs at that were checked into SVN, so I hope to pick up where I left off shortly. Big thanks goes to Eion Robb (BigBrownChunx) who’s been enhancing and refining the 0.5 codebase in my absence. It’s good to have him on the project.
While xajax 0.5 will have a somewhat different (and IMHO better) API and will not be backwards-compatible with software currently using xajax 0.2.4, we’re moving forward with the idea of a “legacy” layer that will allow you to upgrade to 0.5 without having to rewrite all of your code. You might have to make a very few changes just to use new class names, but that’s about it I hope. More information about how this will work is forthcoming.
Willowgarden — In terms of Willowgarden’s public face, I didn’t get the momentum going that I wanted to for this, and at the moment it seems a little bit like abandonware. In reality, I’ve been significantly improving and enhancing the base architecture on almost every level. I’m feeling really, REALLY good about the direction of this project now, and I’m looking forward to releasing Developer Preview 2. The release date for DP2 won’t be this month as I had hoped. With luck, it’ll be ready by this time next month.
Some of the main highlights of DP2:
- The Data Access layer, which includes the data mapper infrastructure, has been almost completely redone. Before, it was just a slight abstraction of a database layer. Now it’s a full-fledged, storage-independent layer that is highly modular and easily customizable and gives archetypes (data/domain objects) ActiveRecord-style functionality using a clean API.
- The configuration classes have been enhanced to use a “best-pratice” XML format that distinguishes between framework-specific settings and custom settings via namespaces. Required and optional (with default) settings can be specified via custom subclasses. I honestly believe this new config system is now one of the best of its kind in the PHP world.
- Framework-wide access to logging and session management is now handled by simple interfaces which can be implemented by third-party libraries. PEAR’s HTTP_Session2 is included by default for sessions. For logging, you can easily use PEAR_Log, Zend_Log, or another library (or your own).
- Due to the improved Data Access layer, archetypes are now very “smart” when it comes to data schema, relationships, validation, filters, etc. You can specify all this information programmatically using a cool “fluent interface” via the power of PHP 5. It’s the perfect blend between the Zen-like abstraction of Ruby and the hands-on pragmatism of PHP.
You’re going to love DP2. I’m just plain excited about it — the level of detail is far greater than with DP1 which still had a lot of “holes” in it. Obviously, some aspects of DP2 will still be under construction, but more of the platform will be heading towards stable APIs and stable code, which is always a good thing. The Wiki/documentation and tests won’t be fully baked yet, but something will be up and running when DP2 is released.
As always, check back here for the latest news. In closing, I want to reassure you that I’ve invested a lot of effort into both xajax and Willowgarden and will continue to do so for the foreseeable future. Jared is here to stay.

Del.icio.us
Cosmos
Digg