On a search for the ultimate CMS
Everyone working in the field of web development knows about them: content management systems. Back in the early days websites were just a couple of crafted HTML pages and possibly a form or two for visitors to send in some information but those days are long gone. Most websites are dynamic and database driven. Web development has evolved into a set of skills most people don't all have. I guess we can say web development has matured. More dynamic websites require more than just neat designs and valid html. A CMS system is required for the majority of websites that are more than just a small presence outlet online. An article about the search for the holy grail: the universal CMS.
Building CMS after CMS
In my life as a web developer/programmer I've built quite a lot of different CMS systems. Never have I used one of the commonly available CMS solutions, neither closed nor open source. "Why not?" is probably the question that comes up first when reading these lines. The reasons are rather simple: they don't quite fit the needs of the client, to put things mildly.
So many people, so many wishes
People are strange creatures. Clients never quite want the same thing in their search for a good web site/application. In fact I've yet to find two clients to whom I could offer the same solution. It just isn't going to happen. Of course there are generic parts that many people want to have on their website. Many companies wish to offer company news, downloads, event calendars, articles and other well known 'standard components'. Of course these are quite well covered by many existing CMS solutions. Needless to say, these features are never causing any problem if one would try to fit in an existing CMS system. The problems rise when the client comes up with desired features that aren't covered by existing systems or only partially.
Fighting the giant
The worst imagineable scenario occurs when a client has already chosen for a CMS system even before they contract your company to build their website/application. In most real world companies people who don't have the proper knowledge about technical implications are the ones who decide to purchase a CMS system. It's them who are sensitive for marketing/sales talk from third parties who offer 'complete solutions' to manage their corporate websites. In the ideal world those who are the decision makers incorporate the knowledge of their technical staff when choosing a CMS solution but more than often this isn't the case. Those who have to create or maintain the website find themselves stuck with a system they would never choose themselves. If only someone would have asked their opinion! Maintaining the website is one thing, building it is even worse. Developers find themselves fighting the often rigid structure of the existing CMS solution in a desperate attempt to make the impossible happen. Management is convinced of the power of the system they purchased and therefore they expect everything they want to be implemented in a glitch. That's what they were told by those who sold them the system so it's only logical that this is what they expect. In reality things aren't as smooth as they seem. Development exceeds deadines, costs rise and the management ends up with a way too expensive website, delivered way past the desired deadline. And very often the end result isn't quite what they wanted but at one point everyone silently accepts the situation because things have already ran out of hand enough.
So... we'll build it ourselves then?
The alternative for choosing existing CMS solutions is building one from scratch. This approach has several tempting advantages but of course it comes with a price tag. When developing a CMS from scratch, developers aren't 'crippled' by having to build everything within a tight prescribed frame. Another advantage is the fact that (technical) creativity can flow quite freely. If the development team is both skilled and creative enough almost everything is possible. It seems like the right formula for success. Now for the bad news: This approach can cause serious problems in terms of costs and maintenance, the last being the most serious hazard. In terms of costs it's difficult to say whether the balance shifts towards the stock-CMS solution or the custom made solution. As we have seen, both approaches have advantages and disadvantage. Personally I believe these will even out against eachother quite well if we consider licensing costs and/or training with an existing CMS and extreme coding challenges when trying to do something the existing CMS doesn't support on one hand and extra development overhead on the other hand when creating a completely custom CMS. Maintenance however is a different story. Custom made systems are often built by people with very little writing talent. Therefore documentation is often non-existent or very scarse at it's best. The pressure of upcoming deadlines also causes documentation activities to be skipped or performed very badly. This causes a serious risk for the client. It renders the client completely dependent on the one(s) who created the system. I leave it to the reader to realize why this is a very bad thing. It seems we're quite stuck now. We cannot use a a pre-built CMS because of it's limitations, rigidity and sometimes price and we cannot build it ourselves because it's too expensive and because it poses a maintainability threat.
Introducing the Meta CMS
The above described status quo calls for a different approach, which I'll dub the 'Meta CMS'. A Meta CMS would be a framework enabling developers to build a CMS fast and without posing limitations on what the CMS and the site presentation engine can have in terms of features. Efficiency could be achieved by offering stock data access components, form components, page rendering components through XML->XSL transformations for both frontend and CMS backend. Most traditional CMS approaches are 'feature centered'. We find a news component, a calendar component, a links-section and many more commonly used matters. If we want a more exotic combination of features or components that just aren't available in the CMS we're stuck. Therefore, away with feature-centered plugins! The core of any dynamic website, in my humble opinion, shouldn't consist of blocks that enable predefined feature sets to be implemented but of... CONTENT! Texts, images, URL's, flash movies, video's, documents etc. etc. form the building blocks of any site on the web. The meta CMS should have these as it's fundamental building blocks instead of predefined combinations of these presented in chunks. Another cornerstone of any website is the page entity. A website consists of pages. Pages are interrelated by internal or external links. Pages contain texts, images and other basic blocks of content.
The ideal Meta CMS
My ideal CMS, or meta-CMS would be a better description would have the following:
- Open Source or at least with a well documented programming API
- If licensed, have a fixed price to deploy the CMS for one client no matter how many users
- Platform independent
- Based on open standards both in terms of W3C standards as well as code (JAVA, php, etc.)
- Content centered (versus feature centered)
- XML based (XML being the core output format both internally and externally
- Use XSLT for final presentation format in order to be flexible in terms of multiple client types
- And last but not least: it should SAVE development time instead of making things more complex. It should be a better alternative compared to the do-it-yourself approach as described in my essay.
Concluding thoughts
Frameworks like MMBase or Zope seem to have adopted this philosophy quite well which means at least I'm not the only one who 'has a dream'. However after studying these frameworks I believe they are on the right way but not quite the meta CMS yet. It seems there's work to do. Let's build the XML driven Meta CMS that really saves developers and clients time and money in terms of efficiency, without loosing any flexibility in terms of being able to satify the wishes of the customer. The road ahead is long but who knows we might get there eventually...
Filed under: programming
Number of comments:
Number of trackbacks:
Tagged with: 







At 06 December '04 - 12:19 Johan wrote:
At 06 December '04 - 12:20 Matthew wrote:
At 06 December '04 - 12:21 Iva Koberg wrote:
* XML/XSLT driven,
* breaks pages down into regions where content pieces and/or components can be assigned,
* semantic markup
* valid accessible XHTML/HTML generated, or text, Atom, RSS, etc.
* CSS for layout
* common components available, others easy to implement
More info at http://www.livestoryboard.com
At 06 December '04 - 12:22 Marco wrote:
The Lenya CMS is unknown to me. I do know Cocoon though which is a nice framework. I worked with it briefly in the past. I’ll check out Lenya. Thanks for the tip!
At 06 December '04 - 12:23 Iva Koberg wrote:
That’s interesting – do you mean hosting the CMS or hosting the live site? Sites produced with liveSTORYBOARD do not need to be hosted by liveSTORYBOARD, only the CMS lives on our servers (though we also provide shared or dedicated hosting). We have actually found that most customers prefer not to deal with the hassles of hosting the CMS – saves time and money :)
As far as the source code goes, with liveSTORYBOARD CMS you get access to all project assets – XML/XSLT/CSS/etc, so you have complete freedom to overwrite all our default templates or write your own components, for example.
Best,
Iva.
At 06 December '04 - 12:24 Marco wrote:
Don’t get me wrong, livestory seems a very nice option for those who have a tight budget and who are developing their website in house or having it done for very little money yet requiring a full blown CMS but from a developer point of view I think it’s a lot better to have the CMS ‘in your own hands’ so to speak.
At 06 December '04 - 12:24 Marco wrote:
At 06 December '04 - 19:27 Iva Koberg wrote:
100% in agreement with your point, Marco – liveSTORYBOARD’s answer is our partner programs, where dedicated instances of the CMS with full access, control, cobrands and unlimmited users are available. Don’t want to go off-topic here though, I will post an FAQ on our site instead for anyone interested.
Back to the topic at hand, the definition of the “ideal CMS” you added is an excellent list of requirements.
At 31 December '04 - 06:59 Jihad wrote:
Get a look on this
http://www.spip.net/
Ciao
J
At 04 January '05 - 07:11 Bruce wrote:
But guess what? It creates rss files, css based, comes xhtml transitional, and the best part? It is template driven. You can do anything with a template and have any number of them. I mean “anything.” I have deleted the main template and written in a step one basic html page… it worked… rebuilt the site and page was online. Total configurability. MySQL backend…
templates and tags that you can do anything with to me means that here is a publishing platform I can redesign cheaply for almost any application.
At 25 January '05 - 15:55 MadJo wrote:
which in most cases is a plus.
At 08 December '05 - 10:54 Rick wrote:
A – Open source or not? OS is more flexible and you can model your CMS to provide certain functions. If not, most likely you will have a cookie cutter solution, one size fits all. That maybe alright for some. But you will assume that the manufacturer has made all the right design choices for your needs.
B – Mysql or database support? If you are going to grow, your data or content will need to be in a database. You will also have need of an database backup utility. All users, structure, preferences and content is saved at the click of a button to your desktop.
C – Create your own user and admin levels – some CMS only offer 2 or three levels of admins. Each have different rules, what if you do not want that rule to govern a particular admin?
D – Create your own permission /rights for each level – what if a user – This level can be the user or subscriber. What is you want to create your own group of user and be able to define that group? If for instance you want a user to be limited to certain pages and other pages they can not see, you need to be able to define this user or group. This is called having granular contol. Even if you know nothing about this now, your needs may more than likely call out for such a feature.
E – Integrate media objects like Flash seemlessly as you would text. Can the publish upload media and it appear on the page as expected or will the they have to point to a URL? You would want both ways. How will your media be positioned? Can your aticle be also “free form?”
F – Granular control over permission by user or groups – If one of your users does not submit the necessary document or payment, can you restrict that user to certain pages or limited the content the user may access?
G – The ability to create a Mypage for each user – this like ebay, all personal, help tickets, billing information and private messages reside here
H – Possesses a vibriant and generous user forum/community – no list servers please
I – The core is very slim and basic whereas plugins/modules can easily be updated with most of the work being done by the plugins and not the core
J – Provides multilingual support
K – Is php, XML or java or a mixture of these
L – Easy to adapt and create templates using certain technology “Smartly” or HTML/CSS based
M – Is there someone that can help you and shows up to assist – If it is open source, you have to reply on someone who is willing to assist you.
N – If a user/member request or provides feedback, can your CMS track that request?
O – Is tracking where your user/memger is vistiing important? Will you be able to receive meaningful reports?
P – Are statistical reporting needed? How many users are visiting what page and how long are they there?
You may be someone who can not understand what these items mean, but never-the-less, you will either now or later have to come to terms with them.
If you are not asking these questions – you will be assured one thing, you will be knee-deep in an CMS to find out later you’ll need to find another product.
Now say you have 200 members – are you willing to shudown your site, manuall have to setup your user/members, migrate content, build your internal stucture for admin and moderators? I am myself looking for such a CMS.
Rick
At 30 November '06 - 13:06 mieke wrote:
At 02 March '08 - 22:17 Simon wrote:
http://www.djangoproject.com/
Django is a framework that takes a lot of the pain out of building a CMS-ish web application from scratch. Also makes it easy to re-use modules of Python and templates of HTML from project to project.
At 29 May '08 - 08:47 alex wrote:
I notice that your post was over a few years ago. By now you must have converted to Drupal right?
;)
At 30 May '08 - 02:49 Simon wrote:
At 30 May '08 - 23:07 alex wrote:
maybe ur kidding? ;)
At 30 May '08 - 23:12 alex wrote:
Anw, if ur looking to build ur cms u’d probably look for a framework in ur language:
Ruby => Rails
Python => Django
Php => cakePHP, codeigniter, symfony, Zend Framework etc …
But why do all that “from the ground up” stuff when Drupal is already there?
At 17 September '10 - 15:20 Nick wrote:
It’s called *lightning and is in beta right now.