We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10713
    • 41 Posts
    This is a cross-posting from my (german) weblog, where I usually post all my CMS-related stuff: http://praegnanz.de/weblog/five-things-i-don-t-like-about-modx-revolution (The attitude might sound a bit ranty, but it’s not meant unfriendly at all...)

    Everyone knows that I love MODx – I really do. I’ve donated some money, report bugs on a regular base and I spread the word where I can: MODx is certainly one of the coolest Open Source Content Management System you can choose.

    But still there are areas where the system drives me nuts! I’ve recently set up a couple of clients’ websites with the completely re-written version of MODx called “Revolution”. And besides a lot of positive experience, I think it’s necessary to also talk about the weaknesses of Revolution. My judgments are based on the regular tasks of a web designer who wants both – an easy to use system for editors and a flexible framework for developing.

    I know that Revolution is still at its infancy. Actually, that’s why I write this rant! It’s not too late for changing and improving things – at least I hope that some of my real-life experience will be helpful to focus on the important areas!

    1. Backend Performance

    One of the things I liked most about Textpattern and the traditional MODx (called “Evolution”) is their super-fast backend. Sadly this aspect does not get a lot of attention in today’s CMS conversation. Still, it’s oftentimes critical to get your shit done very quickly, be it content editing or templating.

    In MODx Revolution, however, the backend is made with ExtJS, which is a framework for building complex user interfaces with HTML, CSS and JavaScript. It certainly does its job in a super-cool object-oriented and MVC-driven way, I don’t know. Obviously, ExtJS wraps twenty div containers around each form element and embeds several tons of JavaScript to make the UX shiny and consistent across all platforms. Unfortunately, it’s slow as hell! Buttons don’t respond when clicked at the wrong pixel. The always-present page tree ajax-reloads after almost every operation, even if it had nothing to do with the page tree. Changing from one view to another makes you wonder why they didn’t just used frames like in MODx Evolution.

    This surely isn’t about connection speed (it happens even locally), nor a specific browser (Chrome’s V8 engine should be fast enough). The current responsiveness of the backend might be okay for casual content editing, but while hacking together dozens of templates, snippets and system settings, it just steals way too much time.

    (Almost ironic: The most inconvenient task is configuring and simplifying the backend for editors. You have to fill out a cryptic popup-form for every single change, which can be a nightmare.)

    2) Image handling

    This is a tough one, because there are only few content management systems around which solve this damn image handling problem in a proper way! One of them is WordPress, which does a great job at uploading images, managing them globally and/or article-based, and building gallerys. In MODx Revolution, you can upload files into the file system, and chose them afterwards for inserting. That’s about it. The official way to generate a database entry for an uploaded file is to manually create a new “static resource”, which behaves and looks exactly like a regular web page, must sit in the page tree and has no automatic functionality for gathering meta data or attachment information. This doesn’t make sense to you? Yepp.

    Of course there are Add-ons like Gallery or phpthumbof, which help you a little bit here and there. And with some patience you can finally build an “okayish” picture workflow for your client. But to be honest: A modern CMS must automatically track every single upload with a proper database record, so you have at least an unique ID to be able to rename or exchange your image files later on. “Static resources” are not the right way to do so!

    3) Nested URL paths

    It’s a simple thing, but it nags the hell out of me! Friendly urls are an integral part of MODx, which is nothing special. There is also an option for so-called “alias paths”. Activate this, and you should get permalinks that are based on the page hierarchy, e.g. “http://example.com/company/history.html”. So far, so good.

    The internal link creating system, however, does only do “docrelative” permalinks. These permalinks typically do not start with a slash or the base URL, but look like this: “company/history.html”. If you use this link on a page that is not on the first level in hierarchy, it’s rendering a wrong link which leads nowhere. Yes, MODx literally generates wrong hyperlinks, when using “alias path”. And to be honest: Everybody should use “alias path”, because it’s useful for humans and search engines alike!

    It would be so simple! If “alias path” is activated, put the base URL in front of every generated permalink. But instead, the official manual advices you to use the old and almost forgotten HTML <base> element on every page to fix the problem. Which has the side effect that you cannot use internal jumplinks anymore. This is embarrasing, but my forum post did not attract any reactions, which is funny. I can’t be the only one with this problem! (filed as a bug now, let’s see if it will be fixed soon.)

    4) Permission management

    I’m not very often in a situation where I need a sophisticated permission system. Most clients work in small teams (mostly one person), so this wouldn’t be a big deal. However, last month one of my clients wanted a login area for three of his clients, which contains only one page for each of his clients. Should be a piece of cake for a system like MODx Revolution!

    Turns out, it isn’t! Instead of simply restricting access of those pages (=resources) to certain users, you have to setup two additional layers: resource groups and user groups. You cannot drop this steps. You have to build resource groups, even if there is only one resource in it. Plus you have to build user groups, even for only one user. Then you can finally restrict access of a resource group to a certain user group. This final step, however, is designed in a highly confusing way. It took me some serious time to setup the correct permissions. Of course, next time I will be faster. But my client will certainly have forgotten these steps when his fourth client is about to get his personal login …

    5) Time-based articles

    Why do we have to decide? Some CMS are based on flat streams of posts (e. g. Drupal and every weblog system), some are hierarchy-based and have a central “page tree” which contains all the content (TYPO3, Contao, MODx).

    If your website contains a large number of news, blog articles or events, you might not be too happy with MODx Revolution. Every news article has to be placed within the hierarchical page tree. And if it is article number 449, you will have to manage 449 news article in the page tree! Of course you can use folders (by category or year or month), but you have to do it manually. The sort order of the page tree is manual, too. It can be switched to time-based view, but not exclusively for news.

    What’s missing is a seperate place for creating, listing and managing all time-based articles. The page tree is the wrong place. Maybe there will be an Add-On for this one day, which puts news article into a different database table and delivers its own managing panel. But that’s not the most elegant solution, because news articles really should be native resources and thus first-class citizens within the system. Once again I need to mention WordPress. It handles both native content types (“Pages” and “Posts”) equally well – using the CMS Tree Page View plugin.
      • 22303 MODX Staff
      • 10,725 Posts
      Quote from: gerritvanaaken at Nov 06, 2010, 02:24 PM

      Everyone knows that I love MODx – I really do. I’ve donated some money, report bugs on a regular base and I spread the word where I can: MODx is certainly one of the coolest Open Source Content Management System you can choose.

      But still there are areas where the system drives me nuts! I’ve recently set up a couple of clients’ websites with the completely re-written version of MODx called “Revolution”. And besides a lot of positive experience, I think it’s necessary to also talk about the weaknesses of Revolution. My judgments are based on the regular tasks of a web designer who wants both – an easy to use system for editors and a flexible framework for developing.

      I know that Revolution is still at its infancy. Actually, that’s why I write this rant! It’s not too late for changing and improving things – at least I hope that some of my real-life experience will be helpful to focus on the important areas!
      There are things about Revolution that drive any one of nuts at times, and we obviously can’t make every possible usage scenario with this leaky abstraction I’ve created easy to use from the beginning. In fact, I would say at this point in the Revolution adoption curve, the most important people we can attract are developers that are going to create solutions to specific problems that are targeted at non-technical end-users. This is not to detract from your feedback, which we appreciate you taking the time to share.

      Quote from: gerritvanaaken at Nov 06, 2010, 02:24 PM

      1. Backend Performance
      MODx Revolution is built using a structure that makes it possible for all kinds of generic or custom-tailored management UI’s to be built, in whatever fashion one chooses to build it. The manager that comes with it is intended for power users TBH. That said, I find the features and capabilities of the new manager make me infinitely more efficient working in Revolution than in Evolution. The Quick Create/Edit features you can use without leaving the current Resource or Element you are working on is invaluable to me, and the additional features from Property Sets to the various Drag-and-Drop features are simply not possible in Evolution’s framed manager.

      Regardless, the intention is that Section 508 manager UI’s, and mobile-friendly UI’s and other alternative/simplified management implementations would be made available as installable packages and can be built the same way any MODx front-end web site is developed.

      Quote from: gerritvanaaken at Nov 06, 2010, 02:24 PM

      2) Image handling
      In my opinion, images are part of design, unless you are talking about blog entry images, image galleries, or other specific use cases, which should all be manageable within the framework, once you set it up for a specific client/use-case. In the spirit of MODx, we are not going to dictate how your designs are managed. We provide extensible tools for doing it your way.

      IMO, blogging and image gallery Extras should be responsible for their own image handling requirements.

      Quote from: gerritvanaaken at Nov 06, 2010, 02:24 PM

      3) Nested URL paths

      The internal link creating system, however, does only do “docrelative” permalinks. These permalinks typically do not start with a slash or the base URL, but look like this: “company/history.html”. If you use this link on a page that is not on the first level in hierarchy, it’s rendering a wrong link which leads nowhere. Yes, MODx literally generates wrong hyperlinks, when using “alias path”. And to be honest: Everybody should use “alias path”, because it’s useful for humans and search engines alike!

      It would be so simple! If “alias path” is activated, put the base URL in front of every generated permalink. But instead, the official manual advices you to use the old and almost forgotten HTML <base> element on every page to fix the problem. Which has the side effect that you cannot use internal jumplinks anymore. This is embarrasing, but my forum post did not attract any reactions, which is funny. I can’t be the only one with this problem! (filed as a bug now, let’s see if it will be fixed soon.)
      I’m lost here. The base href is absolutely required in MODx because every request is to the index.php in the site root directory, and in order to support virtual directories in the Resource paths, we have to resolve the fact that the browser interprets such a request as if the location is in the virtual folder, while server-side, the system is actually in the site root. This actually makes site implementations completely portable, and I see it as an advantage. The only annoying issue that results from this is anchor links not working properly, which is easily resolvable via a plugin or by prefixing anchor links with [[~[[*id]]]] in cases where there are no other GET parameters involved in the request.

      Quote from: gerritvanaaken at Nov 06, 2010, 02:24 PM

      4) Permission management
      We are working to make the extremely leaky security system abstraction much more intuitive and easy to use. User-specific and Resource-specific Access Control Lists are on the Roadmap, as is inheritance and other improvements. I think a first set of changes in 2.0.5 will reflect our commitment to improving the system; hopefully making it as accessible to simple situations as it is flexible/powerful for complex ones.

      Quote from: gerritvanaaken at Nov 06, 2010, 02:24 PM

      5) Time-based articles

      Why do we have to decide? Some CMS are based on flat streams of posts (e. g. Drupal and every weblog system), some are hierarchy-based and have a central “page tree” which contains all the content (TYPO3, Contao, MODx).

      If your website contains a large number of news, blog articles or events, you might not be too happy with MODx Revolution. Every news article has to be placed within the hierarchical page tree. And if it is article number 449, you will have to manage 449 news article in the page tree! Of course you can use folders (by category or year or month), but you have to do it manually. The sort order of the page tree is manual, too. It can be switched to time-based view, but not exclusively for news.

      What’s missing is a seperate place for creating, listing and managing all time-based articles. The page tree is the wrong place. Maybe there will be an Add-On for this one day, which puts news article into a different database table and delivers its own managing panel. But that’s not the most elegant solution, because news articles really should be native resources and thus first-class citizens within the system. Once again I need to mention WordPress. It handles both native content types (“Pages” and “Posts”) equally well – using the CMS Tree Page View plugin.
      Absolutely agreed. And custom Resource classes are absolutely a built-in capability of the core framework. A News/Blog extension that provides this ease-of-use buffer between the under-the-hood power of the framework and the user’s news/blog posts is definitely way past due. That said, this could take many different forms, and I’d rather have competition amongst extensions that do this than forcing an approach in the core framework.
        • 10713
        • 41 Posts
        It really is good to hear that most of my problems are well-known and being worked on! Keep up with that!

        But still I have to drop a few lines on the alias path (sorry for being so annoying). MODx is not the only CMS with the ability of handling virtual folders. Every other CMS is doing it, too – since around 2005 or so. Nowhere do I have to integrate an ugly html element in my template, which fixes a problem that shouldn’t be a problem at all. Why not just have a system setting "base path", which will be just "/" in most cases, and add this string in front of every permalink? This is how I build all my permalinks in all other CMS that I’ve used, which was never a problem. It’s no rocket science smiley

        If you want to move your site, you simply clear your cache once, and every permalink should work again, even with a modified base path.
          • 17499 ☆ A M B ☆
          • 872 Posts
          There is a site_url setting already accessible.

          What’s so ugly with the base html tag ?
            • 19388
            • 297 Posts
            I agree about what you said about the tree. Its constant reload force us to wait in each page load.
            http://bugs.modx.com/issues/2510
              • 7557
              • 61 Posts
              Quote from: gerritvanaaken at Nov 06, 2010, 02:24 PM

              1. Backend Performance
              100% agree. Incredibly slow. Too demanding, so sometimes the whole computer slows down.
                • 11055 ☆ A M B ☆
                • 3,112 Posts
                And the pain affects the custom CMP development.

                It’s just like seeing a very beautiful woman.
                You know you can get her.
                But you also know her style costs you much. tongue
                  Rico
                  Genius is one percent inspiration and ninety-nine percent perspiration. Thomas A. Edison
                  MODx is great, but knowing how to use it well makes it perfect!

                  www.virtudraft.com

                  Security, security, security! | Indonesian MODx Forum | MODx Revo's cheatsheets | MODx Evo's cheatsheets

                  Author of Easy 2 Gallery 1.4.x, PHPTidy, spieFeed, FileDownload R, Upload To Users CMP, Inherit Template TV, LexRating, ExerPlan, Lingua, virtuNewsletter, Grid Class Key, SmartTag, prevNext

                  Maintainter/contributor of Babel

                  Because it's hard to follow all topics on the forum, PING ME ON TWITTER @_goldsky if you need my help.
                  • 22303 MODX Staff
                  • 10,725 Posts
                  Quote from: gerritvanaaken at Nov 07, 2010, 03:46 PM

                  It really is good to hear that most of my problems are well-known and being worked on! Keep up with that!

                  But still I have to drop a few lines on the alias path (sorry for being so annoying). MODx is not the only CMS with the ability of handling virtual folders. Every other CMS is doing it, too – since around 2005 or so. Nowhere do I have to integrate an ugly html element in my template, which fixes a problem that shouldn’t be a problem at all. Why not just have a system setting "base path", which will be just "/" in most cases, and add this string in front of every permalink? This is how I build all my permalinks in all other CMS that I’ve used, which was never a problem. It’s no rocket science smiley

                  If you want to move your site, you simply clear your cache once, and every permalink should work again, even with a modified base path.
                  Using relative paths to do the same thing is simpler and more efficient IMO. I’m sure it works different than other CMS’s, but it would complicate the system (and component development) enormously to have to calculate and manipulate server variables to some virtual folder path that doesn’t really exist on every request. And FWIW, you are welcome to prefix your links with
                  [[+base_path]]
                  or you can use
                  [[~7? &scheme=`abs`]]
                  to generate an "absolute" URL already prefixed with the base_path; similarly with the makeUrl() API method:
                  <?php
                  $url = $modx->makeUrl(7, '', '', 'abs');
                    • 26016
                    • 561 Posts
                    First of all, I am very impressed with the new system. I didn’t want to excoriate it too much, but since there seems to be a remarkably civil discussion for a topic that could be flame bait, I’ll chime in.

                    It looks to me as though the Manager’s new design was made for and by programmers. I messed with it until I am now reasonably comfortable getting around - I’m quite geekie. smiley But I’m having a heck of a time getting my cohorts to adopt it. And these are people who use Evo every day. So I’m guessing that they will have even more trouble convincing non-tech clients to use it.

                    Curiously, I have a parallel preference to Jason’s one... one of my main pursuits is CSS, so in Evo I like having a separate tab in my browser open to edit that, while allowing me to quickly swap back to the doc tree. I can’t do that in Revo.

                    So IMO, something has been lost with our new development efficiency. I suppose some hardy soul will code a Manager theme for non-geeks at some point. Definitely above my pay grade, unfortunately.

                    There’s also the funny thing of "Save" buttons sometimes appearing VERY high on the screen, far away from other parts of the edited page, but I’m sure that’s being looked at already. smiley

                    Cheers, Dave
                      MODx and Wordpress development
                      Linux, PHP 5.2, MySQL 5.0, Evo 1.05, Revo 2.08-pl, Firefox 4
                      • 3749
                      • 24,544 Posts
                      No one has mentioned a solution to the issue of per-user pages: the tree_root_id User Setting. It’s quick and easy and each user can only see his or her own page (and potentially it’s children).

                      It’s actually pretty easy to make this setting available on the user panel and, with a plugin, to create the user’s page when you create the user.
                        Did I help you? Buy me a beer
                        Get my Book: MODX:The Official Guide
                        MODX info for everyone: http://bobsguides.com/modx.html
                        My MODX Extras
                        Bob's Guides is now hosted at A2 MODX Hosting