A modest idea on how to get people to use Fedora Rawhide

November 30, 2010

One of the things that comes up every so often is that the Fedora people would kind of like more people to use Rawhide, their rolling development version, so that it gets more testing and all of the problems don't suddenly come out of the woodwork when a new version of Fedora is released (or so I heard once upon a time; maybe they have enough testers now). Although I've written about this before, I've recently had a new modest idea on how to make a version of Rawhide that people are more likely to use.

Let's start from the premise that what people really want is 'new but (mostly) stable' or better yet 'new with only minor bugs'. I don't think that Fedora can possibly deliver this, not with any certainty, so our job is to fake it as best as possible with something that comes as close to Rawhide as possible.

Our new Rawhide-like thing (call it 'Cowhide') works like this. First, it is what I will call 'slightly cooked'; you should have assurances that packages in Cowhide do not break machines in obvious ways. They should at least install and survive in automated virtual machines, and the machine should have basic functionality afterwards. You should never be left with a machine that is unbootable, with its core networking dead, or the like.

(Rawhide may provide this today, I don't know.)

Next, it provides easy, on the spot rollbacks to previous package versions, well previous versions that you had installed. So that the Rawhide mirrors don't explode, these are saved locally (so people who use Cowhide will need some extra disk space for it). There is a simple administrative interface to roll back to a time-based package version snapshot, so you can say 'it worked two days ago, take me back'. This rollback system should work very hard to always work (no matter what packages think about being removed or reverted), and for obvious reasons there should be a non-graphical version too.

Testing this interface should always be part of the Cowhide basic smoke testing. If you can't rollback from a package update, the update does not make it into the Cowhide repository.

(Ideally there would also be a rescue CD based version of this rollback system, so that you had a chance of recovering even an unbootable system if that happened somehow.)

However, as I've covered earlier, it is very difficult or impossible to support package rollbacks in general. I can't expect Cowhide to solve this hard problem, so instead we'll cheat. Cowhide has markers for 'this package update cannot be rolled back from; it introduces a non-reversible change', and by default the Cowhide updater will not install these non-reversible packages until they are at least N days old and there are no open bugs filed against the package version, where N is some useful value (say ten days). You can continue to update 'around' such a package, ie it only freezes itself and anything that depends on it.

(A non-reversible package version would be marked as such by the package's maintainer. Hopefully the maintainer knows this sort of stuff about their package.)

This relies on there being adventurous people who will turn this feature off (or down a lot) and play with the latest packages; if there are problems, hopefully they will get noticed and filed soon enough to block the package updating for the less adventurous. Since there are people using Rawhide now, I think that there would be such people in a Cowhide world.

In short: Cowhide shouldn't ever outright break your system beyond recovery, and when stuff breaks it should be possible and usually easy to get back to a working system. Stuff will still break from time to time, but it's not that annoying to fix.

Written on 30 November 2010.
« Why low quality encryption is not better than no encryption
My view of OpenSolaris and Illumos »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Tue Nov 30 23:01:41 2010
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.