The curse of major versions

For some reason it seems like a lot of the open source applications I use for web application development seem to be haunted with some kind of 'major version syndrome'. I've been following the PHP-DEV list closely over the last years (lurking mostly) and I got a bit worried about the future of PHP reading all the endless discussions and personal attacks involved with the development of PHP6.

Today I had to work on converting a PHP4 application into PHP5 (No change needed, the only cost was in testing), and I have been exchanging emails about getting a host to support PHP5, which sparked me to write this post.

Python

The heat going on on the php-internals list also made me think about not putting all my eggs in one basket. So I've been browsing around for other languages. I considered a few, and I think the one I'm most interested in is python. Haven't had time to actually get started with it, but I figured it was a good idea to subscribe to Planet Python. I learned that a Python 3 (or 3000, or py3k) is in the making and it seems like they are struck with similar problems.

Perl

This discovery made me think about Perl. From what I heard about Perl (I don't hear a lot, as it seems to be a declining language.. ), Perl 6 is a completely new language which at some point (7 years ago) had Perl 5 as its starting point. I have to admit I don't know the community or what's exactly going on, but I ran across a lot of articles about decline of the language and rumors about split in the community.

Apache

Also, Apache seems to have problems with adoption rates. Most people still run 1.3 in favor of 2.0. The linked article is from 2005, so the information is a bit outdated by now (Apache 2 was released in 2002). But as far as I know Apache 1.3 is still a lot more popular than Apache 2.0

Problems

I want to emphasize that this article is mostly based on a feeling I'm getting looking at the various projects and browsing around, so as a result I can't really put down hard facts or unbiased sources. Then again, making conclusions based on incomplete data is likely the daily life of every programmer, so I might as well give it a shot.

I think the problem is two-fold. First, there's the adoption problem by the community. Main reasons seem to be:

  • Backwards compatibility breaking.
  • Maturity (instability) of the new version.
  • Don't try to fix something thats not broken.

It can be debated if either of these reasons are actually true or merely FUD; but the main point here is, the surrounding communities same to make these conclusions.

The second problem is the internal development team. Often a comparison is made between open source development and democracy. When projects grow, their development teams grow as well.. adding more opinions and eventually more bureaucracy and frustration.

When a subject of a new major version comes up, a can of worms seems to open up. Everybody working on the project will have ideas about the direction of the project. Generally there's a few years between major releases, so everybody will feel strongly about getting their favorite feature in.

Solutions

If you look at the statistics for the various php versions people seem to have no problem to upgrade between minor versions. The most popular version of PHP is 4.4.4. Still a bit behind the current 4.4.7 release, but visibly people are more comfortable to upgrade to a version starting with 4.

The conclusion I can make: Keep your major version number and add new features gradually. There's too much pressure behind a whole new integer value for the major version number for both for the users and the internal dev team. Implementing new features gradually will keep both your users happy and keep your developers' heads on their shoulders.

Then again, I'm just a bystander and maybe I have no idea of the complex social structures involved with developing open source products.

Our development and live environment runs PHP 5.2.3, MySQL 5.0.41, Apache 2.2.3. We recently migrated all our servers to Debian 4.0.

Web mentions

Comments

  • Alexey Zakhlestin

    Alexey Zakhlestin

    Unfortunately, it is impossible to add some of the features without breaking compatibility (and proper Unicode support in PHP6 is just the feature like that)
  • Jani Taskinen

    Jani Taskinen

    Excellent article! Thank you. Just one correction: PHP development team (the ones that actually do something) hasn't grown but the group with opinions has. :)
  • fa

    fa

    You also have to note that Apache 2.0 is a rewrite of 1.3 and handles many thing in a quite different way. So I can't really count this as an "adoption problem" - they share the name and most of the config syntax, but it's not just a major version bump. No objections to the rest of the article, cheers :)
  • sopel

    sopel

    I think people worry about adoption problem way too much. Im still reading about it here and there. You simply can't force people to upgrade as long as they resistent towards advantages and improvements that new versions usually bring (either because of lack of knowledge or stupidity). And that's their problem. Rest of world will switch to new thing sooner or later.
  • gaetano

    gaetano

    Migration to major new versions is often a chicken-and-egg problem: devs for major apps cannot forsake the old version and use the better fetaures of the new one because a lot of shared hosting servers do not support is. Otoh, as long as major apps support the old version, hosters are not encouraged to upgrade. Luckily, for php 4 the final date has been set: the 5th of feb. 2008... Another factor which is very difficult to estimate is the pain caused by incompatibility problems. Php5 took great pains to break as little as possible from php 4, but in fact it broke a lot of very small, corner cases. People running production apps know that things are likely to break on an upgrade, and are usually loath/have little time for testing. As long as the new version looks very similar to the old one, the perceived advantages in migrating might be smaller than what they actually are. Sometimes it is better to just forget about the 'keep it compatible' mantra, since it is never gonna be 100% satisfied, and make bold improvements. One last "fact": php5 was unusable up to version 5.1, and a few early adopters got burned by bugs / performance problems. Oh, and what about sVista? As far as I can tell, nobody really is wanting to upgrade, unless really forced.