diff options
-rw-r--r-- | 2018-03-25-guix-libreplanet/guix-libreplanet.org | 122 | ||||
-rw-r--r-- | 2018-03-25-guix-libreplanet/guix-libreplanet.pdf | bin | 1697319 -> 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 Binary files differindex 45741b8..055dcb5 100644 --- a/2018-03-25-guix-libreplanet/guix-libreplanet.pdf +++ b/2018-03-25-guix-libreplanet/guix-libreplanet.pdf |