Commit | Line | Data |
---|---|---|
b6dd891c LC |
1 | -*- mode: org; coding: utf-8; -*- |
2 | ||
3 | #+TITLE: Tentative GNU Guix Road Map | |
4 | ||
5bf6b86f | 5 | Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> |
b6dd891c LC |
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 | |
48ad99db | 18 | promotion and tight integration of GNU components–the GNU system. |
b6dd891c | 19 | |
5bf6b86f LC |
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 | Freenode! | |
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 | |
171a0a13 | 80 | - more shepherd integration |
5bf6b86f LC |
81 | + monitor network interfaces and start/stop events based on that |
82 | + include a DHCP client written in Scheme |