diff --git a/.gitignore b/.gitignore index d290e5f..7928c8d 100644 --- a/.gitignore +++ b/.gitignore @@ -194,3 +194,12 @@ /talks/bluehats-2019/talk.snm /talks/bluehats-2019/talk.toc /talks/bluehats-2019/talk.vrb +/talks/fosdem-2020/containers/talk.aux +/talks/fosdem-2020/containers/talk.log +/talks/fosdem-2020/containers/talk.nav +/talks/fosdem-2020/containers/talk.out +/talks/fosdem-2020/containers/talk.pdf +/talks/fosdem-2020/containers/talk.snm +/talks/fosdem-2020/containers/talk.toc +/talks/fosdem-2020/containers/talk.vrb +/talks/fosdem-2020/containers/talk.dvi diff --git a/talks/fosdem-2020/containers/images/Git-Logo-2Color.pdf b/talks/fosdem-2020/containers/images/Git-Logo-2Color.pdf new file mode 120000 index 0000000..5c8de51 --- /dev/null +++ b/talks/fosdem-2020/containers/images/Git-Logo-2Color.pdf @@ -0,0 +1 @@ +../../../aramis-2019/images/Git-Logo-2Color.pdf \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/Guix-horizontal-print.pdf b/talks/fosdem-2020/containers/images/Guix-horizontal-print.pdf new file mode 120000 index 0000000..d2bce8f --- /dev/null +++ b/talks/fosdem-2020/containers/images/Guix-horizontal-print.pdf @@ -0,0 +1 @@ +../../../fosdem-2019/minimalist/images/Guix-horizontal-print.pdf \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/Guix-white.pdf b/talks/fosdem-2020/containers/images/Guix-white.pdf new file mode 120000 index 0000000..151b57b --- /dev/null +++ b/talks/fosdem-2020/containers/images/Guix-white.pdf @@ -0,0 +1 @@ +../../../fosdem-2019/minimalist/images/Guix-white.pdf \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/Murner.Nerrenbeschwerung.kind.jpg b/talks/fosdem-2020/containers/images/Murner.Nerrenbeschwerung.kind.jpg new file mode 100644 index 0000000..7117362 Binary files /dev/null and b/talks/fosdem-2020/containers/images/Murner.Nerrenbeschwerung.kind.jpg differ diff --git a/talks/fosdem-2020/containers/images/arrow-right.pdf b/talks/fosdem-2020/containers/images/arrow-right.pdf new file mode 120000 index 0000000..57aea1c --- /dev/null +++ b/talks/fosdem-2020/containers/images/arrow-right.pdf @@ -0,0 +1 @@ +../../../aramis-2019/images/arrow-right.pdf \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/bootstrap-graph-reduced.dot b/talks/fosdem-2020/containers/images/bootstrap-graph-reduced.dot new file mode 100644 index 0000000..f27836d --- /dev/null +++ b/talks/fosdem-2020/containers/images/bootstrap-graph-reduced.dot @@ -0,0 +1,137 @@ +digraph "Guix bag" { + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" [label = "make-boot0@4.2.1", shape = box, fontname = Helvetica]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/wmf4y32lq5jrci7q85pgrkq9bckkziqf-gcc-mesboot-wrapper-4.7.4.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/awv71y21ybrr68ygxd154ivaaclj4qg2-bootstrap-mescc-tools-0.5.2.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/fl6qxjcg355pagvngd96gf5nir678cwk-bootstrap-mes-0.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = cyan3]; + "/gnu/store/xmqfk1h1725w6gbxfpvhdvv71ib9870s-make-boot0-4.2.1.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = cyan3]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = red]; + "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" -> "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" [color = red]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" [color = magenta]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" [color = magenta]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" [color = magenta]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = magenta]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = magenta]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = magenta]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = magenta]; + "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [color = magenta]; + "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica]; + "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" [color = dimgrey]; + "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = dimgrey]; + "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [color = dimgrey]; + "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica]; + "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" -> "/gnu/store/cn42d0h7l8zc72sj20xnr3w47za4kw6s-mes-boot-0.19.drv" [color = red]; + "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" -> "/gnu/store/dsn288nnc52x09mswnjs98y366k9brcq-tcc-boot0-0.9.26-6.c004e9a.drv" [color = red]; + "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = red]; + "/gnu/store/cn42d0h7l8zc72sj20xnr3w47za4kw6s-mes-boot-0.19.drv" [label = "mes-boot@0.19", shape = box, fontname = Helvetica]; + "/gnu/store/cn42d0h7l8zc72sj20xnr3w47za4kw6s-mes-boot-0.19.drv" -> "/gnu/store/awv71y21ybrr68ygxd154ivaaclj4qg2-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey]; + "/gnu/store/cn42d0h7l8zc72sj20xnr3w47za4kw6s-mes-boot-0.19.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/cn42d0h7l8zc72sj20xnr3w47za4kw6s-mes-boot-0.19.drv" -> "/gnu/store/fl6qxjcg355pagvngd96gf5nir678cwk-bootstrap-mes-0.drv" [color = dimgrey]; + "/gnu/store/awv71y21ybrr68ygxd154ivaaclj4qg2-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica]; + "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica]; + "/gnu/store/fl6qxjcg355pagvngd96gf5nir678cwk-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica]; + "/gnu/store/dsn288nnc52x09mswnjs98y366k9brcq-tcc-boot0-0.9.26-6.c004e9a.drv" [label = "tcc-boot0@0.9.26-6.c004e9a", shape = box, fontname = Helvetica]; + "/gnu/store/dsn288nnc52x09mswnjs98y366k9brcq-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/cn42d0h7l8zc72sj20xnr3w47za4kw6s-mes-boot-0.19.drv" [color = darkviolet]; + "/gnu/store/dsn288nnc52x09mswnjs98y366k9brcq-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/awv71y21ybrr68ygxd154ivaaclj4qg2-bootstrap-mescc-tools-0.5.2.drv" [color = darkviolet]; + "/gnu/store/dsn288nnc52x09mswnjs98y366k9brcq-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = darkviolet]; + "/gnu/store/dsn288nnc52x09mswnjs98y366k9brcq-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/fl6qxjcg355pagvngd96gf5nir678cwk-bootstrap-mes-0.drv" [color = darkviolet]; + "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica]; + "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" -> "/gnu/store/cn42d0h7l8zc72sj20xnr3w47za4kw6s-mes-boot-0.19.drv" [color = dimgrey]; + "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" -> "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" [color = dimgrey]; + "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" -> "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [color = dimgrey]; + "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica]; + "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" -> "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" [color = dimgrey]; + "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" [color = magenta]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" [color = magenta]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = magenta]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = magenta]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = magenta]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/6wchqw6i2jlqvr29sgakznwr2vpz7g8y-mesboot-headers-0.19.drv" [color = magenta]; + "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [color = magenta]; + "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica]; + "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen]; + "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/zajwffxc2bi3kby5898rjwp3ycdx6sjy-tcc-boot-0.9.27.drv" [color = darkseagreen]; + "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = darkseagreen]; + "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [color = darkseagreen]; + "/gnu/store/6wchqw6i2jlqvr29sgakznwr2vpz7g8y-mesboot-headers-0.19.drv" [label = "mesboot-headers@0.19", shape = box, fontname = Helvetica]; + "/gnu/store/6wchqw6i2jlqvr29sgakznwr2vpz7g8y-mesboot-headers-0.19.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = darkgoldenrod]; + "/gnu/store/6wchqw6i2jlqvr29sgakznwr2vpz7g8y-mesboot-headers-0.19.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod]; + "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" [color = darkviolet]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/pywx782lm7nrsbg2dxzzh6f3cgsyic35-gcc-core-mesboot-2.95.3.drv" [color = darkviolet]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" [color = darkviolet]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = darkviolet]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = darkviolet]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = darkviolet]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = darkviolet]; + "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [color = darkviolet]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/6wchqw6i2jlqvr29sgakznwr2vpz7g8y-mesboot-headers-0.19.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = dimgrey]; + "/gnu/store/27zvyk378j2vyyqv9l1dlqzp5ldqqkaz-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = dimgrey]; + "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" [color = dimgrey]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" -> "/gnu/store/xqp9xn8v370sf887rhrns68cvg3kz2n3-binutils-mesboot0-2.20.1a.drv" [color = peachpuff4]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" -> "/gnu/store/zrnhglk67xc8701zbsw58c0fmnbp75z0-glibc-mesboot0-2.2.5.drv" [color = peachpuff4]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" -> "/gnu/store/crfm7vmph6cw1chfnxxdf2f9pvg62knp-gcc-mesboot0-2.95.3.drv" [color = peachpuff4]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" -> "/gnu/store/bkjm21s9f7797bb30dx56azmhd2gnvqa-make-mesboot0-3.80.drv" [color = peachpuff4]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = peachpuff4]; + "/gnu/store/wmf4y32lq5jrci7q85pgrkq9bckkziqf-gcc-mesboot-wrapper-4.7.4.drv" [label = "gcc-mesboot-wrapper@4.7.4", shape = box, fontname = Helvetica]; + "/gnu/store/wmf4y32lq5jrci7q85pgrkq9bckkziqf-gcc-mesboot-wrapper-4.7.4.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = cyan3]; + "/gnu/store/wmf4y32lq5jrci7q85pgrkq9bckkziqf-gcc-mesboot-wrapper-4.7.4.drv" -> "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" [color = cyan3]; + "/gnu/store/wmf4y32lq5jrci7q85pgrkq9bckkziqf-gcc-mesboot-wrapper-4.7.4.drv" -> "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" [color = cyan3]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/aiy6k5wlrjzl7kxd9zfpxb5nfjdxiq82-binutils-mesboot-2.20.1a.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/sbgi11hwbr41zd3hjg2w18w27fphisw1-gcc-mesboot1-wrapper-4.7.4.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/17hzzynybbdnyiwg5cbh3y9ba8kb0vxg-diffutils-mesboot-2.7.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/vrq2a7h6ya4gws23hqn6ygi7wnib6496-linux-libre-headers-bootstrap-0.drv" [color = peachpuff4]; + "/gnu/store/ghpg2libayj02dkm6hkp6d44ivkv894z-gcc-mesboot-4.9.4.drv" -> "/gnu/store/lkmx7360vlvfigz88s4y427m72w8as1a-make-mesboot-3.82.drv" [color = peachpuff4]; + "/gnu/store/sbgi11hwbr41zd3hjg2w18w27fphisw1-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica]; + "/gnu/store/sbgi11hwbr41zd3hjg2w18w27fphisw1-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/n08bmic0cc7xsbxz7vapbh8rkk27qyis-bootstrap-binaries-0.drv" [color = darkviolet]; + "/gnu/store/sbgi11hwbr41zd3hjg2w18w27fphisw1-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/mw0skn92ac1nqhmh89qsqwm27jz3l1jq-glibc-mesboot-2.16.0.drv" [color = darkviolet]; + "/gnu/store/sbgi11hwbr41zd3hjg2w18w27fphisw1-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/iynqblmi51xxnzr2i6vyb59lk0l6phzi-gcc-mesboot1-4.7.4.drv" [color = darkviolet]; + +} diff --git a/talks/fosdem-2020/containers/images/bootstrap-graph-reduced.pdf b/talks/fosdem-2020/containers/images/bootstrap-graph-reduced.pdf new file mode 100644 index 0000000..1f33c88 Binary files /dev/null and b/talks/fosdem-2020/containers/images/bootstrap-graph-reduced.pdf differ diff --git a/talks/fosdem-2020/containers/images/bootstrap-graph.dot b/talks/fosdem-2020/containers/images/bootstrap-graph.dot new file mode 100644 index 0000000..f351ebb --- /dev/null +++ b/talks/fosdem-2020/containers/images/bootstrap-graph.dot @@ -0,0 +1,14 @@ +digraph "Guix package" { + "29061504" [label = "make-boot0@4.2.1", shape = box, fontname = Helvetica]; + "29061504" -> "43943040" [color = cyan3]; + "29061504" -> "43942848" [color = cyan3]; + "29061504" -> "43942656" [color = cyan3]; + "29061504" -> "43942464" [color = cyan3]; + "29061504" -> "43942464" [color = cyan3]; + "43943040" [label = "glibc-bootstrap@0", shape = box, fontname = Helvetica]; + "43942848" [label = "gcc-bootstrap@0", shape = box, fontname = Helvetica]; + "43942848" -> "43943040" [color = darkviolet]; + "43942656" [label = "binutils-bootstrap@0", shape = box, fontname = Helvetica]; + "43942464" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica]; + +} diff --git a/talks/fosdem-2020/containers/images/bootstrap-graph.pdf b/talks/fosdem-2020/containers/images/bootstrap-graph.pdf new file mode 100644 index 0000000..b2dac60 Binary files /dev/null and b/talks/fosdem-2020/containers/images/bootstrap-graph.pdf differ diff --git a/talks/fosdem-2020/containers/images/bootstrappable.pdf b/talks/fosdem-2020/containers/images/bootstrappable.pdf new file mode 100644 index 0000000..e0bba65 Binary files /dev/null and b/talks/fosdem-2020/containers/images/bootstrappable.pdf differ diff --git a/talks/fosdem-2020/containers/images/bootstrappable.svg b/talks/fosdem-2020/containers/images/bootstrappable.svg new file mode 100644 index 0000000..86d802c --- /dev/null +++ b/talks/fosdem-2020/containers/images/bootstrappable.svg @@ -0,0 +1,401 @@ + + + + + Bootstrappable builds logo + + + + + + image/svg+xml + + Bootstrappable builds logo + + 2016 + + + Ricardo Wurmus + + + http://bootstrappable.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/talks/fosdem-2020/containers/images/clouds.jpg b/talks/fosdem-2020/containers/images/clouds.jpg new file mode 100644 index 0000000..b0b0ebb Binary files /dev/null and b/talks/fosdem-2020/containers/images/clouds.jpg differ diff --git a/talks/fosdem-2020/containers/images/cumulunimbus.jpg b/talks/fosdem-2020/containers/images/cumulunimbus.jpg new file mode 100644 index 0000000..c3a62de Binary files /dev/null and b/talks/fosdem-2020/containers/images/cumulunimbus.jpg differ diff --git a/talks/fosdem-2020/containers/images/delorean.jpg b/talks/fosdem-2020/containers/images/delorean.jpg new file mode 120000 index 0000000..436ba7b --- /dev/null +++ b/talks/fosdem-2020/containers/images/delorean.jpg @@ -0,0 +1 @@ +../../../aramis-2019/images/delorean.jpg \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/docker-guix-lol.pdf b/talks/fosdem-2020/containers/images/docker-guix-lol.pdf new file mode 120000 index 0000000..742ba35 --- /dev/null +++ b/talks/fosdem-2020/containers/images/docker-guix-lol.pdf @@ -0,0 +1 @@ +../../../jcad-2018/images/docker-guix-lol.pdf \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/emblem-system-symbolic.pdf b/talks/fosdem-2020/containers/images/emblem-system-symbolic.pdf new file mode 100644 index 0000000..2acb4d5 Binary files /dev/null and b/talks/fosdem-2020/containers/images/emblem-system-symbolic.pdf differ diff --git a/talks/fosdem-2020/containers/images/guix-scope-systems.pdf b/talks/fosdem-2020/containers/images/guix-scope-systems.pdf new file mode 100644 index 0000000..5aa0ab3 Binary files /dev/null and b/talks/fosdem-2020/containers/images/guix-scope-systems.pdf differ diff --git a/talks/fosdem-2020/containers/images/guix-scope.pdf b/talks/fosdem-2020/containers/images/guix-scope.pdf new file mode 100644 index 0000000..fb2b676 Binary files /dev/null and b/talks/fosdem-2020/containers/images/guix-scope.pdf differ diff --git a/talks/fosdem-2020/containers/images/guix-scope.svg b/talks/fosdem-2020/containers/images/guix-scope.svg new file mode 100644 index 0000000..a694d9d --- /dev/null +++ b/talks/fosdem-2020/containers/images/guix-scope.svg @@ -0,0 +1,1335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + package + environments + containers + systems + + + diff --git a/talks/fosdem-2020/containers/images/low-clouds.jpg b/talks/fosdem-2020/containers/images/low-clouds.jpg new file mode 100644 index 0000000..6c56db1 Binary files /dev/null and b/talks/fosdem-2020/containers/images/low-clouds.jpg differ diff --git a/talks/fosdem-2020/containers/images/owncloud-dockerfile.png b/talks/fosdem-2020/containers/images/owncloud-dockerfile.png new file mode 100644 index 0000000..3bfbedd Binary files /dev/null and b/talks/fosdem-2020/containers/images/owncloud-dockerfile.png differ diff --git a/talks/fosdem-2020/containers/images/reflections-on-trusting-trust.png b/talks/fosdem-2020/containers/images/reflections-on-trusting-trust.png new file mode 100644 index 0000000..5808388 Binary files /dev/null and b/talks/fosdem-2020/containers/images/reflections-on-trusting-trust.png differ diff --git a/talks/fosdem-2020/containers/images/reproducible-builds.pdf b/talks/fosdem-2020/containers/images/reproducible-builds.pdf new file mode 100644 index 0000000..a8c6f0e Binary files /dev/null and b/talks/fosdem-2020/containers/images/reproducible-builds.pdf differ diff --git a/talks/fosdem-2020/containers/images/reproducible-builds.svg b/talks/fosdem-2020/containers/images/reproducible-builds.svg new file mode 100644 index 0000000..42398cc --- /dev/null +++ b/talks/fosdem-2020/containers/images/reproducible-builds.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/talks/fosdem-2020/containers/images/rust-bootstrap.dot b/talks/fosdem-2020/containers/images/rust-bootstrap.dot new file mode 100644 index 0000000..8bd6aba --- /dev/null +++ b/talks/fosdem-2020/containers/images/rust-bootstrap.dot @@ -0,0 +1,55 @@ +digraph gvpr_result { + 32273152 [fontname=Helvetica, + label="rust@1.28.0", + shape=box]; + 32273536 [fontname=Helvetica, + label="rust@1.27.2", + shape=box]; + 32273152 -> 32273536 [color=magenta]; + 32273152 -> 32273536 [color=magenta]; + 32273920 [fontname=Helvetica, + label="rust@1.26.2", + shape=box]; + 32273536 -> 32273920 [color=darkseagreen]; + 32273536 -> 32273920 [color=darkseagreen]; + 32274304 [fontname=Helvetica, + label="rust@1.25.0", + shape=box]; + 32273920 -> 32274304 [color=darkgoldenrod]; + 32273920 -> 32274304 [color=darkgoldenrod]; + 32274688 [fontname=Helvetica, + label="rust@1.24.1", + shape=box]; + 32274304 -> 32274688 [color=darkseagreen]; + 32274304 -> 32274688 [color=darkseagreen]; + 32275072 [fontname=Helvetica, + label="rust@1.23.0", + shape=box]; + 32274688 -> 32275072 [color=red]; + 32274688 -> 32275072 [color=red]; + 32275456 [fontname=Helvetica, + label="rust@1.22.1", + shape=box]; + 32275072 -> 32275456 [color=darkseagreen]; + 32275072 -> 32275456 [color=darkseagreen]; + 32275840 [fontname=Helvetica, + label="rust@1.21.0", + shape=box]; + 32275456 -> 32275840 [color=dimgrey]; + 32275456 -> 32275840 [color=dimgrey]; + 32276224 [fontname=Helvetica, + label="rust@1.20.0", + shape=box]; + 32275840 -> 32276224 [color=red]; + 32275840 -> 32276224 [color=red]; + 32190656 [fontname=Helvetica, + label="rust@1.19.0", + shape=box]; + 32276224 -> 32190656 [color=peachpuff4]; + 32276224 -> 32190656 [color=peachpuff4]; + 32190848 [fontname=Helvetica, + label="mrustc@0.8.0", + shape=box]; + 32190656 -> 32190848 [color=cyan3]; + 32190656 -> 32190848 [color=cyan3]; +} diff --git a/talks/fosdem-2020/containers/images/rust-bootstrap.pdf b/talks/fosdem-2020/containers/images/rust-bootstrap.pdf new file mode 100644 index 0000000..6e06b14 Binary files /dev/null and b/talks/fosdem-2020/containers/images/rust-bootstrap.pdf differ diff --git a/talks/fosdem-2020/containers/images/smoothie.pdf b/talks/fosdem-2020/containers/images/smoothie.pdf new file mode 120000 index 0000000..4e3d6cf --- /dev/null +++ b/talks/fosdem-2020/containers/images/smoothie.pdf @@ -0,0 +1 @@ +../../../in2p3-2019/images/smoothie.pdf \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/software-heritage-logo-title-white.pdf b/talks/fosdem-2020/containers/images/software-heritage-logo-title-white.pdf new file mode 120000 index 0000000..b575630 --- /dev/null +++ b/talks/fosdem-2020/containers/images/software-heritage-logo-title-white.pdf @@ -0,0 +1 @@ +../../../aramis-2019/images/software-heritage-logo-title-white.pdf \ No newline at end of file diff --git a/talks/fosdem-2020/containers/images/sun.jpg b/talks/fosdem-2020/containers/images/sun.jpg new file mode 100644 index 0000000..ddc0f73 Binary files /dev/null and b/talks/fosdem-2020/containers/images/sun.jpg differ diff --git a/talks/fosdem-2020/containers/images/throwing-the-baby-out-with-the-bathwater.jpg b/talks/fosdem-2020/containers/images/throwing-the-baby-out-with-the-bathwater.jpg new file mode 100644 index 0000000..b17633b Binary files /dev/null and b/talks/fosdem-2020/containers/images/throwing-the-baby-out-with-the-bathwater.jpg differ diff --git a/talks/fosdem-2020/containers/images/thunder.jpg b/talks/fosdem-2020/containers/images/thunder.jpg new file mode 100644 index 0000000..4fd53ee Binary files /dev/null and b/talks/fosdem-2020/containers/images/thunder.jpg differ diff --git a/talks/fosdem-2020/containers/outline.org b/talks/fosdem-2020/containers/outline.org new file mode 100644 index 0000000..2f1f5e0 --- /dev/null +++ b/talks/fosdem-2020/containers/outline.org @@ -0,0 +1,134 @@ +#+TITLE: Guix: Unifying provisioning, deployment, and package management in the age of containers + +* Summary + +When it comes to software deployment, we are getting used to a new +distribution of roles among many actors: traditional distros take care +of core software pieces, “application bundles” à la Docker/Flatpak +provide complex applications, Cabal, Gem, npm, pip, and friends take +care of language-specific software, and Puppet/Ansible orchestrate the +whole thing. Each of these tools has its justification, but the end +result is a maze that’s hard to deal with. + +In this talk I will present GNU Guix, a software deployment toolbox and +its associated distro that feature transactional upgrades and rollbacks, +declarative OS deployment inspired by Nix, and reproducible builds. I +will show how Guix approaches a variety of use cases: “package +management” à la apt-get, environment management à la VirtualEnv, +Ansible-style declarative OS deployment, and container provisioning à la +Docker. + +Guix emphasizes programmability and one of its salient features is that +it provides a unified Scheme programming environment to deal with with +all the aspects of configuration, deployment, and system +management—including service management by PID 1. I will illustrate how +this works out on standalone Guix systems, and show the benefits of the +approach by discussing applications that take advantage of Guix as a +library to support reproducible software deployment. + +Last, I will reflect on the road that led to Guix 1.0 six months ago and +present some of the challenges ahead. + +* Abstract + +This talk will reflect on what GNU Guix has to offer to users and how it +compares to other approaches—from CONDA and pip to Flatpak and +Docker. Guix is not only a transactional package manager and declarative +GNU/Linux distribution: it’s also an environment manager, a container +provisioning tool, and more. We will describe these tools and our +journey to 1.0, emphasizing key properties that set Guix apart: +reproducibility, transparency, and hackability. + +* intro: ? + +* Guix + +** package management -> take from jcad-2018 + +** ‘guix describe’ + ‘guix pull’ + + +** operating system + +** guix deploy + +* “It’s all about source code.” + +** functional model + +** ‘guix system describe’ (Quine) + + #+begin_src scheme + ((lambda (x) + (list x (list (quote quote) x))) + (quote + (lambda (x) + (list x (list (quote quote) x))))) + + #+end_src + +** reproducible builds + +** bootstrapping + + - bootstrap from nothing + +** Software Heritage + +* what's cooking? + +** Guix-HPC + +** Guix-Jupyter + +** ‘guix deploy’ + +** Guile 3 + +** contributor stats + +** Outreachy + GSoC + +** link to other talks + +* Get it! + +* COMMENT references + + - [[https://blog.florentdelannoy.com/blog/2020/introducing-zeitgeist/][Zeitgeist]], “Zeitgeist is a language-agnostic dependency checker.” + - https://www.jres.org/fr/programme/ + +* COMMENT demo preparation + +#+BEGIN_SRC emacs-lisp :exports none + (org-babel-do-load-languages + 'org-babel-load-languages + '((emacs-lisp . t) + (scheme . t) + (shell . t))) +#+END_SRC + +#+RESULTS: + +#+BEGIN_SRC sh :exports none + mkdir -p /tmp/home/demo + cp -fv ./os.scm /tmp/home/demo + export USER=demo + export HOME=/tmp/home/demo + export PS1='guix-demo \w\$ ' + export GUIX_BUILD_OPTIONS=--no-grafts + export GUIX_DISK_SPACE_WARNING=0 + mkdir -p "$HOME/.config/guix" + cd + rm -f my-profile.scm + echo '(specifications->manifest '"'"'("guile" "emacs" "emacs-geiser"))' > my-profile.scm + (cd $HOME/.config/guix ; ln -s ~ludo/.config/guix/current) + unset GUILE_LOAD_PATH + unset GUILE_LOAD_COMPILED_PATH + export PATH=$HOME/.config/guix/current/bin:$HOME/.guix-profile/bin:/run/current-system/profile/bin:$HOME/local/bin:/run/setuid-programs + rm -f /var/guix/profiles/per-user/demo/guix-profile* + rm -f ~/.guix-profile + rm -f old-* new-* + unset LANGUAGE +#+END_SRC + diff --git a/talks/fosdem-2020/containers/rules.ini b/talks/fosdem-2020/containers/rules.ini new file mode 100644 index 0000000..5a74423 --- /dev/null +++ b/talks/fosdem-2020/containers/rules.ini @@ -0,0 +1,9 @@ +;; Rules for Rubber. + +[dot-pdf] +target = (.*)\.pdf +source = \1.dot +rule = shell +cost = 0 +command = dot -Tpdf -Gratio=.78 -o $target $source +message = rendering $source into $target diff --git a/talks/fosdem-2020/containers/talk.tex b/talks/fosdem-2020/containers/talk.tex new file mode 100644 index 0000000..16e6147 --- /dev/null +++ b/talks/fosdem-2020/containers/talk.tex @@ -0,0 +1,901 @@ +% The comment below tells Rubber to compile the .dot files. +% +% rubber: module graphics +% rubber: rules rules.ini + +% Make sure URLs are broken on hyphens. +% See . +\RequirePackage[hyphens]{url} + +\documentclass[aspectratio=169]{beamer} +\usepackage{ragged2e} % for 'flushleft', etc. + +\usetheme{default} + +\usefonttheme{structurebold} + +% Nice sans-serif font. +\usepackage[sfdefault,lining]{FiraSans} %% option 'sfdefault' activates Fira Sans as the default text font +%% \usepackage[fakebold]{firamath-otf} +\renewcommand*\oldstylenums[1]{{\firaoldstyle #1}} + +% Nice monospace font. +\usepackage{inconsolata} +%% \renewcommand*\familydefault{\ttdefault} %% Only if the base font of the document is to be typewriter style +\usepackage[T1]{fontenc} + + +% Typeset maths using a slanted, serif font. +\def\mathfamilydefault{\rmdefault} + +\ProcessOptionsBeamer + +\usepackage{helvet} + + +%% \usepackage{fontspec} +%% \setmainfont[ +%% Ligatures=TeX, +%% UprightFont = *-Boo, +%% ItalicFont = *-BooObl, +%% SmallCapsFont = *SC-Boo, +%% BoldFont = *-Dem, +%% BoldItalicFont = *-DemObl +%% ]{Futura} + +\usepackage{multimedia} % movie +\usecolortheme{seagull} % white on black + +\usepackage[utf8]{inputenc} +\PassOptionsToPackage{hyphens}{url}\usepackage{hyperref,xspace,multicol} +\usepackage[absolute,overlay]{textpos} +\usepackage{tikz} +\usetikzlibrary{arrows,shapes,trees,shadows,positioning} +\usepackage{fancyvrb} % for \Verb + +% Remember the position of every picture. +\tikzstyle{every picture}+=[remember picture] + +\tikzset{onslide/.code args={<#1>#2}{% + \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path +}} + +% Colors. +\definecolor{guixred1}{RGB}{226,0,38} % red P +\definecolor{guixorange1}{RGB}{243,154,38} % guixorange P +\definecolor{guixyellow}{RGB}{254,205,27} % guixyellow P +\definecolor{guixred2}{RGB}{230,68,57} % red S +\definecolor{guixred3}{RGB}{115,34,27} % dark red +\definecolor{guixorange2}{RGB}{236,117,40} % guixorange S +\definecolor{guixtaupe}{RGB}{134,113,127} % guixtaupe S +\definecolor{guixgrey}{RGB}{91,94,111} % guixgrey S +\definecolor{guixdarkgrey}{RGB}{46,47,55} % guixdarkgrey S +\definecolor{guixblue1}{RGB}{38,109,131} % guixblue S +\definecolor{guixblue2}{RGB}{10,50,80} % guixblue S +\definecolor{guixgreen1}{RGB}{133,146,66} % guixgreen S +\definecolor{guixgreen2}{RGB}{157,193,7} % guixgreen S + +\setbeamerfont{title}{size=\huge} +\setbeamerfont{frametitle}{size=\huge} +\setbeamerfont{normal text}{size=\Large} + +% White-on-black color theme. +\setbeamercolor{structure}{fg=guixorange1,bg=black} +\setbeamercolor{title}{fg=white,bg=black} +\setbeamercolor{date}{fg=guixorange1,bg=black} +\setbeamercolor{frametitle}{fg=white,bg=black} +\setbeamercolor{titlelike}{fg=white,bg=black} +\setbeamercolor{normal text}{fg=white,bg=black} +\setbeamercolor{alerted text}{fg=guixyellow,bg=black} +\setbeamercolor{section in toc}{fg=white,bg=black} +\setbeamercolor{section in toc shaded}{fg=white,bg=black} +\setbeamercolor{subsection in toc}{fg=guixorange1,bg=black} +\setbeamercolor{subsection in toc shaded}{fg=white,bg=black} +\setbeamercolor{subsubsection in toc}{fg=guixorange1,bg=black} +\setbeamercolor{subsubsection in toc shaded}{fg=white,bg=black} +\setbeamercolor{frametitle in toc}{fg=white,bg=black} +\setbeamercolor{local structure}{fg=guixorange1,bg=black} + +\newcommand{\highlight}[1]{\alert{\textbf{#1}}} + +\title{GNU Guix: Unifying provisioning, deployment, and package management} +\author{Ludovic Courtès} +\date{FOSDEM, 1 February 2020} + +\setbeamertemplate{navigation symbols}{} % remove the navigation bar + +\AtBeginSection[]{ + \begin{frame} + \frametitle{} + \tableofcontents[currentsection] + \end{frame} +} + + +\newcommand{\screenshot}[2][width=\paperwidth]{ + \begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[{#1}]{#2}}; + \end{tikzpicture} + \end{frame} +} + + +\begin{document} + +\begin{frame}[plain, fragile] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=\paperwidth]{images/sun}}; + \end{tikzpicture} + + {\color{guixdarkgrey}\Huge{\textbf{\\GNU Guix:\\Unifying provisioning, + deployment,\\and package management}}} + \vfill{} + {\color{guixdarkgrey}{\Large{Ludovic Courtès}}} + \\[4mm] + {\color{guixorange2}{\Large{{FOSDEM, \oldstylenums{1 February 2020}}}}} +\end{frame} + +\setbeamercolor{normal text}{bg=guixred3,fg=white} +\begin{frame}[plain] + \begin{quotation} + \noindent + \begin{flushright} + \LARGE{``The Linux distribution as we know it is \textbf{coming to + an end}, and is being replaced by a new concept of + containerized, multi-instance, multi-user applications [...]''} + \end{flushright} + \end{quotation} + \hfill{--- Daniel Riek (\oldstylenums{2020})} + + \begin{tikzpicture}[overlay] + \node [at=(current page.south east), anchor=south east]{ + \url{https://fosdem.org/2020/schedule/event/riek_kubernetes/} + }; + \end{tikzpicture} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +% https://commons.wikimedia.org/wiki/Category:Sun?uselang=fr#/media/File:%22Sun%22.JPG +% https://en.wikipedia.org/wiki/Zenith#/media/File:Tropical-area-mactan-philippines.jpg +\begin{frame}[plain, fragile] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=\paperwidth]{images/sun}}; + \node [at=(current page.center), text=black, + text opacity=1, rounded corners=2pt] + {\LARGE{\textbf{ Slackware {\tt |} Debian {\tt |} Red Hat }}}; + \end{tikzpicture} +\end{frame} + + +% https://commons.wikimedia.org/wiki/Category:Clouds_from_below?uselang=fr#/media/File:Cloud_(5018750171).jpg +% https://commons.wikimedia.org/wiki/Category:Clouds_from_below?uselang=fr#/media/File:Chigwell_Meadow_Essex_England_-_cumulus_clouds.jpg +% https://commons.wikimedia.org/wiki/Category:Clouds_from_below?uselang=fr#/media/File:Clouds_above_Lordship_Recreation_Ground_Haringey_London_England_1.jpg +% https://commons.wikimedia.org/wiki/Category:Clouds_and_blue_sky?uselang=fr#/media/File:2018_05_Havelland_IMG_1931.JPG +\begin{frame}[plain, fragile] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=1.4\paperwidth]{images/clouds}}; + \node [at=(current page.center), text=white, + text opacity=1, rounded corners=2pt] + {\LARGE{\textbf{ modules {\tt |} Spack {\tt |} EasyBuild {\tt + |} VirtualEnv }}}; + \end{tikzpicture} +\end{frame} + + +% https://commons.wikimedia.org/wiki/Category:Cumulus_congestus_clouds?uselang=fr#/media/File:Cumulunimbus_IMG_5537.JPG +\begin{frame}[plain, fragile] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=1.4\paperwidth]{images/cumulunimbus}}; + \node [at=(current page.center), text=white, + text opacity=1, rounded corners=2pt] + {\LARGE{\textbf{ Ansible {\tt |} Puppet {\tt |} Propellor }}}; + \end{tikzpicture} +\end{frame} + +% https://commons.wikimedia.org/wiki/Category:Stratus_clouds?uselang=fr#/media/File:2018-05-18_18_27_24_Low_stratiform_clouds_(base_near_3,000_feet_AGL)_with_wavy,_bumpy_base_viewed_from_Mercer_County_Route_622_(North_Olden_Avenue)_in_Ewing_Township,_Mercer_County,_New_Jersey.jpg +\begin{frame}[plain, fragile] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=1.4\paperwidth]{images/low-clouds}}; + \node [at=(current page.center), text=white, inner sep=5cm, + text opacity=1, rounded corners=2pt, fill=black, opacity=.5] + {\LARGE{\textbf{ pip {\tt |} Cabal {\tt |} Cargo {\tt |} CONDA + {\tt |} Gradle }}}; + \end{tikzpicture} +\end{frame} + + +% https://commons.wikimedia.org/wiki/Category:Cloud-to-cloud_lightning#/media/File:004_2018_05_14_Extremes_Wetter.jpg +\begin{frame}[plain, fragile] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=1.4\paperwidth]{images/thunder}}; + \node [at=(current page.center), text=white, + text opacity=1, rounded corners=2pt] + {\LARGE{\textbf{ Flatpak {\tt |} snap {\tt |} Docker {\tt |} Vagrant }}}; + \end{tikzpicture} +\end{frame} + +% TODO 2048 vuln + Docker license opacity + +\setbeamercolor{normal text}{bg=guixred3} +\begin{frame}[plain, fragile] + \center{\Huge{\textbf{Are distros doomed?}}} + %% \\[2cm] + %% \uncover<2->{\center{Yes!} \par} + %% \uncover<3->{\center{No!} \par} +\end{frame} +\setbeamercolor{normal text}{bg=black,fg=white} + +\setbeamercolor{normal text}{bg=guixred3,fg=white} +\begin{frame}[plain] + \begin{quotation} + \begin{flushright} + \LARGE{``Debian and other distributions are going to be \textbf{that + thing you run docker on}, little~more.''} + \end{flushright} + \end{quotation} + \hfill{--- Jos Poortvliet, ownCloud developer (\oldstylenums{2016})} + + \begin{tikzpicture}[overlay] + \node [at=(current page.south east), anchor=south east]{ + \url{http://lwn.net/Articles/670566/} + }; + \end{tikzpicture} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +\setbeamercolor{normal text}{fg=white,bg=white} +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + % https://github.com/owncloud-docker/server/blob/master/v19.10/Dockerfile.amd64 + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[height=\paperheight]{images/owncloud-dockerfile}}; + + \node [at=(current page.center), anchor=south west, overlay, + inner sep=3mm, rounded corners, + text=black, text opacity=1, fill=white, opacity=.5, text width=7cm] + {\LARGE{\textbf{It's also that thing you run \emph{inside} Docker!}}}; + \end{tikzpicture} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=1.3\textwidth]{images/smoothie}}; + \node [at=(current page.south east), anchor=south east, text=guixgrey] + {\small{courtesy of Ricardo Wurmus}}; + \end{tikzpicture} +\end{frame} + +% https://en.wikipedia.org/wiki/Don't_throw_the_baby_out_with_the_bathwater#/media/File:Murner.Nerrenbeschwerung.kind.jpg +\setbeamercolor{normal text}{bg=white} +\screenshot[height=.95\paperheight]{images/throwing-the-baby-out-with-the-bathwater} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=0.7\paperwidth]{images/Guix-horizontal-print}}; + \end{tikzpicture} +\end{frame} + +\screenshot{images/guix-scope} +\setbeamercolor{normal text}{fg=white,bg=black} + +% demo +\begin{frame}[fragile] + + \begin{semiverbatim} + \LARGE{ +guix \alert{install} gcc-toolchain openmpi hwloc + +eval `guix package \alert{--search-paths}=prefix` + +guix package \alert{--roll-back} + +guix install \alert{--profile}=./experiment \\ + gcc-toolchain@5.5 hwloc@1 +} + \end{semiverbatim} +\end{frame} + +\begin{frame}[fragile] + \begin{semiverbatim} + \LARGE{ +guix package \alert{--manifest}=my-packages.scm + + + + (\alert{specifications->manifest} + '("gcc-toolchain" "emacs" + "guile" "emacs-geiser")) +} + \end{semiverbatim} +\end{frame} + +\setbeamercolor{normal text}{bg=guixdarkgrey} +\begin{frame}[fragile] + \begin{semiverbatim} + \Large{ +bob@laptop$ guix package \alert{--manifest}=my-packages.scm +bob@laptop$ guix \alert{describe} + guix cabba9e + repository URL: https://git.sv.gnu.org/git/guix.git + commit: cabba9e15900d20927c1f69c6c87d7d2a62040fe + +\pause + + +alice@supercomp$ guix \alert{pull} --commit=cabba9e +alice@supercomp$ guix package \alert{--manifest}=my-packages.scm +} + \end{semiverbatim} + + %% \begin{tikzpicture}[overlay] + %% \node<3>[rounded corners=4, text centered, anchor=north, + %% fill=guixorange1, text width=7cm, + %% inner sep=3mm, opacity=.75, text opacity=1] + %% at (current page.center) { + %% \textbf{\Large{bit-reproducible \& portable!}} + %% }; + %% \end{tikzpicture} +\end{frame} + +\begin{frame}[fragile] + \begin{tikzpicture}[remember picture, overlay] + % https://commons.wikimedia.org/wiki/File:TeamTimeCar.com-BTTF_DeLorean_Time_Machine-OtoGodfrey.com-JMortonPhoto.com-07.jpg + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=\paperwidth]{images/delorean}}; + \node [rounded corners=4, text centered, anchor=north, + text width=10cm, + inner sep=3mm, opacity=.75, text opacity=1] + at (current page.center) { + \textbf{\Huge{travel in space \emph{and} time!}} + }; + \end{tikzpicture} +\end{frame} + +\begin{frame}[fragile] + \begin{semiverbatim} + \LARGE{ +guix \alert{time-machine} --commit=cabba9e -- \\ + install hello + } + \end{semiverbatim} +\end{frame} + +\setbeamercolor{normal text}{bg=guixblue1} +\begin{frame}[fragile]%{``Virtual environments''} + \LARGE{ + \begin{semiverbatim} +guix \alert{environment} --ad-hoc\uncover<2->{ \alert{--container}} \\ + python python-numpy python-scipy \\ + -- python3 + \end{semiverbatim} + } +\end{frame} + +\setbeamercolor{normal text}{bg=guixred3} +\begin{frame}[fragile]%{Container provisioning} + \LARGE{ + \begin{semiverbatim} +\$ guix \alert{pack}\only<2>{ --relocatable}\only<3->{ --format=docker} \\ + python python-numpy +\textrm{...} +/gnu/store/\textrm{...}-\only<1-2>{pack.tar.gz}\only<3->{docker-image.tar.gz} + \end{semiverbatim} + } +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\screenshot[width=.9\paperwidth]{images/docker-guix-lol} +\setbeamercolor{normal text}{fg=white,bg=black} + +\screenshot{images/guix-scope-systems} + +\begin{frame}[fragile] + \begin{semiverbatim} + \Large{ +<\textit{bob}> this is how Guix System works: you tell it + what you want, and it puts all the pieces in place + for you + +<\textit{alice}> yeah you just need to speak its language + +<\textit{civodul}> such a fine language, though :-) +} + \end{semiverbatim} + \vfill{ + (seen on \#guix)} +\end{frame} + +\begin{frame}[fragile] + \begin{semiverbatim} + \vspace{-1cm} + \small{ +(\alert{operating-system} + (host-name "guixbox") + (timezone "Europe/Brussels") + (locale "fr_BE.utf8") + (bootloader (\alert{bootloader-configuration} + (bootloader grub-efi-bootloader) + (target "/boot/efi"))) + (file-systems (append (list (\alert{file-system} + (device (file-system-label "my-root")) + (mount-point "/") + (type "ext4"))) + %base-file-systems)) + (users (append (list (\alert{user-account} + (name "charlie") + (group "users") + (home-directory "/home/charlie"))) + %base-user-accounts)) + (services (append (list (\alert{service} dhcp-client-service-type) + (\alert{service} openssh-service-type)) + %base-services))) + } + \end{semiverbatim} +\end{frame} + +\begin{frame}[fragile] + \begin{semiverbatim} + \Large{ +\$ guix system \alert{vm} config.scm +\textrm{...} + +\$ guix system \alert{docker-image} config.scm +\textrm{...} + +\$ guix system \alert{container} config.scm +\textrm{...} + +\$ guix system \alert{reconfigure} config.scm +\textrm{...} +} + \end{semiverbatim} +\end{frame} + +\setbeamercolor{normal text}{bg=guixdarkgrey} +\begin{frame}[fragile] + \begin{semiverbatim} +(\alert{define} (os-for-machine n) + ;; \textsf{\textit{Return an OS for machine number N.}} + (operating-system + (host-name (string-append "machine" + (number->string n))) + \textsf{...})) + +;; \textsf{\textit{Return a list of machines.}} +(map (\alert{lambda} (n) + (\alert{machine} + (operating-system (os-for-machine n)) + \only<1-3>{(environment managed-host-environment-type) + (configuration (\alert{machine-ssh-configuration} + (host-name (ip-for-machine n))))))}\only<4->{(environment digital-ocean-environment-type) + (configuration (\alert{digital-ocean-configuration} + (region "nyc3") + \textsf{...}))))} + (list 1 2 3 4 5)) + \end{semiverbatim} + + \begin{tikzpicture}[overlay] + \node<1-2> at (14,6) [anchor=north east, + inner sep=1mm, rotate=-30, shape=star, + fill=guixorange1, text=white] { + \Large{\textbf{New!}} + }; + + \node<2> [at=(current page.center), inner sep=5mm, + rounded corners, fill=black, text=white, + opacity=.75, text opacity=1] { + \LARGE{\texttt{guix deploy machines.scm}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=guixgreen1} +\begin{frame}[fragile] + \Huge{\textbf{It's all about source code.}} +\end{frame} + +\setbeamercolor{normal text}{bg=guixgrey} +\begin{frame}[fragile] + \begin{semiverbatim} +(define audacity + (\alert{package} + (name "audacity") + (home-page "https://github.com/audacity/audacity") + (\alert{source} (origin + (method git-fetch) + (uri (git-reference + (\alert{url} home-page) + (\alert{commit} "2f30ff07a")\tikz{\node(commit){};} + (recursive? #t))) + (sha256 + (base32 + "106rf402cvfdhc2yf\textrm{...}")))) + \textrm{...})) + \end{semiverbatim} + + \begin{tikzpicture}[overlay] + \node<2->(swh) [inner sep=3mm, rounded corners, fill=black, + opacity=.3, text opacity=1] at (12,5) { + % https://annex.softwareheritage.org/public/logo/ + \includegraphics[width=0.33\textwidth]{images/software-heritage-logo-title-white} + }; + \node<2-> [at=(current page.south), anchor=south, + inner sep=2mm, rounded corners, fill=black, text width=13cm, + opacity=.3, text opacity=1] { + \url{https://www.softwareheritage.org/2019/04/18/software-heritage-and-gnu-guix-join-forces-to-enable-long-term-reproducibility/} + }; + + \path<2->[very thick, draw=guixorange1] + (swh) edge [out=-90, in=0, ->] (commit); + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\screenshot[width=.8\paperwidth]{images/reproducible-builds} +\setbeamercolor{normal text}{bg=guixdarkgrey} + + +\begin{frame}[plain] + \LARGE{ + $\texttt{emacs} = f(\texttt{gtk+}, \texttt{gcc}, \texttt{make}, \texttt{coreutils})$ + \\[1.1cm] + \uncover<2->{$\texttt{gtk+} = g(\texttt{glib}, \texttt{gcc}, \texttt{make}, \texttt{coreutils})$} + \\[1.1cm] + \uncover<3->{$\texttt{gcc} = h(\texttt{make}, \texttt{coreutils}, \texttt{gcc}_0)$} + \\[1.1cm] + \uncover<3->{\textrm{...}} + } + + \uncover<1>{\large{where $f =$ \texttt{./configure \&\& make \&\& make install}}} + + %% \begin{tikzpicture}[overlay] + %% \node<4->[fill=guixorange1, text=black, text opacity=1, opacity=.7, + %% rounded corners=2mm, inner sep=5mm] at (5, 1) { + %% \textbf{\Large{the complete DAG is captured}} + %% }; + %% \end{tikzpicture} +\end{frame} +%% \begin{frame}[fragile] +%% \begin{tikzpicture}[overlay] +%% \node [at=(current page.north west), anchor=north west, +%% outer sep=4mm, text=white, text width=13mm]{ +%% \texttt{configure}, +%% \texttt{src/hello.c}, +%% GCC,\\ +%% Binutils, +%% etc. +%% }; +%% \node [at=(current page.center), outer sep=3mm, font=\rmfamily]{ +%% {\fontfamily{roman}\fontsize{45}{45}{$f(x,y,z)$}} +%% }; +%% \end{tikzpicture} +%% \end{frame} +\setbeamercolor{normal text}{bg=black} + +\begin{frame}[fragile] + %% \frametitle{Bit-Reproducible Builds$^*$} + %% \framesubtitle{$^*$ almost!} + + \begin{semiverbatim} + \Large{ +\$ guix build hello +\uncover<2->{/gnu/store/\tikz[baseline]{\node[anchor=base](nixhash){\alert<2>{h2g4sf72\textrm{...}}};}-hello-2.10} + +\uncover<3->{\$ \alert<3>{guix gc --references /gnu/store/\textrm{...}-hello-2.10} +/gnu/store/\textrm{...}-glibc-2.29 +/gnu/store/\textrm{...}-gcc-7.4.0-lib +/gnu/store/\textrm{...}-hello-2.10 +}} + \end{semiverbatim} + + \begin{tikzpicture}[overlay] + \node<1>(labelnixhash) [fill=white, text=black, inner sep=0.5cm, + rounded corners] at (current page.center) {% + \Large{\textbf{isolated build}: chroot, separate name spaces, etc.} + }; + + \node<2>(labelnixhash) [fill=white, text=black] at (4cm, 2cm) {% + hash of \textbf{all} the dependencies}; + \path[->]<2>(labelnixhash.north) edge [bend left, in=180, out=-45] (nixhash.south); + + \draw<4-> (-10pt, 105pt) [very thick, color=guixorange2, rounded corners=8pt] + arc (10:-50:-50pt and 110pt); + \node<4->[fill=white, text=black, text opacity=1, opacity=.7, + rounded corners=2mm, inner sep=5mm] + at (7, 2) {\textbf{\Large{(nearly) bit-identical for everyone}}}; + \end{tikzpicture} + +\end{frame} + +\setbeamercolor{normal text}{bg=guixblue2} +\begin{frame}[fragile] + \begin{semiverbatim} +$ \alert{guix challenge} --substitute-urls="https://ci.guix.gnu.org https://example.org" +\alert{/gnu/store/\dots{}-openssl-1.0.2d contents differ}: + local hash: 0725l22\dots{} + http://ci.guix.gnu.org/\dots{}-openssl-1.0.2d: 0725l22\dots{} + http://example.org/\dots{}-openssl-1.0.2d: 1zy4fma\dots{} +\alert{/gnu/store/\dots{}-git-2.5.0 contents differ}: + local hash: 00p3bmr\dots{} + http://ci.guix.gnu.org/\dots{}-git-2.5.0: 069nb85\dots{} + http://example.org/\dots{}-git-2.5.0: 0mdqa9w\dots{} +\alert{/gnu/store/\dots{}-pius-2.1.1 contents differ}: + local hash: 0k4v3m9\dots{} + http://ci.guix.gnu.org/\dots{}-pius-2.1.1: 0k4v3m9\dots{} + http://example.org/\dots{}-pius-2.1.1: 1cy25x1\dots{} + \end{semiverbatim} +\end{frame} +\setbeamercolor{normal text}{bg=black} + +% demo guix build foo --check | guix challenge + +\setbeamercolor{normal text}{fg=black,bg=white} +\begin{frame}[fragile] + \vspace{2.5cm} + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt, + drop shadow={opacity=0.5}, draw, color=guixgrey, line width=1pt] + {\includegraphics[height=0.9\paperheight]{images/reflections-on-trusting-trust}}; + \end{tikzpicture} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +\setbeamercolor{normal text}{bg=white} +\screenshot[width=.8\paperwidth]{images/bootstrappable} +\setbeamercolor{normal text}{bg=black} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[height=\paperheight]{images/bootstrap-graph}}; + \node<2-> [at=(current page.center), anchor=north, inner sep=20pt, text=guixgrey] + {\Large{\textbf{250 MiB of binary blobs}}}; + \end{tikzpicture} +\end{frame} +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[height=\paperheight]{images/bootstrap-graph-reduced}}; + \node<2-> [at=(current page.center), fill=guixorange1, rounded corners=10pt, + inner sep=10pt, opacity=.8, text opacity=1] + {\Large{\textbf{250 MiB $\rightarrow$ 130 MiB of binary blobs}}}; + \node<2-> [at=(current page.south), anchor=south, + inner sep=2mm, outer sep=3mm, rounded corners, + fill=white, opacity=.7, text opacity=1, text=black] + {\url{https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/}}; + \node<2-> [at=(current page.north east), anchor=north east, + fill=white, text=guixdarkgrey, draw=guixblue1, + rounded corners=10pt, %text width=5cm, + inner sep=10pt, outer sep=3mm, text opacity=1] + {\large{\textbf{Go to AW1.125, Sun.~11:50AM}}}; + \end{tikzpicture} +\end{frame} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt, rotate=30] + {\includegraphics[height=1.1\paperheight]{images/rust-bootstrap}}; + %% \node<2-> [at=(current page.center), fill=guixorange1, rounded corners=10pt, + %% inner sep=10pt, opacity=.8, text opacity=1] + %% {\Large{\textbf{Thumbs up, Danny Milosavljevic!}}}; + \node<1> [at=(current page.center), fill=guixorange1, rounded corners=10pt, + inner sep=10pt, opacity=.8, text opacity=1] + {\Large{\textbf{Rust entirely built from source!}}}; + \node<1> [at=(current page.south), anchor=south, + inner sep=2mm, outer sep=3mm, rounded corners, fill=white, + opacity=.7, text opacity=1, text=black] + {\url{https://guix.gnu.org/blog/2018/bootstrapping-rust/}}; + \node<1-> [at=(current page.north east), anchor=north east, + fill=white, text=guixdarkgrey, draw=guixblue1, + rounded corners=10pt, %text width=5cm, + inner sep=10pt, outer sep=3mm, text opacity=1] + {\large{\textbf{Go to K.3.401, Sun.~10:00AM}}}; + \end{tikzpicture} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +%% \setbeamercolor{normal text}{bg=white} +%% \begin{frame}[plain] +%% \begin{tikzpicture}[remember picture, overlay] +%% \node [at=(current page.center), fill=guixblue1, +%% shape=circle, inner sep=2.2cm, opacity=.8, text opacity=1] {}; +%% \node [at=(current page.center), fill=guixorange1, rounded corners=10pt, +%% shape=circle, inner sep=2cm, opacity=1, text opacity=1] {}; +%% \node [at=(current page.center), fill=guixorange1, rounded corners=10pt, +%% shape=circle, inner sep=10pt, opacity=0, text opacity=1] +%% {\Huge{\textbf{1.0!}}}; + +%% \end{tikzpicture} +%% \end{frame} +%% \setbeamercolor{normal text}{fg=white,bg=black} + +\setbeamercolor{normal text}{bg=guixtaupe} +\begin{frame}[fragile] + \Huge{$f(\texttt{config.scm}) = \vcenter{\hbox{\includegraphics[width=20mm]{images/emblem-system-symbolic}}}$} + + \begin{tikzpicture}[remember picture, overlay] + \node<2-> [at=(current page.center), shape=circle, inner sep=1cm, + fill=white, text=black, opacity=.75, text opacity=.9] { + \Huge{$f^{-1}$}~? + }; + \end{tikzpicture} +\end{frame} + +\begin{frame}[fragile] + \begin{semiverbatim} + \Large{ +\$ guix system \alert{describe} + file name: /var/guix/profiles/system-126-link + canonical file name: /gnu/store/\textsf{\dots{}}-system + label: GNU with Linux-Libre 5.4.15 + bootloader: grub-efi + root device: label: "root" + \alert{channels}: + guix: + repository URL: https://git.savannah.gnu.org/\textsf{\dots{}} + commit: 93f4511eb0c9b33f5083c2a04f4148e0a494059c + \alert{configuration file}: /gnu/store/\textsf{\dots{}}-configuration.scm + } + \end{semiverbatim} + + \begin{tikzpicture}[overlay] + \node at (14,6) [anchor=east, + inner sep=1mm, rotate=-30, shape=star, + fill=guixorange1, text=white] { + \Large{\textbf{New!}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=guixblue1} +\begin{frame} + \Huge{\textbf{Wrap-up.}} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +\setbeamercolor{normal text}{fg=white,bg=guixdarkgrey} +\begin{frame}[fragile] + \LARGE{ + Not included in this talk :-) + \\[1cm] + + \begin{itemize} + \item{ \textbf{embedded} usage + \begin{itemize} + \item Go to K.3.201, Sun. 11:00AM! + \end{itemize} } + \item { \textbf{Guile} \& programming language technology + \begin{itemize} + \item Go to AW1.125, Sun. 11:30AM! + \end{itemize} } + \item{ \textbf{Guix-HPC}: high-performance computing + \begin{itemize} + \item Go to UB.132, Sun. 12:30PM! + \end{itemize}} + \end{itemize} + } +\end{frame} + +\begin{frame}[fragile] + \Huge{\textbf{Join us now, share the parens!}} + \vspace{0.7cm} + \Large{ + \begin{itemize} + \item \textbf{install it!} + \item \textbf{use it!} + \item \textbf{hack it!} + \item \textbf{join} for Outreachy or GSoC! + \end{itemize} + } +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\screenshot{images/guix-scope} + + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[fragile] + \vspace{-2cm} + \begin{tikzpicture} + \matrix[row sep=10mm, column sep=1cm]{ + % https://git-scm.com/downloads/logos + \node {\includegraphics[width=0.2\textwidth]{images/Git-Logo-2Color}}; & + \node {\includegraphics[width=0.15\textwidth]{images/arrow-right}}; & + \node {\includegraphics[width=0.24\textwidth]{images/Guix-horizontal-print}}; + \\ + }; + \end{tikzpicture} + + \begin{tikzpicture}[overlay] + \node [at=(current page.center), anchor=north, + text=black, text width=.9\textwidth]{ + \Huge{\textbf{Reproducible deployment}\\ is + the logical next step. \par + }}; + \end{tikzpicture} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setbeamercolor{normal text}{bg=black} +\begin{frame}[plain] + +\vfill{ + \vspace{1.5cm} + \center{\includegraphics[width=0.3\textwidth]{images/Guix-white}}\\[1.0cm] + \texttt{ludo@gnu.org}\hfill{\alert{\url{https://guix.gnu.org/}}} +} + +\end{frame} + +\begin{frame}{} + + \begin{textblock}{12}(2, 3) + \tiny{ + Copyright \copyright{} 2010, 2012--2020 Ludovic Courtès \texttt{ludo@gnu.org}.\\[3.0mm] + GNU Guix logo, CC-BY-SA 4.0, \url{https://gnu.org/s/guix/graphics} \\ + Reproducible Builds logo under CC-BY 3.0, + \url{https://uracreative.github.io/reproducible-builds-styleguide/visuals/}. \\ + Bootstrappable Builds logo by Ricardo Wurmus, + \url{https://bootstrappable.org}. \\ + Docker whale image by Ricardo Wurmus. \\ + Smoothie image \copyright{} 2019 Ricardo Wurmus, CC-BY-SA 4.0. \\ + Hand-drawn arrows by Freepik from flaticon.com. + \\[1.5mm] + Picture of the sun under CC-BY-SA 3.0, + \url{https://commons.wikimedia.org/wiki/File:\%22Sun\%22.JPG}. \\ + Cloud picture 1 under CC-BY-SA 2.0, + \url{https://commons.wikimedia.org/wiki/File:Cloud_(5018750171).jpg}. \\ + Cloud picture 2 under CC-BY-SA 3.0, + \url{https://commons.wikimedia.org/wiki/File:Cumulunimbus_IMG_5537.JPG}. \\ + Cloud picture 3 under CC-BY-SA 4.0, + \url{https://commons.wikimedia.org/wiki/File:2018-05-18_18_27_24_Low_stratiform_clouds_(base_near_3,000_feet_AGL)_with_wavy,_bumpy_base_viewed_from_Mercer_County_Route_622_(North_Olden_Avenue)_in_Ewing_Township,_Mercer_County,_New_Jersey.jpg}. \\ + Thunder picture under CC-BY-SA 4.0, + \url{https://commons.wikimedia.org/wiki/File:004_2018_05_14_Extremes_Wetter.jpg}. + \\[1.5mm] + Copyright of other images included in this document is held by + their respective owners. + \\[3.0mm] + This work is licensed under the \alert{Creative Commons + Attribution-Share Alike 3.0} License. To view a copy of this + license, visit + \url{http://creativecommons.org/licenses/by-sa/3.0/} or send a + letter to Creative Commons, 171 Second Street, Suite 300, San + Francisco, California, 94105, USA. + \\[2.0mm] + At your option, you may instead copy, distribute and/or modify + this document under the terms of the \alert{GNU Free Documentation + License, Version 1.3 or any later version} published by the Free + Software Foundation; with no Invariant Sections, no Front-Cover + Texts, and no Back-Cover Texts. A copy of the license is + available at \url{http://www.gnu.org/licenses/gfdl.html}. + \\[2.0mm] + % Give a link to the 'Transparent Copy', as per Section 3 of the GFDL. + The source of this document is available from + \url{http://git.sv.gnu.org/cgit/guix/maintenance.git}. + } + \end{textblock} +\end{frame} + +\end{document} + +% Local Variables: +% coding: utf-8 +% comment-start: "%" +% comment-end: "" +% ispell-local-dictionary: "american" +% compile-command: "rubber --pdf talk.tex" +% End: