When I start a new project, I choose from four types of tools:
- flat files (no database) made with a Wysiwyg editor like Dreamweaver or a code editor like TextMate
- a blogging engine
- a CMS
- a MVC framework
There are lots of choices within each of those types, but my tools of choice are:
I’ve found it really helps to pick a tool from each category and get to know it really, really well. It also helps to realize that every site needs to be evaluated individually to decide which is the right tool for the job. It’s easy to limit your toolset to one and then “if all you have is a hammer, everything looks like a nail”.
It’s not very often I decide to make a new site in straight-up HTML and CSS. Most often I inherit these (sometimes from a past life before I discovered standards and used Wysiwyg tools to make websites). Just about every site will grow beyond the few pages for which this is really a maintainable solution or will eventually need to be maintained by someone who isn’t well versed in technology or doesn’t own my Wysiwyg tool. Most of my coding this way these days is for prototypes.
The site you’re reading right now is based on WordPress, an open source blogging engine. Why? Part of the site is a blog and WordPress is, in my opinion, the best of breed for blogging engines. Partly it’s the best because of the huge developer base and variety of themes and plugins available for it. I don’t want to waste any time reinventing wheels and I don’t anticipate I’ll need to create any custom functionality for this site, so I won’t have to worry about getting a rash from too much PHP development. WordPress’ theme system is pretty easy to use and I’ve done it a dozen times before, so that fits. The site isn’t going to be only a blog but WordPress’ CMS features (hierarchical pages, alternate home page…) are sufficient to make it “not too bloggy”. Finally, I like WordPress’ admin interface, especially since 2.7 and the introduction of automatic upgrades.
Add to all that the fact that it’s easy to deploy even on shared hosting and you’ll understand why many of my small business websites are based on WordPress. (All of the work we do for non-profits is based on WordPress because it’s free and it’s easy for non-techie people to use to maintain the site themselves.)
When do I choose Drupal? When the site is more complicated but is still pretty “standard”. Drupal is also open source and has thousands of “modules” (optional functionality) you can choose from to implement blogging, forums, e-commerce, user-contributed content… The theme system is straight-forward and similar to WordPress’. Drupal’s Content Construction Kit, Views and Taxonomy modules make it an excellent choice if your site needs to have specialized content types with a simple CRUD interface. (And if that last sentence didn’t make a lot of sense, read up on Drupal and/or stick with WordPress.)
When do I choose Rails? When I want to enjoy making the website.
That’s how we go about choosing an “engine” when we’re starting a new project. You’ll notice they’re all open source which is a philosophical decision. (Diane and I intend to “give back” to the community just as soon as we develop something worthy.) You may have different opinions and considerations for choosing your tool set. If so, share them with me in the comments.
Next up: What are the steps to set up a development environment for a new WordPress project?

