Last year, I upgraded this computer from Red Hat 8 to Fedora Core 2. It was a bigger OS jump than I would have perhaps liked (skipping two OS versions), but now I’ve stuck with FC2 for a while, even though FC3 has been out for several months. At first, I was planning to skip FC3 and jump to FC4 soon after it comes out, but now I’m planning to upgrade to FC3 soon (this weekend, hopefully).

The hope here is that OS upgrades are sufficiently painless that the benefits of taking small leaps, always using a supported OS (I’m not sure FC2 will be supported once FC4 comes out), will outweigh the fear and glitches that come from doing the upgrade. Now that I subscribe to fedora-announce-list, I realize that lots of FC2 package upgrades these days come in parallel with FC3 package upgrades. Which means that

  • The difference between FC2 and FC3 isn’t all that great
  • To the extent that the upgrades don’t come in parallel, the longer I wait the bigger the chance that switching OS’s (whenever I get around to doing it) will cause serious disruption.

On a related note, I’m becoming more and more of a fan of incremental software development every month. Why can’t we develop software in such a way that we always have a working version? And the truth is, as the eXtreme Programming people have taught us, we can develop software that way, and it’s really useful to do so. These days, at work, I get nervous if I have a modified source tree that doesn’t get checked in for two days straight (and if it goes longer than that, I see it as a sign that the code should be thrown away, instead of digging a deeper hole).

So why not apply the same philosophy to OS development, to OS upgrades? The version of FC2 that I’m running now is pretty different from the version that I first installed; every day or so, I do ‘yum update’, and a few packages get upgraded. And many of the updated FC2 packages are the same as the FC3 packages; I’m not sure how different the version of FC2 that I’m currently running is from a current FC3 installation, but I don’t think they’re all that different. So why not go whole hog and release all FC3 packages on FC2, eliminating the difference between the two OS’s?

The big issue is, of course, incompatible changes. If a key library changes its major version number, do you have to upgrade all the packages that depend on that? Or do you leave the old version in place, for old packages to link against? If the latter, when does the old version go away? And libraries are the easy case, because they have a built-in mechanism to have multiple incompatible versions installed simultaneously – if gcc suddenly changes from 3.3 to 3.4 and all your C++ code stops compiling, you might be a bit annoyed. (Or you might be grateful that your nonportable C++ code is being flushed out, of course.) I don’t think this is rocket science, though; I’d be unhappy if, say, 5 years from now I still have to do an OS upgrade in a big hunk. (Then again, it might not be with Fedora: it’s run by Red Hat, which has reasons to have non-incremental upgrades in their enterprise distributions.)

So far, actually, I’m a bit stymied by just getting the CD’s burned: I keep on trying to burn CD’s, and they keep on failing the mediacheck stage. Sigh. Which is a perfect example of non-incremental upgrades getting in my way for stupid reasons. The release notes make me wonder if it’s possible to download the iso’s, mount them from the hard drive (instead of burning them first), and upgrading directly from that somehow. But they don’t give any instructions for doing all of that, and I don’t feel like figuring it out by myself (and I’m not at all sure that it’s possible).

Post Revisions:

There are no revisions for this post.