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.
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.
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.
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
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.
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.