Blog » Herbert Poul's Personal Blog » Content Management System - Starting from Scratch
Imagine you have the opportunity to design a new CMS from scratch. I guess everyone in IT has already made his fair share of CMS’s - from simple blogs or wikis to generic systems. But sooner or later you wind up with a big and flexible CMS of your choice. As good as this is, it won’t solve all your problems and you will definitely find many areas where your own CMS by far outfeatures your nice big generic solution. So what would happen if you take all your experience with developing your own CMS to working with a bigger CMS and design a whole new system from scratch? What are the most important aspects you would definitively integrate into the core architecture of your CMS and which aspects are a mare afterthought? Here are a few things i could think of which might be important for a CMS - let’s say - pick three of your most important things :)

  • Workflows
  • Multilingual and Internationalization
  • Data consistency - no way for dead links, no way for invalid css styles, classes, etc.
  • True Content Management (vs. Web Content Management) - the content should just be content, no editable markup. Editors should work on pure content and should have no say in how the final page should look like (although they could obviously be given a possibility to *see* how it will look like while editing) - Another aspect might be pure semantics. An editor has to edit ‘Articles’ or ‘Surfcamps’, but not ‘Pages’. Articles are simply content which might be rendered as a Page (or rss feed, or sitemap, or PDF)
  • Performance - imagine you could render an uncached page within a few milliseconds. true frontend rendering without the need to prefill a cache after modifications were done. (this would simplify personalization, etc.)
  • Flexibility - give as much power as possible to the implementor - use a nice scripting language to interfere with all and every part of storing the data, finding the required data to rendering the data.
  • Real Versioning (always have consistent data - imagine you could browse your website how it was half a year ago by simply changing the timestamp value of your renderer)
  • Hardcore Versioning for Development - imagine you can have several developers and editors work on a new version of your website while others maintain the current one and afterwards merge content and implementation back into the main branch - just like version control for source code works. - or even better - imagine the same thing with distributed version control. an editor could download a snapshot, work offline on an airplane and afterwards push all changes back.
  • Full Developer API to use all data in custom web apps (more like an application framework). - Comments and (Frontend)Tagging should be part of the CMS, just like Content of the page itself.
  • Personalization - to render a page you have to authenticate a user, make sure he has the necessary permissions and render it depending on user settings. (not just backend - also the frontend obviously so frontend applications can authenticate users when posting comments, etc.)
  • Frontend Editing - No need for an editor to log into the backend, just edit on the website itself.


The most important things for me would probably be: Frontend rendering (and editing), Developer APIs and Real Versioning. Do you have other priorities? How would you start developing a new CMS ;)
Hey, we have Signatures !!! Great, isn't it ? ;)

Posted by Herbert Poul

Assigned Tags: dc2f, cms

0 Comments

Please login to post a reply.

Personal website and blog of Herbert Poul. Also check out my Photo Gallery.




Herby's Photo Gallery

Subscriptions

User

You are not logged in.
Login
Register