tags:

views:

896

answers:

4

As a webdeveloper I have built several small and large websites with different teams, but always had to deliver a CMS to maintain content. In my experience with different CMSes, I have found them to pretty much always leave a footprint on the website, like offering page templates that are required to build the website with.

So, I thought I'd just post my personal CMS ideas and wishes here to see how fellow developers feel about it. I am not even sure it is still a CMS I am looking for, so I am really looking forward to your feedback.

What MyCMS should be:

  1. A definition first; The C in CMS stands for "content". As such, it should manage the domain objects that are presented in the website. Objects such as a company, book or user, and the relationships, business rules and little workflow that apply. Nothing more (Joomla, Drupal), nothing less (MySql browser ;-). Names used for illustration purpose only, no offence intended.

  2. MyCMS should not influence the website's visual presentation or offer means to maintain those. Sure, pictures and richtext can be altered, but those are still content (visual content and semantics). No page templates or the likes (I have been forced to use them in the past).

  3. MyCMS should not influence my website architecture. I want to be in control of html, css and javascript, but also use my preferred MVC framework with proven service layer, DAOs and data persistence in place. A CMS should not influence that (and yes, it has done so in the past).

  4. MyCMS should provide an API for login and CRUD manipulation down to individual property level. I should be able to implement my own ajax pattern for use on the website if I wish to do so, which uses solely the provided API to show an in-place wysiwyg editing field, edit a book's title, press save and store my changes. API wise. Purely my wish, W?BIC.

  5. MyCMS should of course provide a decent API for retrieving contents in many ways. This should be the only way for placing contents in my site. My site could be .net where the CMS could be php. Which makes wish 4 harder to implement, but still, with the right APIs and optional wrappers around components, it can be done.

  6. The CMS GUI should be a GUI layer based on a modular setup that in theory can have a command line alternative as well. The command line might not be feasible, but a setup without a GUI in mind makes functionality come first. Modular so I can built new functionality or download existing addons from a community.

  7. Preferably open source, well documented and with a community in place. Not a requirement, but it would be swell.

I can come up with more wishes, but in origin they are probably one of the above anyway. So, I just post my ideas of my ideal CMS here, and probably miss out on some things.

Any comments, suggestions or other feedback on the above is really appreciated. I just like to know how you feel about it all, and if perhaps you have worked with a CMS or other tool that provided some or most of my wishes.

Any feedback is really appreciated. Thanks in advance.

+4  A: 

Let's make it clear first, the context behind the evolution of CMSs like Mambo, Joomla and Drupal, and eventually even of WordPress (which is used as a CMS by several sites now, far from its blog origins) can be summarized in one word: enterprise.

In the beginning there was PHP. PHP stood for PHP Hypertext Processor, the first "PHP" in turn meaning Personal Home Pages. So PHP evolved first from being an ideal layer of abstraction that allows a person to spit out dynamic HTML (for his personal home page, long-ago time when Y2K was a serious concern and Mark Zuckerberg was undergoing puberty) depending on database content. IMHO, the ideals that you've stated above, are met by several early incarnations of PHP, before it ever became a mainstream web development product.

However, people wanted to put up sites much faster than raw PHP itself could afford them, so they built up contemporary CMSs. Both Joomla and Drupal are offshoots of Mambo. Mambo itself was written in PHP, and all its modules and add-ins, as well as site templates, are a result of people wanting to churn out "professional-looking" sites much faster. This is the fastest way "enterprise" websites can be produced, so people went with it, eventually making forks of the product.

Unfortunately in the course of that development, there had to be made easy ways of controlling behavior, look-and-feel, and overall UX within the site. In the war to tear apart the model from the view, many of the efforts had different degrees of success, thus, architecture influenced templates, and templates influenced content, and so on and so forth.

Sadly I think this is inevitable. Unless you come up with your own new shiny layer of abstraction. Which will likewise inevitably have its own quirks in the eternal struggle to split model and view.

Jon Limjap
Thanks for the response. Still, a content management system differs from a website management and authoring tool. Your description fits the latter; website management. It seems hard to find a solution for content only.
Martin Kool
Just to be clear: Drupal is not an offshot of Mambo. Get your facts straight.Drupal was first created as a message board, then derived into a CMS
arnorhs
Other than that - excellent answer, btw :D
arnorhs
+3  A: 

Have a look at Hippo CMS

  1. You can define custom content types and apply business rules to them. Workflow and clustering are also supported.

  2. You can store content as text/HTML fragments and put them wherever you like if you build your own front end. You can also store binary data - pictures, PDF's, Word Docs etc.

  3. You can use your own front end to the data - We're currently using a single instance with both Symfony (PHP) and Echo2 (JAVA).

  4. Not sure about this but the editor is pretty good and customisable. I guess you could develop your own editor if needed - see 5.

  5. You can access the data via WebDav.

  6. The editor is easy to customise and the repository is WebDav so there is a fair amount of flexibility. There is also a DASL engine built in. I have used command line tools for batch processing items and searching to build indexes and there are other tools available.

  7. It's open source and there is a good community. Commercial support is also available. I've generally managed with the documentation but the main developers are pretty active on the mailing list and very helpful.

Colonel Sponsz
+3  A: 

I don't believe any product currently on the market (either commercial or open source) will meet your criteria. Most of what you describe is already provided for in many modern development platforms. For example, ASP.net already supports a rich set of login APIs. Pair that with a framework like SubSonic or nHibernate and you have a full data layer that can expose whatever domain objects you wish.

I think Jon fully expresses the current state of the industry. Every major CMS platform has moved well beyond just being about storing and retrieving content. CMSs now manage the that content from the time it is created all the way up through the display of the content. The reason for this is simple - convenience. The product you describe is a very thin wrapper over the base libraries provided by many dev platforms and as such is only really usable by developers. Conversely, today's CMS targets the end user who does not want to spend months developing a framework, instead they want to "open the box" and be up and running in a matter of minutes. If they wish to add additional functionality or integrate with existing applications then they can bring in developers to handle that small portion.

Joe Brinkman
A: 

Did you have a look at Hippo CMS?

The Architecture is based on separation of Concerns. The front end delivery is separated from the CMS UI & the repository. http://www.onehippo.org/about/architecture

The repository is based on Jackrabbit & off course there is an API. A REST interface is on the next release (see Roadmap).

Hippo CMS is plugin / module based (CMS GUI & front end: Hippo Site toolkit) and based on the Apache License (2.0).

Tjeerd Brenninkmeijer