Framework or CMS Revisited

Posted by Kirby Turner on December 8, 2008

Thanks to Twitter I have received some great feedback [thanks folks!] within minutes of posting my thoughts on using a framework or CMS. In the post I talk about the two approaches in general terms and I end the post saying I will very liking use a framework for the White Peak Software web site refresh. Everyone who sent me feedback suggested I use a CMS for White Peak but unfortunately I didn’t really say what my requirements are. Knowing the requirements might change the opinions of some.

The new White Peak Software site will do much more than what I believe is available out of the box from a CMS package. I need a new customer area that allows customers to sign in, retrieve license keys for purchased products, display invoices, get special discount codes for future purchases, make additional purchases, and maybe a trouble ticket lookup system that integrates with my FogBugz install. Also, the site need to be able to read XML files used for posting product version information and RSS feeds to display company announcements.

There also needs to be a web service part that will receive order information in real time from payment processors such as eSellerate. The web service needs to update customer information, licensing information, and store order information. There needs to be an admin view as well that allows me to view orders, re-send order confirmation emails, re-send license keys, change customer contact information, and so on. Oh, and I need to be able to send email notifications to customers. The email notification system needs to be a double opt-in system and should work for customers who have purchased products as well as potential customers who want to receive information about the company.

There are some nice to have features that I will probably eventually implement as well such as an iTunes sales report viewer so I can have better insight to my iPhone app sales. And a license key generator so I’m not solely depended on third party apps for licensing.

Now I know some of these features exists in CMS solutions but the features don’t work exactly how I need them too. For example, many CMS solutions will allow email notifications to be sent to site members and a site member is someone who has registered with the site. But in my case a site member is also a person who placed an order through the company store where no registration is needed. Look at it as being a site member who hasn’t provided a password to the account yet. So while I can use a CMS for the feature of email notification I still must extend it to suite my needs.

If I were to go with a CMS solution it would very likely be ExpressionEngine with CodeIgniter. I looked at these 2 this past summer and thought it was the best solution out there that addresses most of my needs. Unfortunately the combination of EE and CI have 2 strikes against them for my purposes.

The first strike is ExpressionEngine’s MySQL requirement. Nothing against MySQL but Postgres is better in my opinion. I’ve spent equal amount of time working with both database engines - well, okay, I have spent more time with Postgres in recent months - and I find Postgres to be faster, more stable, and easier to work with. Heck, just comparing the 2 solely based on the wikipedia pages (MySQL vs Postgres) gives me the impression that Postgres is the better of the two.

The second strike is PHP. I’m not opposed to using PHP. In fact, I like PHP and I have done PHP programming off and on for a number of years. I also use other PHP based solutions such as WordPress for a couple of blog sites that I have. But given that I know I need to do a lot of extra coding to get all the functionality I need, I would rather use a programming language that suites me better. That language is Python.

So for my specific needs, ExpressionEngine with CodeIgnitor comes close but still requires too much extra programming. On the other hand, Python with web2py is a good combination for me writing something from scratch. It has all the right pieces so I’m not reinventing the wheel and is open enough to not hold be back or get in my way. Still, the day will come when I have the new site completely implemented and all I need to do is manage content. Then I’ll start thinking again, “Use a framework or CMS”.

Posted in uncategorized. Tagged in .