Tuesday, July 21, 2009

To CMS or not to CMS

Lately, I've been toying with the idea of making a website that does a few things that I've not found any other website to do. Of course, it's nothing earth-shattering or revolutionizing to the world at large, but the target audience that I have in mind would find it useful.

The concepts have been largely worked out, in my mind. I know how the site should work and how all the pieces should come together. Really, it's a beautiful website... in theory.

The dilemma I'm having is whether I should code the entire thing from scratch or try to use some sort of Content Management System (CMS) like Drupal or Joomla. So I thought I'd list some of the Pros and Cons I've come with for using a CMS vs. coding it myself.

CMS Pros:
  • Much of the backend stuff is already built (forms for creating news, web pages, users, forums, blogs, etc.)
  • 90% of the work is already done on building the site. Only the features of my specific site would need tweaking.
  • There is a community of other users of the CMS who could help me with any specific issues I might encounter.
CMS Cons:
  • The flexibility of what I can do is greatly reduced since I have to ensure that everything plugs into the specific framework(s) of the CMS I choose.
  • My site will be dealing with lots of custom data "objects" and there's not a convenient way to implement it in a CMS.
  • The CMS will invariably be upgrading from time to time which may require the site's code to also be tweaked to meet new upgrade expectations.
Hand-coded Pros:
  • I have complete control over everything that happens in the site. I can control the exact code that gets generated for every object, page, user, etc.
  • There is no restriction to how I must generate my data objects. They can be constructed in whatever fashion I require.
Hand-coded Cons:
  • I have to do a lot more work to hook up all the pieces. Rather than having anything built for me ahead of time.
  • There is a near infinitely higher probability of running into odd little bugs in the code.
I can't think of more Pros and Cons at the moment. If I think of them later, I'll edit this post to add them.

Another thing to consider. I could try using a CMS for the front-end side of things, such as news articles, event notifications and so forth. The back end will likely be better if it's hand coded. So I guess I'll have to try and do that and hope I don't shoot myself in the foot.

No comments: