I’m often asked what CMS I use and why so I thought I’d write this post highlighting some of the reasons why MODX is my CMS of choice.
MODX: Creative Freedom
I researched and lined up Wordpress, Joomla, Concrete5 and SilverStripe for trials. I saved MODX to last because it was immediately the favourite. I first discovered MODX around 2008 or 2009 when it was at version 0.9.6 and knew straight away I’d found something pretty special.
MODX provides a great framework that you, as the developer, can use to build any site you can imagine. It’s a yes man that does only what you tell, does it the way to tell it, and outputs only what you tell it. With MODX you have complete control over everything.
MODX: Your Site, Your Way
Since you have complete control over what is output, MODX is great for SEO. You can easily change and tweak your site including the URL structure and meta data.
MODX is also very secure. It’s built on an object oriented core that uses xPDO (open eXtensions to PDO). All input is filtered and any database interactions use prepared statements, virtually eliminating the risk of SQL Injection. You can also install the MODX core files (including the manager) in a custom location, and even with custom folder names, for an added level of security. You can actually install MODX outside the web root so the core files aren’t even accessible over the web. Is it possible to be more secure than this?
Other CMS’s (such as Wordpress, Drupal and Joomla!) are often very easy to detect by either manually inspecting the site or by using tools such as Chrome Sniffer. They all leave their tell tale signs on sites running them. For example, a “generator” meta tag or HTTP header (sometimes even containing the version number), directories in asset URL’s such as “wp-content”, and known admin URL’s such as “wp-admin.” Openly broadcasting the CMS your site is using is a security risk. An attacker, with no effort at all, now knows the CMS you use and can attempt to hack your site using any known security vulnerabilities for that system.
MODX also uses a caching system which really helps keeps page load speeds as low as possible. This system allows complete control over what is and isn’t cached which means only part of a page could be cached if you so desire.
MODX can also power load balanced sites. In fact, a single MODX install can run multiple sites thanks to Contexts.
MODX: The Community
You can’t say this for many projects but MODX documentation is very good — whether it’s for core features or plugins. The forums are also very active and you often see the core team answering questions. MODX and their core team are also very active Twitter.
MODX: The Bad Parts
Not everything is perfect and MODX is no different. The good news is the problems listed here have been acknowledged.
One very common complaint of MODX Revolution (2.X) is that the manager is slow. The MODX Evolution (1.X) manager was built using jQuery whereas Revolution uses ExtJS 3 — a huge monolithic library. For MODX 2.3 (due soon) the manager still uses ExtJS but it has been greatly refined and is significantly faster than previous versions. Looking further ahead the MODX team is experimenting with new technology for MODX 3.0 — including Angular and Ember.
Another complaint is that people just don’t seem to like working with ExtJS — myself included. It’s a very complex tool with a massive learning curve. Unless you plan on building a Custom Manager Page (e.g. for a plugin) then it’s nothing to worry about since you won’t need to use it.
User permissions are also known for being complex. On the plus side, once you know what you’re doing then you have a lot of power to control what users are able to do and access — down to individual pages. While the system is complex, it’s very powerful.
I’ve given a brief overview of MODX and why I chose it as my main CMS and I’ll be writing about it a lot more in the future. Do you have a favourite CMS? If so what is it and why did you choose it?