summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2018-03-25-guix-libreplanet/guix-libreplanet.org122
-rw-r--r--2018-03-25-guix-libreplanet/guix-libreplanet.pdfbin1697319 -> 1688232 bytes
2 files changed, 92 insertions, 30 deletions
diff --git a/2018-03-25-guix-libreplanet/guix-libreplanet.org b/2018-03-25-guix-libreplanet/guix-libreplanet.org
index f6409fe..8e65aa8 100644
--- a/2018-03-25-guix-libreplanet/guix-libreplanet.org
+++ b/2018-03-25-guix-libreplanet/guix-libreplanet.org
@@ -77,7 +77,7 @@
figuring out how to view the exact source for a running program can
be tricky
- - source packages are good but are a bit arcane
+ - source packages are good but are a bit arcane IMO
* common issues
@@ -120,6 +120,8 @@
GuixSD is a fully-free GNU/Linux distribution with an advanced
package manager and system upgrade mechanism
+ source code licensed under GPLv3 (*shocker*)
+
* what is guix?
\begin{center}
@@ -166,17 +168,6 @@
=guix package --roll-back=
-* transactional upgrades and rollbacks
-
- system upgrades are transactional, too!
-
- =sudo guix system reconfigure my-machine.scm=
-
- oh no, the latest GuixSD updates broke my system!
-
- no worries, just reboot and select the previous, working version
- from the bootloader menu
-
* a note about binaries
there is *no central point of trust* for receiving
@@ -204,12 +195,6 @@
\includegraphics[width=11cm]{graph.png}
\end{center}
-* sharing packages
-
- =guix build -L ~/my-packages foo=
-
- <minimal package example>
-
* development environments
=guix environment= is like Python’s virtualenv, Ruby’s rvm, Node’s
@@ -292,6 +277,14 @@
#+END_SRC
#+latex: }
+* system configurations
+
+ system configuration files *fully describe* the resulting operating
+ system
+
+ since they are just text files, they can be easily backed up, stored
+ in a version control system, and shared with other people
+
* sharing system configurations
#+latex: \tiny{
@@ -324,6 +317,21 @@
#+END_SRC
#+latex: }
+* transactional upgrades and rollbacks redux
+
+ system upgrades are transactional, too!
+
+ =sudo guix system reconfigure my-machine.scm=
+
+ oh no, the latest GuixSD updates broke my system!
+
+ \begin{center}
+ \includegraphics[width=4cm]{oh-no.jpg}
+ \end{center}
+
+ no worries, just reboot and select the previous, working version
+ from the bootloader menu
+
* sharing binaries
start a server to share your builds:
@@ -349,6 +357,9 @@
reproducible builds produce *bit-identical binaries* when performed
multiple times under the same conditions.
+ when builds are reproducible, we gain the ability to detect when
+ binaries are compromised
+
requires fixing issues in upstream build systems that are
nondeterministic.
@@ -366,7 +377,7 @@
is this build reproducible on my machine?
- =guix build --rounds=3 hello=
+ =guix build --rounds=3 python=
* challenge authority
@@ -376,16 +387,15 @@
#+BEGIN_SRC sh
guix challenge emacs \
- --substitute-urls=\
- "https://mirror.hydra.gnu.org \
- https://bobs-questionable-binaries.biz"
+ --substitute-urls="https://mirror.hydra.gnu.org \
+ https://bobs-questionable-binaries.biz"
#+END_SRC
* reasons for mismatched binaries
innocent build nondeterminism:
- timestamps
- - hardware differences
+ - hardware-specific optimizations (looking at you, ATLAS)
- build directories
- bad parallelism
@@ -410,7 +420,7 @@
guix build ruby --with-source=ruby-2.5.0.tar.gz
#+END_SRC
-* customize packages
+* customize packages in Guix itself
let's make some changes to the source code itself!
@@ -424,13 +434,53 @@
guix build ruby
#+END_SRC
+ now make a patch and send it to us!
+
+* sharing custom packages
+
+ #+latex: \tiny{
+ #+BEGIN_SRC scheme
+ (define-public openfst
+ (let ((commit "58983d37849a24ad80cf908098e2af7c4863941d"))
+ (package
+ (name "openfst")
+ (version (string-append "1.4.1-1." (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cobaltspeech/stable-openfst.git")
+ (commit commit)))
+ (file-name (string-append name "-" version))
+ (sha256
+ (base32
+ "0yikm03d82j6rpzqkg41yhs91lg4s9k03zhiqx7cndw9xqdsnbg1"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags '("--with-pic"
+ "--enable-shared"
+ "--enable-static")))
+ (synopsis "Finite-state transducer library")
+ (description "OpenFst is a library for constructing, combining,
+ optimizing, and searching weighted finite-state
+ transducers (FSTs).")
+ (home-page "https://github.com/cobaltspeech/stable-openfst")
+ (license license:asl2.0))))
+ #+END_SRC
+ #+latex: }
+
+ #+latex: \normalsize{
+ #+BEGIN_SRC sh
+ guix build --load-path=$HOME/my-packages openfst
+ #+END_SRC
+ #+latex: }
+
* interoperate with other systems
need a Docker image?
=guix pack --format=docker guile emacs geiser=
- \tiny(see /Solving the deployment crisis with GNU Guix/ from
+ (tangent: see /Solving the deployment crisis with GNU Guix/ from
LibrePlanet 2016 for reasons why Docker may not be so great)
* interoperate with other systems
@@ -479,7 +529,7 @@
#+END_SRC
#+latex: }
- hopefully more ARM systems coming soon!
+ \normalsize{hopefully more ARM systems coming soon!}
* extending guix
@@ -528,19 +578,28 @@
* the stack
- Core components written in Scheme:
+ core components written in Scheme:
- initial RAM disk
- init system (GNU Shepherd)
- package manager
+ lots of code reuse and opportunities for extension
+
+* challenges
+
+ - usabliity
+ - the npm problem
+ - self-hosting compilers
+ - cluster deployments
+
* the freedom to contribute
The GNU Guix project has a welcoming community:
- - we have a *code of conduct*
- - we have started seeking new contributors via *Outreachy*
- - we participate in *Google Summer of Code* every year
+ - *code of conduct*
+ - *Outreachy*
+ - *Google Summer of Code*
- oh, and no copyright assignment (in case you were wondering)
we need your help to bring GuixSD to a wider audience!
@@ -561,3 +620,6 @@
Licensed under Creative Commons Attribution Share-Alike 4.0
(sans the memes which I use under fair-use)
+
+ GNU run, edit, share, contribute images:
+ https://shop.fsf.org/tshirts-hoodies/4-gnus-4-freedoms-t-shirt
diff --git a/2018-03-25-guix-libreplanet/guix-libreplanet.pdf b/2018-03-25-guix-libreplanet/guix-libreplanet.pdf
index 45741b8..055dcb5 100644
--- a/2018-03-25-guix-libreplanet/guix-libreplanet.pdf
+++ b/2018-03-25-guix-libreplanet/guix-libreplanet.pdf
Binary files differ