Drupal Upgrade vs Migrate

Drupal 7 is just around the corner, and it has such an architectural paradigm shift to make it quite difficult for those trying to upgrade. There are handful of modules which will be deprecated due to changes in architecture (namely fields-in-core).  Content Profile & Ubercart, while not being deprecated, are likely to lose out their new brands Profile2 and Drupal Commerce respectively.  The big dogs CCK, Views, & Panels will likely be delayed on their upgrade paths because of the complexity.  Because of all this, you need to figure out how you're going to be running your upgrade.  There are two possible methods I see, and another method on which I'd like to hear thoughts.

Standard Upgrade Paths

Most modules will provide an upgrade path from 6 -> 7.  In short, you just replace the old folders with new ones and run update.php (see http://drupal.org/upgrade).  Here's how I see it:

Good idea if

  • Your site's arcitecture is still sound.  Are your modules still defacto (rather than deprecated, like eCommerce was to Ubercart)?  Are they still the proper choice for the job?

Bad idea if

  • If your modules are deprecated, there won't be an upgrade path and you'll eventually loose support.  And if re-working your architecture is already on your agenda, then now might be a good time to start anew by using Migrate. 

Migrate

Migrate module is the method I'm most inclined to use.  In my case, I'm skipping from D5 -> D7.  I find that each successive upgrade leaves the new system a bit "dirty", with old files and database tables left over, and a few warnings and errors that are too complicated and minor to fix.  You'll spend more time doing a D5 -> D6 -> D7 upgrade using the standard upgrade scripts than writing a set of Migrate scripts; unless, that is, your website is very complicated. 

Good idea if

  • If your site needs major reworking
  • Your'e skipping major versions (5 -> 7) 

Bad idea if

  • You're satisified with your site's architecture
  • You're running a single major version upgrade (eg, 6 -> 7), and your site is is quite complex. 

There's also an initiative to write migrate scripts that function as Drupal version upgrade scripts.

Features and/or Exportables

I think it would be really cool if, when Features is ported to Drupal 7, the code you export as a feature is compatible across major Drupal versions.  Then you could export your Drupal 6 site architecture as a bunch of features (which is good practice anway), and drop those features into your Drupal 7 site and be granted the same architecture.  Sans Features, I wonder if this could be done just using View's & CCK's exportables functionality.  You'd still need to port over all your content and users using Migrate, but this would build your site's skeleton.  Thoughts?

3 Comments

...

Good read. Nothing to add right now, but definitely food for thought.

sun

NOTE: UBERCART WILL NOT BE

NOTE: UBERCART WILL NOT BE DEPRECATED, in fact it has a 7.x alpha release

Ok, I'll revisit my post soon

Ok, I'll revisit my post soon and be more clear. While Ubercart will not be deprecated, I've got a hunch that Drupal Commerce will be more popular. It's re-architected based on Ubercart growing-pains, uses all the new Drupal 7 goodies (incl. Fields API), and has big commercial backing. e-Commerce wasn't deprecated from D5 to D6 per se, but we all know who won. An Ubercart fan myself, I'm sad to see the two projects going separate ways. It seems that any new Drupal 7 shops will be starting on Drupal Commerce, while existing/upgrading shops will stick with Ubercart.