Update 7/2010: Here’s a more recent review of MODx. I’m bummed, but I have not yet had another opportunity to use MODx.
A couple of weeks ago, I mentioned I’d be reviewing MODx in the near future. I recently used it and was quite impressed by this project. It is a web CMS written in PHP with mysql as the datastore. I say ‘web CMS’ because MODx is designed to manage web content, as opposed to a more enterprisey CMS like StoryServer, which can manage all different types of content with complex workflows. You could use MODx to manage, say, printed brochures, but that would take some finagling. Web content is the sweet spot of this framework. Currently at version 0.9.5, it is fairly mature and ready for use.
I wanted to review MODx because I believe it deserves more attention, and as an example of how I’d evaluate an open source project, on the back end, rather than on the front end, of a project.
The good:
- full featured
- I was able to find everything I needed in MODx, or in the extensions repository. This included a thumbnail generator, email forms, integrated rich text editor, SEO friendly links, database updating forms, and a content redistributor (that syndicated content internally within the site).
-
admin interface
-
I think the administrative interface is excellent for non technical users. It’s responsive, and intuitive.
-
user access/authentication system
-
There’s a very well thought out access system. You can assign users to roles, which lets them access certain
functions in the admin interface, and groups, which define groups of documents that a user may modify. Here is more documentation on this feature. -
defined development architecture
-
When you start working with MODx and you want to do something more than a cookie cutter website, you start hearing jargon, like snippets, plugins, chunks and template variables. All of these are MODx specific concepts, and it takes a while to wrap your head around them. But when you do, you appreciate the thoughtfulness of the architecture. In particular, you rarely have to modify existing source–there are hooks and easy ways to tie in custom code. (Most of these hooks are for the user side–to modify the admin interface, I had to hack some existing PHP.)
-
community
-
The MODx forums are the heart of the community. There are quite a few active members. I found the community to be very responsive and friendly to any questions I had, no matter how dumb.
-
a growing set of extensions
-
The MODx repository has a number of useful extensions. I especially liked that each entry in the repository is labeled with the version of MODx it supports.
-
active development
-
The project has gone from start up to 0.9.5 in less than two years.
-
open source
-
The license is GPL version 2.
-
caching
-
You can turn on a simple form of caching, which will serialize a generated page to disk. Unfortunately, there’s no way to expire that cache. You can delete it, on a site wide or page by page basis, but you can’t say ‘expire the cached version of this page in one month’. Still, for many pages, this is an appropriate form of caching and can noticeably speed up the site.
The bad:
- documentation
-
There is a ton of documentation for MODx, even a wiki. But I always felt like I was missing something–either it was hard to find what you wanted, or when you did, it wasn’t enough. An example is the API documentation. Here’s a sample function call that you’d make on the
$modx
object. No explanation of the returned data structure is available, and no actual example of how to call this function. I became very friendly withvar_export($var,TRUE);
and print statements to navigate these returned structures. -
dependency on the database
-
MODx is very tightly bound to mysql. No problem there–mysql is a great database. But I mean, it’s really tied to mysql. By default, all code you write (see ‘defined development architecture’ above) is stored in the database. That’s not the place for code! Luckily, you can avoid that by using an include:
include($modx->config['filemanager_path'].'/assets/libs/thumbs/thumbplugin.php');
This way, the code is on the file system, and can be versioned, etc. Also, since MODx depends on the database for so much functionality, make doubly sure you backup the database.
-
error messages in development
-
PHP syntax errors can be hard to track down. I ended up using a lot of command line debugging:
php -l -f foo.php
and looking in error log to see messages. -
5000 document limit
-
This is a big one. Because of the caching mechanism, you can’t have more than 5000 documents in a MODx website. However, this is acknowledged as a lack, and the team is working on it.
-
no search in specific forum
-
The forums are great, and are divided up into various sections. However, there was no way (that I could find), to search within a particular forum, or even within just the forums. This meant that when you were searching, you ended up with a lot of extraneous results.
Sure, MODx isn’t right for every site. But if you have a PHP savvy developer, a non technical userbase, requirements more complex than brochureware, and want to get a site up and running quickly, MODx is worth a look. As I’ve said before, use the right tool for the job.
Much thanks to the developers of MODx for putting together a great generic web CMS development platform!
Update 11/2009: HostColor offers MODx hosting for a reasonable price. If you’re looking, check ’em out (click the CMS Hosting link). Disclaimer: I make a bit of money if you visit them and/or sign up.
[tags]modx,php, web cms[/tags]
“Luckily, you can avoid that by using an include: include($modx->config[‘filemanager_path’].’/assets/libs/thumbs/thumbplugin.php’);
This way, the code is on the file system, and can be versioned”
Could you please tell me where to include this line? I need to have a website with 400,000 documents – will this get around the 5,000 limit?
If not can you point me to where to start looking?
Thanks
Andy,
I don’t believe that helps with the 5000 document issue–that was due to the caching mechanism that MODx uses. If I were you, I’d ask on the MODx forums about this issue–it’s conceivable that the new version (0.9.6 is out) addressed it.
If you want to use that, you can write the include line wherever you would normally put the code (in the plugins screen, etc).
I believe the 5,000 document limit will no longer be an issue with MODx 0.97, due for a beta release some time before Xmas 07. However, typically the developers recommend using your own database tables integrated with MODx via modules to handle large amounts of bespoke data, while using MODx documents to present it. So you might have an ecommerce module with 50,000 products presented via a couple MODx documents, say ‘category’ and ‘product’, which would use snippets to output the data from your custom tables.
Hi Dan,
This is probably the most systematic and clear review about MODx I’ve seen. I mean it!
Thanks Alex. MODx is an exciting CMS, and I’m glad I was able to help you evaluate it. That said, I haven’t touched it since a month after I wrote this, so please take what I wrote above with a grain of salt.
MODx is one search engine optimized, web 2.0 featured and with built-in support for CSS menu builder which helps hassle free navigation building.
Also read 9 Promising, free and open source CMS reviews for reviews of other good CMS options along with MODx.
Nice overview Dan. Any chance you would do a more current review of Modx? I have recently begun looking at their CMS and would agree with your post. I’m more interested in using Modx for smaller site deployments that have a CMS demand but as of this writing I have yet to install the program. Instead, I have sought out reviews such as yours.
Perhaps the most appealing issue for me at least is the lack of a generic Modx look. I’m looking for an alternative to WP, Drupal and Joomla.
Hi Marc,
I haven’t used MODx since the project I wrote this post about, so I’m afraid I can’t do an updated review. If I do end up using it in the future, I’ll try to update this review. (Now, if anyone wants to pay me to review it 🙂 … )
You may want to check out this site for help evaluating your CMS options: http://cmsmatrix.org/
CMS Matrix typically doesn’t have this kind of in depth review, but does have a lot of ‘feature checkboxes’ that may lead you to an alternative to WP/Drupal/Joomla.
Hi Dan-
in regards to ongoing maintenance after a site launch, what’s your take on the security and ease of updating? wordpress needs a lot of updating, which is good for security (if it doesn’t mangle the site), but clients don’t often understand this ‘ongoing maintenance’ of these cms’
thanks for your input!
Amy,
I haven’t updated MODx, so I can’t really speak to this. The new version of MODx looks to have a nice package managment system: http://svn.modxcms.com/docs/display/revolution/Package+Management#PackageManagement-UpdatingPackages
But again, I haven’t used it, so YMMV.