Re-thinking Content Management
warning: blatent self promotion ahead...
A Survey of the Field
I was looking at MODx today and I cannot help but think,"haven't we done this before?" From what I see the content management falls broadly into two categories. First there are applications that does one thing and does it well. Numerous bulletin boards, image galleries, and blogging packages fit into this category. Wordpress started out this way, although it is gradually being morphed into a real general purpose CMS. The other category would be complex, general purpose CMSs. Most of these tend to have separate modules to handle for instance news, and images. They may share some framework to allow modules to be added and removed. They probably link to the same user info, use the same utility classes perhaps, can (if your lucky, sorry Joomla users) be placed in a common set of categories, but as a whole each type of content is it's own world. In short most general purpose CMSs are a conglomeration of specialty content management tools.
Taking a Step Back
Sometimes in order to understand something it is useful to look at the big picture of what is trying to be accomplished. We are trying to manage content. We have stuff; we need to view it, organize it, search it, change it, promote it, and talk about it. We want to be able to stick it anywhere on a page. We want to generate lists of it, tables of it. We want to put our lists where we want and change the look and feel whenever we feel like it.
Why is it then that our stuff isn't just stuff, our content isn't content? We have images, articles, events, whatever that must be treated as separate things. It's all just stuff. Yes there are things we want to do with images that we don't want to do with blog posts, but there is a whole lot of things we want to do with all our stuff. Furthermore if it isn't written (or uploaded) content it's programmatically generated content, and we want to be able to but that anywhere we want.
Enter Groupy
The concept that all our stuff is either written content or programmatically generated is one of the core ideas behind Groupy. Within groupy there are two main things that users deal with, modules and content. You can put your modules anywhere in your skin/template. There are modules that can display one or more content (or do whatever), and there is content. Images are content, news articles are content, events are content. You can link to, embed, or display content inside other content, or you can embed a module with a list of the most viewed content in the middle of your article. The result is a remarkably powerful system with alot less buttons.