summaryrefslogtreecommitdiff
path: root/2018-03-25-guix-libreplanet/guix-libreplanet.org
diff options
context:
space:
mode:
Diffstat (limited to '2018-03-25-guix-libreplanet/guix-libreplanet.org')
-rw-r--r--2018-03-25-guix-libreplanet/guix-libreplanet.org200
1 files changed, 200 insertions, 0 deletions
diff --git a/2018-03-25-guix-libreplanet/guix-libreplanet.org b/2018-03-25-guix-libreplanet/guix-libreplanet.org
new file mode 100644
index 0000000..511c6a0
--- /dev/null
+++ b/2018-03-25-guix-libreplanet/guix-libreplanet.org
@@ -0,0 +1,200 @@
+#+TITLE: Practical, verifiable software freedom with GuixSD
+#+AUTHOR: David Thompson
+#+EMAIL: dthompson2@worcester.edu
+#+DATE: Sunday, March 25th, 2018
+#+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
+#+BEAMER_THEME: metropolis
+
+* about me
+
+ GNU Guix contributor since 2013
+
+ GNU Guile user and contributor since 2012
+
+ Day job: DevOps (AWS, Ruby)
+
+* the four freedoms
+
+ 0: The freedom to run the program as you wish, for any purpose
+
+* the four freedoms
+ 1: The freedom to study how the program works, and change it so it
+ does your computing as you wish
+
+* the four freedoms
+ 2: The freedom to redistribute copies so you can help your neighbor
+
+* the four freedoms
+ 3: The freedom to distribute copies of your modified versions to
+ others
+
+* the four freedoms
+
+ a wonderful set of rights, but often *difficult to exercise in
+ practice*
+
+* common issues
+
+ figuring out how to view the exact source for a running program is
+ tricky
+
+ - ??
+
+* common issues
+
+ building from source is difficult or sometimes impossible
+
+ - non-standard build system
+ - build scripts make assumptions that aren't true for your system
+
+* common issues
+
+ sharing source or binaries has many pitfalls
+
+ - dependency hell
+ - incompatible libraries between systems
+ - high barrier to entry for common package managers
+
+* freedom: embedded
+
+ GuixSD removes many of the common barriers that prevent users from
+ exercising their four freedoms
+
+* what is guixsd?
+
+ <logo>
+
+ fully-free GNU/Linux distribution with an advanced package
+ manager and system upgrade mechanism
+
+* what is guix?
+
+ GuixSD's package manager
+
+ “functional” package manager
+
+ atomic updates and rollbacks
+
+* unprivileged package management
+
+ Users can build and install software *without root privileges*
+
+* unprivileged package management
+
+ Each user may have one or more “profiles”, a union of many packages.
+
+ Use cases:
+
+ - Alyssa and Ben use different versions of Emacs
+ - Alyssa hacks on 2 Ruby projects that require different versions
+
+* experiment without fear
+
+ =guix package --roll-back=
+
+ =guix system reconfigure=
+
+* inspecting source code
+
+ =guix build --source=
+
+* inspecting dependency graph
+
+ =guix graph=
+
+ <small dependency graph image>
+
+* sharing system configurations
+
+ <minimal code example here>
+
+* sharing packages
+
+ =guix build -L ~/daves-packages foo=
+
+ <minimal package example>
+
+* sharing development environments
+
+ =guix environment=
+
+ <minimal environment file example>
+
+* sharing binaries
+
+ Use =guix publish= to spawn a web server that allows other Guix
+ users to download the software you've already built
+
+ #+BEGIN_SRC sh
+ guix build \
+ --substitute-urls=http://guix.dthompson.us:8080 \
+ hello
+ #+END_SRC
+
+* reproducible builds
+
+ did anyone attend "You think you're not a target? A tale of three
+ developers..." by Chris Lamb yesterday?
+
+ =guix build --rounds=N=
+
+* verifying binaries
+
+ =guix challenge=
+
+* customize packages
+
+ =guix edit=
+
+ =guix build=
+
+* interoperate with other systems
+
+ =guix pack=
+
+* extending
+
+ GuixSD is essentially a big Scheme library
+
+* literally: embedded
+
+ GuixSD now runs on the Beaglebone Black single-board computer!
+
+* the freedom to contribute
+
+ GNU Guix is a welcoming community:
+
+ we have a *code of conduct* and *enforce* it
+
+ we have started seeking new contributors via *Outreachy*
+
+ we participate in *Google Summer of Code* every year
+
+ oh, and no copyright assignment (in case you were wondering)
+
+* thanks!
+
+ \begin{center}
+ docs, past talks, source code, mailing list/IRC info, etc.:
+ \huge{\textbf{https://gnu.org/s/guix}}
+ \end{center}
+
+* credits
+
+ Copyright 2018 David Thompson
+
+ Licensed under Creative Commons Attribution Share-Alike 4.0