Sitting waiting for a plane, your thoughts often turn to life’s imponderables. Like: what’s the point of CMS products, when half the time it’s faster to do what you want in a framework?
The thought is prompted by one of my colleagues at Shift — Matt — who spent about three weeks toiling in a CMS to produce a client-manageable site that reflected a moderately complex content object model.
In the end, he switched tack and re-implemented those 15 days work in three days using Django. As you do. All of which begs the question: what point are CMS systems?
It’s a fair question. I often use Expression Engine, a simple LAMP solution that meets a number of my key criteria for a good CMS:
- It allows you to easily create and modify the definition (data schema?) of any number of content objects.
- It provides a default CRUD interface for content objects.
- Is maintains version of content objects (kinda).
- It allows objects to be scheduled for publishing and expiry at some time in the future.
- It allows objects to be displayed in any number of templates that have no bias towards any particular design pattern.
- It allows objects to be displayed in any number of views, and doesn’t imply a default view of an object.
As a designer, and someone that believes that form provides context for content, the last point is important to me. Too many CMS products force you into a specific page model. They follow a Henry Ford approach to design: any layout you desire, as long as you desire heirachical left column nav, a centre article column, and a right column for dumping modules.
But reviewing that list, I suddenly realise: that’s basically a framework I’ve defined. RoR, Django, Symphony… you could implement my criteria on any of them.
Of course, to implement a good content management solution on a framework, you need to note the following advice:
“Good CMS systems aren’t about content management; they’re about content publishing.”
Both frameworks and weak CMS solutions seem to get this one consistently wrong. They focus on managing content, rather than managing the publication of that content to people.
That means they often fail in the following kinds of situations:
- I want to have a piece of content change at a specific time in the future to a different piece of content, without manual intervention.
- I want to have the entire page template change at a specific time in the future.
- I want to be able to preview a host of changes to content and/or templates, as if I was viewing them at a future time.While I’m at it, I’d also like to be able to view the site at a time in the past.
- I want to be able to allow multiple people to work on “versions” of the site, with different changes to different aspects of the content.
All of this goes beyond being able to embargo and expire content objects.
It implies that versions of content objects can be embargoed and expired. Or richer, that they can have statuses that have defined transition states and times.
It also implies that templates should be fully fledged content objects, capable of also having transitions. That wway you can stage changes to the site that go beyond mere content changes.
So I’m interested in other people’s experiences of various CMS systems — and whether they enable the kind of publishing management I’ve outlined here.
Darren Wood
April 28, 2008
There seems to be a trend to move more towards a framework – and in my opinion thats the way to go! Why try and mangle an existing CMS to work around your content requirements when you can quickly and easily write your own using a frame work like RoR. This is something that SilverStripe seems to be striving towards. We’ve used it in the past and it’s less of a CMS and more of a fully fledged framework.
What I’m particularly fond of is the decentralised approach. There are heaps of hosted solutions for content publishing that provide very robust APIs that can help pull content to one domain. This is an excellent article about building one such website: http://dennajones.com
Jon Gibbins
July 10, 2008
In my opinion, one of the main things that frameworks have going for them is a more optimal flexibility-to-development-speed ratio. I’ve found that nearly every project I’ve worked on has required a bespoke element to it. A framework allows you to build around the requirements of a project while still giving you the opportunity to develop quickly and reuse code.
Of course, the pre-packaged content management system has its place too. Just as frameworks differ, off-the-shelf (and open source preferably) content management systems are suited to different applications. A CMS may lend itself better to common situations. Take WordPress as an example. It’s a good blog system that will cater to most blogging needs and can kick start a project that may not need much else in terms of features.
Perhaps a more fundamental thing is that, as a developer, you may have better knowledge of a system that you built yourself, a framework giving you a kick start. With an off-the-shelf CMS, you may be more restricted in your work with it, but you open up your application to a pool of knowledgeable developers.
John conrad
July 12, 2009
one more nice topic in your blog and nice comments too keep it up, If you advise some more related links to topic. I’m very interested in CMS and all its related subjects.
Vlatko Ć urlan
November 4, 2009
You will find that TYPO3 implements all of the functionality, by default and without any extensions, that you listed as missing in most CMS systems. I am always inclined towards a CMS rather than a framework. With enough CMS knowledge you can put almost any simple site within hours and you can rely on the testing that has been provided by prior users and developers. With frameworks you are practically publishing untested code right out in the open and that is what I really don’t like. When using TYPO3 95% of sites will be published without writting a single line of PHP code. And I consider that to be a huge security bonus.
muhammad
October 28, 2010
Hello Dears;
I suggest use cms and coding together. for example I use joomla and php; I select my ready components, modules and plugins for ideal and routine works. then i’ll write my own components for anything that is not routine for all wite such as system specific system activities.
muhammad
October 28, 2010
most CMS’s are FRAMEWORK.
that means they are better than frameworks if they are good performance;
such as JOOMLA.
thank you
Gabe Sumner
October 6, 2011
I’m coming late to this discussion, but here is a thought.
A web site might take 2-3 months to create and will then be given to end-users to manage & maintain for [potentially] years.
Because the creation represents a small slice of the web site’s lifetime it’s dangerous to focus too much on the developer experience. I’m not saying it’s unimportant, but it’s frequently less important than the end-user experience.
Developers frequently disappear shortly after the web site is launched. The web site’s success, past that point, depends on end-users adopting it and feeling empowered to manage it.
A CMS, at it’s best, will enable people who know nothing about web-technology to manage web-technology. However, as this goal is pursued there is a delicate balance between creating a flexible system and creating an accessible system.
–
The original post was published in 2008 and I would’ve gleefully agree with it then. However, I’ve seen enough homegrown systems since then. These systems lack basic features and usability and leave the organization stranded.
If end-user management of the CMS is important then a CMS is required. Thankfully there are plenty of CMS’s available and developers can get involved with that CMS’s community to gain expertise and help steer it’s direction. This is a lot better than re-inventing the wheel for dozens of basic CMS features.