doc: Add a REPL example.
[guix.git] / ROADMAP
blob45fce45912364e1dbedd0c3724ef4e140815c456
1 -*- mode: org; coding: utf-8; -*-
3 #+TITLE: Tentative GNU Guix Road Map
5 Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
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.
11 The goals of the GNU Guix project are two-fold:
13   - to build a purely functional package manager, based on Nix and
14     Guile;
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.
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.
25 You're welcome to discuss this road map on guix-devel@gnu.org or #guix on
26 Freenode!
28 * Features scheduled for 1.0
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'?
57 * Features for later
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 dmd integration
81     + monitor network interfaces and start/stop events based on that
82     + include a DHCP client written in Scheme