Pulling the plug on dpkg and rpm

Why are we here?

But we have embarassing flaws

Designers building GNOME is bad

Increment all the versions! (forever)

You don't actually run Debian/Fedora/Gentoo...

OSTree: "git for operating system binaries"

Boot into chroots, with bind mounts outside

Demo

$ ls -al /ostree/
total 40
drwxr-xr-x.  8 root root 4096 Aug 25 13:26 .
dr-xr-xr-x. 25 root root 4096 Aug 26 17:36 ..
lrwxrwxrwx.  1 root root  100 Aug 25 13:26 current -> deploy/trees/gnomeos-3.6-i686-devel-b49228c929cfa31a30d8f98191abfadced58b3836ea8a85989f877174e5e2b04
drwxr-xr-x.  3 root root 4096 Aug 25 13:24 deploy
drwxr-xr-x.  8 root root 4096 Jul  8 10:52 modules
lrwxrwxrwx.  1 root root  100 Aug 24 16:05 previous -> deploy/trees/gnomeos-3.6-i686-devel-b49228c929cfa31a30d8f98191abfadced58b3836ea8a85989f877174e5e2b04
drwxr-xr-x.  7 root root 4096 Aug 15 17:37 repo
drwxr-xr-x.  7 root root 4096 Jun  7 18:20 var
$ ls -al /ostree/deploy/trees/
total 16
drwxr-xr-x.  4 root root 4096 Aug 25 13:26 .
drwxr-xr-x.  3 root root 4096 Aug 25 13:24 ..
drwxr-sr-x. 18 root root 4096 Aug 25 13:24 gnomeos-3.6-i686-devel-b49228c929cfa31a30d8f98191abfadced58b3836ea8a85989f877174e5e2b04
drwxr-xr-x. 45 root root 4096 Aug 25 13:26 gnomeos-3.6-i686-devel-b49228c929cfa31a30d8f98191abfadced58b3836ea8a85989f877174e5e2b04-etc

Benefits

Downloading new revisions

# cd /ostree
# ostree-pull --repo=repo gnome --depth=3
Fetching http://ostree.gnome.org/repo/refs/heads/trees/gnomeos-3.6-i686-runtime
Fetching http://ostree.gnome.org/repo/refs/heads/trees/gnomeos-3.6-i686-devel
Fetching http://ostree.gnome.org/repo/objects/55/48dbac3ed5ece0fee08936ae238bdd8c0e67d05df8d825ffc26e0861e0569b.commit
Fetching http://ostree.gnome.org/repo/objects/9f/26d6902cadd26a91d6970243e061e65a001c07d15be6c6bf9b46c670fd2ec1.dirtree
...
162 content objects to fetch
...
remote gnome/trees/gnomeos-3.6-i686-runtime is now 5548dbac3ed5ece0fee08936ae238bdd8c0e67d05df8d825ffc26e0861e0569b
remote gnome/trees/gnomeos-3.6-i686-devel is now aa07f4674d47e0e89c034a91433a95d333fe2d2d28adddcb4b2ea5731e97152e
# ostree --repo=repo diff trees/gnomeos-3.6-i686-devel
M    /contents.json
M    /usr/libexec/gdm-session-worker
M    /usr/libexec/gdm-simple-slave
M    /usr/share/locale/lt/LC_MESSAGES/gnome-panel-3.0.mo
#

Upgrading - deploying a new revision

# ls -al /ostree/trees/gnomeos-3.6-i686-devel
 lrwxrwxrwx. 1 root root 87 Aug 29 16:50 /ostree/trees/gnomeos-3.6-i686-devel -> gnomeos-3.6-i686-devel-aa07f4674d47e0e89c034a91433a95d333fe2d2d28adddcb4b2ea5731e97152e
# ostadmin deploy trees/gnomeos-3.6-i686-devel
ostree-run-triggers: Starting: 0001ldconfig.trigger
ostree-run-triggers: Completed 0001ldconfig.trigger in 4.83 seconds
...
ostree-run-triggers: Starting: 0080gtk+.trigger
ostree-run-triggers: Completed 0080gtk+.trigger in 43.93 seconds
ostree-checkout: Rev trees/gnomeos-3.6-i686-devel checked out as aa07f4674d47e0e89c034a91433a95d333fe2d2d28adddcb4b2ea5731e97152e
Already have OSTree entry in grub config
/ostree/current set to trees/gnomeos-3.6-i686-devel

Configuration propagates forwards in time (git branch)

/lib/passwd

Build system

Continuous integration. Finally!

Demo

  "components": [
   		{"src": "gnome:gtk-doc-stub",
		 "component": "devel",
		 "noarch": true},

		{"src": "git:git://github.com/atgreen/libffi.git",
		 "tag": "v3.0.10"},

		{"src": "gnome:glib",
                 "config-opts": ["--disable-modular-tests"]},
  ...

Alternatives/Technologies

Issues

Feeding back into dpkg/rpm

Quick recap

Questions?