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:
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…
Follow Gadgetopia on Twitter
I got to thinking the other day: exactly when do you have a "content management system?" We've all built apps that manage content, but when do you graduate from a "relational database with an admin section" (RDBWAAS) to the lofty and deserved title of "content management system?" (Incidentally, I struggled…
Aaron Mentele is asking about posting practices for people who blog a lot. But while the first part of my prediction seems to be true, I can't say the same about posting getting any easier. Deane Barker tells me he spends 15 minutes on each post with the exception…
The more I work with content management, the more I find that major architectural considerations are big indicators of how happy you're going to be developing with any given CMS. These are not specific, detailed functional questions ("does the system automatically generate RSS"). While those are important as well (see…
I was in Boston on business a couple of weeks ago, and one of the things I did for fun was take the train to Cambridge and walk around the campus of Harvard University. Call me a total dork, but it was amazing to actually be there. (Did you know…
We're trying something new around here. Since we have so many posts, there's a lot of internal linking between posts. This linking has value because it can point you to other things you may be interested in. You see, you can only link to something in the past --…
When it comes to content management, custom fields are good -- it's nice to have a place to put things that the developer didn't anticipate. You'd think it would bridge the gap between a "closed" CMS and an "open" CMS (see this post and this post), but it doesn't…
I spent some time over the weeked with two major open source content management systems. I'm not going to mention names, since I don't want to start a flame war, but they're both very popular, have big communities behind them, and there's a good chance you've heard of them. They're…
At one point or another, all content management systems (CMS) come down to some kind of datatype. You have to be able to set a field to a string, or an integer, or whatever, and then enforce and manage that piece of data. The idea is that you take…
A friend and I are looking at a bunch of different content management systems for a church Web site. We've been discussing the merits of the various approaches, and looking at some open source offerings like Mambo, Typo3, and eZ publish. During this, I've struck upon a concept that I…
Well, here we are at #4,000. This puts us just 1,000 posts away from our stated goal of 5,000. Along with the 4,000 posts, we have 6,050 comments as of this writing, and that's very cool. We appreciate all the interaction everyone has with the site. Interestingly, we…
Here are two things that cut so many good ideas off at the knees. These two factors are the two biggest things that stop good ideas from getting implemented and make programmers pause when they should forge ahead. 1. The Urge to Generalize Say you come up with an idea for…
Admit it: whenever some group like 37 Signals or Six Apart comes out with a new software product, you secretly think, "I could of done that." How many of us developers thing we could build something just as good if we only put in the time? I do. Yes, I admit…
Thoughts on Content Management: This guy and I think alike. In the beginning of the article he touches on the same things I talked about when I compared open and closed content management systems. Then, he runs into the same problem: there are too many types of content, each storing…
I've complained off and on about the lack of user-defined fields in Movable Type. Today was finally the day I got off my high-horse and messed with some code. Here is a method to add a new field to the MT database. The field can store whatever you like,…
Global Moxie: I played around with Big Medium, which is a new (v1.1) content management system. It's not bad, thought it's closed, meaning it manages content so long as your "content" consists of articles with a title, slug, body, etc. They do have some neat things for pull-quotes and such,…
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.
http://www.pmachine.com/expressionengine/
"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.