Site Building: Content Management Systems Versus Frameworks
Here’s something I’m trying to figure out. I feel like I’m at small crossroads. Over the past while, I’ve focussed on and become familiar with WordPress and Drupal. For client projects, depending on the scope and scale of the specific job, I’ll generally choose one or the other as a CMS.
WordPress has a great back-end interface that clients love and it has enough power to manage 80% of the Web sites I design and code. Drupal, while not as client-friendly, is markedly more powerful and flexible than WordPress: in terms of laying a solid foundation for larger sites, it gives clients an enormous amount of potential for growth and development.
The problem I have with both systems, however, is that they’re fixed beasts. WordPress is fantastic—within certain constraints; knowing it wasn’t really designed as a CMS, I never ask it to do too much. My experience with the supposedly-delightful Drupal, however, has been that adding some fairly straight-forward functions to sites has taken three or four times as long as I feel it ought to have done. Some of this has to do with the fact that I’m still relatively new to Drupal and only half way up the learning curve. Even so, I’m never more than 50% happy with how a function, once deployed, actually looks and works; the page-flow, for example, is sometimes bizarrely rinky-dink.
Back when I was programming php by hand, I had complete control over how everything looked and worked. The problem is that I’m a designer, not a programmer. 1) While I can program basic functions, it’s not what I enjoy doing or in any way excel at doing. 2) If I spend a week programming on a project, that’s a week when my design skills hibernate and atrophy. Not great.
These days, then, I prefer to focus on design and coding to Web standards. I leave any serious programming to professionals. On a day-to-day basis, however, I need to work with and tweak CMS installations. The results are that, while I can get things done, I’m never really delighted with the results.
As the folks at Sunlight Labs say: “A better use of the time and money spent maintaining and modifying complex CMS installations would be to spend that time learning and deploying sites in a framework such as Django or Ruby on Rails.”
Ruby on Rails has recurring problems with scalability (q.v. Twitter) so, for now, at least, it’s off my candidate list. I should probably spend some time with Django, see how quickly I can build something. If it’s as much of a snap as the Internet buzz makes it out to be, maybe it’s worth pursuing.
CakePHP is another candidate.
Or is the solution simply spending more time with Drupal, learning its innards so I can get it to play nice with my site designs?


Kevin Cannon on 10 Aug 2008 at 8:35 AM #
Have you looked at Expression Engine at all? It’s quite powerful, though a little bit more scaled back than Drupal, so it’s a bit more manageable.
I used it on a recent project and was impressed at it’s ease of use, and how you can tidy it up for client access.
Also, if you want to expand it to create something unique, you can create what they call ’stand alone pages’ which can be used to administer the site via it’s functions, but with a UI built entirely by you. It can also be expanded with plugins and extensions.
It’s written using the Code Igniter PHP framework too, so if you want to write any add-on modules for it, then you can get the benefits of that framework.
Dave McNally on 10 Aug 2008 at 10:20 AM #
I have wondered about this for a couple of months now, I’m changing a few things around which include a new direction for my personal blog and so a redesign is needed.
I would much prefer to go with my own custom system for it.
Dave Kelly on 11 Aug 2008 at 4:10 AM #
I think it really depends on the characteristics of the project – sometimes the investment of time developing something from scratch isn’t worthwhile. You’ve also got to think about missing out on the system / security updates that come with Open Source Software – managing that with a custom built solution can be painful…
Have you looked at the Zend Framework (PHP)? I’ve been working with it for a while – I found it a steep learning curve, but once I got my head around it I’ve found it good. Although, I talked to someone recently about something I’m working on in PHP and got the response – well you could do build that in 2 weeks with Ruby on Rails…
Sean on 11 Aug 2008 at 4:44 AM #
@Dave Kelly—That’s a good point about home-grown versus open source. Once you develop something yourself, you have to support it, and you can end up in serious design/implementation loops. Frameworks are supposed to handle a lot of the heavy lifting, but even so…
Whereas with an open source project like WordPress or Drupal, other people handle the support—fix bugs, plug security holes, add functions—and all you have to do is download the updates. The downside, again, is that you end up with a CMS that’s top-heavy and doesn’t often work the way you would have it work.
I haven’t looked at Zend. A steep learning curve? Well, I’m already half way up one of those with Drupal. I’m wary of climbing another.
@Kevin—Expression Engine has been on my radar for a long time. I haven’t had an opportunity to play with it yet. I did consider it for one project but the client was swayed by the Not-For-Profit community’s preference for Drupal, so that’s what we ended up using. Not a bad move for me, strategically, as there’s no end of Drupal work out there for a proficient Dupaler, which I’m slowly becoming. I’m comfortable enough with WordPress now, knowing how to tweak it and understanding its limits. I sort of had this idea that I wanted to specialize in just one or two CMS, but maybe it’s a good time to look at EE a bit more closely.
This whole area where design and implementation overlap, and in such a new industry, is really interesting. Obviously, I’m not the only one suffering from having to sort through too many options, none of which offer a simple plug’n’play type solution in what is, let’s face it, an ever more complex landscape.
Kevin Cannon on 11 Aug 2008 at 4:49 AM #
Indeed, I think there’s a growing area now for people who specialise in ‘middle-areas’
Front-end developers are becoming more common, who do XHTML/CSS & Javascript. Perhaps they would be best placed to setup the CMS too, with designers focusing on the design, and developers doing the heavy duty work.
Dave Kelly on 11 Aug 2008 at 5:20 AM #
@Sean “This whole area where design and implementation overlap, and in such a new industry, is really interesting. Obviously, I’m not the only one suffering from having to sort through too many options, none of which offer a simple plug’n’play type solution in what is, let’s face it, an ever more complex landscape.”
I think that’s a good point – there are way more options, and as with anything that’s built for “general” use – there’s always going to be a trade-off between flexibility & ease of use. If you want something specific, I don’t think there’s any way to avoid getting your hands dirty…whether it’s by developing a custom solution or learning the inner workings of something that’s open source. I’d guess that’s always going to be the case, no matter how extensive the range of plugins / customisations for any CMS. Specialisation is probably the smart way to go…
@Kevin
I think defining what’s in the middle ground can be difficult though – I think at least a general understanding of how it all fits & works together would be beneficial for anyone working in these areas….but then you’ve got to find the time to educate yourself about it all I suppose!!
Kevin Cannon on 11 Aug 2008 at 5:24 AM #
Dave – true, but you can know how things work and not implement them. I know Javascript/HTML/CSS very well, but I’m a better designer when I don’t have to worry about implementation and just focus on the design of a site. An architect needs to know how buildings work, but they still hire engineers to double check everything.
blog » Hybrid CMS Solution Please | davidbehan | web design - web development - web marketing | ireland on 11 Aug 2008 at 7:09 AM #
[...] was reading a post this morning about CMS vs Frameworks and it got me thinking about how I like to work on projects. I [...]
Brian Warren on 11 Aug 2008 at 10:35 AM #
You mention that you’re primarily a designer. That makes me think you’d be best off getting good at Drupal (which you mention you’ve at least had a big of experience at), or at least try on ExpressionEngine, which is extremely designer-friendly.
My experience is similar in that I do know a lot of PHP, but my roots are in design. I’ve often considered firing up CodeIgniter and building my own super-extensible, yet lightweight, CMS that I can build onto over time. However, I have yet to really walk down that path because ExpressionEngine does most of what I want each time I pull it out for a project.
My thought is “why re-write a CMS when I can just use what EE offers me and build a module for the rest?”. That said, eventually I’ll probably write my own someday, for the experience and for the customizability. In the meantime, I find it more profitable to do the stuff I’m really good at, and use EE to help me along my way.
@Kevin & @Dave
I’d definitely classify myself as a middle guy. I think whoever does the CSS/XHTML is very well-suited to do the templates in whatever CMS is used. And then I often hire a developer for any big customization or module development that’s beyond my reach, or that someone else can just do faster than me.
Derek Lawless on 13 Aug 2008 at 5:17 PM #
TBH I wouldn’t rule Rails out based on the ongoing Twitter scalability problems (which is what I think you’re referring to).
Twitter has a very specific kind of engineering problem which others have gone into detail on elsewhere. It’s debatable how much of the problem can be laid at Rails itself, and how much is a result of poor design choices.
It’s unlikely you or I are going to hit a similar wall unless we’re lucky enough to have the next Twitter on our hands.
This is a very hard decision to make and it’s something I’ve flip-flopped on many times. Using an off the shelf package you get the benefit of being able to hit the ground running and take advantage of improvements as they’re added in by the community.
The big downside for me is that if, as you say, you want to heavily customise the package you’re usually in for a world of hurt.
I tend to favour the roll your own approach because of this. There’s an initial lag in terms of getting your own mini platform together, but you get the benefit of knowing it inside out and building just enough to solve your problems.
Deron Sizemore on 13 Aug 2008 at 11:34 PM #
I would suggest giving ExpressionEngine a try as Kevin suggested. Before EE, I tried 10 or so other CMS’s and I just couldn’t get anything done in them. Once I started using EE, everything just seemed to make sense and I was able to do the things I wanted to do in a lot less time.I wish I had the know-how to develop my own with PHP, Ruby on Rails, or Django but I just don’t and don’t have the desire to work with it long enough to learn. Right now anyway, EE does everything (and more) that I’ll ever need.
Don on 08 Sep 2008 at 5:11 PM #
Because of some of the same problems you have outlined here, I decided to create my own CMS system.
The problem is you can code up a simple cms, but it’s time consuming and not cheap (if you can’t do it yourself). Or you can use a Wordpress or Drupal and find yourself restricted by a steep learning curve and more functionality than you might need (both are great for content rich sites).
I created Clover Content to be a simple cms that you can plug in to any site, anywhere. It’s really easy to use too. It makes editable areas on a site “widget-like”.
Sean on 24 Sep 2008 at 1:20 PM #
More discussion concerning the problems with off-the-shelf CMS apps over here…
http://redotheweb.com/2008/09/19/designing-a-cms-architecture/
George on 24 Sep 2008 at 7:13 PM #
I like some of the original thoughts here on “spend your time designing and learning an integrated system, instead of programming and having do deal with complex CMS’s” . Ive tried Expression and its great, but, the implementation of forms and sites still bugs me…and Ive tried Joomla, Drupal(with a skin by some dudes), but, Im really looking for a true designer tool that lets me create what I want without having to program for implementation or SQL or the CMS or some SEO tagging etc. I like the direction that Sitemasher is going as I have played with it for a few hours…I need to spend more time there. It seems like everyone is dancing around some of the core problems that never seem to get fixed. DEALING WITH CODE AT EVERY TURN!! Has anyone built a site in Sitemasher and gone live?
Kongondo on 25 Sep 2008 at 7:58 AM #
Have you had a look at modx? This is one beautiful, powerful CMS that will let you design to your satisfaction. It uses normal xhtml/css templates meaning you are not constrained as a designer at all. At the same time, it packs a powerful punch in what it calls template variables. This will allow you to extend your website in so many ways. If you know some php then what you can do with modx is really up to your imagination. Give it a try…
http://modxcms.com/
Cheers
/k
Jay Gilmore (smashingred) on 26 Sep 2008 at 6:26 AM #
First, great post. You have addressed a number of issues with some FOSS CMS apps and countered with the issues of rolling your own.
I’d certainly look at CodeIgniter or Symfony if you are rolling your own from BUT limits of rolling your own complete solution include issues with scalability (RoRs scalability issues are vastly overblown). The huge advantage of a FOSS app is that you can benefit from a network of support that you don’t have with your own solution.
My experience with many of the PHP Frameworks is that 80%+ members of the community are beginners just in it to solve their own problem and you can be left taking the advice of novices.
I’m a Marketing Team member of the modx CMS project and sure I’d suggest looking at modx–especially Revolution (currently in public alpha) but no matter what solution you choose you are going to need to weigh your workflow, extensibilty and importantly end user experience.
Thanks for the post.
Cheers,
Jay Gilmore
Pete on 10 Aug 2009 at 12:02 AM #
I’m a firm believer that a cms developed for a specific need will always yield the best results.
The major benefits in my eyes are that you understand the code from top to bottom, which would be a large task to undertake in many open source cms.
A lot of open source cms are so large that even people developing it are not aware of the entire system, which is where security vunerabilities can creep in.
It may take longer in the short term but in the long run custom for your needs all the way.
As the saying goes “too many cooks spoil the broth”.