Dries Buytaert on Backward Compatibility

Dries Buytaert, the head mocho of Drupal the PHP-based content management system, talked about software backward compatibility, and how it crosses Drupal's core value. He left the dilemma for everyone to pounder.

But what to do if many of your users slowly force you to change one of your core values? It seems inevitable that sooner than later, we will have to be a lot more careful about breaking peoples' code. And when that happens, I fear that this will be the end of Drupal as we have come to know it. Probably not immediately, maybe not even for several years, but eventually Drupal will be surpassed by technology that can respond more quickly to change. Maybe that is bound to happen anyway, and when it does, having made as many people happy as possible (even at your own expense), is the only thing that really mattered?

I used Drupal on two of my sites because of its flexibility, modular architecture and clean cruft-free code. I know it is important for a software to have itself re-factored, optimised and re-designed again and again to stay on the bleeding age, and I am very glad about the decisions people at Drupal have been making.

However may I say that I have also experienced the pain of some webmasters when the new release just broke every customisation you have made to the site? My small church website was off-line for two hours while I upgraded the database, fixed up customisation, and patched up themes. Database upgrade wasn't all that straight forward (install script picked the wrong scheme version). I can imagine that a medium-large site would take even longer to have every functionality fixed.

At least I'll have a great publishing platform for a few months (yes, Drupal 4.7 is really good) until I have to worry about upgrading to 4.8 again (or 5.0?).

This "backward-compatibility" issue however, plagues every form of software development. A constant struggle between the person who oversees the architect, and the people who implement it, deploy it, support it, etc. A shinning new platform has been released with revolutionary design! Great! Everyone rejoices, and number of installations grow like mushrooms in the forest. The next thing you know, it becomes a dinosaurs, with hacks everywhere trying to be backward compatible to keep all its customers happy. It becomes slow, buggy and eventually a dead project on SourceForge, like million of others.

That's okay. Something more revolutionary will be replacing it. But don't count on everything that will last forever.

(Note: Oh yeah, it happens in the commercial software world as well, and having backward compatibility is always essential -- we can't ask the customers to "manually fix the database tables when it does not upgrade". Okay. I am a bit depressed today.)