A few things:
MODX will, for the time being, be using ExtJS in its default manager theme. It doesn't make sense to quickly shift to another framework, for reasons I'll outline below. Currently, the decision is to stay on Ext3 until we reach MODX 3.0, in which we will re-evaluate and most likely move to Ext4 at that point. There are a few reasons for this:
- We don't want to move too quickly to Ext4, as it would completely break Ext3 CMPs (yes, I know there is a compatibility layer, but trust me, it isn't plug-and-play, and requires modifications to code to get it to work; I tried getting it in back a year ago). We don't want to cause all Extras that have CMPs to break in a patch release, or a minor release, for that matter. We'd like to make that change on a release where things are likely to break anyway (major releases, ie, 2.2-3.0, 3.1-4.0, etc). When we do move to Ext4, it will offer us cleaner code generation and on-demand loading of JS files (this means: faster)
- This means that we're on Ext3 for now. This is mainly for
continuity - we decided that it's better to allow people time to learn the system rather than changing it too soon and scaring away adopters. Is it perfect? Far from it. Is it a foundation to build on? Yes.
Now, for those who say that Ext is bloated and slow, I have a few questions: One, have you tried 2.2 with compression on? It's actually quite fast - initial page loads (not the store/tree loading that occurs after page load and usage). Secondly, yes, it is slower than Evo's page loads. I agree 100%. The reason is this:
In Evo, it is incredibly difficult to build as rich and as powerful a UI as you can in Revo. In Revo you could build a ajax grid with pagination, searchability, drag/drop, window connection (New Chunk, for example), automatic field validation, and inline editing. All in less than 200 lines of code. That is flat out impossible to do in Evo. Not to mention, in Revo, these tools are
automatically available to you in the default manager theme. You can create powerful UX for your Extras instantly, if you take the small amount of time to do so. Could there be more tutorials to do so? Absolutely, and there will be eventually, as more people get involved.
In Evo, however, you have no such toolkit at your disposal. You have Mootools, which is a very limited framework. You have to build any sort of rich UI from scratch. Which means that building anything beyond a simple marketing site is *very* difficult in Evo. I can say this with experience - I helped deploy the College of Education at UT-Austin onto MODX Evo prior to me starting to work at MODX. They had 4000+ pages, lots of custom data, and more. It was a nightmare to do in Evo. I also did quite a few small sites in Evo, and found that any work requiring beyond the provided Extras was very difficult. This is why I joined Jason and we created Revo.
We wanted MODX users to have all that Evo had (which yes, there are no Evo features not in Revo - Modules are now CMPs and the Security system is different, but the features are still there, just more robust), but we also wanted to give them a much larger and more powerful toolkit to build sites with. ExtJS gave us that option - we can create powerful, extendable UIs that scale from small sites to massive ones. We can give people a toolkit (modext) that allow people to quickly make UIs for their sub-applications powering their websites and web presences. We had to standardize on
something, and no other library offered the toolkit that ExtJS did. I was partial to jQuery at first (yes, I was!), but it didn't have a powerful grid system. It didn't have a fast-loading JS tree that allowed for drag/drop and asynchronous loading (a *must* for larger sites). It didn't have solid automatic form validation systems. It didn't have a solid, dynamic custom-event-based API. It didn't have great context menu support. ExtJS had all of that, and in a solid MVC API that was well-documented. That's why we chose it. It was simply
better for a powerful, rich application.
In Evo, it loads fast because it's in frames. But that means you can't do drag/drop from the tree to a content field (at least, not to a content field with an RTE in it). You can't easily manipulate data in and out of those frames. In Revo, we ditched frames, mainly for this reason: the
community pushed hard at the time to get us to remove it. People didn't like the frames. I understand where people come from now, I do. Frames allow for partial page loads, rather than full-out page loads.
But let me explain a bit further into Revo's operating procedure - and its UX vision - in the manager, and something that Revo allows that Evo doesn't. In Evo, a Module (CMP in Revo) is simply a page in that frame. To completely separate it from the manager is impossible. You can't break it out of that frameset and properly return back to it. In Revo, you can simply tell the current manager page to not load the default headers, and viola - you have full control of the page and the JS framework you want to use. You can build an entirely new application in there, and have full access to the MODX DB model.
Secondly,
and this is very important, you can
very easily build a custom manager theme for all or as many pages in the manager as you choose. You just create a new directory in the manager/templates and/or the manager/controllers directory and override the files you want to override. Just want to redo the Resource Create page for a site? In Evo you can do this, but you have to use the default "action" (controller) page. In Revo, you can use the default controller, *or* create your own controller, and use your own JS files and such. You can even include and extend the default controller's class file and just override certain methods.
That means - and this is a
big deal, you can simply create an entirely new manager interface for Revo just by copying and editing files into a separate manager theme. Lossendae (Stephane Broulard) made a clean gray theme for Revo back in 2.0, and distributed it in the Extras section. He used ExtJS in his theme,
but you don't have to. You could make an entirely new UI from jQuery. Don't want the left-hand tree? You can do that. Easily.
This means, if you guys don't like the ExtJS default UX, that's
ok. Start a community project here at MODX to make a simpler, jQuery-based theme that only does simple things. Make it perfect for clients. Make it in frames! (Or not.) Make it blazingly fast. Then package it up and distribute it via Package Management. Heck, if it's good enough, we'll consider adding it into the default distribution as a "light" theme or something. We would support that development 100%.
However, the core MODX team is small. We don't have the capacity to do 2 manager UX's without the community's help. Trust me when I say this - if the community comes up with a brilliant alternative UX for Revo,
you will most absolutely not be turned away. I want to make that clear.
Finally, we are taking seriously the front-end performance comments for Revo. I've commented a lot on the manager UX element here, and Jason (opengeek) has commented some on the core front-end performance, but we are taking steps to make the core more sleek, more fast, and more scalable. That is - and always has been - a strong priority. It's why we chose to do xPDO rather than use Propel or another already built ORM/framework in MODX. We made xPDO lighter - on purpose.
A lot of the bloat (that, honestly, was to help migrate users used to Evo) was knocked off in 2.1, and even more in 2.2. I can guarantee that trend will continue. 2.3 will clean up a lot of the package management cruft, make it cleaner (and REST-based) and streamline Extras development.
We hear your complaints about Revo; and we're not abandoning Evo by any means. But what we are is appealing - appealing to you - to help us make Revo better. Help us take the best parts of Evo that you like and get them in Revo (within reason - I don't see us using Mootools again

). That's what we're asking of you guys. Help us help you. I hope my reply has clarified some things, and offered some paths to integrating your ideas in. Let's keep this discussion going.
[ed. note: splittingred last edited this post 14 years, 5 months ago.]