Chosing between an open source CMS and a home grown one

By Dick Stanley, software architect.

There are so many open source CMS (content management systems) around these day, that a web designer no longer needs to build their own. However, building your own will have some advantages. Open source CMS’s include the likes of Joomla/Mambo, Drupal, Smarty and Pligg to name but a few. WordPress now also have a WPMU (word press multi user) so you can set up many blogs easily under one domain – but I was informed yesterday that Drupal can do all this OK.

Using an existing content management system will give you one very big advantage: it will have a lot more features. However there are a couple of extremely important things that you need to ensure you get right up front:

Does the system expose the features that you require without exposing too much? CMSs vary widely in their intended applications.

For example there are systems designed for completely open access (such as wikis), systems designed to be read-only except by admin users, systems that mandate particular structures, systems that allow you to structure things however you like, systems that provide user management, systems that don’t, systems that give each user private content areas, systems that don’t, etc…

It is essential that you choose the right system up front. If not you will get stuck in the situation where all your content is stuck in a format specific to one particular CMS that doesn’t do what you need.

Then you will have an extremely difficult task (perhaps impossible) of getting the content out into a form that you can use in whatever system you have decided is better. Choosing the right system means spending a lot of time doing the following:

  • Looking through feature comparisons of the various CMSs finding the ones that seem to fit your requirements.
  • Creating a shortlist candidate systems.
  • Installing each one and building a demo site with it, understanding it, how to use it, what its limitations are, etc
  • Choosing the winner.

I can’t stress enough how important it is to spend a lot of time doing this. If you don’t, I guarantee that you will be screwed at a later date.

Make sure the CMS you choose is open-source. This provides you with a safety net in case the project stops development.

Make you are capable of understanding the system. There will come a time when you need to look at the workings of the code to figure out how to do something or recover something or whatever. If it is written in some complex and obscure language that you don’t have a hope in hell of understanding, you will be screwed. If it is written in something simple (such as PHP), you will have much more chance of sorting the problem out.

So those are the things to be careful of when using an existing CMS. The other option is to use a home-grown system. If done right, this has some advantages:

It will do exactly what you want /need it to do and no more. i.e. it will be a perfect fit to your requirements without any additional complexity.

As the system gradually grows, you can make an effort to understand each part of it. You will know how the system works and will be capable of tweaking it, or poking it to adapt to changing requirements or sudden crisis. This will also be much better for you as a burgeoning web-site developer.

The format of the content will be in a format that is known to you and managed by you. If you need to get at it, it is there exactly as you expect it to be.

The system can provide extra functionality beyond that of a simple CMS. For example, you could get it so that whenever you create a new website, it creates a link to that website on all you other websites, submits stuff to Google or whatever, does any other funky things that you would otherwise have to manually do.

However, saying all that, some CMS such as Drupal are so flexible these days that there is very little that cannot be done with them.

If you wish to learn more about open source CMS then OpensourceCMS is a great resource, with information reviews and demonstration of many CMS applications.