I am once again pondering the question of whether to use a framework or CMS for the upcoming refresh the White Peak Software web site. I have gone back and forth on this multiple times over the years and I can never really decide which is better. And I ask this question often not just for my company web site but for customer web sites that I build.
A framework gives me great control and flexibility. I can design and architect the site to my liking. I can use the data store of my choice be it XML, a database such as MSSQL or Postgres, and I can implement site specific features that meet 100% of the requirements. But the site eventually reaches a point where the only thing needed is to publish new content. Create a new landing page for marketing, change copy on an existing page, add a new product page, and so on. This is when I start thinking “Man, I wish I had a really simple CMS in place.”
A CMS manages the site content for me. A CMS really does make publishing new content a snap. And you get a lot of additional features, or add-ons, with a CMS such as blog engine, forums or discussion groups, user management, calendar, photo gallery…the list goes on. However, most if not all CMSs are built on top of some core framework (Plone uses Zope, DotNetNuke uses .NET, ExpressionEngine uses CodeIgnitor - I think). This allows developers to expand and enhance the CMS by writing their own add-ons and extensions. But to do this the developer needs to know the underlying framework, and if you already know the framework isn’t it sometimes easier and or faster to work directly with the framework bypassing the CMS all together? Also, it’s been my experience that many of the CMSs out there tend to meet only 80 to 90% of the requirements. So you get the ease of publishing new content but other areas of the site can be lacking unless, of course, additional code is written to make up for the missing functionality. It’s a vicious circle.
So do you learn and master a framework and have ultimate flexibility or learn and master a CMS and have ease of use for managing content? And what about rolling your own “simple” CMS. It can be great experience in the beginning but it will eventually have limitations or even worse become yet another full feature CMS like those already available today. And if you end up writing your own full featured CMS you have to ask yourself “Would my time have been better spent learning and mastering an existing CMS, its framework and contributing to its community?”
Unfortunately I don’t have any solid answers here. I guess the only real answer to the question should I use a framework or CMS is “It depends.” It depends on a number of different factors unique to your situation, your needs, your time line, and so on.
So what have I decided for the White Peak Software web site refresh? Honestly I’m still a bit undecided. The site is currently implemented with ASP.NET and a home grown simple CMS mechanism. It has worked well for a number of years but I need more functionality on the site. Building on the current implementation would take too much time so I need a different approach. My original thought was to use PHP and Zend but then I discovered CodeIgnitor. CodeIgnitor led me to ExpressEngine and I thought “Ah, the solution for me. PHP+CodeIgnitor+ExpressEngine”. But then I started looking at python for general programming tasks and thought “What would it take to use Python programming for web apps?” Not much I found out so I have decided to use Python.
The decision to use Python has lead me to look at a number of different frameworks and CMS solutions. And while I’m not 100% sure what stack I will select, I’m leaning towards Python + web2py. web2py is an enterprise ready framework for web based application. Web development using web2py is very easy and fast, and I really like the development experience on my Mac.
I guess it’s safe to assume at this point that I will once again pick a framework over an existing CMS. What can I say? I’m a programmer and while the appeal for a CMS is there I still enjoy the flexibility and control I have by doing my own implementation using a framework.
Update: Here is a follow up posting that explains my own requirements and why I feel using a framework is better in my situation.
Posted in uncategorized. Tagged in .