Friday, August 29, 2008

A Primer in Content Management Systems: What, Who, How

yeah yeah yeah... I know I should've been putting something worthwhile here, something I know a little bit about, like a tech/media blog!  So, here we go...

It's hard to define what exactly I do: I find myself in the roles of web developer, designer, online media producer, teacher, social and professional networker, indie filmmaker & misc etc, so I have to keep up on tech to earn my keep.  Hopefully you'll find my rants interesting and useful, if nothing else, for buzzology.  This one is about my main focus at this time: CMS (Content Management Systems).

There was a time before Web 2.0 that it was ok to have a static html and/or Flash site to present a business.  You didn't need no stinkin' backend database or 3 tiered architecture - you were a rebel with a cause and just needed a .com and marketing $avvy to get people to know your site's url.  But now, you need constant interaction with your users.   Sites need to build communities, so in walks CMS.

There are a lot of CMSes today.  My specialties are php/MySQL based CMS like Joomla!, Drupal, vBulletin and Wordpress... What's that you say?  vBulletin is a Forum and Wordpress is a Blog?  Ah, but think of it on a larger scale: CMS (holistically) is a web development framework that allows end users to easily update content on a website, without knowing complicated code.  The technology that drives Blogger is considered a CMS.   This content that I am typing now is delivered to a backend database through a form using WYSIWYG tools, not unlike a compact word processing program in functionality.  While Joomla! and Drupal have more flexibility to build functionality (aka scalable), vBulletin and Wordpress do have the ability to add some features and can hook into a larger CMS such as Joomla! or Drupal.

My advice on picking a CMS: use the right tool for the job.  Not everyone needs a site built with Joomla! or Drupal or etc, and not everyone needs a blog or a forum.  

If you are looking at just branding yourself and your know-how, you may only need a snazzy looking Wordpress blog or a forum if you're brave enough to tackle Q&A.  A blog may be a great additional component for a large company that has a some employees (or even better customers) that can blog about their expertise/experiences, but for a bigger organization looking to build a community with more interaction from its perspective clients, Wordpress would not be the best choice to start.  A forum, on the other hand, eventually will need a team to manage it properly.  One forum site I manage, has 150,000+ registered users, 3500-5000 users on at anytime, and almost 60 moderators.  The great thing about this forum site is that there is a sense of ownership and community pride by the moderators.  They do what they do to help out of a passion for the topic and the site's community and that is huge to the site's success: that core group of users that are entitled and empowered.  Once you start to build a site with topical, timely and meaty content, give users the power to control the content, the community (and content) builds on itself.

I like to think of a blog as 1 dimensional communication, a forum as 2 dimensional, and a larger cms platform as multidimensional, but if you build it - they won't just come - you have to bring them there and keep them there and keep them coming back with the quality and quantity of content, no matter how many dimensions you have to your site.

Another tip: do not reinvent the wheel.  Seems like common sense, but many companies start with an out-of-the-box, open-source CMS solution, then modify (see hack) the crap out of it to get it to fit to their desired specs at the time.  Look for the cms platform that has the most module functionality already available as much as possible and one that is easy to write modules for.  Hacks to the core code and database can only make your upgrading and security patching a nightmare.

And try before you "buy".  Even if you're running open-source, free tools, go to: http://www.opensourcecms.com and use the Demo tool to test drive the technologies.

A great thing about the CMS 3 (or multi) tiered architecture from a programming perspective, is that the g33ks that know presentation (HTML/CSS/design), can work on their part (the template) and not worry about the database parts that the db g33ks know... and also why it works so well in the open source community.  For example: someone in Germany writing a module to say, make it easier to embed YouTube videos in a Joomla! site, can develop it, upload it to the Joomla.org site, and someone half a world a way can tweak it if the css file doesn't work in IE 7, notify the original developer and send the fixes to them.

Here are a few CMSes to look into:
  • DotNetNuke (Windows/ASP/MSSQL)
  • PostNuke (php/MySQL)
  • WebGUI (perl/MySQL)
  • Mambo (php/MySQL)
  • OpenCMS (java/MySQL or Oracle)
  • MediaWiki (php/MySQL)
  • phpBB (php/MySQL)
  • Drupal (php/MySQL)
  • Joomla! (php/MySQL)
If you have a Wordpress or vBulletin or other php/MySQL site already, you should stick to other php/MySQL and run it on Linux/Apache - php just runs better on it... Same thing with Windows based sites: save yourself a HUGE headache and stick with the same OS/Web Server/language/database app you're starting in.

So, now go live Web 2.0 and prosper.  HTH