The foundation of the new code is available as xPDO at http://xpdo.org/. Though I’m sure there is a lot of sugar coating to add to this, I’m using this persistence framework for some custom database-drive web application within several production MODx sites, and am very happy with the results so far. I am also working with some other core MODx developers to build their own xPDO projects in order to get used to the new framework, resulting API style, and help add more features. In the meantime, there are some poorly styled API docs at http://xpdo.org/api/ and the code is available from SVN at http://svn1.cvsdude.com/rethrash/xpdo, but otherwise, their is a lot of documentation work to do.
Do you have any code available ?
I wouldn’t call it typical, as it is a marraige of patterns I identified from MODx as it is today with some adaptations of traditional MVC and other important design patterns. And now that you’ve exposed me to SEAM (man I need to get my head out of the PHP world once in a while and see what’s going on
I liked Qcodo for its stateful forms and simplified Ajax development. Prado (i think that’s what it’s called) also seemed pretty cool but I didn’t find the AJAX simplicity seen in Qcodo.
Your framework used a typical MVC approach ? I’m just trying the stateful approach seen in some newer frameworks like JBoss’s SEAM (conversation state). I’ll have a closer look at your project’s site tomorrow.
), some of these concepts are exactly what I needed to describe what I’m implementing. I am currently calling my version of "stateful contexts" a "message registry" with different registers providing the storage for different message "contexts". Very cool stuff indeed...thanks so much for your post; I have to go add a couple of things to my framework now!
I first learned about stateful frameworks by looking at Seaside (done in Smalltalk) which is probably another good reference for you! Just look at Dabble!
Just wanted to get some discussion going about this as I’m very interested in these newer approaches to Web development. I’m kind of tired of having to rely on a fixed database structure and always having to worry about mainting state information in Web applications ...
Right, the MVC portion of the framework will be implemented on top of the ORB.
Nonetheless, I see that xPDO is a ORB (or ORM) but how about the MVC framework you were talking about ?
I’ll try to see how the data is stored in the DB. I started an approach similar to this one a couple of months ago using RoR but since I had little time for it I had to quit.
Exactly how it’s been done. modDocument, modWebLink, modAjaxService, modSOAPService, modBlogDocument, whatever you can imagine... they will all extend the base modResource class, which basically represents a mini application controller. In addition, multiple front controllers will be possible with the new core (i.e. multiple entry points to modx).
Is MODX going to use this approach in future releases ? I’d especially like to have all objects stored like this and having Document, etc, as one of the core objects but allowing one to extend it with good integrating with the manager interface. That’s to say, I’d like to be able to have a "New Document", "New blog entry", etc ... in the right mouse button menu.
I plan on developing a UI for xPDO that will rival the visual custom data modeling tools available in TurboGears (a popular Python framework comparable to RoR). I want to eventually make it easy for non-developers to prototype custom data models for their web-applications through this approach.
The hierarchy navigation would also have to be extended to allow for easy navigation between relations.
Understood; picking the right tool for the job is all about what’s available and works now. The implementation of our internal Ajax support featuring direct to JSON object caching (in the xPDO layer) and flexible state management via my modRegistry concept is still being worked on (and now possibly refactored a little based on my discovery and research into SEAM).
I really think this will be a great project! And I’d like to jump on the wagon but I have a couple of projects starting and have to decide whether to use Qcodo for module development or relying on xPDO and assuming it will be used in MODX’s core. The former provides me an interesting stateful approach with AJAX support.
I’m not going to try and replicate SEAM; MODx is PHP, JBoss is Java. It’s just very validating to see JBoss taking similar approaches to addressing these issues.
If you’re trying to replicate behaviour seen in JBoss SEAM’s you’ll have a great framework for developmentI first learned about stateful frameworks by looking at Seaside (done in Smalltalk) which is probably another good reference for you! Just look at Dabble!
Well, I just lost the purpose of this postJust wanted to get some discussion going about this as I’m very interested in these newer approaches to Web development. I’m kind of tired of having to rely on a fixed database structure and always having to worry about mainting state information in Web applications ...
Yes it is and I have very important reasons for not yet sharing this code outside of the development team. But it will be available in a preview (alpha or beta) form very shortly after 0.9.5 is released. If you absolutely have to have a peek before that, contact me via PM to discuss arrangements.
http://svn1.cvsdude.com/rethrash/tattoo/tattoo/branches/opengeek/trunk
This is closed ?! No anoymous checkout ? I’d just like to see how it is going and see if it’s usable as it is.


Honestly, I’ve considered this for a long time, and my solution is to simplify everything into the Resources I mentioned, which are constructed from Elements. These elements can consist of any source content, and can be processed in any way you want to produce the output that is returned into the Resource. This leaves the door wide-open for whatever templating approach you want to take. That way, you can stick with the traditional MODx templates or implement your own Element classes to handle it the way you want.
How about templates ?! I think you should try to use HTML based templates like those seen in PRADO or in Zope/Plone.
Crap, that’s lovely! Oh well...the main reason I have not opened this up is simply because I’m making some changes to the SVN structure for the project and want to work that out before I open it up. Just private message me through the forums here and I’ll get you a full copy you can install and test later today or tomorrow.
The source code in your branch is already available via WebSVN, so anyone with some time or scripting abilities can download it. It would just make it easier if anonymous checkout was available. I understand your reasons for not allowing this so how can I get in touch with you to try your MODX rewrite ?
It has been pretty much a one man show up to this point, yes. But I am certainly ready for collaboration from other developers interested in this, and have been spending the last week getting a few of the MODx team members using xPDO in order to become familiar with it’s inner workings. Once I have a few more avid users and contributors, I think we’ll be able to complete some more documentation and get an official release of xPDO out, while I prepare to shift the rest of the team’s attention to the new MODx code and related efforts.
Is this a one man project ?! Seems to me you still have some tough challenges and decisions ahead it would be great if more ModX/PHP developers joined your "quest for the holy grail"
Congrats on the work done so far. Glad to see you’re open to suggestions and able to analyse frameworks disregarding the language used, I’m kind of tired of the Rails vs CakePHP vs etc .. flame wars in some forums.