It doesn’t take long in a conversation with me to bring up Textpattern. I’ve been using it since 2005 and have never, ever, regretted it. In fact, Textpattern is my standard response when a client needs the ability to manage content. I really can’t say anything negative about it that isn’t overly picky.

With that said, as some of you know, I mentioned on Twitter that I was considering writing my own CMS. The key word there is considering. I haven’t decided if what I want to do is a good idea or not. I haven’t even decided if what I want has been done already in a single CMS. Even if a CMS has the potential for the extra features through plugins, I might consider it instead of building my own.

So, maybe my comment was a bit premature. Here is what I was thinking when I posted that comment. Hopefully it will bring about the right conversations and not be perceived as CMS bashing or griping about what isn’t available from many Content Management Systems.

Besides the standard Content Management functionality (article publishing, comment management, RSS feeds etc), these are the things I started to dream up. Admittedly some of them are very specific and not useful to most people. (I image that is why these features would not necessarily be at the top of most CMS developer’s list.)

Need Number One: Data Separation

For awhile now I have been thinking about the separation of data and HTML. The role of the CMS has been a great step in that, allowing us to easily save content to a database and then drop it into a site as necessary.

But what happens when you want to access the same data on multiple sites? Maybe you need an exact duplicate of your content to make a redesign easier and the transition smoother. Or maybe you need to create a mobile edition of your site but you don’t want to drop in a variety of detection methods or tricks. Obviously you wouldn’t want to manage two separate sets of data. Even an API might not work here because you would probably need some advanced set of direction to know which information to pull back.

The obvious answer seems to be that the CMS needs to separate out the domain itself from the data. It would need to save the content and let me specify the site’s URL locally. It may be different, depending on the reality of the matter, but it seems that it would be sufficient and easy enough to do.

Need Number Two: API Interaction

I publish things on Flickr, Brightkite, Last.fm, Facebook, Twitter, etc. and I want those things to be represented on my site. I can write a “module” that interacts with those APIs, but what if I want to go beyond that? What if I want to draw that information from Flickr, for example, and have it automatically post to my site as an article with the photo information and any comments from Flickr users attached? I don’t see that being done as much as it could be. A true interaction with my external content would be a really cool thing. I don’t want to have to give the other site my password though, instead, maybe the CMS would go out and gather my content as it updates and present it in a pre-created format.

It looks as if the Habari CMS works with external sources such as Flickr and Viddler.

Need Number Three: Open Authentication / Friend Recognition

Let’s say I have a set of people that regularly comment on my site. It would be nice if as they began to leave a comment their information could be populated based on a standard like oAuth. I have heard potentially unfounded rumors that WordPress was working on integration with Open Authentication, but it would be a really nice feature for regular visitors.

Need Number Four: “Ajaxishness”

It’s possible that during the time it takes me to write a comment in response to an article that someone else has posted a response saying exactly the same thing I was going to say. For actual conversation and interaction with other users, as well as the author, it would be a nice feature to allow comments to update as they are made. The same thing could be incorporated with other spaces on the site, article lists, recent events, etc.

The difficulty in this has been that often these types of things are implemented by CMS based tags. To refresh the content it’s often difficult to grab a hold of that content using JavaScript. That’s not to say that it couldn’t be done, though I haven’t seen it very often.

Need Number Five: Dynamic Elements

I want to be able to drop in lines of PHP or some other language in the middle of an article without difficulties. Expression Engine does this, in a way, but you have to do some tricky things to make it display the PHP. (The way I found also didn’t let me drop PHP in the middle of the article, rather in a separate space that was loaded along side the article.) What I want is to be able to include true dynamic content. It’s not necessarily a common thing that I’ll be doing, but it’s a nice idea in theory.

This would be especially useful for an internal video player, for example. Being able to watch associated multimedia would be nice, but it would be difficult without either some really advanced and potentially duplicate Flash work or dynamic scripting.

It looks like Frog CMS may have some of this functionality built in, but I haven’t been able to verify that yet.

Need Number Six: Text Messages, Emails and Secure RSS

Sending out text messages or emails are not very difficult, it just takes incorporation. It would be nice to allow readers to sign up for automatic updates, especially now that mobile phones are more interactive. I don’t know of any CMS that allows both of these options. What would be especially useful is if you could setup an Email template and use it to automatically update your readers who have opted in.

Secure RSS feeds aren’t all that popular, but they serve their purpose. I don’t know that I’ll ever have a secure RSS feed on my site, but that doesn’t mean I won’t either. It wouldn’t be on the top of my list, but it could be useful if I wanted to enable integration to my statistics or system notifications. Security notifications could be especially useful here, as well as through text messaging.

Need Number Seven: Article Associated CSS and JavaScript

This one is closely related to number five. The concept is easy to spot now that we have examples like Jason Santa Maria’s site. There are even plugins for Textpattern and WordPress that allow you to specify an individual CSS file per article.

Let’s build on that concept. It’s a great idea, but what if I want to remove the standard CSS file and only use a secondary one? Then, let’s apply the same thing to JavaScript files. If I have a video that I want to play only on one page I would traditionally have to enable that on an entire section, why not just have an option to include any number of JavaScript and CSS files?

In managing it this way we could separate our content, template and style even further. It would also allow us to limit access to files that could potentially slow down the site’s load times or just lower the number of HTTP requests in general.

The Downsides and Anti-Considerations

I could probably continue to name features that would be nice in any of the major content management systems, but I think you get the idea. Even if I did consider writing my own, why would I want to do that?

A lot of people would argue that there are already too many options out there for content management systems. I don’t know that I would agree with that, but I do see the point. For some of these it would actually be easier to just write a plugin for an existing CMS. But I’m not always a big fan of plugins. It’s too easy to write a really great plugin that does exactly what you want it to do only to find it broken with the next release of the larger project. This actually happened to me just last night with my favorite image gallery plugin for Textpattern.

In most cases CMS development is driven by a community of developers, and I see that as a great thing. On the other hand, if the efforts for development are funneled through the group there’s no guarantee that the things you see as important are actually going to be accomplished.

The other option would be to write a system that comes along side a CMS and handles a lot of these requests. The good thing about that concept would be that it could be made somewhat independent of the user’s choice of CMS. But, who really wants to manage a CMS and a pseudo-CMS?

As with anything there are some major upsides and downsides to the decision. What I wonder is twofold:

  1. Is it worth the time and effort?
  2. Has it been done before?

The comments are open for discussion. If you have a feature you think would make a CMS the best thing out there, or if you know of a CMS that is the best out there let the world know!