The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic...

53
The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Court ` es [email protected] FOSDEM 31 January 2015

Transcript of The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic...

Page 1: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

The Emacs of DistrosHow GNU Guix Seeks to Empower Users

Ludovic [email protected]

FOSDEM31 January 2015

Page 2: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Emacs MakesAll Computing Simple!

or Emacs Makes A Computer Slow?

Page 3: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Emacs MakesAll Computing Simple!

or Emacs Makes A Computer Slow?

Page 4: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

freedom #1→ system design

0. run1. study & modify2. redistribute3. redistribute modified versions

Page 5: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

freedom #1→ system design

0. run1. study & modify2. redistribute3. redistribute modified versions

Page 6: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

When large numbers ofnontechnical workers are using aprogrammable editor, they will betempted constantly to beginprogramming in the course of theirday-to-day lives. This shouldcontribute greatly to computerliteracy [...]

– Stallman, 1981

Page 7: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015
Page 8: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

the barriers to distro hacking

I packaging, ability to extendI package management toolsI esoteric configurationI implementation language barriers

Page 9: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015
Page 10: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

M-x guix-demo

Page 11: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

workflow(define foo (package ...)) user

Page 12: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

workflow(define foo (package ...)) user

guix build foo

/gnu/store/...-foo-1.0

test

Page 13: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

workflow(define foo (package ...)) user

guix build foo

/gnu/store/...-foo-1.0

git push git.sv.gnu.org

test

Page 14: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

workflow(define foo (package ...)) user

guix build foo

/gnu/store/...-foo-1.0hydra.gnu.org

build farm

git push git.sv.gnu.org

test

pull

pull

Page 15: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

workflow(define foo (package ...)) user

guix build foo

/gnu/store/...-foo-1.0hydra.gnu.org

build farm

git push git.sv.gnu.org

test

pull

pull

get binary

Page 16: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

workflow(define foo (package ...)) user

guix build foo

/gnu/store/...-foo-1.0

git push git.sv.gnu.org

test

pull

Page 17: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

workflow(define foo (package ...)) user

guix build foo

/gnu/store/...-foo-1.0

git push git.sv.gnu.org

test

no “maintainer uploads”

no single point of trust

Page 18: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

reproducible builds∗∗ almost!

$ guix build guile

/gnu/store/ h2g4sc09h4... -guile-2.0.11

$ guix gc --references /gnu/store/...-guile-2.0.11

/gnu/store/4jl83jgzaac...-glibc-2.20

/gnu/store/iplay43cg58...-libunistring-0.9.3

/gnu/store/47p47v92cj9...-libffi-3.0.9

/gnu/store/drkwck2j965...-gmp-5.0.5

...

isolated build: chroot, separate name spaces, etc.

Page 19: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

reproducible builds∗∗ almost!

$ guix build guile

/gnu/store/ h2g4sc09h4... -guile-2.0.11

$ guix gc --references /gnu/store/...-guile-2.0.11

/gnu/store/4jl83jgzaac...-glibc-2.20

/gnu/store/iplay43cg58...-libunistring-0.9.3

/gnu/store/47p47v92cj9...-libffi-3.0.9

/gnu/store/drkwck2j965...-gmp-5.0.5

...

hash of all the dependencies

Page 20: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

reproducible builds∗∗ almost!

$ guix build guile

/gnu/store/ h2g4sc09h4... -guile-2.0.11

$ guix gc --references /gnu/store/...-guile-2.0.11

/gnu/store/4jl83jgzaac...-glibc-2.20

/gnu/store/iplay43cg58...-libunistring-0.9.3

/gnu/store/47p47v92cj9...-libffi-3.0.9

/gnu/store/drkwck2j965...-gmp-5.0.5

...

Page 21: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

reproducible builds∗∗ almost!

$ guix build guile

/gnu/store/ h2g4sc09h4... -guile-2.0.11

$ guix gc --references /gnu/store/...-guile-2.0.11

/gnu/store/4jl83jgzaac...-glibc-2.20

/gnu/store/iplay43cg58...-libunistring-0.9.3

/gnu/store/47p47v92cj9...-libffi-3.0.9

/gnu/store/drkwck2j965...-gmp-5.0.5

...

(nearly) bit-identical for everyone

Page 22: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015
Page 23: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

M-x hack-the-distro

Page 24: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

build processeschroot, separate UIDs

Gui

le,m

ake,

etc.

Gui

le,m

ake,

etc.

Gui

le,m

ake,

etc. Guile

(guix packages)

(guix store)

build daemon

Page 25: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

build processeschroot, separate UIDs

Gui

le,m

ake,

etc.

Gui

le,m

ake,

etc.

Gui

le,m

ake,

etc. Guile

(guix packages)

(guix store)

build daemon RPCs

Page 26: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

build processeschroot, separate UIDs

Gui

le,m

ake,

etc.

Gui

le,m

ake,

etc.

Gui

le,m

ake,

etc. Guile

(guix packages)

(guix store)

build daemon RPCs

Page 27: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

M-x

customize-operating-system

Page 28: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Linux-libre

Page 29: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Linux-libre

initial RAM disk

Page 30: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Linux-libre

initial RAM disk Guile!

Page 31: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Linux-libre

initial RAM disk

PID 1: GNU dmdservices...

Guile!

Page 32: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Linux-libre

initial RAM disk

PID 1: GNU dmdservices...

Guile!

Guile!

Page 33: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Linux-libre

initial RAM disk

PID 1: GNU dmdservices...

?

Guile!

Guile!

Page 34: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

M-x guix-status

Page 35: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

timeline

I Nov. 2012 — dubbed GNUI Jan. 2013 — 0.1I ...I Apr. 2014 — 0.6, signed binaries, guix system

I July 2014 — 0.7, installable operating system!I Nov. 2014 — 0.8, device mapping, more services, etc.

I 29 Jan. 2015 — 0.8.1, ARMv7 port, bug fixesI 30 Jan. 2015 — officially FSDG-compliant!

Page 36: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

timeline

I Nov. 2012 — dubbed GNUI Jan. 2013 — 0.1I ...I Apr. 2014 — 0.6, signed binaries, guix system

I July 2014 — 0.7, installable operating system!I Nov. 2014 — 0.8, device mapping, more services, etc.I 29 Jan. 2015 — 0.8.1, ARMv7 port, bug fixes

I 30 Jan. 2015 — officially FSDG-compliant!

Page 37: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

timeline

I Nov. 2012 — dubbed GNUI Jan. 2013 — 0.1I ...I Apr. 2014 — 0.6, signed binaries, guix system

I July 2014 — 0.7, installable operating system!I Nov. 2014 — 0.8, device mapping, more services, etc.I 29 Jan. 2015 — 0.8.1, ARMv7 port, bug fixesI 30 Jan. 2015 — officially FSDG-compliant!

Page 38: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

status

status

Page 39: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

status

I full-featured package managerI 1,200 packages, 4 platformsI Guix System Distributionβ

I binaries at http://hydra.gnu.orgI tooling: auto-update, “linting”, etc.I l10n: 8 languages!

Page 40: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015
Page 41: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015
Page 42: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

thanks for the code, reports, ideas,build machines...

I Eric Bavier, Taylan Ulrich Bayirli/Kammer, Federico Beffa,Marek Benc, Sou Bunnbu, Tomas Cech, John Darrington,Eelco Dolstra & the Nix crew, Andreas Enge, Alırio Eyng,Joshua Grant, Raimon Grau, Nikita Karetnikov, Alex Kost,Julien Lepiller, Aljosha Papsch, Deck Pickard, ManolisRagkousis, Cyril Roelandt, Alex Sassmannshausen, CyrillSchenkel, Jason Self, Sree Harsha Totakura, DavidThompson, Mark H. Weaver, Ricardo Wurmus

I Lluıs Batlle i Rossell, Daniel Clark, Alexandru Cojocaru,Aleix Conchillo Flaque, Rafael Ferreira, Christian Grothoff,Jeffrin Jose, Kete, Matthew Lien, Niels Moller, YutakaNiibe, Adam Pribyl, Benno Schulenberg, Alen Skondro,Matthias Wachs, Zerwas

I Inria for allowing me to travel to Brussels

Page 43: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

work in progress

I big packages: IcedTea, LibreOffice, KDE,etc.

I GNU/Hurd port (Manolis Ragkousis)I guix web: Web UI (David Thompson)I guix publish: publish substitutes (David

Thompson)I ...

Page 44: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

the road to 1.0

0. OS features: LVM, wicd(?), etc.1. more service definitions

2. improved guix system reconfigure

3. authenticated guix pull (signed commits?)4. user interfaces: Emacs, web, curses(?)5. larger, more robust build farm...6. less dog food...7. more packages...8. your idea here

Page 45: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

the road to 1.0

0. OS features: LVM, wicd(?), etc.1. more service definitions2. improved guix system reconfigure

3. authenticated guix pull (signed commits?)4. user interfaces: Emacs, web, curses(?)5. larger, more robust build farm...6. less dog food...7. more packages...8. your idea here

Page 46: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

the road to 1.0

0. OS features: LVM, wicd(?), etc.1. more service definitions2. improved guix system reconfigure

3. authenticated guix pull (signed commits?)

4. user interfaces: Emacs, web, curses(?)5. larger, more robust build farm...6. less dog food...7. more packages...8. your idea here

Page 47: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

the road to 1.0

0. OS features: LVM, wicd(?), etc.1. more service definitions2. improved guix system reconfigure

3. authenticated guix pull (signed commits?)4. user interfaces: Emacs, web, curses(?)

5. larger, more robust build farm...6. less dog food...7. more packages...8. your idea here

Page 48: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

the road to 1.0

0. OS features: LVM, wicd(?), etc.1. more service definitions2. improved guix system reconfigure

3. authenticated guix pull (signed commits?)4. user interfaces: Emacs, web, curses(?)5. larger, more robust build farm...6. less dog food...7. more packages...

8. your idea here

Page 49: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

the road to 1.0

0. OS features: LVM, wicd(?), etc.1. more service definitions2. improved guix system reconfigure

3. authenticated guix pull (signed commits?)4. user interfaces: Emacs, web, curses(?)5. larger, more robust build farm...6. less dog food...7. more packages...8. your idea here

Page 50: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

I install the distributionI use it, report bugs, add packagesI help with the infrastructure + adminI share your ideas!

your help needed!

Page 51: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

[email protected] http://gnu.org/software/guix/

Page 52: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

credits

I GNU Guix logo, GFDL, http://gnu.org/s/guix/graphics

I NSA SIGDEV slide, http://www.heise.de/ct/artikel/NSA-GCHQ-The-HACIENDA-Program-for-Internet-Colonization-2292681.

html

I dog food, http://en.wikipedia.org/wiki/File:Kibbles_How_Others_See_Me.jpg

I commit stats & project summary,https://www.openhub.net/p/gnuguix

Page 53: The Emacs of Distros - GNU · The Emacs of Distros How GNU Guix Seeks to Empower Users Ludovic Courtes` ludo@gnu.org FOSDEM 31 January 2015

Copyright c© 2010, 2012, 2013, 2014 Ludovic Courtes [email protected] of other images included in this document is held by their respective owners.

This work is licensed under the Creative Commons Attribution-Share Alike 3.0 License. To view acopy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter toCreative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

At your option, you may instead copy, distribute and/or modify this document under the terms of theGNU Free Documentation License, Version 1.3 or any later version published by the Free SoftwareFoundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of thelicense is available at http://www.gnu.org/licenses/gfdl.html.

The source of this document is available from http://git.sv.gnu.org/cgit/guix/maintenance.git.