GUADEC: Work in the pipeline for GNOME
Posted Aug 24, 2012 18:01 UTC (Fri) by walters
In reply to: GUADEC: Work in the pipeline for GNOME
Parent article: GUADEC: Work in the pipeline for GNOME
Oh, there are many possible workarounds. "yum" does have "distro-sync". Debian's apt has "pinning", and will downgrade. But both of them by default look for upgrades. And the default is very influential on the architecture of the entire system.
For example, in Fedora's Koji, packages that aren't tagged as being part of some "release" are subject to garbage collection. So if GTK+ regressed, you might find that the previous package had already vanished from the build server/archive mirrors, so you can't even download it.
And what's more important - there's no sane mechanism to push a revert on the build server side, unless you resort to Epoch or ~really. And Epoch has serious drawbacks - for a package like gtk+, we'd have to go and reflect the Epoch bump in every other package using gtk3-devel. That's extreme pain.
More realistically of course, what you would do is cherry-pick a "git revert" of the breakage. But at that point - you're lying about the Version field. You're fighting the system.
The combination of OSTree and the gnome-ostree build system fixes this in two separate ways:
1) You always by default have at least the previous OS you booted into before deploying a new update. In fact, on my laptop, I have hundreds of individual GNOME build snapshots stored in /ostree. And each build points to the exact git repositories and revisions that built it. So I could fork off what I have locally at any time.
You'd be amazed at just how much more pleasant it is to follow Free Software development when you have a "go back to what worked" button locally. In fact - you have two separate undo buttons. OSTree doesn't affect at all whatever distribution you have installed. So you can just reboot back into that too.
2) On the gnome-ostree side, I can pick the git revision of any module I want at any time. And I have used this power several times so far to keep things working while we decide what to do.
It's hard to describe just how powerful this is. For example, I could decide one day to switch the entire tree to KDE. You'd do a pull, and it wouldn't affect your running system at all; there's nothing equivalent to RPM/dpkg deleting files underneath GNOME while it's running. You just download the delta, then deploy a new root, and reboot into it. The next day, I could switch back. And you would basically only download 64 bytes of checksum pointing to the original GNOME tree, and switch back.
to post comments)