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 |
|
+ |
|
|
|
- |
|
|
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.