End of CMS products ?

There are many content management products on the market that could be used in our projects. Those products propose generic solutions for content life cycle management, versioning, workflow and publication but unfortunately they have 3 important disadvantages.

They are:

  • Inflexible because they oblige us to adapt the business model to their technical constraints. They have generally only one way to manage and publish the content but each content application has its own requirements and context. It is a dream to apply the same model to all content oriented applications. Take care when you select a product to have the guarantee to build your own content types. Usually, common CMS products support types like page, menu, document, picture, ... But in the real world, we have to manage particular content types. For example, my current application has to manage government agenda, session briefing, press release, ... That the same for your CMS deployment model, there are also different possibilities. Check out the nice article made by Seth Gottlieb on that topic.
  • Complex because they ask much time to understand and master them. Moreover, it is often difficult to find experts of the product.
  • Proprietary. These products often provides an proprietary API (specially for commercial/expensive products :-) ). Of course, it is always possible to make some abstraction in web architectures but the big problem here is that the API used to access to the content repository is often proprietary. That's why standards like JCR become important.

How can we trust in such solution to build a flexible system which needs to be enhancing days after days? How can we integrate our specific needs? Of course, there is no magic solution in IT. Our business rules will have to be developed and integrated into the selected product. This will increase the development cost and the complexity by "hacking" the product. I don't want to make too much generalisation. It is possible to find products like Alfresco or Nuxeo which are providing more flexibility but they made technical choices for you. Again, take the time to review if your desired product supports your business and technical constraints.

Another approach would consist in using a set of frameworks which are the foundations of our applications. This approach is for a long time recommended for the Web 2.0 applications because they encourage us to develop custom services in order to better adapt our sites at their “communities”. There are many components and open source projects that we can re-use. It is possible to choose a distinct framework for each aspect from our application (Web layer, business/workflow, security,…) while maximizing loose coupling between them. Nowadays, to assemble components is not any more a big problem. Tools like Spring or standard like OSGI are there to help us in this task.

Here is a table showing the advantages and disadvantages of the 2 approaches.

 

 

 

Product

 

 

Framework

 

 

 

+

  • Perfect for generic needs
  • Integrated solution
  • Generally, the support is provided by only one vendor

 

  • More control
  • Component based approach. more refactoring possibilities
  • Recommended for Web 2.0 application and Agile methodologies
  • Generally based on standards
  • Many frameworks available
  • Easy to learn or to find experts.
  • No lock in a vendor solution, follow the standards.

 

 

-

  • Inflexible - Require "Hacking" for custom needs.
  • Complex and more learning curve
  • Proprietary
  • Make technical choice for you
  • Require more technical expertises

 

 

 

In summary, CMS products have certainly strong features but there are often inflexible, complex and proprietary. Using a framework approach is more beneficial for the development team. Indeed, the more the business requirements are important, the more the framework approach becomes interesting. This approach is the best compromise between customisation, performance and development cost.