One concept that begs for clarification when we implement Content Management Systems (CMS) is the difference between a company's Code Lifecycle and their Content Lifecycle. I've seen many development organizations who are about to purchase a CMS--attempt to figure out how this new CMS will work in their existing application code development process. Enterprises have robust and sophisticated ways of managing their Code Lifecycle. They are tuned to their organization’s unique needs that are built on industry best practices refined over many years. They use tools such as: Version Control repositories, IDEs, Unit Testing, Bug Tracking tools, Release Configuration and Management tools, more recently Continuous Integration concepts--have taken hold and are using Automated Code Quality tools like: checkstyle, pmd, cpd, cobertura.
Along with these tools, most likely procedures have been put in place to minimize risk and maximize change control success. Things happen on off-hours, rollback procedures are identified and tested--hot backups are available.
This is the environment we are walking into with our NEW tool for managing content.
The Content Lifecycle looks much different. Most tools follow a basic pattern:
The trick for us (CMS Implementers) is to figure out a way to make these two co-exist.
There are three places where we need to be aware of the interrelationships:
I'll take each one separately:
Every CMS will have a different idea of what a template is. Some will be files on a file system. Some will store it them in a database. Some will be code that you are completely familiar with like XML, .NET or Java or Freemarker tags. Some will have their own proprietary development language. Some basic principles that must be applied to our template development are:
Ideally, we'd be able to create unit and regression tests for them and have tools that we can run to ensure code quality, but b/c they differ so greatly by vendor, standardization isn't really high on the vendor's priority list. Typically though, if we are clever, we can find ways to do the above two minimum steps to make template development more stable and repeatable.
We could spend a lot of time on strategies for doing this based on all the different CMS. Each CMS will have a different "Best Practice" for doing this. However, here are some principles for determining the right model to set up:
Again, you might be tempted to use the CMS's ability to publish to different servers as your mechanism for deploying your code, but DON'T DO IT. The best advice I can provide is, if you do a good job of #1 and #2, the answer to #3 should become obvious. If you don't, the answer to #3 will be convoluted. You need to find some way to plug back in to the normal Code Lifecycle.
The biggest favor you can do yourself is to think of how you will achieve these things with your CMS implementation before you start development. Prototype and test your solution to ensure that your theories work. You can quickly code yourself into a hole where you are either stuck with a terrible Code development process or faced with redoing or moving large pieces of your application (yes, this is experience speaking).
Let me know your thoughts and strategies with different CMS!
Source: Content lifecycle vs. Code lifecycle
© copyright 2011 by oshyn