Tuesday 14 February 2012

Choosing a Blogging Engine

When starting a blog the first thing you need is a blogging engine. If anyone has ever started a blog or looked at starting then they know there’s 101 different blogging engines out there. So how do we go about finding the blogging engine that is right for you?

First lets look at what I wanted from a blogging engine:

  1. The ability to create blog entries, including adding pictures.
  2. The ability to show code snippets.
  3. The ability to host code/downloads.

Some desirable features are:

  1. Allow users to add comments to posts.
  2. Flexible/customisable layout.

So now knowing what I want out of a blogging engine I can look at what solutions are out there. We can categories them into three categories:

  1. Create and host my own blogging engine.
  2. Use an existing off-the-shelf or open source project and host it myself.
  3. Use a hosted service.

Below are the pros and cons of each option.

Writing my own solution

I think any programmer starting their own blog would want to write their own blogging engine given infinite time to do it. In creating your own engine you will have full control over every aspect right down to the HTML and CSS produced. It is also a good start for posts on the blog on how you created it and the choices you made.

However as good as it sounds there are a few issues in dong it that way - the main one is the time it takes to write your own solutions whilst working and having a social life. I wanted to get this blog up quickly and not in a few months’ time, which is what it would take to create one from scratch.

Another aspect to consider is the cost of hosting; there are a number of solutions out there from shared servers, virtual servers, dedicated servers and cloud computing such as Azure and AppHarbor. As with creating a blogging engine, using a hosting company gives more flexibility in how it is hosted and the options available. However, having full control over everything means you need to consider backup, data corruption, people hacking in to the server etc. You can set up the best backup plan you can think of but there can always be problems, it even happens to the best of us.

Using an off-the-shelf solution

There are a number of off-the-shelf solutions such as Umbraco and Wordpress as well as open source solutions like: DasBlog, SubText and FunnelWeb. All of these are proven solutions with successful blogs behind them. All are extremely configurable, in fact some are probably too configurable and slightly confusing.

As good as off-the-shelf solutions sound, and as quick as they would be to setup, they share the same core issue as creating your blog engine, i.e. hosting, backups and security all need to be taken into account.

Using a hosted service

The final potential solution is to use an existing provider that handles all the hosting such as Blogger, Wordpress or Typepad to name but a few. These have the advantage that they are virtually as customisable as off-the-shelf solutions and as they are hosted none of the backup is needed and the costs start from free.

The downside is that as they are hosted by someone else, you relinquish some or all of your control, and if the provider decides to stop offering the service you may be left without a blog at short notice. As the backups are not under your control, you have no influence over how and how often your data is saved. If you decided to upgrade your blog at a later date, the existing blogs may not be easily accessible and a pain to transfer. Also, the ability to host files and downloads may not be available.

Conclusion

As you can probably tell I’m using Blogger to host this particular blog. There are a number of reasons why I chose Blogger; the main is that although it is powerful and almost everything is customisable, it is also one of the easiest to manage.

Reviewing the criteria which I outlined at the start, Blogger best matches my requirements. In the process of looking at all the different blogging engines, I decided to use GitHub to host files and projects; that way anyone can improve on them and contribute to them. I will also use GitHub’s Gists for code snippets as again this allows for a collaborative form of code sharing.