I just finished the update to Drupal 7 for this website. Well, finished, it's a work in progress. Let's say I struggled my way to were the site's now. And it's been a bumpy road. I've played a bit with the betas, the release candidates and the first stable release. But this upgrade is the first truly in depth experience I've had with D7. My impression? The user experience is a lot smoother than it was in previous incarnations of my favorite CMS. However, there is a lot of work to be done still. And the upgrade path is far from smooth.
After Drupal 7 had its first stable release in early January 2011 I've waited some months to upgrade. A lot of contrib modules are still nowhere near having a stable 7.x release. Just take a quick look at this 7.x ready list and you'll notice that many modules are still in dev or unavailable. That said, the situation is a lot better then it was when we we're moving from D5 to D6. In the meantime Drupal 7.2 was released this week. And Drupal widely adopted Git in favor of CVS. With this second update I expected the ride to the upgrade to be a lot smoother. Actually the core feels pretty solid (not counting this very nasty issue with the menu module). It's the contrib modules development status that is still shakey in many instances. Theme conversion was not to be underestimated either.
So how did I go about the upgrade?
- Read this very meticulously: http://drupal.org/node/570162
- Switch to the Garland theme.
- I've set up a new local git branch for D7
- Delete the entire D6 core file structure except the sites/default dir
- Copy Drupal 7 (latest stable) into the directory preserving you sites/default/files/* and sites/default/settings.php
- Remove each and every D6 module incompatible with D7. You can do a neat check here: http://drupal7ready.org/
- Downloaded the D7 equivalents of the above modules and place them in sites/all/modules/contrib
- Manually alter the settings.php to conform to D7 standards
- Run update.php
- If all went (reasonably) well
- Download CCK module and enable the content_migrate module
- Pray some more
- Import the old CCK fields to the new fields structure.
- Check all content type display settings and fix them were necessary.
- Work out any conflicts between 7.x modules, update to latest devs were necessary.
- Check for bugs.
- If everything is working do a git commit.
I've performed the rough list above on a local machine and once I worked out the quickest update and debugged most errors and conflicts I rerolled the migration once more on the live site. So what were my most prominent problems and how did I fix them?
- Conversion of your site's theme is very laboursome. I've found this list on 6 to 7 theme conversion to be helpful but inconvenient. The quickest way to convert the theme is comparing your theme to the Bartik and Seven themes supplied with the new D7 core. Start with .info and page.tpl.php and work your way down from there until there isn't a single error left.
- System CSS has altered and so inheritance in your theme can have some impact over just the 6 to 7 theme conversion
- Image cache presets weren't converted at all, you'll have to manually recreate them.
- Views is looking very sharp but is still quite buggy.
- Check all messages from the core update and cck field migration carefully and fix those before you continue.
- Pathauto, clean url patterns need to be recreated. The syntax has changed significantly.
- Various module dependencies have changed. This could result in some required modules being turned off while the module itself is turned on. (I really should've turned all modules off before the migration and on afterwards)