Example Of The Pain Of Drupal Upgrades

Yotophoto, a Drupal site for free stock photo site, recently upgraded to 4.7.Like many users, they say they were shocked of rewrites of major portions. This is something that regularly comes up on the Drupal development mailing list, and Dries wrote about recently as well.



but, um

I don't understand why people are shocked. It's not like it's a secret. It's on many many handbook pages. Test site's and run through's are recommended, encouraged, etc.

People who modify core instead of module add on's and such know that they are making more work for themselves. Hopefully these folks will try and contribute their modifications back to the community. If they don't well, then those modifications and improvements that they found valuable will not be in the next Drupal version will they?

Will a better upgrade process be good? Sure. Is drupal core improving so that fewer core hacks may be needed by others, yes.

I am still and remained mystified why people are shocked at the upgrade process. It's not a secret and not that hard for core core.

Maybe painful

Yeah, I agree that shock is bit too much.

The pain is still there though no matter what.

Let me be clear on my position:

  • I feel that Drupal should not think too much of backward compatibility, and continue the innovation path with every release. For core developers, this means don't bother with it, while others work on migration/backward compatibility.
  • At the same time, we could do better in lessening the pain in some areas.

    Examples are:

    • Providing separate (non core) migration tools (Jeff Robbins formupdater is a prime example for that).
    • Keeping compatibility for one release. This worked well in some cases, but not others. An example is xtemplate being replaced by phptemplate: people had ample time to use either over 4.6, and can even still use xtemplate if they so wish. Another example was the initial plan for FormsAPI: keep form_*() functions for 4.7, and drop it afterwards. This did not happen.
    • Providing a separate compatability layer or backport. Nedjo backported FormsAPI for 4.6 thus easing the transition for many.

I guess this is a good plan in my view.
Khalid Baheyeldin

True, but....

In the case of 4.7 form_*() functions, there was a 'compatability layer' at least for the first few revisions. It became obvious, though, that there was no good way for the two form building mechanisms to exist side-by-side. I was sad to see it go, but I was happier to see the new FormAPI actually ship.

In my experience, the tricky aspects of upgrading are not so much the major changes (FormAPI changing completely) but the subtle things like changes to a particular function's return value formatting. It's often necessary, but also often harder to track down adequite documentation on than the big changes.

It's getting better

One of the exciting things Dries mentioned in the Drupal developers' conference call last week was moving content calls into phpTemplate so that theming defines all display and allows more component-based theming. A radical new approach, with much promise!

Since much of the hacking that people do to existing releases -- hacking that makes upgrading all the more difficult -- is to simply modify presentation of information, my guess is that upgrading will get easier in the future. (Other efforts in this area are more obvious, like the installer system under development.)

The added security of separating content from presentation could also mean longer lives of legacy versions of Drupal.

Personally I've not found upgrades too painful, except on the first two sites I built in 4.5, where I made all sorts of mistakes, added way too many modules, and ended up with lots of cruft in the database. I've had to manually go through the tables, cleaning out garbage, manually restructuring tables to conform to the current database table schema. I'd like ot think I've learned something since then, and that the easier time of it I've had with other sites isn't a fluke but the result of some hard-won drupals of wisdom.

But I also take the rapid and near-mandatory upgrade route of Drupal-powered sites to be a given. Yet I fear that as Drupal gets easier to install, we'll have more DIY folks who end up on a suddenly steep learning curve when they discover their release is no longer supported.