Raymond’s parser has some really great ideas going on in it. Unfortunately, it’s not quite ready for prime time. I think we can not only address the issues that surfaced with it, but also take it a few steps farther. Raymond worked magic, especially given the Eto-legacy. However, to take it to the next level in an accelerated fashion, I’m now convinced we need to depart from the current core architecture. You’ll soon see why and I hope you agree.
I realize we can’t alienate our current users and existing sites. So what I did was to challenge Jason to dust off his 1.0 work and get it working in the PHP4 world (and PHP5.1.x too of course), but also using the current manager and installer, and some "real world" content beyond the basic default content. The biggest problem with Jason’s stuff is that no one outside of him has really seen it, and quite frankly when he describes it, it seem way too complex and intimidating for me -- I call it too "wooshy".
After the last two days of work, I think it’s pretty much there and then some. Really, I can barely contain myself as this is so close to where I was hoping we’d be sometime mid-next year! As a proof of concept, I took our family’s business site (
http://corganics.com/) which is chock full of Wayfinder and Ditto calls and is also running a development version of ShopX, which means custom plugins and modules (test bed at
http://bycarter.com/).
So, what does back-porting all the 1.0 stuff get us? A "few" things that one can make a good argument for skipping the 0.9.5 release entirely, like:
[*] revised call syntax and recursive capabilities using Raymond’s syntax and not using regex for optimal performance
[*] conditional MODx tag calls (like :IF and so on) easily accomplished via nested snippets
[*] ability to pass parameters into chunks
[*] probably 95% compatible with current code ... and even then, probably closer to 99% of existing sites should work with a bit more external testing and feedback -- changes needed to be compatible are quite simple (mostly changes to snippets to no longer use internal API methods like Newslisting using $modx->mergePlaceholderContent($modx->mergeChunkContent($templateContent)) which works slightly differently since there is no longer a forced execution order...)
[*] speed comparable to today (even during emulation of the current 0.9.2.1 API!)
[*] no EVALs anywhere (except for the @EVAL @BINDING)
[*] db-based sessions that can keep you logged in forever if you like with no tricks employed
[*] ability to have dynamically generated snippet names in addition to dynamic parameters
[*] a robust and proper caching system that will become even more fast over time (making it considerably faster than today)
[*] "alias" or "symlink" documents -- an extension of weblinks that are references/pointers to other documents but that hold your place in menu systems (this makes my inner-Wayfinder SO happy

)
[*] correct header responses, including proper 200 (redirect), 404 (not found) and 503 (network unavailable/maintenance) responses that combined with the caching system and new parser I suspect will forever banish the sporadic "mystery blank pages" to the past
[*] true Object Oriented and consistent API throughout the core
[*] mostly documented API (should be completely so by the public/official release)
[*] once we have a new manager, the ability to have MODx run on virtually any database with a small amount of development work on PHP 4.3.x+ including optimized performance in PHP 5.1.x+ (via native PDO)
[*] ability to use the MODx class outside of MODx, with no separate API needed
[*] a real web services API and a real Ajax services API (with a bit more work)
[*] easily extend or override any part of MODx without hacking any core code whatsoever
[*] any string of content you can pull from anywhere can be run through the parser, just as if it were actual MODx managed content (this means you could put MODx tags in Wordpress and write a Wordpress plugin to parse it through MODx!)
[*] simple APIs to virtually any data structure/third-party system like Wordpress, Joomla! or Textpattern (MDPro done already because Jason needed it

)
[*] really simple ability to create content from the front end including full TV support
Jason promises a commit of this this week (in a new branch), along with a downloadable demo install. Regardless, we still need to back out the stuff that’s breaking the trunk and integrate all the great commits that have been made this week, so that will happen too... but folks... this is REALLY exciting stuff: I can work exactly how I’m familiar with working now, but I gain SO much more capability when I’m ready.
I’d like to see us getting the trunk working again with all the fixes/commits from the last week or so (great work folks

) and release a public beta test to see if it solves some problems for the users. Then we could internally test Jason’s work on a broader assortment of real-world content. Making the assumption it goes as well as it did for corganics.com, I’d then like to see ASAP before the end of the month a public beta with all the manager fixes integrated and hopefully the much-cleaned-up skin that Jeff’s been working on.
Thoughts?