If you have ever developed serious web applications, you immediately will see a large degree of overlap between the features a CMS offers and the features you expect from a web application server. Most CMS software sits on top of a web application server, using its underlying infrastructure to handle HTTP connectivity, users, groups, permissions and even the database API. In some ways, CMS was the first popular class of application to be deployed on the Web, much as spreadsheets were the first applications used on personal computers.
Overall, it's a good thing CMS software is written on top of an application server, especially in the open-source world. This means you can add new modules to the core CMS, handle new types of documents, change the templates, extend the database and add new types of permissions and work-flow rules. But it's important to remember the difference between an application server and a CMS. The former provides the infrastructure for creating applications, and the latter is an application you can customize.
So if you're looking to create a web-based newspaper, magazine or corporate news site, a CMS is undoubtedly the right type of software for you. But if you want to create a web-based application that tracks donations to your favorite charity, a CMS probably won't provide the flexibility you need. The difference between web applications and web publications has always been a murky one, but as web applications become increasingly sophisticated, CMS software will be recognized as one type of product you can run on a web platform.
Because content management systems normally run on top of an application server, your choice of CMS might depend on the type of server on which it runs. Many companies have moved to J2EE (Java 2 Enterprise Edition) as their underlying platform. Indeed, the well-known Vignette CMS originally was designed to work with Tcl but migrated to J2EE when the buzz surrounding J2EE became too great to ignore. Because J2EE is a standard, rather than a product, customers can choose application servers and CMS software separately. You can use the open-source Tomcat/JBoss duo or the proprietary offerings from companies like BEA or IBM.
If you dislike Java, or if your development team is more familiar with another set of technologies, you might consider a non-J2EE CMS. Such products do exist, and we will look at several of them in the coming months, such as Zope's CMF, the CMF-based Plone, Bricolage (Perl/PostgreSQL), PHPNuke/PostNuke/Xoops (PHP) and Midgard (PHP).
Regardless of what technology you decide to use, a CMS is increasingly necessary and useful for producing web sites. Even if you're the only person working on your web site, moving to a CMS is probably a wise move, if only to help standardize the look, feel and delivery of content on your site. And, if you ever decide to add new types of content, the CMS will probably be able to handle it, though you might need to tinker with it somewhat.
CMS software is probably the first type of application designed for the Web. Most content management solutions are expensive and proprietary, but an increasing number of open-source options are available for those who want greater freedom and lower cost. Given that content management systems normally need a great deal of customizing and tuning, this is another niche for which open-source tools are an excellent fit.
Reuven M. Lerner (firstname.lastname@example.org) is a consultant specializing in open-source web/database technologies. He and his wife Shira recently celebrated the birth of their second daughter, Shikma Bruria. Reuven's book Core Perl was published by Prentice Hall in early 2002, and a second book about open-source web technologies will be published by Apress in 2003.