The world needs a new cms


By Andy Thorne

on the 23rd February 2017

Wait... WHAT?! But we have WordPress, Drupal, Joomla, SymfonyCMF, blah, blah, blah...

Yeah, we do.

*World's shortest and most useless article complete.*

Or is it?

Why Other Content Management Systems Just Aren't Good Enough

One of my biggest issues with the major CMSs (WordPress, Drupal and Joomla) is that they are a nightmare to maintain. The coding standards hark back to PHP4 and they are being dragged kicking and screaming forward, often with disastrous results.

There was a lot a praise and expectation placed on the shoulders of Drupal when they announced that Symfony components would be used as the building blocks of the eighth version of their software. The CMS is still in beta development, but, having used it from alpha stage, I am deeply worried about the direction it is heading: A lack of understand how Composer works, hooks (need I say more!) and lack of real Object Oriented code (arrays are used everywhere!) to name but 3. I feel Drupal had the right idea in term of vision, but woefully failed in execution.

WordPress boasts backwards compatibility to 10,000 BC and the coding standards of the year after. I've never understood why this was a "feature" - If Microsoft offered backwards compatibility till IE 6 we would be mocking them for years... oh wait... WordPress does have an amazingly easy to use interface and should be rightly applauded. But we need to move on from a code point of view.

For me, this is the crux of the issue is knowledge of the programming and the web. There are many "CMSs" that are actually just blogging platforms for small scale websites. They lack scalability, extendibility and knowledge from their core developers. At Time Inc, millions of users hit our web servers every day and many of the "CMSs" on the market simply do not fit into an enterprise world. From inefficient SQL queries to lack of extendibility of storage/media to the needed complexity - these CMSs require a lot of developer time (and money!) to be usable and use old legacy technologies.

What We Should Do About It

Something, after a good deal of thought. Rewriting WordPress or Drupal would take years and frankly isn't worth doing. I feel a new CMS is needed that is targeted at the Enterprise user base. This approach sounds risky and/or controversial, but let me explain my thoughts behind it.

Enterprise is not meaning paid-for-software. In this context I'm using enterprise to mean targeted at people and businesses that need to use it in commercial situations - situations where there is a development team supporting the CMS. By orientating the CMS around commercial systems, we can build a powerful CMS that, as standard, is very feature rich.

By using an enterprise framework, we can build it from an already created, tried and tested set of components to make it fast and robust. A framework like Symfony2 which can be integrated with AngularJS and RequireJS for a fast and powerful frontend and SASS generated stylesheets.

This will not be a CMS targeted at personal sites (although it should certainly be able to handle them). It won't be an "Upload this via FTP and drop all your unzipped modules into folder X and themes into folder Y. We will use Composer. Modules and themes will be service/tag defined.

I've spoken to several members of the Drupal community about why they develop Drupal code. A significant portion of them suggested that they had to lean "PHP" in order to hack Drupal to get it to work. Most of these people then become Drupal/WordPress developers - not PHP developers. Forgive me if I seem harsh, but I feel these types of people will hold us back. I'm not saying we should leave them behind - instead we should provide them with the tools to learn PHP, not a specific CMS.

This way - making it essentially developer orientated - development (and maintenance) work can be significantly reduced. Finally, those that need to use the CMS for publishing their content will see a benefit in support times and feature development - so everyone will win.

Technical Structure

Assuming we use Symfony2, we have 2 real options - both of which have their positives and negatives.

Firstly, we could piggy-back onto a modified symfony standard edition. This way not only can we utilise the vast power of the standard edition, but also the vast array of symfony bundles.

Secondly, we could just use some symfony components are write our own stack - only loosing some of the bundles.

At the very least, both will be:

  • Full MVC (obviously...)
  • ORM provided (Doctrine)
  • Event driven
  • API driven

Out of the Box Features

So, lets get down to it. What features should a CMS have out of the box? Well, here's a vague list to start us off:

  • Semantic URLs
  • Header redirects and routing
  • RESTful APIs
  • AJAX loaded pages
  • Multi-site support
  • Metadata generation
  • Good SEO optimisations
  • Media handlers/managers
  • Search providers
  • Comment support
  • User registration and management
  • Multi Theme support
  • Advert unit support (ooooooh... controversial!)
  • Integration with reverse proxies, including cache purging
  • Responsive by default

These points are quite vague, but their meant to be. I, like many of my developer peers, feel it's time to start an open discussion about what we want from our Content Management Systems and what we're going to do about it.