Content Management as an API

Oct 2

Content Management as an API

Here’s what I want: a CMS that was truly developed from the API out. If an interface comes with it, great. I might use it, I might not.

I’ve talked about this before. Last year, I said this:

When building a new piece of software, you really need to completely divorce the interface from the API. You need to get in the mindset that your app is really just a data store and a set of logic modules that do something. That is your application.

I still believe this. Give me a well-implemented API, and let me write my own interface.

I was working on a client’s site this week. They needed to manage exactly one piece of it — the ubiquitous list of press releases. I debated tossing Movable Type at it, but they were running on Windows and I didn’t feel like supporting Perl in that environment.

So, I custom-wrote it. Yes, call me an idiot, but I actually created a database table, wrote a “News” class, extended that from a “ContentObject” class, built a little database abstraction class, etc. I finally hooked it up to a solid interface and TinyMCE.

The result is fantastic. Client enters a password, and they’re right there in the list of press releases. They can click “Add New Release” and they get a lightweight, focused interface tailored specifically for what they want to do. It’s as tight as it can be.

Why is this surprising and earth-shattering to me? Because I’ve spent years now working with boxed systems. And a boxed system has to work for all types of content, not just my specific content. Their interfaces are necessarily general and not specifically geared to what I want to do.

In working on this system, I was forced to acknowledge this: you will never get a more solid interface than one you custom-code for the situation. eZ publish has a nice interface which you can customize quite a bit, but there’s a still a lot of surrounding…stuff, that makes it a less than optimal system. Most other systems are much worse.

So let’s all start custom-coding our content management systems again, okay? Um, no. The problem is that you have to solve all the same problems all over again — user management, versioning, workflow, preview, etc. In the end, it’s the “glue” code that kills you.

(See this post for the uber-list, or this post over at “Enter Content Here” for the Big 6 that sink a lot of systems.)

And this is why I want an API-only CMS. I want a set of objects that I can use to build my own interface. I want a set of objects that handle all the crappy code that goes with a CMS. I want to build my own generalized interfaces, but also one-off, mini interfaces (“Channeled Interfaces,” I named them once) for people to do certain, specific things.

The problem is that most systems are built from the interface in. This is great — wonderful interfaces are important — but then the API becomes secondary.

In fact, I work with a boxed system now on version 7.0 that is trying to back an API into their interface six years after it was first built. They went from the interface in, and the result is a lot of re-work and changes to get the API to match up to what they’ve had scattered throughout their interface for years.

So, I want a true, native, API-level content management system. Where does such a thing exist? Start naming names.


Comments

by Jeroen Sangers,   October 3, 2007 2:39 AM  

I never looked at it, but doesn't eZ Systems offer such an API based framework called eZ Components?


by Tomas,   October 3, 2007 4:46 AM  

I'm hoping you did this in c#.NET. If so, I want in! I want to help. I built a massive big (buggy) ASP system a few years ago, it spits out static asp pages. I'm sick of it, and want to move it to .NET with me. Dont have the evening to do it all myself.

Get an open-source project out of this maybe?


by iii,   October 3, 2007 7:41 AM  

isn't this how 37signals got big?

maybe instead of finding one, you can build one...


by bs,   October 3, 2007 8:46 AM  

Come on Dean, no one thinks about content management systems more than you, why don't you just start defining your dream API on Gadgetopia. Once you have the API refined with the help of your readers, you can start an open source project. There are a lot of great developers waiting to jump on a well defined project that addresses real needs. If you've found you needed it, I'm sure there are many others as well.


by Owen,   October 3, 2007 9:19 AM  

Habari is well on it's way to becoming much of what you need. Chuck the administrative components you don't need. Help us build out the API as you've described.


by Jonathan Peterson,   October 3, 2007 9:40 AM  

interesting idea. Obviously ATOM could be a lightweight starting point.

Google doesn't know much - most of the links are to heavy iron portal systems from Oracle/IBM, etc.

I did find this, which looks interesting: http://onpubco.com/index.php?articleID=15&sectionID=5


by Corey,   October 3, 2007 12:37 PM  

Hi, I'm the developer of Onpub (linked in the post above) and stumbled on this post from looking at my referral stats. Anyway, I'd be really interested to hear what you think about Onpub. I have a similar philosophy to you when thinking about how a CMS should be designed. That is, not with the API as an afterthought. Well, I've been trying for the past few years to develop a CMS which focuses on an API that enables many different website frontends to be built on top of it. I've yet to release an example Onpub website frontend. I've written a bunch for sites I've developed, but haven't released any code publicly, yet. I realize that eventually I will have to, since most folks don't want to code a frontend from scratch, but would prefer a working example they can customize. But, OnpubAPI is designed in a way that folks can code a frontend from scratch if they preferred to. Also, the API code can be totally decoupled from the Onpub UI code, if necessary. If it piques your interest and you have any feedback, feel free to post to the forum or drop me a line at corey at onpubco dot com.


by Michael Mathy,   October 3, 2007 4:17 PM  

Hello Dean

You should check again QuickelSoft CMS. That is exactly how I build this product.

The root of the system is just a framework to help you manage your content in an SQL Server database. Everything you want to use is an object (a Content Item, a user, a group, an access control list, a folder, ...). I do a lot of unit testing on the framework and then I developped the user interface on top of the objects.

You can also build whatever user interface you want (web interface, Windows application or through a command line batch file).

In fact, if you want some help, the code of the QuickelSoft CMS front end is not obfuscated and you can check it with Reflector to see how it works.

Have a look and do not hesitate to contact me


by Michel Fortin,   October 3, 2007 8:41 PM  

Like others, I'm not getting it. What's the difference between the CMS API you want and a web development framework?


by Deane,   October 3, 2007 9:56 PM  

What’s the difference between the CMS API you want and a web development framework?

Find me a framework with an O-R mapper with permissions, versioning, workflow, multiple rendition support built-in. A content management-based app is different in many ways than a regular app.


by O.M.,   September 17, 2008 6:13 AM  

A year later, has anything like an API based CMS emerged?


by Kas Thomas,   September 17, 2008 6:51 AM  

Apache Sling. It has a powerful REST API (which supports CRUD and query, the latter via SQL or XPath) as well as all the Java APIs associated with Jackrabbit. Details at dev.day.com and Apache.


by TonyC,   December 2, 2008 10:03 PM  

CouchDb is almost all interface.


by Salvo Lavis,   August 30, 2009 8:28 PM  

Deane and everyone, We are developing just the thing you are looking for. Please visit http://www.bitsybox.com to get more info. So far we have the read API, and the write API is soon on the way. Plus, our architecture is professional and solid. Best, Salvo



Add Comment


Want to advertise on this site? Contact FM.
Laser Toner Cartridges UK laser toner, toner cartridges, hp toner, lexmark toner, samsung toner, canon, toner, epson toner, oki toner, kyocera toner, xerox toner, remanufactured toner, compatible toner
Direct TV Deals Free 4 room direct tv deals. no equipment to buy. free fast professional direct tv installation. this is the best direct tv deal available anywhere.
SEO Article Learn from the experts with our SEO article.
rope light Shopping with birddog distributing, inc., gives you access to the lowest prices, the best customer service and the quickest delivery times possible.
Laptop AC Adapter We offer genuine factory direct replacement AC adapters.
Direct TV Best satellite TV deals.
Direct TV Deals Direct TV programming deals are varied and include packages containing from 50 channels up to over 250 channels.
8mm film to DVD Retain family memories with the only frame by frame digital restoration service in the United States for your 8mm film to DVD today
Rubber Stamp Shop for custom self-inking stamps, hand stamps, address stamps, label stamps, check endorsement stamps, check deposit stamps, date stamps, pre inks, pocket stamps, ink and much more!