snape pushed a commit to branch master
in repository maintenance.

commit 2c68353f07562fb885681a64328113744d1aff42
Author: Clément Lassieur <clem...@lassieur.org>
Date:   Wed Mar 20 11:03:37 2019 +0100

    talks: Add Fund The Code talk.
    
    * talks/fundthecode-2019: New directory.
---
 talks/fundthecode-2019/images/Guix_logo.svg.png | Bin 0 -> 56485 bytes
 talks/fundthecode-2019/talk.html                | 372 ++++++++++++++++++++++++
 talks/fundthecode-2019/talk.org                 | 183 ++++++++++++
 3 files changed, 555 insertions(+)

diff --git a/talks/fundthecode-2019/images/Guix_logo.svg.png 
b/talks/fundthecode-2019/images/Guix_logo.svg.png
new file mode 100644
index 0000000..1e44567
Binary files /dev/null and b/talks/fundthecode-2019/images/Guix_logo.svg.png 
differ
diff --git a/talks/fundthecode-2019/talk.html b/talks/fundthecode-2019/talk.html
new file mode 100644
index 0000000..d489c07
--- /dev/null
+++ b/talks/fundthecode-2019/talk.html
@@ -0,0 +1,372 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8"/>
+<title>GNU Guix</title>
+<meta name="author" content="Clément Lassieur & Mathieu Othacehe"/>
+<style type="text/css">
+.underline { text-decoration: underline; }
+</style>
+<link rel="stylesheet" 
href="http://cdn.jsdelivr.net/reveal.js/3.0.0/css/reveal.css"/>
+
+<link rel="stylesheet" 
href="http://cdn.jsdelivr.net/reveal.js/3.0.0/css/theme/night.css"; id="theme"/>
+
+<link rel="stylesheet" 
href="http://cdn.jsdelivr.net/reveal.js/3.0.0/lib/css/zenburn.css"/>
+<!-- If the query includes 'print-pdf', include the PDF print sheet -->
+<script>
+    if( window.location.search.match( /print-pdf/gi ) ) {
+        var link = document.createElement( 'link' );
+        link.rel = 'stylesheet';
+        link.type = 'text/css';
+        link.href = 
'http://cdn.jsdelivr.net/reveal.js/3.0.0/css/print/pdf.css';
+        document.getElementsByTagName( 'head' )[0].appendChild( link );
+    }
+</script>
+</head>
+<body>
+<div class="reveal">
+<div class="slides">
+<section id="sec-title-slide">
+<h1 class="title">GNU Guix</h1><h2 class="author">Clément Lassieur &amp; 
Mathieu Othacehe</h2><p class="date">Created: 2019-03-19 mar. 17:32</p>
+</section>
+
+<section>
+<section id="slide-org9120439">
+<h2 id="org9120439"><span class="section-number-2">1</span> Gestion de paquets 
sous GNU/Linux</h2>
+<div class="outline-text-2" id="text-1">
+</div>
+</section>
+<section id="slide-orge64bef8">
+<h3 id="orge64bef8"><span class="section-number-3">1.1</span> Un écosystème 
complexe</h3>
+<ul>
+<li class="fragment appear">Les distributions historiques sont en perte de 
vitesse</li>
+<li class="fragment appear">Chaque language implémente son propre "package 
manager" : pip,
+Cargo, Cabal, npm</li>
+<li class="fragment appear">D'autres types d'outils apparaissent</li>
+
+</ul>
+<ul>
+<li class="fragment appear">Pour les développeurs : VirtualEnv, Spack, 
EasyBuild</li>
+<li class="fragment appear">Pour les administrateurs : Ansible, Puppet, 
Propellor</li>
+<li class="fragment appear">Pour tous : Flatpak, snap, Docker, Vagrant</li>
+
+</ul>
+
+</section>
+<section id="slide-org8ab3449">
+<h3 id="org8ab3449"><span class="section-number-3">1.2</span> Qui ne répond 
pas à tous les problèmes</h3>
+<ul>
+<li class="fragment appear"><p>
+Tout conteneuriser ?
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >“Debian and other distributions
+are going to be that thing you
+run docker on, little more.”
+      Jos Poortvliet, développeur ownCloud
+</code></pre>
+</div></li>
+<li class="fragment appear">Qualité des paquets</li>
+<li class="fragment appear">Opacité, manque de flexibilité</li>
+<li class="fragment appear">Manque d'outils de développement</li>
+
+</ul>
+</section>
+<section id="slide-orgef08ac1">
+<h3 id="orgef08ac1"><span class="section-number-3">1.3</span> Sommes-nous 
fichus ?</h3>
+</section>
+<section id="slide-org7192e6c" data-background="./images/Guix_logo.svg.png" 
data-background-size="800px">
+<h3 id="org7192e6c"><span class="section-number-3">1.4</span> Non !</h3>
+
+</section>
+</section>
+<section>
+<section id="slide-orga21ab7d">
+<h2 id="orga21ab7d"><span class="section-number-2">2</span> Guix</h2>
+<ul>
+<li class="fragment appear">Peut être vu comme un package manager</li>
+<li class="fragment appear">Ensemble d'outils pour faire du déploiement de 
logiciels et de systèmes</li>
+
+</ul>
+
+</section>
+<section id="slide-orgb9ea19f">
+<h3 id="orgb9ea19f"><span class="section-number-3">2.1</span> Paquets</h3>
+<ul>
+<li class="fragment appear"><p>
+Pas besoin d'être root
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >guix package -i gcc-toolchain openmpi hwloc
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+Transactionnel
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >guix package --roll-back
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+Permet d'expérimenter
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >guix package --profile=./experiment -i 
gcc-toolchain@5.5 hwloc@1
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+Gestion des paquets (version control)
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >guix package --manifest=my-packages.scm
+</code></pre>
+</div>
+<div class="org-src-container">
+
+<pre><code class="" scheme >(specifications->manifest
+ '("gcc-toolchain"
+   "emacs"
+   "guile"
+   "emacs-geiser"))
+</code></pre>
+</div></li>
+
+</ul>
+
+</section>
+<section id="slide-org6c5d276">
+<h3 id="org6c5d276"><span class="section-number-3">2.2</span> 
Environnement</h3>
+<div class="outline-text-3" id="text-2-2">
+</div>
+</section>
+<section id="slide-org09eca3b">
+<h4 id="org09eca3b"><span class="section-number-4">2.2.1</span> 
Reproduction</h4>
+<ul>
+<li class="fragment appear"><p>
+Je me fais mon environnement de travail
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >bob@laptop$ guix package --manifest=my-packages.scm
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+Quelle version de Guix j'utilise ?
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >bob@laptop$ guix describe
+  guix cabba9e
+  repository URL: https://git.sv.gnu.org/git/guix.git
+  commit: cabba9e15900d20927c1f69c6c87d7d2a62040fe
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+Alice peut le reproduire exactement
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >alice@laptop$ guix pull --commit=cabba9e
+alice@laptop$ guix package --manifest=my-packages.scm
+</code></pre>
+</div></li>
+
+</ul>
+
+</section>
+<section id="slide-orga134cfc">
+<h4 id="orga134cfc"><span class="section-number-4">2.2.2</span> Facile de 
hacker GNU hello</h4>
+<ul>
+<li class="fragment appear"><p>
+On le télécharge
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >guix build -S hello
+/gnu/store/...-hello-2.10.tar.gz
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+'guix environment' donne tous les outils nécessaires pour le compiler (gcc, 
make&#x2026;)
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >~/hello-2.10$ guix environment hello
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+On compile
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >~/hello-2.10$ ./configure && make
+</code></pre>
+</div></li>
+
+</ul>
+
+</section>
+<section id="slide-org58b15d5">
+<h4 id="org58b15d5"><span class="section-number-4">2.2.3</span> Tester un 
paquet Python sans rien installer</h4>
+<ul>
+<li class="fragment appear"><p>
+On se met dans le bon environnement
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >~$ guix environment --ad-hoc python python-numpy
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+Et on fait notre test
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >~$ python3
+>>> import numpy
+</code></pre>
+</div></li>
+
+</ul>
+
+</section>
+<section id="slide-orgc892f10">
+<h3 id="orgc892f10"><span class="section-number-3">2.3</span> Système</h3>
+<ul>
+<li class="fragment appear"><p>
+On déclare tout ce qu'on veut avoir dans notre système
+</p>
+<div class="org-src-container">
+
+<pre><code class="" scheme >(operating-system
+  (host-name "schememachine")
+  (timezone "Europe/Paris")
+  (locale "fr_FR.utf8")
+  (bootloader (\alert{bootloader-configuration}
+              (bootloader grub-efi-bootloader)
+              (target "/boot/efi")))
+  (file-systems (cons (\alert{file-system}
+                      (device (file-system-label "my-root"))
+                      (mount-point "/")
+                      (type "ext4"))
+                     %base-file-systems))
+  (users (cons (\alert{user-account}
+               (name "charlie")
+               (group "users")
+               (home-directory "/home/charlie"))
+              %base-user-accounts))
+  (services (cons* (\alert{service} dhcp-client-service-type)
+                  (\alert{service} openssh-service-type)
+                  %base-services)))
+</code></pre>
+</div></li>
+<li class="fragment appear"><p>
+Et on instancie, un peu à la Ansible
+</p>
+<div class="org-src-container">
+
+<pre><code class="" bash >guix system build config.scm
+guix system vm config.scm
+guix system container config.scm
+guix system reconfigure config.scm
+</code></pre>
+</div></li>
+<li class="fragment appear">On peut déployer ça n'importe où</li>
+
+</ul>
+
+</section>
+<section id="slide-org324e2ce">
+<h3 id="org324e2ce"><span class="section-number-3">2.4</span> Liberté, 
Sécurité</h3>
+<ul>
+<li class="fragment appear">Builds reproductibles
+<ul>
+<li>On veut que le binaire corresponde à sa source</li>
+<li>On veut pouvoir recompiler le logiciel</li>
+<li>Guix fournit des outils comme 'guix challenge'</li>
+
+</ul></li>
+<li class="fragment appear">Bootstrappable builds
+<ul>
+<li>On évite de dépendre de gros binaires opaques</li>
+
+</ul></li>
+
+</ul>
+
+</section>
+</section>
+<section>
+<section id="slide-org0a616b0">
+<h2 id="org0a616b0"><span class="section-number-2">3</span> L'avenir de GNU 
Guix</h2>
+<ul>
+<li class="fragment appear">Version 1.0</li>
+<li class="fragment appear">De nouveaux paquets, importeurs, updaters</li>
+<li class="fragment appear">Un installateur graphique</li>
+<li class="fragment appear">Un installateur vraiment graphique</li>
+<li class="fragment appear">Une interface utilisateur améliorée</li>
+<li class="fragment appear">La modification de paquets depuis l'interface en 
ligne de commande</li>
+<li class="fragment appear">Une ferme de compilation plus robuste</li>
+<li class="fragment appear">Un meilleur support d'ARM et d'autres 
architectures</li>
+
+</ul>
+</section>
+</section>
+<section>
+<section id="slide-org3883b61">
+<h2 id="org3883b61"><span class="section-number-2">4</span> Facilité de 
contribuer</h2>
+</section>
+</section>
+<section>
+<section id="slide-orgaed687f">
+<h2 id="orgaed687f"><span class="section-number-2">5</span> Le financement de 
GNU Guix</h2>
+<ul>
+<li class="fragment appear">Dons via la FSF</li>
+<li class="fragment appear">Hébergement, maintenance et amélioration de la 
ferme de compilation</li>
+
+</ul>
+</section>
+</section>
+</div>
+</div>
+<script 
src="http://cdn.jsdelivr.net/reveal.js/3.0.0/lib/js/head.min.js";></script>
+<script src="http://cdn.jsdelivr.net/reveal.js/3.0.0/js/reveal.js";></script>
+<script>
+// Full list of configuration options available here:
+// https://github.com/hakimel/reveal.js#configuration
+Reveal.initialize({
+
+controls: true,
+progress: true,
+history: false,
+center: true,
+slideNumber: 'c',
+rollingLinks: false,
+keyboard: true,
+mouseWheel: false,
+fragmentInURL: false,
+pdfSeparateFragments: true,
+
+overview: true,
+
+theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
+transition: Reveal.getQueryHash().transition || 'page', // 
default/cube/page/concave/zoom/linear/fade/none
+transitionSpeed: 'default',
+multiplex: {
+    secret: '', // null if client
+    id: '', // id, obtained from socket.io server
+    url: '' // Location of socket.io server
+},
+
+// Optional libraries used to extend on reveal.js
+dependencies: [
+ { src: 
'http://cdn.jsdelivr.net/reveal.js/3.0.0/plugin/highlight/highlight.js', async: 
true, callback: function() { hljs.initHighlightingOnLoad(); } }]
+});
+</script>
+</body>
+</html>
diff --git a/talks/fundthecode-2019/talk.org b/talks/fundthecode-2019/talk.org
new file mode 100644
index 0000000..c29a97b
--- /dev/null
+++ b/talks/fundthecode-2019/talk.org
@@ -0,0 +1,183 @@
+#+AUTHOR: Clément Lassieur & Mathieu Othacehe
+#+EMAIL: clem...@lassieur.org, m.othac...@gmail.com
+#+TITLE: GNU Guix
+#+OPTIONS: toc:nil
+
+#+REVEAL_ROOT: http://cdn.jsdelivr.net/reveal.js/3.0.0/
+#+REVEAL_TRANS: page
+#+REVEAL_PLUGINS: (highlight)
+#+REVEAL_THEME: night
+
+# 
https://video.fosdem.org/2019/K.3.401/gnu_guix_new_approach_to_software_distribution.webm
+
+* Gestion de paquets sous GNU/Linux
+** Un écosystème complexe
+#+ATTR_REVEAL: :frag (appear)
+- Les distributions historiques sont en perte de vitesse
+- Chaque language implémente son propre "package manager" : pip,
+  Cargo, Cabal, npm
+- D'autres types d'outils apparaissent
+#+ATTR_REVEAL: :frag (appear)
+   * Pour les développeurs : VirtualEnv, Spack, EasyBuild
+   * Pour les administrateurs : Ansible, Puppet, Propellor
+   * Pour tous : Flatpak, snap, Docker, Vagrant
+
+** Qui ne répond pas à tous les problèmes
+#+ATTR_REVEAL: :frag (appear)
+   - Tout conteneuriser ?
+         #+begin_src bash
+  “Debian and other distributions
+  are going to be that thing you
+  run docker on, little more.”
+       Jos Poortvliet, développeur ownCloud
+         #+end_src
+   - Qualité des paquets
+   - Opacité, manque de flexibilité
+   - Manque d'outils de développement
+** Sommes-nous fichus ?
+** Non !
+    :PROPERTIES:
+    :reveal_background: ./images/Guix_logo.svg.png
+    :reveal_background_size: 800px
+    :END:
+
+* Guix
+#+ATTR_REVEAL: :frag (appear)
+- Peut être vu comme un package manager
+- Ensemble d'outils pour faire du déploiement de logiciels et de systèmes
+
+** Paquets
+#+ATTR_REVEAL: :frag (appear)
+- Pas besoin d'être root
+  #+begin_src bash
+guix package -i gcc-toolchain openmpi hwloc
+  #+end_src
+- Transactionnel
+  #+begin_src bash
+guix package --roll-back
+  #+end_src
+- Permet d'expérimenter
+  #+begin_src bash
+guix package --profile=./experiment -i gcc-toolchain@5.5 hwloc@1
+  #+end_src
+- Gestion des paquets (version control)
+  #+begin_src bash
+guix package --manifest=my-packages.scm
+  #+end_src
+  #+begin_src scheme
+    (specifications->manifest
+     '("gcc-toolchain"
+       "emacs"
+       "guile"
+       "emacs-geiser"))
+  #+end_src
+  
+** Environnement
+*** Reproduction
+
+#+ATTR_REVEAL: :frag (appear)
+- Je me fais mon environnement de travail
+  #+begin_src bash
+bob@laptop$ guix package --manifest=my-packages.scm
+  #+end_src
+- Quelle version de Guix j'utilise ?
+  #+begin_src bash
+bob@laptop$ guix describe
+  guix cabba9e
+  repository URL: https://git.sv.gnu.org/git/guix.git
+  commit: cabba9e15900d20927c1f69c6c87d7d2a62040fe
+  #+end_src
+- Alice peut le reproduire exactement
+  #+begin_src bash
+alice@laptop$ guix pull --commit=cabba9e
+alice@laptop$ guix package --manifest=my-packages.scm
+  #+end_src
+
+*** Facile de hacker GNU hello
+
+#+ATTR_REVEAL: :frag (appear)
+- On le télécharge
+  #+begin_src bash
+guix build -S hello
+/gnu/store/...-hello-2.10.tar.gz
+  #+end_src
+- 'guix environment' donne tous les outils nécessaires pour le compiler (gcc, 
make...)
+  #+begin_src bash
+~/hello-2.10$ guix environment hello
+  #+end_src
+- On compile
+  #+begin_src bash
+~/hello-2.10$ ./configure && make
+  #+end_src
+
+*** Tester un paquet Python sans rien installer
+
+#+ATTR_REVEAL: :frag (appear)
+- On se met dans le bon environnement
+  #+begin_src bash
+~$ guix environment --ad-hoc python python-numpy
+  #+end_src
+- Et on fait notre test
+  #+begin_src bash
+~$ python3
+>>> import numpy
+  #+end_src
+  
+** Système
+#+ATTR_REVEAL: :frag (appear)
+- On déclare tout ce qu'on veut avoir dans notre système
+  #+begin_src scheme
+  (operating-system
+    (host-name "schememachine")
+    (timezone "Europe/Paris")
+    (locale "fr_FR.utf8")
+    (bootloader (\alert{bootloader-configuration}
+                 (bootloader grub-efi-bootloader)
+                 (target "/boot/efi")))
+    (file-systems (cons (\alert{file-system}
+                         (device (file-system-label "my-root"))
+                         (mount-point "/")
+                         (type "ext4"))
+                        %base-file-systems))
+    (users (cons (\alert{user-account}
+                  (name "charlie")
+                  (group "users")
+                  (home-directory "/home/charlie"))
+                 %base-user-accounts))
+    (services (cons* (\alert{service} dhcp-client-service-type)
+                     (\alert{service} openssh-service-type)
+                     %base-services)))
+  #+end_src
+- Et on instancie, un peu à la Ansible
+  #+begin_src bash
+guix system build config.scm
+guix system vm config.scm
+guix system container config.scm
+guix system reconfigure config.scm
+  #+end_src
+- On peut déployer ça n'importe où
+
+** Liberté, Sécurité
+#+ATTR_REVEAL: :frag (appear)
+- Builds reproductibles
+   * On veut que le binaire corresponde à sa source
+   * On veut pouvoir recompiler le logiciel
+   * Guix fournit des outils comme 'guix challenge'
+- Bootstrappable builds
+   * On évite de dépendre de gros binaires opaques
+
+* L'avenir de GNU Guix
+#+ATTR_REVEAL: :frag (appear)
+- Version 1.0
+- De nouveaux paquets, importeurs, updaters
+- Un installateur graphique
+- Un installateur vraiment graphique
+- Une interface utilisateur améliorée
+- La modification de paquets depuis l'interface en ligne de commande
+- Une ferme de compilation plus robuste
+- Un meilleur support d'ARM et d'autres architectures
+* Facilité de contribuer
+* Le financement de GNU Guix
+#+ATTR_REVEAL: :frag (appear)
+- Dons via la FSF
+- Hébergement, maintenance et amélioration de la ferme de compilation

Reply via email to