What makes a good CMS? The following criteria are being collected from developers, users, and potential users of CMSs. They are being collected in hopes of fostering a common sense of direction among the hundreds of CMSs that are currently in use or under development.
These criteria not only guide the development of new systems but motivate the evolution of existing systems; for example, when adding support for multiple databases, the SQLite support may be more satisfactory if it leverages SQLite's inherent ease of installation and backup. These criteria also help identify useful CMS extensions; for example, Joomla extended with SEO plug-ins may be more satisfactory than Joomla out of the box. Desirable criteria need not be fully consistent; for example, a single-author blog may need a different login and access control mechanism than a community bulletin board.
- Easy installation. Just upload the CMS and perhaps run an installation script. This criterion rules out CMSs built on MySQL, as MySQL requires a separate, site-dependent manual installation.
- Easy backup and restore. The dynamic portion of the site is stored in a single file or directory that can be downloaded or uploaded via a single command (either an f.t.p. command or a supplied backup/restore script).
- Installation in an arbitrary subdirectory. This facilitates testing by allowing several different websites to be installed and tested in parallel.
- Flexible content editing. The CMS provides a general online editing interface for designated content-editable regions. CMSs that incorporate CKEditor probably qualify. Editors that cannot reliably move between visual editing and source code editing probably don't.
- SEO-friendly URLs. The CMS provides readable key-word oriented URLs. URLs whose semantics leans heavily on the question mark, for example,
index.php?id=534, don't qualify.
- SEO meta tag support. Either the CMS's editor supports editing of page headers or the templates include parameters that instantiate description and key-word meta tags.
- Well-formatted, readable source code. A customer who looks at the HTML source code should get the impression of a quality product.
- Developer support. At a minimum there should be a support forum and a working demo.
- Flexible, readable templates/themes. Are the themes PHP scripts? Alternatively, is there an easy-to-learn, well-explained custom templating language? This criterion is not intended as a feature description. It covers the ability to instantiate templates with HTML snippets but does not specify a specific method of instantiation and does not exclude the possibility of more complex mechanisms such as those found in SMARTY.
- Support for particular functions. Supported functions may include image galleries, e-commerce shopping carts, an online user community, news items, blogs, unlimited static pages. This requirement is completely open ended.