[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/01: talks: Add Fund The Code talk.
From: |
Clément Lassieur |
Subject: |
01/01: talks: Add Fund The Code talk. |
Date: |
Wed, 20 Mar 2019 06:04:58 -0400 (EDT) |
snape pushed a commit to branch master
in repository maintenance.
commit 2c68353f07562fb885681a64328113744d1aff42
Author: Clément Lassieur <address@hidden>
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 &
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
address@hidden address@hidden
+</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 >address@hidden 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 >address@hidden 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 >address@hidden guix pull --commit=cabba9e
address@hidden 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…)
+</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: address@hidden, address@hidden
+#+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 address@hidden address@hidden
+ #+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
address@hidden guix package --manifest=my-packages.scm
+ #+end_src
+- Quelle version de Guix j'utilise ?
+ #+begin_src bash
address@hidden 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
address@hidden guix pull --commit=cabba9e
address@hidden 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