The Traditional Method

For years, I've been developing commercial ASP and PHP web applications. A web application is more than a website, it's the programming behind the website that allows you to post news without diving into the HTML code, add photos to an image gallery without creating thumbnails, etc - a good example is Everything2; it's coded using Perl, not just HTML. Developing web applications takes a significant amount of time. First you need to come up with an idea of what you want - or perhaps your client will give you a specification. If you're ambitious, like me, you'll need to realize when enough is enough and limit the amount of work to something you can actually achieve. If you're not working in a team, and you're lucky enough to have a girlfriend or wife (or boyfriend or husband!), then you simply may not have the spare time to bang out serious chunks of code.

Traditionally, the next phase is design and development. This involves gathering your ideas together and implementing them. If you're reading this, then chances are you've built websites before so you'll try to reuse your previous code to save some time. You still have to glue it all together and complete the major sections of the site. Fine, maybe you can do all that pretty quickly. But what happens after you've been using the site for a couple of weeks? You've started to get some hits and you need to add some admin functionality you didn't see a need for. You need to add your best friend to the site administration but - oops! - you didn't have time to get user permissions in there. No problem, you wrote the code, you'll just write some more.

Trust me - do this enough times, you'll get bored of it.

Another Way

Over the past few months, I've been looking at some alternative ways to build websites. If you've not seen Drupal, DotNetNuke, MovableType (requires licensing), Wiki, PHP-Nuke or SnipSnap, Rainbow Portal, you've probably at least heard of them. They're web applications loosely based around blog concepts (kinda like E2 day logs) which you install on your own server and configure as you see fit. They all make use of skins so you can tailor them to your individual look and feel. Each of the systems have their pros and cons and each have slightly different functionality from the next. Rather than call them "blog" sites, I prefer "community" sites as they're purpose is very community orientated. Common functionality includes News, Forums, Comments, Skins, Polls, Content Management System and User Admin. Each particular system adds functionality in different flavours.

Interestingly, most of them are PHP/Perl based usually with a MySQL database (MSSQL support is provided by an add-on to most of the systems) and therefore suitable for personal websites. A year ago I would've scoffed at PHP/MySQL (MySQL v5 has stored procedures and, "yes, there is a GUI for MySQL like Microsoft SQL Server Enterprise Manager") but having tried it, I've been very impressed (with the exception of PHP-Nuke - I thought it was pretty nasty - have you looked at the "HTML" it kicks out?!).

Open source

Something else all these types of systems have in common is they're open source to some degree. Hundreds or possibly thousands of people working on your web application 24/7 for free can't be a bad thing. There are even designers and developers creating funky new skins and plug-in modules to extend the functionality of your chosen system. Wherever possible I've made donations to the authors/groups for their work as a great big "thank you" for letting me focus more on what a site should be (Content Is King) and less about how it works.

Losing control

You elite coders out there will be shaking your heads at how I can "let go" of so much control of a site. You shouldn't. So many people develop, test, and enhance the system you can be confident that it's works well. And if it doesn't, why not put some minimal effort into customizing it? It's open source afterall - dive right in! And when you're done, add it to the CVS tree and let other people benefit. Everyone wins. If the system you choose doesn't come with some out-of-the-box functionality that you need, there are plenty of plug-ins and hacks that will probably do what you're after. In the unlikely event there isn't, remember this is open source - you can make your own plug-in, it's not difficult.

Further reading

  • Drupal (
  • DotNetNuke (
  • Wiki (
  • TikiWiki (
  • MovableType (
  • PHP-Nuke (
  • untested
  • SnipSnap (
  • Blogger (
  • Rainbow Portal (
  • PHP (
  • MySQL (
  • EMS MySQL Manager ( - MySQL GUI
  • NaviCat ( - MySQL GUI
  • Microsoft SQL Server ( - MSSQL
  • Content Is King (
  • Content Is NOT King (

    Thanks to Damodred, andersa, in10se, ponder, Starrynight, NinjaPenguin and others for their contributions to this node.