I’ve come to the conclusion that of all the frameworks out there, the ones that will win out are the ones that make upgrading or updating as easy as humanly possible.
I’m writing this post in WordPress, a CMS that has made great strides in upgrading. When you log into the dashboard, it tells you that there are updates that have to be done – a core update, or on some of the plugins. You merely click Upgrade automatically and it goes to work for you. Incredibly easy and efficient. The designers there should be proud of themselves.
Admittedly, WordPress is a fairly high-level system and isn’t as complex as say, the Zend framework. But still, upgrading a heavier framework like that shouldn’t be nearly the huge pain that it is. One project I worked on was built with Zend 1.7. Several years later, when version 1.9 or 1.10 was out, there was no hope for us ever upgrading. Not only would we have had to redo the bootstrapping, module and resource loading, but we also would have had to roll it out to several sites that were using our build – and then test everything again. And it’s pretty hard to justify to your boss that you need several days/weeks to upgrade the core system when it’ll have no real effect on the user-facing page. If I knew that all I had to do was download a new version of a framework and drop it in where the old one was (and maybe run a script) then that’d be great!
I’ve been working with Drupal for the past few weeks, and although it makes a noble attempt to make upgrading easy, in reality it’s still a hassle. Their idea of versioning is pretty cool, and building little update functions that the update script can recognize is clever when it works. But updating Drupal 6 to 7 is a mess. Not only did they change a whole lot between the two versions, but they don’t even support some of the changes. For example, the content construction kit (CCK) was previously its own module, but they merged it into the core version of Drupal. Their D6 to D7 update script – which is really, really good – doesn’t help port over CCK data; you have to download a separate module to do that. Once you get everything moved over, you still need to manually go through and click Save on all the manage fields pages so it refreshes and works properly. Beyond that, it just feels like a free-for-all of updating bits and pieces until you get a site that stops throwing errors.
Another thing related to this is documentation. I’ve been meaning to write a post about documentation, but I’ll point out that good documentation would help to ease this process a whole lot. If Zend’s documentation was even remotely understandable, figuring out what changed between versions and how you can update your site would be a much more simple task. But their documentation is woefully obtuse, if not outright wrong, so so much for that. Drupal has a document about converting 6 modules to 7, but it’s absurdly long and is constantly being worked on (as of this writing, it was last updated yesterday), so it’s not all that reliable.
Anyway. Find me a framework that makes updating dead simple (or a fairly simple process) and you’ll have won me over – and a lot of other people, I suspect.