A Content Management System (CMS) is a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based. The procedures are designed to:
- Allow for large number of people to contribute to and share stored data
- Control access to data, based on user roles. User roles are used to define each use as to what information they can view or edit
- Aid in easy storage and retrieval of data
- Reduce repetitive duplicate input
- Improve the ease of report writing
- Improve communication between users
In the specific example of a Web CMS, it's a tool for designing, building, and administering websites. Many modern CMS allow you to do all of these tasks in a graphical user interface (GUI) environment that is almost entirely free of 'exposed code' - no PHP, XHTML, or CSS required (though they are still powerful tools for making your site look just the way you want it). They offer several advantages over traditional methods of web design: because they offer friendly interfaces and a standardized way of doing things, it would be fairly easy for me to design and build a site and then hand it off to someone else (with limited web experience) to administer.
I am experimenting with a Content Management System (CMS) called 'Drupal' - it is a free, open-source platform for designing, building, and administering a website. It's serious stuff (the White House used it for this site, for instance), and it is designed with a 'many producers, many consumers' model of web development in mind. It requires minimal effort to set up, and the initial process of server-side installation and database creation are very similar to the steps needed to install a Wiki (covered here last week).
My favorite feature: Drupal has powerful user management built right in, with the out-of-the-box ability to create roles, define privileges for each role, and assign roles to users with ease. The default roles are 'authenticated user', 'unauthenticated user', and 'site creator', but you can make as many roles as you'd like. This means it's a great choice for building an intranet, a secure storage place for user-created content, or any site where you need to be able to enforce access restrictions. It also means that you can spread out the burden of administering the site: you can create 'superuser' roles which have the ability, for instance of moderating forums and user blogs. This feature allows you to introduce trusted users to the administration methods and interface one piece at a time, easing them into the role of site administrator. All administration is done within the site itself on a special menu that is hidden to regular users, which new admins usually find very intuitive (though it may initially confuse users of older CMS).
Drupal is free, open-source software with lots of community support. You can add extra functionality (forums, blogs, wikis, multimedia presentation) by installing 'modules', which are user-created add-ons (called 'nodes' or 'widgets' in other contexts) - if you can think of it, there's probably a module out there to support what you want to do. When you assign permissions to your site's roles, you assign them by module, which allows for quite a bit of customization.
I put this demo together in a few short hours (you'll need to create an account to access any of the content). I think that this CMS would be perfect for the creation of sites by any organization, with or without a dedicated IT department. For educational and community projects, this format enables the recruitment of site designers, constructers, and administrators with limited scripting and coding experience, which is EXTREMELY helpful for us non-computer scientist folks.