On Tuesday, July 26, 2011 01:51:18 AM 夜神 岩男 wrote:
This is roughly what Microsoft used to aim for (somewhere on the road between XP and 8 they seem to have totally quit the idea, though).
As a slightly off-topic aside, there is a youtube video out there about doing just that; the video shows an upgrade chain that goes from Windows 1.0 (no, that's not a typo) up through Windows 7, all as upgrades, along with all the things that have to be changed along the way.... some of the text the guy enters in textboxes is NSFW, however. So you'll have to google for it yourselves; it made Slashdot a few weeks back, so it shouldn't be hard to find.
I'm sure that some of these major upgrades *can* be done, but in a land where the package is the unit of OS granularity, and package maintenance practices vary from package to package as to 'upgradeableness,' it really becomes a task, and this is before even considering the upgrade-hostile attitudes of some software projects that upstream ships packaged in upstream EL.
While package groups give an illusion of a unit larger than a package, it's just an illusion, really. The collective set of dependencies defines the full distribution, and nothing in the dependency chain requires rigorous, tested, upgrade path implementation.
In the case of other commercial vendors doing this, well, those vendors typically have strict and tight control over all the developers working on it, and have enforcement mechanisms in place to ensure that migration paths are implemented. It's called an employment contract, and it's enforced through the ordinary commercial developer chain of command.
While open source developers and packagers are technically capable of doing this, some seem to take great delight in making it difficult to be compatible (partly to prevent closed-source programs from continuing to work). And if just one development group becomes the proverbial fly in the ointment, then all the users of that package that need upgrades to 'just work' suffer. And sometimes the developers care, and sometimes they don't.
But consider: upstream doesn't employ a 'critical mass' of developers in all of its shipped packages to reliably enforce upgrade provisions, even if it wanted to do so.
Beyond that, there are packages supported by upstream that have serious difficulties with major version upgrades, simply because supporting data in place upgrades is not a priority for that development group. I can think of more than one project that seems 'upgrade hostile' but in reality it's just something that's not front burner; they'd rather develop newer features and fix bugs than 'waste' time on a rarely used procedure that is, in some cases, extremely complex and in other cases simply won't work anyway. That is, there are data sets associated with some upstream packages that are impossible to migrate in place to a newer version in a seamless, nondisruptive, fashion.
In a nutshell, it becomes a tradeoff of open source freedom versus the upgrade needs of the users. If the needs of the users trump the freedom of the developers, then developer freedom (the freedom to 'scratch ones own itch'), the very essence of open source, goes out the window.
To the OP, if your itch is to have seamless in-place upgrades, then scratch that itch (or pay someone what scratching that itch is really worth... but be prepared to come up with six or seven figures). That's going to be a mighty big itch, though..... especially with over 2,500 upstream packages from nearly as many heterogeneous development groups with many more agendas of their own.