| 1 | -*- mode: org; coding: utf-8; -*- |
| 2 | |
| 3 | #+TITLE: Tentative GNU Guix Road Map |
| 4 | |
| 5 | Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> |
| 6 | |
| 7 | Copying and distribution of this file, with or without modification, |
| 8 | are permitted in any medium without royalty provided the copyright |
| 9 | notice and this notice are preserved. |
| 10 | |
| 11 | The goals of the GNU Guix project are two-fold: |
| 12 | |
| 13 | - to build a purely functional package manager, based on Nix and |
| 14 | Guile; |
| 15 | |
| 16 | - to use it to build a practical 100% free software distribution of |
| 17 | GNU/Linux and possibly other GNU variants, with a focus on the |
| 18 | promotion and tight integration of GNU components–the GNU system. |
| 19 | |
| 20 | Since its inception, the project has gone a long way towards that goal. Below |
| 21 | is a list of items we want for version "1.0" of the Guix System Distribution. |
| 22 | There will be a few 0.x releases by then to give the new features more |
| 23 | exposure and testing. |
| 24 | |
| 25 | You're welcome to discuss this road map on guix-devel@gnu.org or #guix on |
| 26 | the Libera Chat IRC network! |
| 27 | |
| 28 | * Features scheduled for 1.0 |
| 29 | |
| 30 | - larger & more robust build farm |
| 31 | + we need a powerful, dedicated front-end |
| 32 | + armhf-linux build machine |
| 33 | + leave Hydra in favor of 'guix publish' + custom code? |
| 34 | - more OS features |
| 35 | + LVM support |
| 36 | + encrypted root |
| 37 | + configurable name service switch |
| 38 | + whole-system unit tests, using VMs |
| 39 | - more service definitions |
| 40 | + mcron, postfix(?), wicd(?), etc. |
| 41 | - better 'guix system' |
| 42 | + 'reconfigure' should be able to restart non-essential services |
| 43 | + support for '--list-generations' and '--delete-generations' |
| 44 | - better 'guix pull' |
| 45 | + using Git to fetch the source instead of re-downloading everything |
| 46 | + build more quickly |
| 47 | + install new .mo files and new manual |
| 48 | + authentication of the Guix source: use signed commits? |
| 49 | - simplified, purely declarative service list in 'operating-system' |
| 50 | + it should be possible to inspect the service instance declarations and |
| 51 | settings |
| 52 | - GUIs |
| 53 | + integrate guix-web? |
| 54 | + guile-ncurses installer? |
| 55 | - 'guix publish'? |
| 56 | |
| 57 | * Features for later |
| 58 | |
| 59 | - complete GNU/Hurd port |
| 60 | - use content-based addressing when downloading substitutes to reduce |
| 61 | bandwidth requirements |
| 62 | + design nar v2 format where file contents are replaced by their hashes |
| 63 | + leverage /gnu/store/.links |
| 64 | - binary origin tracking |
| 65 | + keep signatures in sqlite.db |
| 66 | + preserve signatures upon import/export |
| 67 | - peer-to-peer distribution of updates (GNUnet?) |
| 68 | - more deterministic builds |
| 69 | + identify & fix sources of non-determinism in builds |
| 70 | + strengthen guix-daemon containers to further increase reproducibility |
| 71 | + trusting-trust: bootstrap with different tool chains |
| 72 | + fixed-point: re-bootstrap until fixed point is reached |
| 73 | + distributed validation: compare contents of store items with others |
| 74 | * resist a hydra.gnu.org compromise |
| 75 | - reproducible containers: mix of 'guix environment' and 'guix system vm' |
| 76 | - execute code with least privilege |
| 77 | + build containers like guix-daemon does |
| 78 | + provide a Plash-like interface in Bash |
| 79 | - daemon rewritten in Guile |
| 80 | - more shepherd integration |
| 81 | + monitor network interfaces and start/stop events based on that |
| 82 | + include a DHCP client written in Scheme |