Taking a break from my usual and completely unnecessary review posts, I thought I'd take a moment get a little technical. This site and many others I have developed use the Drupal open-sourced content management system. Drupal is great. It's incredibly flexible, powerful and yet moderately easy to use if you have a little Web design experience.
Other systems I have used in the past, including Microsoft Sharepoint and Wordpress, don't hold a candle to Drupal. Sharepoint is an abomination and the only reason you should ever use it for a public facing Web site is if you work at Megacorp, Inc. and some idiot I.T. guy bought it as part of a multi-million dollar corporate enterprise package. Customizing Sharepoint is an exercise in futility and self-immolation. Just assume that your clean standards-compliant code with get destroyed and converted into a stew of redundant tags and impossible-to-style markup. Wordpress is much better than that but it still falls short of Drupal when it comes to customizing your content types and controlling look and feel. You can hardly do anything custom in Wordpress without having to hand code PHP. Simple tasks like adding an extra field to a post-type are just a pain and require some sort of third-party plugin (of which there are many and all of them do it differently). The only area where Wordpress is better than Drupal is in installing and updating plugins and core systems. Drupal is getting better at this, but it still has a way to go to match the ease of use that Wordpress offers.
For all my Drupal love, it still isn't perfect right out of the box. Any Drupal install is going to require also installing a number of add-on modules to get your site fully reach its potential. So here is a list of the modules that I will include in every Drupal site that I create.
Views is the reason you are using Drupal. It allows you to build custom pages, feeds, blocks, etc. based on specific database queries. There is nothing like this for Wordpress. You want a page of only posts created in June with the word summer in the body? A list of recent comments? A slideshow of art from posts tagged NSFW? Boom, Views can do that and sort it, make it filterable, restrict access... almost anything you can think of. Views puts you in control of your database. Installing views in Drupal 7 also requires the Chaos Tools Suite, so consider that an essential module too.
This module puts a thin flyout-menu at the top of all pages that will quickly allow editors and admins to perform tasks without having to click down through multiple pages of admin content. The default Drupal 7 toolbar plus shortcuts is pretty close to providing this functionality but Admin Menu just does it so much better.
Module Filter is like Admin Menu in that it takes a core system interface and makes it just a bit more user friendly. In this case it tames the often over-long list of add on modules. During the development stage of any Drupal site, this saves you a ton of time scrolling and searching that page.
This module has saved me many-a-time. It provides a way to backup your site's data via a simple Web interface. You can also set schedules for daily backups and you automatically backup to the cloud if you so desire. It is also the easy way to get a site from a test environment to the live server.
The main thing that turned me off about Drupal when I first started using it was the lack of any sort of visual text editor when creating content. You still needed to know HTML to style anything. This problem is easily solved with the Wysiwyg module and another third-party visual editing library (in my case I use TinyMCE). The need for a library kinda makes this module a pain to install, but, once you get it up and running, composing posts becomes much easier especially for non-technical users.
IMCE also fulfills a very basic editing need that the Drupal core lacks. It allows users to upload and embed images into the body area of their posts via a pop-up file browser. It integrates smoothly into your visual Wysiwyg editor by also installing the IMCE Wysiwyg bridge module.
A final basic Web design flaw with the Drupal core is that it places a truncated post's Read More link way below where a user might actually notice it. Read More Control brings it back where it should be, within the text of the post's teaser content.
The default main menu of Drupal is okay, but it is limited in that doesn't easily let you create CSS flyouts or create sub menus in the sidebar as you dig deeper into the site. Menu block provides you with a highly customizable way to display menus whereever you want.
Pathauto is one of those modules (like views) that really just needs to be part of the core. It gives developers a way to create custom URL aliases based on all sorts of variables (using Tokens... see below). I typically use it to fake an organized directory structure to my sites. And, unlike Wordpress's path customization, it can be as general or specific as you like and doesn't need to be based on dates or content IDs.
This module is the second half of my strategy to get my sites to follow a psuedo-directory structure. It allows you to create rules that will make a particular set of content nodes appear as though they exist within a menu structure without having to individually assign each item to the menu tree.
Token is a behind the scenes module that provides a way for Drupal and other modules to use simple placeholders to output small bits of text like post titles, fields, tags, dates, etc.
There are a few more modules which I install most of the time but are not really essential in the way I believe the proceeding are. These include: Date, Field Group, Captcha, Webform, Colorbox, Entity and Libraries. Follow the links for more information.