Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created...

48
Solving the Deployment Crisis with GNU Guix Christopher Allan Webber & David Thompson Saturday, March 19th, 2016

Transcript of Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created...

Page 1: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Solving the Deployment Crisis withGNU Guix

Christopher Allan Webber amp David Thompson

Saturday March 19th 2016

Setting the stage

Who are we

bull Who is David Thompson

bull Who is Christopher Webber

3

The web we want

4

The sad reality (centralization)

5

The sad reality (censorship)

6

The sad reality (surveillance)

7

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 2: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Setting the stage

Who are we

bull Who is David Thompson

bull Who is Christopher Webber

3

The web we want

4

The sad reality (centralization)

5

The sad reality (censorship)

6

The sad reality (surveillance)

7

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 3: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Who are we

bull Who is David Thompson

bull Who is Christopher Webber

3

The web we want

4

The sad reality (centralization)

5

The sad reality (censorship)

6

The sad reality (surveillance)

7

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 4: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The web we want

4

The sad reality (centralization)

5

The sad reality (censorship)

6

The sad reality (surveillance)

7

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 5: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The sad reality (centralization)

5

The sad reality (censorship)

6

The sad reality (surveillance)

7

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 6: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The sad reality (censorship)

6

The sad reality (surveillance)

7

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 7: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The sad reality (surveillance)

7

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 8: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The sad reality (fragility)

8

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 9: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The sad reality (fragility)

9

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 10: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The sad reality (fragility)

10

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 11: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

The sad reality (fragility)

11

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 12: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Sounds great But

12

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 13: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Stuff is complex to run

13

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 14: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Dependent on phase of the moon

14

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 15: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

One Language Package Manager Per Child

15

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 16: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Have fun managing configuration

16

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 17: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

So docker (Or something like it)

____|II|

__|II|II|__ ( _--rsquo--rsquo--rsquo- __|II|II|II|II|___ __ -rsquo--rsquo--rsquo------------- | [Docker] -------------------------- ---------------------------- ____ o rsquo ------------------------------ rsquo--___________rsquo -----------------

Easy for users ldquoI already built this for you just pull it down anduse itrdquo

17

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 18: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Maybe not (

18

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 19: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Distro-sized static compiling considered hazardous

bull Extremely heavy throws away dynamic linking

bull Hard to introspect rebuild

bull Analysis of Docker Hub over 70 have mediumvulnerabilities 30-40 high (shellshock heartbleed)vulnerabilities 1

bull Reproducible Not in the sense ofhttpsreproducible-buildsorg

bull Dockerrsquos DSL is not expressive

bull Still dependent on ldquophase of the moonrdquo of distributions

1httpwwwbanyanopscombloganalyzing-docker-hub

19

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 20: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Unfortunately itrsquos not just Docker

bull CoreOS

bull xdg-app

bull Qubes

bull Snappy

bull egads

We are losing the ability to reason about free software

A policy issue disguised as a technical issue

If itrsquos too hard to build run and modify software what does thisthis mean for user freedom

20

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 21: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

And so here we are

21

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 22: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Enter Guix amp GuixSD

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 23: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Enter Guix amp GuixSD

23

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 24: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Functional package management

bull Precisely specified dependencies

bull Reproducible builds (same input same output)

bull Built packages are immutable

bull Unprivileged package management

bull Atomic upgrades and roll backs

24

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 25: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Packages capture the full dependency graph

25

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 26: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Your profile my profile

bull Unpriviliged package management (no root privileges needed)

bull Each user may install software without conflicting with otherusers or the system

bull Each user may have many profiles

Guix gives users practical freedom to use different sets of packagesfor different tasks

26

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 27: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Transactional upgrades and rollbacks

Bad upgrade No problem

guix package --roll-back

Congratulations you are now a time wizard

27

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 28: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Like Git for your operating system

28

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 29: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Keep the history until you donrsquot need it

29

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 30: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Development environments

The guix environment tool can be used to quickly createdevelopment environments

Like Pythonrsquos virtualenv but for anything

30

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 31: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Development environments

$ which irbwhich no irb in (runcurrent-systemprofilebin)$ guix environment --ad-hoc ruby ruby-nokogiri$ which irbgnustoreq2ldaivsnfdmvlxnc7hlw5skc9f9xw5g-profilebinirb$ irbirb(main)0010gt require rsquonokogirirsquo=gt trueirb(main)0020gt Nokogiri=gt Nokogiri

31

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 32: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Guix is written in Scheme

32

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 33: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Guix is a library

All data structures procedures etc are exposed as Guile APIs

Using these APIs wersquove implemented

bull Declarative config management (Puppet Chef Salt Ansibleetc)

bull Universal language packaging (PyPI RubyGems ELPACRAN etc)

bull Local dev environments (virtualenv rvm rbenv nvm etc)

bull Local VM creation (Vagrant)

bull Linux containers (Docker rkt lxc etc)

The world is yours to hack

33

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 34: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Full system configuration management

34

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 35: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Package importers

$ guix import pypi pyglet(package

(name python-pyglet)(version 124)(source(origin

(method url-fetch)(uri (pypi-uri pyglet version))(sha256(base320i9la03pm51swv2z8f17bx7qz2yjfxg6hn7i9c42s81bryxzyqlz))))

(build-system python-build-system)(inputslsquo((python-setuptools python-setuptools)))

(home-pagehttppygletreadthedocsorgenpyglet-12-maintenance)

(synopsisCross-platform windowing and multimedia library)

(descriptionCross-platform windowing and multimedia library)

(license bsd-3)) 35

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 36: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Whatrsquos in (gnu)store

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 37: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

guix deploy

bull Remote cluster management tool

bull Provision bare metal VMs containers

bull Complete replacement for Chef Puppet Ansible Salt etc

37

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 38: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Recipe based deployments With a GUI

bull Select pre-built recipes for MediaGoblin Wordpress etc

bull ldquoDonrsquot repeat yourselfldquo configuration

bull Could we make a simple web interface for this

38

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 39: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Sandboxed applications

bull Why should Solitaire have access to your GPGSSH keys

bull Limit web browserrsquos access to your home directory

39

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 40: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Easy installs

bull Graphical distro installer

bull Graphical interface forbull system configurationbull user-specific packagingbull easy roll-backs

40

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 41: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Support for difficult languages that web developers use

NodeJS wersquore looking at you 2

Also Java 3

Send help

2httpdustycloudorgblogjavascript-packaging-dystopia3httplistsgnuorgarchivehtmlguix-devel2016-02msg01396html

41

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 42: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Wrapping up

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 43: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

State of Guix

bull ldquoItrsquos still betardquo

bull But probably more stable than most devops stuff

bull A delight to run (we use it)

bull Easy to develop and get involved in

bull asymp3350 packages

bull asymp20-30 contributors per month and increasing

43

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 44: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Therersquos more to do (and you can help)

bull Test drive Guix or GuixSD and send feedback

bull Write GuixSD system services

bull Improve documentation

bull Improve containers add packages add importers

Talk with the developers via IRC at guix on Freenode or via emailat guix-develgnuorg or help-guixgnuorg

44

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 45: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

A short story

45

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 46: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Credits (p1)

bull Moon image from Le Voyage dans la lune (A Trip to the Moon)public domain Retrieved fromhttpsenwikipediaorgwikiA_Trip_to_the_MoonmediaFileLe_Voyage_dans_la_lunejpg

bull Tar pit image by Ray Bouknight CC BY 20httpswwwflickrcomphotosraybouk8341369957

bull Rena runs aground (container fail image) CC BY 20 httpswwwflickrcomphotosnzdefenceforce6386334175

46

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 47: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Credits (p2)

bull Caminandes video screenshot by Blender Institute CC BY 40httpwwwcaminandescom

bull Chemical warehouse image from Pixabay CC0 httpspixabaycomenwarehouse-chemistry-industry-629641

bull GuixSD logos by Luis Felipe Loacutepez Acevedo CC BY-SA 40httpwwwgnuorgsoftwareguixgraphics

bull Docker + Twitter image by Karen Rustad

bull Slight snippet from Guix (grep package) GPLv3 or later

47

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up
Page 48: Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created Date: 3/19/2016 10:11:36 AM ...

Thanks Questions

copy 2016 Christopher Allan Webber ltcwebberdustycloudorggtcopy 2016 David Thompson ltdavetgnuorggt

This presentation is licensed under the Creative CommonsAttribution Share-Alike 40 International license

More on Guix httpsgnuorgsoftwareguix48

  • Setting the stage
  • Enter Guix amp GuixSD
  • Whatrsquos in (gnu)store
  • Wrapping up