Most of the time when I build a web site for a customer I stick with one of the open source content management systems such as WordPress, Drupal, Joomla (formerly Mambo) or TextPattern. I have already invested the time to learn the nuances of each tool so when I build a “brochure” site, say, with a blog component, most of my energy goes into creating the site layout (XHTML template) and navigation structure.
If the site is mainly a blog with a few content pages then I use WordPress or TXP. When a site requires some custom programming I usually go with Drupal or Joomla and then create my own custom module to handle the required functionality (events calendar, custom feedback forms, newsletter registration, etc.). I can usually find an existing module that can be extended or use Drupal’s flexinode dynamic content type.
One recent project had a heavy requirement for private messaging and discussion forums. I decided to purchase a source license for one of the popular PHP/MySQL discussion boards that had a flexible module system. Then I took out the hacksaw and duct tape and started adding custom functionality. I have tried to keep the original “core” of the board in tact but handling product upgrades has been a challenge.
I really believe in open source. I used it in the corporate world with the Jakarta project and I have used LAMP for web site development and consulting. I guess the lesson I’m learning is that good design and development principles apply in both environments. For small “quickie” projects I can get away with using one of the open source CMS packages. However, for a project that requires more custom functionality (programming) I need a more flexible framework that doesn’t do as much but just gives me the basic plumbing.
I’m starting to look at some MVC frameworks like Ruby on Rails and some of the PHP projects that are patterned after RoR. More on that next time.