By Deane Barker | June 20, 2003 | 9 Comments
I was over at OpenSourceCMS.com today playing around with some content management systems: phpWebSite, Xoops, and PostNuke. They were all quite good, with phpWebSite being the one I enjoyed the most. But I want to articulate something I’ve had I was over at OpenSourceCMS.com today playing around with some content management systems: phpWebSite, Xoops, and PostNuke. They were all quite good, with phpWebSite being the one I enjoyed the most. But I want to articulate something I’ve had in the back of my mind for a while…
“Content management systems” are either open or closed. Either the systems manage “content” as they define it, or they can wrap themselves around any content. There are many of the former, and far too few of the latter.
Movable Type, for instance, is sometimes called a “content management system.” But that’s a stretch. Yes, MT will manage content…so long as “content” is defined as an object with a title, a preview, a body, an excerpt, some keywords, and a category assignment. That’s really it. The system is closed in the sense that it’s built around one type of content — blog postings, or perhaps news — to the exclusion of all others. (I made this same argument in a support forum posting several months back. I called MT “a content management engine tied to a defined format.”)
Let’s say you want to use MT to manage book reviews. You’re okay if you use the title field for the book title, and the preview for a summary, and the body for the review. But where do you put the publisher? The number of pages? The ISBN? There are some plug-ins that allow you to store key/value pairs in MT, but you’re getting into hack territory pretty quickly.
(To be fair, Six Apart has never claimed MT is anything but a blogging system. Users being as demanding as they are, however, have tried to stretch MT into other types of content management and then they complain in the support forums when it won’t work.)
phpWebSite, PostNuke, and Xoops were the same. Yes, they managed content, so long as it fit within proscribed guidelines. For news or announcements, you have a headline and a preview and a body. That is the “content” that it manages. (In fact, these three systems have another limitation in that their display side is fairly derivative — phpWebSite looks alike a portal and everything fits in “blocks,” and the other two are essentially three-column layouts. That’s another post, however.)
An “open” content management system would let the user define the parameters of the content (or “objects”) that it manages. For instance, if you wanted to handle book reviews, you could simply define a new object — a “book” — and the fields you needed:
- Author (repeatable for multiple authors)
- Year Published
- Hardcover or Softcover
- Number of Stars
- Cover Image
You could even apply validation rules. “Title” is required. “Year” must be four digits. “Number of Stars” is a select box of whole numbers between 1 and 5. Etc. The CMS would then render a Web-based editor based on the properties you have defined.
Here we have Utopia. This is true “content” management — a system adaptable to whatever content you choose to store in it, whether it be a simple blog system, an employee directory, a database of auto parts, whatever. The system could wrap itself around whatever you wanted.
(How would you store this mess in a database, you ask? You probably wouldn’t — data as volatile and unstructured as objects having arbitrary properties defined on the fly is a textbook case for XML.)
There are systems that do this, but they’re high-end (I’ve done this with Documentum and I’ve seen it done with Interwoven). Is there a low-end system that would accomplish this same thing? Perhaps Ektron’s CMS300 (see this screencap), though at $4,999+, many people wouldn’t consider it “low-end.” (And, besides, Ektron’s system is 100% dependent on their ActiveX-based WYSIWYG editor.)
Is there an open-source system that does this? I’ve never seen one. Perhaps I haven’t looked hard enough. I know that you can write modules for PostNuke and such that may let you emulate some of this functionality, but I’ve never tried it.
So, you ask, if I’m full of all these great ideas, why don’t I write this system? Would it surprise you to know that I’ve already started?in the back of my mind for a while…
What Links Here
An excellent blogger/news generator that is “open CMS” by your definition is called Coranto. You can download and use it for free at http://coranto.gweilo.org/official/ . It’s been around forever but never really caught on for some reason(probably because it’s coded entirely in PERL). I used it for warpreality about two years ago and it worked great.
Matt got me to download and try Coranto. It’s not bad. It does indeed let you create your own fields and the form controls they’ll use.
The output is templated. You write the HTML for each item, and include a special tag where you want a custom property to appear. Coranto produces a text file that you just include somewhere. You could really do a lot with this.
Sadly, one big drawback: it only supports one object: “news.” You can’t create different objects, each with their own properties. Too bad — add that and this would be a quick and clean site management tool.
(You could, however, run mutliple versions of Coranto, each defining “news” a different way. But now we’re getting kludge all over our shoes…)
I got to thinking last night, and I remembered that Zope will do this too. However, Zope is kind of its own religion — it’s very voodoo-ish with it’s own languages and everything. And all the data is store in a big data file, instead of in a database. However, it does work and is “open” like we’re discussing here.
Thanks to Tim from http://www.reachcustomersonline.com/ , I found EZPublish ( http://ez.no ). It does exactly what I’ve described here and stores everything in object-oriented format in MySQL. Very nice.
Deanne wrote this about Coranto: “Sadly, one big drawback: it only supports one object: “news.” You can’t create different objects, each with their own properties. Too bad — add that and this would be a quick and clean site management tool.”
A basic Coranto installation is quite slimmed, but it is possible to add much more features through addons. So I just wanted to mention the addon X Multisubmit (XMS) which takes care of this problem for you, making it possible to create different types of objects, each having its own specific fields. And together with the addon CustomFields you can apply any validation rule you like for a inputfield; correctly formatted date, a number from 1-5, testing that a URL is correct (and working).
Check out ExpressionEngine, the new product from the PMachine folks. Looks like it might do what you’re talking about.
“Do you need twenty fields for the content in your killer e-zine? No problem. Or how about a pull-down menu containing meta data relevant to each post? Simple. Or perhaps a couple fields for your breakout content? Your choice.
ExpressionEngine lets you define the data model based on your needs. It does this by giving you an unlimited number of entry fields for your content. Fields can be input boxes, textareas, or pull-down menus. The member management system allows data modeling as well, letting you define what personal information you want to collect from your members. These custom fields can be input boxes, pull-down menus, or textareas. You can even make fields required for member registration. “
I use eZ Publish, and find it absolutely fantastic for most CMS tasks, though overkill for smaller sites (though you know, once you know how to use it…).
I’ve used pretty much every other CMS solution out there (including the big boys), and have found that, in general, the state of Open Source CMS just sucks. Most of the systems are either hacked, “scriptish” instead of software, don’t use OO techniques, or underdeveloped.
Its changing, true, but not fact enough!
Drupal lets you create your own content type using Content Construction ToolKit (CCK).
You ask the question: “Is there an open-source system that does this?” I would invite you to look at Plone, which is an open source CMS built on Zope and Python. It has many of the “enterprise” features such as roles-based security, workflow, scaleable server model and a module and componentized architecture. There are free downloads of point-n-click installers for Mac and Windows. Have a look at http://plone.org.