summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2016-01-16 18:20:14 -0500
committerDavid Thompson <dthompson2@worcester.edu>2016-01-17 12:03:23 -0500
commit4025b02f6d3c7a91ba7e9ed7bb046c9210623318 (patch)
treef9d3719e7817f42915da4baff9e9b433fed27c64
parent2a48e3161f1469cc830ec3dbe336e1fc8f0418b1 (diff)
Add what I have so far.
-rw-r--r--guix-blu-2016-01-20.org217
1 files changed, 217 insertions, 0 deletions
diff --git a/guix-blu-2016-01-20.org b/guix-blu-2016-01-20.org
new file mode 100644
index 0000000..b5c4377
--- /dev/null
+++ b/guix-blu-2016-01-20.org
@@ -0,0 +1,217 @@
+#+TITLE: Functional Package and Configuration Management with GNU Guix
+#+AUTHOR: David Thompson
+#+EMAIL: davet@gnu.org
+#+DATE: Wednesday, January 20th, 2016
+#+DESCRIPTION:
+#+KEYWORDS:
+#+LANGUAGE: en
+#+OPTIONS: H:1 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
+#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
+#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
+#+EXPORT_SELECT_TAGS: export
+#+EXPORT_EXCLUDE_TAGS: noexport
+#+LINK_UP:
+#+LINK_HOME:
+#+startup: beamer
+#+LaTeX_CLASS: beamer
+#+LaTeX_CLASS_OPTIONS: [bigger]
+#+COLUMNS: %40ITEM %10BEAMER_env(Env) %9BEAMER_envargs(Env Args) %4BEAMER_col(Col) %10BEAMER_extra(Extra)
+#+LATEX_HEADER: \beamertemplatenavigationsymbolsempty
+
+* About me
+
+ - GNU project volunteer
+ - GNU Guile user and contributor since 2012
+ - GNU Guix user since 2013
+ - Day job: Ruby + JavaScript web development / "DevOps"
+
+* Overview
+
+ - Problems with application packaging and deployment
+ - Intro to functional package and configuration management
+ - Towards the future
+ - How you can help
+
+* Preface: User autonomy and control
+
+ It is becoming increasingly difficult to have control over your own
+ computing:
+
+ - Growing number of applications that cannot be reasonably packaged
+ for GNU/Linux distributions
+ - Self-hosting web applications requires too much time and effort
+ - Growing number of projects recommend installation via =curl | sudo
+ bash= or otherwise avoid using system package managers
+ - Users unable to verify that a given binary corresponds to the
+ source code
+
+ This is bad for desktop users and system administrators alike.
+
+* Problems with package management
+
+ - Global state (=/usr=) that prevents multiple versions of a package
+ from coexisting
+ - Non-atomic installation, removal, upgrade of software
+ - Nondeterminstic package builds
+ - Proliferation of language-specific package managers
+ - Reliance on pre-built binaries that few can build from source
+ - Binary bundles (a la OmniBus) complicate secure system maintenance
+ - System package managers do not allow unprivileged operation
+
+* Problems with mainstream configuration management
+
+ - Imperative paradigm makes software overly-complex and brittle
+ (idempotence is hard)
+ - Promotes one disk image per application to cover up underlying
+ package management mess
+ - Made primarily for developers for server maintenance, but all
+ users could benefit
+
+* Qualities of good software
+
+ - System integration
+ - Reproducibility
+ - Security
+
+* System integration
+
+ - Use the system package manager!
+ - Not uncommon for today's web applications to require 2 or more
+ package managers to get all dependencies
+
+* Reproducibility
+
+ - Growing number of free software projects that no one knows how to
+ build from source
+
+* Security
+
+* Solutions?
+
+ - Ansible?
+ - Docker?
+ - OmniBus?
+
+* Functional package management
+
+* What does it mean?
+
+ Treating package builds as functions, in the mathematical sense...
+
+* Why?
+
+* What's wrong with dpkg/yum/pacman/etc.?
+
+ Lack of transactional updates, rollbacks, unprivileged package
+ management
+
+* What about Docker?
+
+ Trusting random binaries, non-reproducible, no provenance, opaque
+ disk images...
+
+* Reproducible builds
+
+* What are they?
+
+* Why is it important for security and freedom?
+
+ reproducible-builds.org
+
+ guix challenge
+
+* GuixSD: Configuration management
+
+ guix system, declarative interface, fully free, system rollback
+
+* Choice of language
+
+* Off the beaten path
+
+ Guix takes a different approach than a lot of other
+ package/configuration managers
+
+* Embedded vs. External DSLs
+
+ Using an extensible programming language as a host has several
+ advantages compared to external DSLs:
+
+ - No new parser, interpreter/compiler, editor tools, etc. to
+ maintain
+
+ - Access to all available libraries of the host language
+
+ - Extensions to the host language can be used as a library by
+ others
+
+ Not all general-purpose programming languages are suitable for
+ embedding new languages, [fn:1] so which did we choose?
+
+* Guile Scheme
+
+ - 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 Guix because purely functional
+ programming is well-supported in Scheme
+
+* Guile all the way down
+
+ Guix uses Guile for nearly everything:
+
+ - Initial RAM disk
+ - Init system (GNU Shepherd, formerly GNU dmd)
+ - Package recipes (including build scripts!)
+ - Command line tools
+ - Low-level POSIX/Linux utilities (such as =call-with-container=)
+
+* Guix as a library
+
+ Guix is a big collection of Guile modules.
+
+ 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.
+
+* Development environments
+
+ guix environment
+
+* UIs
+
+ CLI, Emacs, web prototype
+
+* The trouble with language-specific package managers
+
+ Why Guix is better, how to pull in foreign packages with guix
+ import, update them with guix refresh
+
+* Project status
+
+* Join us!
+
+ - Chat with us in the =#guix= channel on Freenode or on the
+ =guix-devel@gnu.org= mailing list
+ -
+
+* Thank you!
+
+ Any questions?
+
+* Legal
+
+ © 2016 David Thompson <davet@gnu.org>
+
+ This presentation is licensed under the Creative Common Attribute
+ Share-Alike 4.0 International license.
+
+* Footnotes
+
+[fn:1] "How to be a good host: miniKanren as a case study" \newline
+Dan Friedman and Jason Hemann
+https://www.youtube.com/watch?v=b9C3r3dQnNY