From 8dce270e3d64cd7d6145ddcfa9060964c9a5361b Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 19 Jan 2016 09:13:23 -0500 Subject: Update Guix talk. --- guix-blu-2016-01-20.org | 83 ++++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 35 deletions(-) (limited to 'guix-blu-2016-01-20.org') diff --git a/guix-blu-2016-01-20.org b/guix-blu-2016-01-20.org index 5cc53e6..c5375a2 100644 --- a/guix-blu-2016-01-20.org +++ b/guix-blu-2016-01-20.org @@ -21,10 +21,13 @@ * About me - - GNU project volunteer - - GNU Guile user and contributor since 2012 - - GNU Guix contributor since 2013 - - Day job: Ruby + JavaScript web development / “DevOps” + GNU project volunteer + + GNU Guile user and contributor since 2012 + + GNU Guix contributor since 2013 + + Day job: Ruby + JavaScript web development / “DevOps” * Overview @@ -47,8 +50,10 @@ * User autonomy and control + #+latex: \huge{ “Debian and other distributions are going to be that thing you run Docker on, little more.” [fn:7] + #+latex: } * User autonomy and control @@ -57,13 +62,19 @@ * What’s wrong with Apt/Yum/Pacman/etc.? - - Global state (=/usr=) that prevents multiple versions of a package - from coexisting - - Non-atomic installation, removal, upgrade of software - - No way to roll back - - Nondeterminstic package builds (though this is changing!) - - Reliance on pre-built binaries provided by a single point of trust - - Requires superuser privileges + Global state (=/usr=) that prevents *multiple versions* of a package + from coexisting + + *Non-atomic* installation, removal, upgrade of software + + No way to *roll back* + + *Nondeterminstic* package builds and maintainer-uploaded binaries + (though this is changing!) + + Reliance on pre-built binaries provided by a *single point of trust* + + Requires *superuser* privileges * The problem is bigger @@ -102,12 +113,14 @@ * Problems with configuration management software - - Imperative config management makes is overly-complex and brittle - (idempotence is hard) - - More reliable builds require spawning new machines and building - from scratch each time (sledgehammer) - - Made primarily for developers for server maintenance, but all - users could benefit + Imperative config management is overly-complex and brittle + (idempotence is hard) + + More reliable builds require spawning new machines and building + from scratch each time (sledgehammer) + + Made primarily for developers for server maintenance, but all users + could benefit * Docker? @@ -123,18 +136,18 @@ * Problems with Docker - - Still imperative (though resulting images are immutable) + Still imperative (though resulting images are immutable) - - Dockerfile DSL is not expressive + Dockerfile DSL is not expressive - - Promotes one disk image per application to cover up underlying - package management mess [fn:4] + Promotes one disk image per application to cover up underlying + package management mess [fn:4] - - No provenance + No provenance - - Image layering is an ineffective caching strategy + Image layering is an ineffective caching strategy - - Does not compose (containers are only one important use-case) + Does not compose (what about the host?) * Problems with Docker @@ -334,14 +347,14 @@ \includegraphics[width=4cm]{guile-logo.png} \end{center} - - GNU Guile is a Scheme implementation and the official extension - language of the GNU project + GNU Guile is a Scheme implementation and the official extension + language of the GNU project. - - It’s a great choice for EDSLs because of Scheme’s hygienic macro - system + It’s a great choice for EDSLs because of Scheme’s *hygienic macro + system*. - - It’s a great choice for Guix because purely functional - programming is well-supported in Scheme + It’s a great choice for Guix because *purely functional* + programming is well-supported in Scheme. * Guile goes with everything @@ -359,13 +372,13 @@ * Guix as a library - - Guix is a big collection of Guile modules + Guix is a big collection of Guile modules. - - Packages are first-class Scheme objects + Packages are first-class Scheme objects. - - Anyone can use Guix as a library to write new Guile programs that - manipulate package recipes, create new user interfaces (like a web - UI), etc. + Anyone can use Guix as a library to write new Guile programs that + manipulate package recipes, create new user interfaces (like a web + UI), etc. * Example package recipe -- cgit v1.2.3