GNU Guix is 4 years old!
Ludovic Courtes`
GNU Hackers Meeting, Rennes, August 2016 The rise and fall of distros. “Debian and other distributions are going to be that thing you run docker on, little more.” — Jos Poortvliet, ownCloud developer
http://lwn.net/Articles/670566/ It’s also that thing you run inside Docker! main griefs:
I distros are inflexible
I distros “lag behind”
I developers have to “chase distros”
http://xkcd.com/1654/ → “app bundles”
Giving up? Giving up?
→ “app bundles” https://imagelayers.io/ Maybe what we need is an app store that feels like apt, yum & co.?
... still too low-level ... still too low-level
Maybe what we need is an app store that feels like apt, yum & co.?
“There is in fact another system with very similar goals, which is now called Flatpak [...]”
“This is, to put it diplomatically, a heaping pile of steaming bullshit [...] served by the Canonical press department.”
— Adam Williamson (Red Hat, Fedora)
https://www.happyassassin.net/ “This is, to put it diplomatically, a heaping pile of steaming bullshit [...] served by the Canonical press department.”
“There is in fact another system with very similar goals, which is now called Flatpak [...]”
— Adam Williamson (Red Hat, Fedora)
https://www.happyassassin.net/ http://flatpak.org/ “app bundles” are headed wrong
I difficulty to compose software packages
I no “big picture” integration work
I where’s the Corresponding Source?
I “app” model/free software commons mismatch
Guix
1. transactional package manager 2. software environment manager 3. APIs & tools to customize environments 4. packaging tools $ guix package -i gcc-toolchain coreutils sed grep ...
$ eval ‘guix package --search-paths‘ ...
$ guix package --manifest=my-software.scm ... A simple matter of installing the deps, right?
Want to get started hacking on GIMP? Want to get started hacking on GIMP?
A simple matter of installing the deps, right? gimp-2.8.14
python2-pygtk-2.24.0 libexif-0.6.21
librsvg-2.40.13 gegl-0.2.0 gtk+-2.24.28
libgsf-1.14.34 babl-0.1.10 pango-1.38.1
gdk-pixbuf-2.32.3 atk-2.18.0 harfbuzz-1.0.5 python2-pygobject-2.28.6
gobject-introspection-1.46.0 python2-pycairo-1.10.0 cups-2.1.0
cups-filters-1.4.0 cairo-1.14.2 python-waf-1.8.8
icu4c-55.1 poppler-0.37.0 font-dejavu-2.34
libcroco-0.6.8 cairo-1.14.2 tar-1.28 avahi-0.6.31 ijs-9.14.0
glib-2.46.1 libspectre-0.2.7 intltool-0.51.0 libdaemon-0.14 libtool-2.4.6
tzdata-2015g pixman-0.32.8 openjpeg-1.5.2 ghostscript-9.14.0 cups-minimal-2.1.0 dbus-1.10.0 perl-xml-parser-2.44 file-5.25 automake-1.15
libpng-1.5.26 qpdf-5.1.3 lcms-2.6 libpaper-1.1.24 graphite2-1.3.3 python-wrapper-3.4.3 gnutls-3.4.7 autoconf-wrapper-2.69 autoconf-wrapper-2.69
coreutils-8.24 python2-fonttools-2.5 pcre-8.38 libtiff-4.0.6 python-3.4.3 python-2.7.10 libjpeg-8d which-2.21 guile-2.0.11 nettle-3.1.1 libidn-1.32 autoconf-2.69
libcap-2.24 python2-setuptools-18.3.1 bzip2-1.0.6 libffi-3.2.1 acl-2.2.52 gdbm-1.11 tk-8.6.4 sqlite-3.10.0 libjpeg-9a bash-4.3.42 gmp-6.1.0 libgc-7.4.2 libltdl-2.4.6 libunistring-0.9.6
attr-2.4.47 tcl-8.6.4 bison-3.0.4 readline-6.3 libxft-2.3.2 libatomic-ops-7.4.2 libxinerama-1.1.3 libxrandr-1.4.2 libxcursor-1.1.14 libxi-1.7.4 libxcomposite-0.4.4 libxdamage-1.1.4
flex-2.6.0 fontconfig-2.11.94 ncurses-6.0 gettext-0.19.7 libxrender-0.9.8 libxext-1.3.3 libxfixes-5.0.1 compositeproto-0.4.2
freetype-2.6 indent-2.2.10 bison-2.7.1 gs-fonts-8.11 expat-2.1.0 libx11-1.6.2 fixesproto-5.0
m4-1.4.17 xextproto-7.3.0 libxcb-1.11 kbproto-1.0.6 inputproto-2.3.1
libxslt-1.1.28 xcb-proto-1.11 libxau-1.0.8 xtrans-1.3.5 libxdmcp-1.1.1 randrproto-1.4.0
libxml2-2.9.3 python-minimal-wrapper-3.4.3 renderproto-0.11.1 libpthread-stubs-0.3 libgcrypt-1.6.4 xproto-7.0.26
python-minimal-3.4.3 libgpg-error-1.21 xineramaproto-1.2.1 util-macros-1.19.0 damageproto-1.2.1
zlib-1.2.8 openssl-1.0.2e pkg-config-0.29 libtasn1-4.7
perl-5.22.1 $ guix environment --container gimp ...
$ guix environment --container gimp \ --ad-hoc git autoconf automake gdb ... Creating package variants at the command line $ guix package -i git \ --with-input=openssl=libressl ...
$ guix package -i emacs \ --with-source=./emacs-25.1rc0.tar.gz ... $ guix package -i emacs \ --with-source=./emacs-25.1rc0.tar.gz ...
$ guix package -i git \ --with-input=openssl=libressl ... Your personal packages or variants in GUIX PACKAGE PATH! Security updates “grafted” onto available binaries gimp-2.8.14
python2-pygtk-2.24.0 libexif-0.6.21
librsvg-2.40.13 gegl-0.2.0 gtk+-2.24.28
libgsf-1.14.34 babl-0.1.10 pango-1.38.1
gdk-pixbuf-2.32.3 atk-2.18.0 harfbuzz-1.0.5 python2-pygobject-2.28.6
gobject-introspection-1.46.0 python2-pycairo-1.10.0 cups-2.1.0
cups-filters-1.4.0 cairo-1.14.2 python-waf-1.8.8
icu4c-55.1 poppler-0.37.0 font-dejavu-2.34
libcroco-0.6.8 cairo-1.14.2 tar-1.28 avahi-0.6.31 ijs-9.14.0
glib-2.46.1 libspectre-0.2.7 intltool-0.51.0 libdaemon-0.14 libtool-2.4.6
tzdata-2015g pixman-0.32.8 openjpeg-1.5.2 ghostscript-9.14.0 cups-minimal-2.1.0 dbus-1.10.0 perl-xml-parser-2.44 file-5.25 automake-1.15
libpng-1.5.26 qpdf-5.1.3 lcms-2.6 libpaper-1.1.24 graphite2-1.3.3 python-wrapper-3.4.3 gnutls-3.4.7 autoconf-wrapper-2.69 autoconf-wrapper-2.69
coreutils-8.24 python2-fonttools-2.5 pcre-8.38 libtiff-4.0.6 python-3.4.3 python-2.7.10 libjpeg-8d which-2.21 guile-2.0.11 nettle-3.1.1 libidn-1.32 autoconf-2.69
libcap-2.24 python2-setuptools-18.3.1 bzip2-1.0.6 libffi-3.2.1 acl-2.2.52 gdbm-1.11 tk-8.6.4 sqlite-3.10.0 libjpeg-9a bash-4.3.42 gmp-6.1.0 libgc-7.4.2 libltdl-2.4.6 libunistring-0.9.6
attr-2.4.47 tcl-8.6.4 bison-3.0.4 readline-6.3 libxft-2.3.2 libatomic-ops-7.4.2 libxinerama-1.1.3 libxrandr-1.4.2 libxcursor-1.1.14 libxi-1.7.4 libxcomposite-0.4.4 libxdamage-1.1.4
flex-2.6.0 fontconfig-2.11.94 ncurses-6.0 gettext-0.19.7 libxrender-0.9.8 libxext-1.3.3 libxfixes-5.0.1 compositeproto-0.4.2
freetype-2.6 indent-2.2.10 bison-2.7.1 gs-fonts-8.11 expat-2.1.0 libx11-1.6.2 fixesproto-5.0
m4-1.4.17 xextproto-7.3.0 libxcb-1.11 kbproto-1.0.6 inputproto-2.3.1
libxslt-1.1.28 xcb-proto-1.11 libxau-1.0.8 xtrans-1.3.5 libxdmcp-1.1.1 randrproto-1.4.0
libxml2-2.9.3 python-minimal-wrapper-3.4.3 renderproto-0.11.1 libpthread-stubs-0.3 libgcrypt-1.6.4 xproto-7.0.26
python-minimal-3.4.3 libgpg-error-1.21 xineramaproto-1.2.1 util-macros-1.19.0 damageproto-1.2.1
zlib-1.2.8 openssl-1.0.2e pkg-config-0.29 libtasn1-4.7
perl-5.22.1 GuixSD: declarative OS config Linux-libre Linux-libre initial RAM disk Linux-libre initial RAM disk Guile Linux-libre
initial RAM disk Guile
PID 1: GNU Shepherd services... Linux-libre
initial RAM disk Guile
PID 1: GNU Shepherd services... Guile Linux-libre
initial RAM disk Guile
PID 1: GNU Shepherd services... Guile
applications Status. 4 years!
I Aug. 2012 — GNU Hackers Meeting, Dusseldorf¨ I Nov. 2012 — dubbed GNU I Jan. 2013 — 0.1 I ... I July 2014 — 0.7, installable operating system I ... I Nov. 2015 — 0.9.0, new service framework, etc. I Jan. 2016 — successful fundraiser for new build farm I Mar. 2016 — 0.10.0, grafts, GNOME I Aug. 2016 — 0.11.0, system tests, more services growth!
I 3,800+ packages
I 4 architectures
I binaries at https://hydra.gnu.org
I ≈500 new packages per release
Scaling up. importers & updaters
I guix import I 8.5 importers: GNU, Nix, PyPI, CPAN, CRAN, Hackage, ELPA, Gem, npm (GSoC 2016) I guix refresh I 11 updaters: GNU, GNOME, KDE, Xorg, ELPA, CRAN, Bioconductor, Hackage, PyPI, Gem, GitHub
I guix lint -c cve (vulnerabilities) I 30 committers, but 5–10 frequent reviewers I 50+ emails per day, hard to track patches I Patchwork? QEMU’s patches? suggestions?
contributions
I documented processes, code of conduct
I consensus-based decision making
I tools: guix lint (12 checkers!), guix build --rounds=2, etc.
I good reviews & mentoring I 50+ emails per day, hard to track patches I Patchwork? QEMU’s patches? suggestions?
contributions
I documented processes, code of conduct
I consensus-based decision making
I tools: guix lint (12 checkers!), guix build --rounds=2, etc.
I good reviews & mentoring
I 30 committers, but 5–10 frequent reviewers contributions
I documented processes, code of conduct
I consensus-based decision making
I tools: guix lint (12 checkers!), guix build --rounds=2, etc.
I good reviews & mentoring
I 30 committers, but 5–10 frequent reviewers I 50+ emails per day, hard to track patches I Patchwork? QEMU’s patches? suggestions? maintainership, responsibilities
I Ricardo Wurmus co-maintainer since July! I currently ≈3 build farm sysadmins I ... but heading towards distributed sysadmin! I run GuixSD everywhere, version-control that I eventually: guix deploy build farm & funding
I hardware donated by FSF, TUM, GNU Spain, individuals
I 2 Novena boards (ARMv7) donated by Bunnie
I raised $8,000+ in January 2016
I 5,000 EUR donated by Igalia
I “Guix Europe” NPO created in France in 2016 build farm & funding
I hardware donated by FSF, TUM, GNU Spain, individuals
I 2 Novena boards (ARMv7) donated by Bunnie I raised $8,000+Thankin You!January :-) 2016 I 5,000 EUR donated by Igalia
I “Guix Europe” NPO created in France in 2016
Libreboot inside! No METM! What’s left before 1.0? getting to 1.0
I guix pull & authenticated checkouts
I performance & usability improvements I GuixSD I encrypted root file system I LVM support I more system services I fix bugs and glitches!
I self-hosted infra: guix publish and Cuirass your help needed!
I install the distribution
I use it, report bugs, add packages
I help with the infrastructure + admin
I donate hardware/money
I share your ideas! ludo@gnu.org http://gnu.org/software/guix/ Copyright c 2010, 2012–2016 Ludovic Courtes` [email protected].
GNU GuixSD logo, CC-BY-SA 4.0, http://gnu.org/s/guix/graphics Copyright of other images included in this document is held by their respective owners.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
At your option, you may instead copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/licenses/gfdl.html.
The source of this document is available from http://git.sv.gnu.org/cgit/guix/maintenance.git.