I've gained quite a bit of drupal experience over the last year and we now have some 1100 sites running on drupal (most of these hosting other peoples content, about
50 of them with stuff that we wrote ourselves). After playing around for a bit with drupal 6 I figured I'd try to do an upgrade of a minor site to see how the process works
in practice (as opposed to the theory), and let's just say that I'm underwhelmed.

While there exist many excellent pieces of writing concerning upgrading drupal from one version to another (major or minor) in practice it seems that life is not that simple.

As long as you stick to core modules and themes it all seems to work quite well, but hardly any site is built using only core stuff.

Specific issues that I'm running in to are:

- there is no simple way to check if all the modules / themes a site uses are supported by the new core version other than going through all the listings manually and trying to trace down which modules have their functionality implemented in different places and store their data in different spots (cck field permissions is a nice example of this)
- Plenty of modules are not yet available under drupal 6, even though drupal 7 is already well underway, there seems to be no easy way to get a timetable for when support can be expected, plenty of modules / themes seem to be abandoned by their maintainers so it is questionable whether drupal 6 support will ever be available for them.
- the same (if not worse) goes for themes
- data conversion from one drupal release to another seems to be limited in practice to the core modules, if you try to convert for instance cck stored information between major releases (5 to 6) the data simply doesn't make it if you follow the published upgrade procedure.

Ideally upgrading from one release of the software to another would simply consist of running a simple script (a la 'apt-get update'), which would take care of downloading all the required new modules and themes as well as core files, and converting the databases on the fly. Maybe this is asking too much, but since drupal places a great amount of emphasis on staying current I think that staying current should be made as easy as can be. The current process - at least for me - does not work well.

If there is anybody out there that can shed some light on this then I'd be very greatful.

Comments

rhouse’s picture

There may be a good rationale for the policy of not requiring api compatibility between major versions, but it seems to me that this has now become an excuse for laziness. 6.0 was just out and 7 was on the drawing board. Why was there not a phase of trying to see how far they could go with development whilst NOT changing the api? In other words, change it, then discipline to remain compatible, collect features that just can NOT be done without changes, and do them together. This could yield a new major version every two or three years instead of every year. As for mere changes of function names creating an upgrade issue, that is really silly. One doesn't have to reprogram linux programs every year, and neither should one have to for a CMS "OS". And when changes are really needed, a utility that automatically changes what it can and flags the rest would seem very important.

merlinofchaos’s picture

but it seems to me that this has now become an excuse for laziness.

Great, so you'll help write some of the upgrade code? Because you really, really better be able to put your money where your mouth is if you're going to call us lazy.

-- Merlin

[Point the finger: Assign Blame!]
[Read my writing: ehalseymiles.com]
[Read my Coding blog: Angry Donuts]

-- Merlin

[Read my writing: ehalseymiles.com]
[Read my Coding blog: Angry Donuts]

rhouse’s picture

I already have contributed code to upgrade a module. Does that count? Really, if you are going to throw a tizzy fit about a triviality instead of responding to a serious suggestion for improving the process, then you deserve whatever mess you make for yourself. I can see in the forums how so many users walk away from drupal when it really is so excellent. There's a reason why, and I told it to you. Pay attention or not, as you wish.

naheemsays’s picture

- there is no simple way to check if all the modules / themes a site uses are supported by the new core version other than going through all the listings manually and trying to trace down which modules have their functionality implemented in different places and store their data in different spots (cck field permissions is a nice example of this)

Partially handled by this module: http://drupal.org/project/upgrade_status

merlinofchaos’s picture

Ideally upgrading from one release of the software to another would simply consist of running a simple script (a la 'apt-get update'),

Ideally. But this isn't an ideal world. Drupal is not yet a mature enough package where that happens and works right. There's too much code, too much change, too many things happening from too many different sources. It's an unrealistic expectation to have.

-- Merlin

[Point the finger: Assign Blame!]
[Read my writing: ehalseymiles.com]
[Read my Coding blog: Angry Donuts]

-- Merlin

[Read my writing: ehalseymiles.com]
[Read my Coding blog: Angry Donuts]

jacquesm’s picture

When would you think would this be a realistic expectation to have ? (as in, what year or major drupal release would this be addressed ?)

I really don't mind working hard to push drupal forward, but I do need to know that I don't need to revisit the same work every major release just to stay 'current', that part should be a major goal in the drupal roadmap, ease of upgrade and backwards compatibility. Otherwise all you'll see is that more and more drupal sites will fall behind, I think this is already happening to some extent between 4 and 5, 5 to 6 will see more of it and it will make it a very tough sell to get people to upgrade from 6 to 7 (because so much already works!).

guillaumeduveau’s picture

I'd say never, the web is too young, and so many things are yet to come as the semantic web. I'm happier with a bleeding edge system that requires a lot of work for the upgrades than with an old frozen system, the choice is really up to you. There are Drupal compagnies all around to provide professionnal upgrade services if you don't want to do it yourself !

jacquesm’s picture

I really fail to see what the age of the web and the 'semantic web' have to do with ease of upgrade from one version of drupal to another, that's simply a software quality control issue.

I know the choice is mine, but that choice has been made a lot harder than it strictly should be. Especially given the fact that Drupal at first *seems* to have a smooth upgrade path, I'm very much surprised to have to find out the hard way that it doesn't and to be told that it will likely never happen...

Thank you for your frankness though.