Just a few years ago, anyone who wanted a website had to design and code their site laboriously by hand. Maintenance, updates, and upgrades were nightmarish, and versioning, collaborative workflow solutions, and document management unheard of. Of course, this was during the “dark ages” of the web, long before rich multimedia content and collaborative or community-driven sites were the norm. Most websites were static and there was little need for dynamic content.
Today, just as the web has changed radically in the shift to Web 2.0, a new and powerful tool called a CMS or Content Management System has also emerged. A CMS is an all-in-one solution designed to help IT professionals, developers, and hobbyists alike create dynamic, interconnected, and interactive sites. It is a program or suite of programs that provides all the tools needed to develop a site from the ground up.
Drupal is a popular, free, open-source CMS that has quickly risen to prominence, in part because of its robust online community and extensive set of user-created modules and themes. In brief, Drupal provides an impressive set of tools that can be used to build, control and manage all kinds of websites. Although it is often used to create personal websites or small corporate sites, where Drupal truly shines is in its ability to handle complex social networking, blogging, forum, news, and e-commerce sites.
One way of thinking about what it is that Drupal does is to think of it as an application designed to help people publish content. In this context, "content" means any kind of material that is to be shared with others via the internet. For example, articles, news reports, blog entries, photos, videos, and audio files are all types of content that can be shared. A person who creates a website can share their content with a group of people or the internet at large, and others can join the website and contribute their content as well.
With Drupal, instead of using the time-consuming process of collecting bits of content and then publishing it on the web a piece at a time, which may require formatting each item and each page separately, a user can instead set up a simple site in minutes and then use a WYSIWYG editor to add various kinds of content. The CMS does all the work and handles all the tedious details of formatting each item, laying out each page, applying a site look and feel, and organizing the content. Later, when it is time to make updates, to add new content, or even change the layout of the site, once again, Drupal does all the work. The Drupal user merely specifies what needs to be done and the software takes over.
In the case of community-driven or collaborative sites, Drupal helps manage the various users who are going to interact with the site. In this case, it is not the site designer who submits all the content, but the community as a whole. Using simple, intuitive tools, anyone can log on and post a message, a picture, or a video. The site administrator uses Drupal to specify who is allowed to add content, how they add content, what their content will look like, and how it will be organized when they're done.
In addition to helping users create, modify, and publish content, the Drupal core system contains a rich array of administrator tools that are useful to anyone who is going to be maintaining a website, including account privileges, logging, RSS tools, user account management, templating, and security features. Additionally, because Drupal is a vibrant open-source project, new material is added to the core system all the time by users and designers, making it easy to customize your installation of Drupal for specialized applications such as blogging, ecommerce, or social networking. Hundreds of visually appealing themes, each of which specifies the look and feel of a website, have also been created by the community and can be installed in minutes to provide "eye candy" to any website. Using themes frees the developer from the hassle of coding and dealing with style sheets or HTML, and it also makes it easy to change the look of the site on a whim.
Drupal's learning curve can be steep because of the vast array of different features it offers, but in general, it is a design environment well-suited to non-programmers. Coding is not required, and most of Drupal's features can be used via interaction with intuitive, web-based controls. For non-programmers, setting up a site can involve simply checking a few boxes, choosing a visual theme, and typing some content into a WYSIWYG editor. Content is labeled using plain language (for example, a site may have content types called "reviews", "articles", and "news") and manipulated using a simple concept in which each area of your website becomes a "block" containing a certain type of content. So instead of hand-designing your entire layout, you simply arrange "blocks" on the screen. For example, a user can resize and move their "reviews" block around the screen as much as they want until it looks "just right" -- there is no need to worry about specific dimensions or formatting.
For the "old fashioned" web designers out there who still enjoy hand-coding (you know who you are), there is no reason to shun Drupal, however. In fact, Drupal is a rich development environment that can handle HTML, XML, CSS, and PHP, along with any other scripting or markup language you can throw at it. In professional development and web design environments, as well as in the enterprise context, Drupal has risen quickly to prominence due to its unique combination of user-friendliness, power, and flexibility.