Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created...
Transcript of Solving the Deployment Crisis with GNU Guix · Christopher Allan Webber & David Thompson Created...
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-