aboutsummaryrefslogtreecommitdiff
-*- 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
the Libera Chat IRC network!

* 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
ooltip'>* gnu/packages/patches/ungoogled-chromium-system-nspr.patch, gnu/packages/patches/ungoogled-chromium-system-opus.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 90. (debian-patch): Make REVISION optional, default to %DEBIAN-REVISION. (%chromium-version): New variable. (%ungoogled-revision): Set to 90.0.4430.85-1-11-g3184907. (%debian-revision): Set to debian/90.0.4430.85-1. (%debian-patches): Add more patches; update hashes. (%ungoogled-origin): Update hash. (%guix-patches): Remove obsolete patches. (libvpx/chromium): Update to 1.9.0-147-g61edec1ef. (ungoogled-chromium)[version]: Base on %CHROMIUM-REVISION and the last component of %UNGOOGLED-REVISION, a 'git describe --long' style ID. [arguments]: Add build_with_flite_lib in #:configure-flags. Add openjpeg substitution in #:phases. Marius Bakke 2021-04-10gnu: Remove unused module imports....* gnu/packages/chromium.scm: Don't import (guix store) and (guix monads). Marius Bakke 2021-04-10gnu: ungoogled-chromium: Update to 89.0.4389.114-1....* gnu/packages/chromium.scm (%ungoogled-revision): Set to 89.0.4389.114-1. (%ungoogled-origin, ungoogled-chromium): Update hashes. Marius Bakke 2021-03-19gnu: ungoogled-chromium: Update to 89.0.4389.90-1....* gnu/packages/patches/ungoogled-chromium-system-opus.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 89. (%chromium-version): Remove variable. (%ungoogled-revision): Set to 89.0.4389.90-1. (%ungoogled-origin): Conditionally set file name based on commit/tag. (%guix-patches): Add the new file. (libvpx/chromium): Update to 1.9.0-104-gb5d77a48d. (ungoogled-chromium)[version]: Use %UNGOOGLED-REVISION. [source]: Update hash. [arguments]: Adjust #:configure-flags for build system changes. Don't build with external WebRTC SSL library. Remove obsolete substitution. [inputs]: Remove OPENSSL. Change from PIPEWIRE to PIPEWIRE-0.3. Marius Bakke 2021-03-10gnu: ungoogled-chromium: Add xdg-utils to PATH with wrapper....This will ensure that 'mailto:' links work out of the box, among others. * gnu/packages/chromium.scm (ungoogled-chromium): Modify replacement 'install phase to add xdg-utils to PATH with wrap-program. Léo Le Bouter 2021-02-21gnu: ungoogled-chromium: Update to 88.0.4324.182-0.b98f2d5....* gnu/packages/chromium.scm (%chromium-version): Set to -88.0.4324.182. (%ungoogled-revision): Set to 27c9e9fabd38001b32d148f7b3f99b4d31e67277. (%ungoogled-origin, ungoogled-chromium): Update hashes. Marius Bakke 2021-02-07gnu: ungoogled-chromium: Update to 88.0.4324.150-0.f7c33de [fixes CVE-2021-21......* gnu/packages/chromium.scm (%chromium-version): Set to 88.0.4324.150. (%ungoogled-revision): Set to f7c33ded1674556b6e9e72d597c706666f490da8. (%ungoogled-origin, ungoogled-chromium): Update hashes. Marius Bakke 2021-02-03gnu: ungoogled-chromium: Update to 88.0.4324.146-0.d8e821c....* gnu/packages/chromium.scm (%chromium-version): Set to 88.0.4324.146. (%ungoogled-revision): Set to d8e821c16212647250ea6d848537e92b1b739f82. (%ungoogled-origin, ungoogled-chromium): Update hashes. Marius Bakke 2021-02-03gnu: ungoogled-chromium: Remove unused input....* gnu/packages/chromium.scm (ungoogled-chromium)[inputs]: Remove DBUS-GLIB. Marius Bakke 2021-01-30gnu: ungoogled-chromium: Update to 88.0.4324.104-0.4e2679c....* gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 88. (%chromium-version): Set to 88.0.4324.104. (%ungoogled-revision): Set to 4e2679ce15a53925b34a95aa3e1731751530dc22. (%ungoogled-origin): Update hash. (libvpx/chromium): New variable. (ungoogled-chromium): Update hash. [arguments]: Patch one file for compatibility with system ICU. [inputs]: Change from ICU4C-67 to ICU4C-68. Change from LIBVPX to LIBVPX/CHROMIUM. Marius Bakke 2021-01-12gnu: ungoogled-chromium: Update to 87.0.4280.141-0.483a1ba....* gnu/packages/chromium.scm (%chromium-version): Set to 87.0.4280.141. (%ungoogled-revision): Set to 483a1bae4eee601c7d0a4a63499380e40e4f8a44. (%ungoogled-origin, ungoogled-chromium): Update hashes. Marius Bakke 2020-12-05gnu: ungoogled-chromium: Update to 87.0.4280.88-0.b78cb92 [security fixes]....* gnu/packages/chromium.scm (%chromium-version): Set to 87.0.4280.88. (%ungoogled-revision): Set to b78cb927fa8beaee0ddfb4385277edb96444c40f. (%ungoogled-origin): Update URL and hash. (ungoogled-chromium): Update hash. [arguments]: Fix inverted logic in max link jobs. Marius Bakke 2020-11-23gnu: ungoogled-chromium: Update to 87.0.4280.66-0.1f7cdef....* gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 87. (arch-patch, %arch-revision, %arch-patches): Remove. (ungoogled-chromium-snippet): Remove %ARCH-PATCHES. (%ungoogled-revision): Set to 1f7cdef6dfa8f612afde8f988131f210612333e0. (%chromium-version): Set to 87.0.4280.66. (ungoogled-chromium)[source]: Update hash. [arguments]: Adjust #:configure-flags for changes in 87. Enable Pipewire support in WebRTC. [native-inputs]: Add WAYLAND. [inputs]: Add PIPEWIRE and WAYLAND. (ungoogled-chromium/wayland): Implement as a wrapper over UNGOOGLED-CHROMIUM. * gnu/packages/patches/ungoogled-chromium-system-nspr.patch: Adjust for 87. Marius Bakke 2020-11-12gnu: ungoogled-chromium: Update to 86.0.4240.198-0.b68e17f [security fixes]....This fixes CVE-2020-16013 and CVE-2020-16017. * gnu/packages/chromium.scm (%chromium-version): Set to 86.0.4240.198. (ungoogled-chromium): Update hash. Marius Bakke 2020-11-10gnu: ungoogled-chromium: Update to 86.0.4240.193-0.b68e17f....* gnu/packages/chromium.scm (%chromium-version): Set to 86.0.4240.193. (ungoogled-chromium): Update hash. Marius Bakke 2020-11-05gnu: chromium: Silent 'local-file' warning....This is a followup to fddc87063231f8f9aa22bbbc5bca4a46b9bbf004. * gnu/packages/chromium.scm (%guix-patches): Use 'assume-valid-file-name'. Ludovic Courtès 2020-11-05gnu: ungoogled-chromium: Fix hardware acceleration....* gnu/packages/chromium.scm (ungoogled-chromium)[arguments]: Patch in absolute file name of libGL.so, and install Chromiums own libEGL.so and libGLESv2.so. Marius Bakke 2020-11-05gnu: ungoogled-chromium: Update to 86.0.4240.183-0.b68e17f [security fixes]....This fixes CVE-2020-16004, CVE-2020-16005, CVE-2020-16006, CVE-2020-16007, CVE-2020-16008, CVE-2020-16009, and CVE-2020-16011. * gnu/packages/chromium.scm (%ungoogled-revision, %ungoogled-origin): Update to b68e17f. (ungoogled-chromium): Update to 86.0.4240.183. Marius Bakke 2020-11-05gnu: ungoogled-chromium: Add search path for installed extensions....* gnu/packages/patches/ungoogled-chromium-extension-search-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/chromium.scm (%guix-patches): New variable. (ungoogled-chromium-snippet): Apply %GUIX-PATCHES. (ungoogled-chromium)[arguments]: Don't hard-code extensions directory. [native-search-paths]: New field. Marius Bakke 2020-10-22gnu: ungoogled-chromium: Update to 86.0.4240.111-0.c34a56d [security fixes]....This fixes CVE-2020-15999, CVE-2020-16000, CVE-2020-16001, CVE-2020-16002, and CVE-2020-16003. * gnu/packages/chromium.scm (ungoogled-chromium): Update to 86.0.4240.111-0.c34a56d. Marius Bakke 2020-10-22gnu: ungoogled-chromium: Embed absolute references to libGL and friends....* gnu/packages/chromium.scm (ungoogled-chromium)[arguments]: Provide absolute references to dlopen'd Mesa libraries. Marius Bakke 2020-10-19gnu: ungoogled-chromium: Update to 86.0.4240.75-0.c34a56d....* gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 86. Include bundled libc++, jsoncpp, re2 and libvpx for now. (gentoo-patch, chromium-gcc-patchset, %gentoo-patches, %gentoo-revision, xcb-proto/python2): Remove variables. (%debian-revision, %debian-patches): Update to debian/84.0.4147.105-1. Remove jsoncpp unbundling patch. (%ungoogled-revision, %ungoogled-origin): Update to c34a56db4c121238fface560. (%chromium-version, arch-patch, %arch-revision): New variables. (%arch-patches): Add more patches. (ungoogled-chromium-snippet): Don't apply GCC or Gentoo patches. Don't unbundle libvpx or re2. (ungoogled-chromium): Update to 86.0.4240.75-0.c34a56d. [arguments]: Adjust #:configure-flags and substitutions for 86. Add workaround for building with bundled libc++. Adjust install phase to take a hard coded list of files instead of using SCANDIR and REGEXP-EXEC. [native-inputs]: Change from CLANG-10 to CLANG-11. [inputs]: Remove JSONCPP, RE2 and XCB-PROTO/PYTHON2. Marius Bakke 2020-08-19gnu: ungoogled-chromium: Update to 84.0.4147.125-0.57244cd....* gnu/packages/chromium.scm (%ungoogled-revision, %ungoogled-origin): Update to commit 57244cdfc21dc05910862152d91cc528103c988a. (ungoogled-chromium): Update to 84.0.4147.125. Marius Bakke 2020-07-30gnu: ungoogled-chromium: Update to 84.0.4147.105-0.cc3e311....* gnu/packages/chromium.scm (%ungoogled-revision, %ungoogled-origin): Update to cc3e311f33519a5ba961ad1f1dc19507ce98b0d2. (ungoogled-chromium): Update to 84.0.4147.105-0. Marius Bakke 2020-07-26gnu: ungoogled-chromium: Use tcmalloc....* gnu/packages/chromium.scm (%preserved-third-party-files): Preserve the bundled fork of tcmalloc. (ungoogled-chromium)[arguments]: Remove "use_allocator" from #:configure-flags. Marius Bakke 2020-07-23gnu: ungoogled-chromium: Avoid top-level reference to LLD....* gnu/packages/chromium.scm (lld-as-ld, lld-wrapper, lld/wrapped): Move into ... (make-lld-wrapper): ... here. New procedure. Marius Bakke 2020-07-23gnu: ungoogled-chromium: Enable all release optimizations....* gnu/packages/chromium.scm (ungoogled-chromium-snippet): Add substitution to allow using unbundled dependencies in "official" builds. (lld-as-ld, lld-wrapper, lld/wrapped): New variables. (ungoogled-chromium)[arguments]: Add "is_official_build" to #:configure-flags. Remove redundant or unnecessary flags, disable system protobuf. Use llvm-ar and llvm-nm instead of their binutils equivalents. [native-inputs]: Add LLD/WRAPPED. [inputs]: Remove PROTOBUF. Marius Bakke 2020-07-23gnu: ungoogled-chromium: Add VA-API fix for some Intel systems....* gnu/packages/chromium.scm (%arch-patches): New variable. (ungoogled-chromium-snippet): Use it. Marius Bakke 2020-07-19gnu: ungoogled-chromium: Update to 84.0.4147.89-0.df199c0....* gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch, gnu/packages/patches/ungoogled-chromium-system-zlib.patch: Delete files. * gnu/packages/patches/ungoogled-chromium-system-nspr.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 84. (%ungoogled-revision): Set to df199c04ff367da59ce52a23a3f3b305dd3b00c3. (%debian-revision): Set to debian/83.0.4103.116-3. (%gentoo-revision): Set to f3f649046d31ebdbc8c4a302b2384504eff78027. (chromium-gcc-patchset, %chromium-gcc-patches): New variables. (%gentoo-patches): Remove GCC patches, which have been moved to the above repo. Add ffmpeg compatibility patch. (%debian-patches): Add zlib and jsoncpp patch; remove nspr patch. (%ungoogled-origin): Update hash. (ungoogled-chromium-snippet): Add the new GCC patches. Remove obsolete local patches, add new. (xcb-proto/python2): New variable. (ungoogled-chromium): Update to 84.0.4147.89-0..df199c0. [arguments]: Add "is_unsafe_developer_build", "max_jobs_per_link", "exclude_unwind_tables", "xcbproto_path", "perfetto_use_system_protobuf" to #:configure-flags. Remove "linux_use_bundled_binutils". Adjust vulkan header substitutions. [native-inputs]: Remove YASM. [inputs]: Change from FFMPEG-4.2 to FFMPEG. Add PROTOBUF and XCB-PROTO/PYTHON2. Marius Bakke 2020-06-26gnu: ungoogled-chromium: Inline %PACKAGE-VERSION....* gnu/packages/chromium.scm (%chromium-version, package-revision, %package-version): Remove. (ungoogled-chromium)[version, source]: Adjust accordingly. Marius Bakke 2020-06-26gnu: ungoogled-chromium: Remove all Blink performance tests....* gnu/packages/chromium.scm (%blacklisted-files): New variable. (ungoogled-chromium-snippet): Adjust accordingly. Marius Bakke 2020-06-26gnu: ungoogled-chromium: Convert computed origin to source snippet....* gnu/packages/chromium.scm (computed-origin-method, %chromium-origin): Remove. (ungoogled-chromium-source): Rename to ... (ungoogled-chromium-snippet): ... this. Adjust for running as snippet. (ungoogled-chromium)[source]: Use URL-FETCH, with custom snippet. Marius Bakke 2020-06-23gnu: ungoogled-chromium: Update to 83.0.4103.116-0.f08ce8b [fixes CVE-2020-65......* gnu/packages/chromium.scm (%chromium-version): Set to 83.0.4103.116. (%ungoogled-origin): Update hash. Marius Bakke 2020-06-22gnu: ungoogled-chromium: Update to 83.0.4103.106-0.f08ce8b [security fixes]....This fixes CVE-2020-6465, CVE-2020-6466, CVE-2020-6467, CVE-2020-6468, CVE-2020-6469, CVE-2020-6470, CVE-2020-6471, CVE-2020-6472, CVE-2020-6473, CVE-2020-6474, CVE-2020-6475, CVE-2020-6476, CVE-2020-6477, CVE-2020-6478, CVE-2020-6479, CVE-2020-6480, CVE-2020-6481, CVE-2020-6482, CVE-2020-6483, CVE-2020-6484, CVE-2020-6485, CVE-2020-6486, CVE-2020-6487, CVE-2020-6488, CVE-2020-6489, CVE-2020-6490, CVE-2020-6491, CVE-2020-6493, CVE-2020-6494, CVE-2020-6495, CVE-2020-6496, CVE-2020-6497, and CVE-2020-6498. * gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch, gnu/packages/patches/ungoogled-chromium-system-zlib.patch: New files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 83. (%chromium-version): Set to 83.0.4103.106. (%ungoogled-revision): Set to f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d. (%gentoo-revision, %gentoo-patches, %debian-patches): New variables. (gentoo-patch, debian-patch): New procedures. (%chromium-origin, %ungoogled-origin): Update hashes. (ungoogled-chromium-source): Don't apply patches from %DEBIAN-ORIGIN, but take %GENTOO-PATCHES, %DEBIAN-PATCHES, and the local patch files. (ungoogled-chromium)[arguments]: Remove "enable_swiftshader=false" from #:configure-flags. Add "icu_use_data_file=false". Set CFLAGS in phase. Remove obsolete substitution. Adjust install phase to install .so files for ANGLE and Swiftshader. [native-inputs]: Change from CLANG-9 to CLANG-10. [inputs]: Replace ICU4C with ICU4C-67. (ungoogled-chromium/wayland): Remove obsolete substitution. Add "ozone_platform_x11=true" in #:configure-flags. Marius Bakke 2020-06-22gnu: ungoogled-chromium: Specify CPE name....* gnu/packages/chromium.scm (ungoogled-chromium)[properties]: Add CPE-NAME. Marius Bakke 2020-06-22gnu: ungoogled-chromium: Remove non-free file....* gnu/packages/chromium.scm (ungoogled-chromium-source): Remove (unused) SVG file that is licensed under a NoDerivatives license. Marius Bakke 2020-06-22gnu: ungoogled-chromium: Build with ffmpeg@4.2....Fixes <https://bugs.gnu.org/41987>. Reported by Jonathan Brielmaier <jonathan.brielmaier@web.de>. * gnu/packages/video.scm (ffmpeg-4.2): New public variable. * gnu/packages/chromium.scm (ungoogled-chromium)[inputs]: Change from FFMPEG to FFMPEG-4.2. Marius Bakke