gnu: r-wgcna: Move to (gnu packages bioconductor).
[jackhill/guix/guix.git] / ROADMAP
diff --git a/ROADMAP b/ROADMAP
dissimilarity index 70%
index 6c0e2c5..2475cb6 100644 (file)
--- a/ROADMAP
+++ b/ROADMAP
@@ -1,64 +1,82 @@
--*- mode: org; coding: utf-8; -*-
-
-#+TITLE: Tentative GNU Guix Road Map
-
-Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
-
-  Copying and distribution of this file, with or without modification,
-  are permitted in any medium without royalty provided the copyright
-  notice and this notice are preserved.
-
-The goals of the GNU Guix project are two-fold:
-
-  - to build a purely functional package manager, based on Nix and
-    Guile;
-
-  - to use it to build a practical 100% free software distribution of
-    GNU/Linux and possibly other GNU variants, with a focus on the
-    promotion and tight integration of GNU components.
-
-This documents lists tentative milestones toward these goals.
-
-
-* GNU Guix 0.1: Jan. 2013 (was: Dec. 2012)
-
-** basic package management facilities
-
-Including install, upgrade, remove, roll-back, and search.
-
-** self-contained user-land distribution
-
-  - GNU/Linux-only, i686 and x86_64; optionally mipsel64
-  - ~100 non-X11 packages
-
-** maybe integrated Nix code
-
-* GNU Guix 0.2: Feb./Mar. 2013
-
-** improved package management features
-
-  - user-environment hooks
-  - sophisticated handling of collisions when building a union (package
-    priorities, etc.)
-
-** [[file:TODO::*add%20guix-pull][guix-pull tool]] to quickly update Guix and GNU for normal users
-** support for fetching pre-built binaries
-
-  - this is known as the "binary-cache substituter" in Nix parlance
-
-** auto-update facility available for GNU packages
-
-** more packages
-
-  - Xorg
-  - Emacs
-
-* GNU Guix 0.9: June 2013
-
-** bootable GNU/Linux-Libre distro
-** high-level OS configuration descriptive EDSL, à la NixOS
-
-* GNU Guix 1.0: September 2013 (GNU anniversary release)
-
-** bootable GNU/Linux-Libre distro with non-GUI installer
-** usable for a range of hacker-style uses
+-*- mode: org; coding: utf-8; -*-
+
+#+TITLE: Tentative GNU Guix Road Map
+
+Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+
+  Copying and distribution of this file, with or without modification,
+  are permitted in any medium without royalty provided the copyright
+  notice and this notice are preserved.
+
+The goals of the GNU Guix project are two-fold:
+
+  - to build a purely functional package manager, based on Nix and
+    Guile;
+
+  - to use it to build a practical 100% free software distribution of
+    GNU/Linux and possibly other GNU variants, with a focus on the
+    promotion and tight integration of GNU components–the GNU system.
+
+Since its inception, the project has gone a long way towards that goal.  Below
+is a list of items we want for version "1.0" of the Guix System Distribution.
+There will be a few 0.x releases by then to give the new features more
+exposure and testing.
+
+You're welcome to discuss this road map on guix-devel@gnu.org or #guix on
+Freenode!
+
+* Features scheduled for 1.0
+
+  - larger & more robust build farm
+    + we need a powerful, dedicated front-end
+    + armhf-linux build machine
+    + leave Hydra in favor of 'guix publish' + custom code?
+  - more OS features
+    + LVM support
+    + encrypted root
+    + configurable name service switch
+    + whole-system unit tests, using VMs
+  - more service definitions
+    + mcron, postfix(?), wicd(?), etc.
+  - better 'guix system'
+    + 'reconfigure' should be able to restart non-essential services
+    + support for '--list-generations' and '--delete-generations'
+  - better 'guix pull'
+    + using Git to fetch the source instead of re-downloading everything
+    + build more quickly
+    + install new .mo files and new manual
+    + authentication of the Guix source: use signed commits?
+  - simplified, purely declarative service list in 'operating-system'
+    + it should be possible to inspect the service instance declarations and
+      settings
+  - GUIs
+    + integrate guix-web?
+    + guile-ncurses installer?
+  - 'guix publish'?
+
+* Features for later
+
+  - complete GNU/Hurd port
+  - use content-based addressing when downloading substitutes to reduce
+    bandwidth requirements
+    + design nar v2 format where file contents are replaced by their hashes
+    + leverage /gnu/store/.links
+  - binary origin tracking
+    + keep signatures in sqlite.db
+    + preserve signatures upon import/export
+  - peer-to-peer distribution of updates (GNUnet?)
+  - more deterministic builds
+    + identify & fix sources of non-determinism in builds
+    + strengthen guix-daemon containers to further increase reproducibility
+    + trusting-trust: bootstrap with different tool chains
+    + fixed-point: re-bootstrap until fixed point is reached
+    + distributed validation: compare contents of store items with others
+      * resist a hydra.gnu.org compromise
+  - reproducible containers: mix of 'guix environment' and 'guix system vm'
+  - execute code with least privilege
+    + build containers like guix-daemon does
+    + provide a Plash-like interface in Bash
+  - daemon rewritten in Guile
+  - more shepherd integration
+    + monitor network interfaces and start/stop events based on that
+    + include a DHCP client written in Scheme