unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add ungoogled-chromium.
@ 2019-02-02 19:20 ` Marius Bakke
  2019-02-03 18:16   ` Joshua Branson
                     ` (3 more replies)
  0 siblings, 4 replies; 57+ messages in thread
From: Marius Bakke @ 2019-02-02 19:20 UTC (permalink / raw)
  To: guix-devel; +Cc: 28004

Thanks to Marks beautiful "computed-origin-method", Ungoogled-Chromium
is finally ready for inclusion in Guix.

Features:
* Chromium 72.
* No unsolicited network traffic.
* Free software only.
* No DRM.
* Not an April Fools joke.

It's currently using my trivial "fork" of Ungoogled-Chromium[0], which
will be upstreamed once the upstream reorganization[1] is done.

Comments appreciated!

[0]: https://github.com/mbakke/ungoogled-chromium/commit/f9b9074c322a67b04baf0982797cd7b7e09614b5
[1]: https://github.com/Eloston/ungoogled-chromium/issues/651

* gnu/packages/aux-files/chromium/master-preferences.json,
gnu/packages/chromium.scm: New files.
* gnu/local.mk (GNU_SYSTEM_MODULES): Adjust accordingly.
---
 gnu/local.mk                                  |   1 +
 .../chromium/master-preferences.json          |  26 +
 gnu/packages/chromium.scm                     | 741 ++++++++++++++++++
 3 files changed, 768 insertions(+)
 create mode 100644 gnu/packages/aux-files/chromium/master-preferences.json
 create mode 100644 gnu/packages/chromium.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 82db1488d6..b5e937cdd7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -100,6 +100,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/check.scm			\
   %D%/packages/chemistry.scm			\
   %D%/packages/chez.scm				\
+  %D%/packages/chromium.scm			\
   %D%/packages/ci.scm				\
   %D%/packages/cinnamon.scm			\
   %D%/packages/clojure.scm			\
diff --git a/gnu/packages/aux-files/chromium/master-preferences.json b/gnu/packages/aux-files/chromium/master-preferences.json
new file mode 100644
index 0000000000..0caa7cc4cd
--- /dev/null
+++ b/gnu/packages/aux-files/chromium/master-preferences.json
@@ -0,0 +1,26 @@
+{
+  "distribution": {
+     "import_bookmarks": false,
+     "make_chrome_default": false,
+     "make_chrome_default_for_user": false,
+     "verbose_logging": true,
+     "skip_first_run_ui": true,
+     "suppress_first_run_default_browser_prompt": true
+  },
+  "browser": {
+     "has_seen_welcome_page" : true,
+     "check_default_browser" : false
+  },
+  "dns_prefetching": {
+    "enabled": false
+  },
+  "alternate_error_pages": {
+    "enabled": false
+  },
+  "hardware": {
+    "audio_capture_enabled": false
+  },
+  "default_apps": "noinstall",
+  "hide_web_store_icon": true,
+  "homepage": "https://www.gnu.org/software/guix"
+}
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
new file mode 100644
index 0000000000..eb404246d3
--- /dev/null
+++ b/gnu/packages/chromium.scm
@@ -0,0 +1,741 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages chromium)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:use-module (guix store)
+  #:use-module (guix monads)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages assembly)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages build-tools)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages kerberos)
+  #:use-module (gnu packages ninja)
+  #:use-module (gnu packages node)
+  #:use-module (gnu packages pciutils)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages regex)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages speech)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages vulkan)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xorg))
+
+(define %preserved-third-party-files
+  '("base/third_party/dmg_fp" ;X11-style
+    "base/third_party/dynamic_annotations" ;BSD-2
+    "base/third_party/icu" ;Unicode, X11-style
+    "base/third_party/superfasthash" ;BSD-3
+    "base/third_party/symbolize" ;BSD-3
+    "base/third_party/xdg_mime" ;LGPL2.1+ or Academic 2.0
+    "base/third_party/xdg_user_dirs" ;Expat
+    "chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
+    "courgette/third_party/bsdiff" ;BSD-2, BSD protection license
+    "courgette/third_party/divsufsort" ;Expat
+    "net/third_party/http2" ;BSD-3
+    "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
+    "net/third_party/nss" ;MPL-2.0
+    "net/third_party/quic" ;BSD-3
+    "net/third_party/spdy" ;BSD-3
+    "net/third_party/uri_template" ;ASL2.0
+    "third_party/abseil-cpp" ;ASL2.0
+    "third_party/adobe/flash/flapper_version.h" ;no license, trivial
+    "third_party/angle" ;BSD-3
+    "third_party/angle/src/common/third_party/base" ;BSD-3
+    "third_party/angle/src/common/third_party/smhasher" ;Public domain
+    "third_party/angle/src/common/third_party/xxhash" ;BSD-2
+    "third_party/angle/src/third_party/compiler" ;BSD-2
+    "third_party/angle/src/third_party/libXNVCtrl" ;Expat
+    "third_party/angle/src/third_party/trace_event" ;BSD-3
+    "third_party/angle/third_party/glslang" ;BSD-3
+    "third_party/angle/third_party/spirv-headers" ;Expat
+    "third_party/angle/third_party/spirv-tools" ;Expat
+    "third_party/angle/third_party/vulkan-headers" ;ASL2.0
+    "third_party/angle/third_party/vulkan-loader" ;ASL2.0
+    "third_party/angle/third_party/vulkan-tools" ;ASL2.0
+    "third_party/angle/third_party/vulkan-validation-layers" ;ASL2.0
+    "third_party/apple_apsl" ;APSL2.0
+    "third_party/blink" ;BSD-3
+    "third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
+    "third_party/boringssl/src/third_party/fiat" ;Expat
+    "third_party/breakpad" ;BSD-3
+    "third_party/brotli" ;Expat
+    "third_party/cacheinvalidation" ;ASL2.0
+    "third_party/catapult" ;BSD-3
+    "third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
+    "third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
+    "third_party/catapult/third_party/polymer" ;BSD-3
+    "third_party/catapult/tracing/third_party/d3" ;BSD-3
+    "third_party/catapult/tracing/third_party/gl-matrix" ;Expat
+    "third_party/catapult/tracing/third_party/jszip" ;Expat or GPL3
+    "third_party/catapult/tracing/third_party/mannwhitneyu" ;Expat
+    "third_party/catapult/tracing/third_party/oboe" ;BSD-2
+    "third_party/catapult/tracing/third_party/pako" ;Expat
+    "third_party/ced" ;BSD-3
+    "third_party/cld_3" ;ASL2.0
+    "third_party/closure_compiler" ;ASL2.0
+    "third_party/crashpad" ;ASL2.0
+    "third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
+    "third_party/crc32c" ;BSD-3
+    "third_party/cros_system_api" ;BSD-3
+    "third_party/dom_distiller_js" ;BSD-3
+    "third_party/fips181" ;BSD-3
+    "third_party/flatbuffers" ;ASL2.0
+    "third_party/google_input_tools" ;ASL2.0
+    "third_party/google_input_tools/third_party/closure_library" ;ASL2.0
+    "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat
+    "third_party/googletest" ;BSD-3
+    "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
+    "third_party/iccjpeg" ;IJG
+    "third_party/inspector_protocol" ;BSD-3
+    "third_party/jinja2" ;BSD-3
+    "third_party/jstemplate" ;ASL2.0
+    "third_party/khronos" ;Expat, SGI
+    "third_party/leveldatabase" ;BSD-3
+    "third_party/libXNVCtrl" ;Expat
+    "third_party/libaddressinput" ;ASL2.0
+    "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
+    "third_party/libaom/source/libaom/third_party/vector" ;Expat
+    "third_party/libaom/source/libaom/third_party/x86inc" ;ISC
+    "third_party/libjingle_xmpp" ;BSD-3
+    "third_party/libphonenumber" ;ASL2.0
+    "third_party/libsecret" ;LGPL2.1+
+    "third_party/libsrtp" ;BSD-3
+    "third_party/libsync" ;ASL2.0
+    "third_party/libudev" ;LGPL2.1+
+    "third_party/libwebm" ;BSD-3
+    "third_party/libxml/chromium" ;BSD-3
+    "third_party/libyuv" ;BSD-3
+    "third_party/lss" ;BSD-3
+    "third_party/markupsafe" ;BSD-3
+    "third_party/mesa_headers" ;Expat, SGI
+    "third_party/metrics_proto" ;BSD-3
+    "third_party/modp_b64" ;BSD-3
+    "third_party/nasm" ;BSD-2
+    "third_party/node" ;Expat
+    "third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2" ;BSD-2
+    "third_party/ots" ;BSD-3
+    "third_party/pdfium" ;BSD-3
+    "third_party/pdfium/third_party/agg23" ;Expat
+    "third_party/pdfium/third_party/base" ;BSD-3
+    "third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
+    "third_party/pdfium/third_party/skia_shared" ;BSD-3
+    "third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
+    "third_party/ply" ;BSD-3
+    "third_party/polymer" ;BSD-3
+    "third_party/protobuf" ;BSD-3
+    "third_party/protobuf/third_party/six" ;Expat
+    "third_party/pyjson5" ;ASL2.0
+    "third_party/qcms" ;Expat
+    "third_party/rnnoise" ;BSD-3
+    "third_party/s2cellid" ;ASL2.0
+    "third_party/sfntly" ;ASL2.0
+    "third_party/skia" ;BSD-3
+    "third_party/skia/third_party/gif" ;MPL1.1/GPL2+/LGPL2.1+
+    "third_party/skia/third_party/skcms" ;BSD-3
+    "third_party/skia/third_party/vulkan" ;BSD-3
+    "third_party/smhasher" ;Expat, public domain
+    "third_party/speech-dispatcher" ;GPL2+
+    "third_party/spirv-headers" ;ASL2.0
+    "third_party/SPIRV-Tools" ;ASL2.0
+    "third_party/sqlite" ;Public domain
+    "third_party/ungoogled" ;BSD-3
+    "third_party/usb_ids" ;BSD-3
+    "third_party/usrsctp" ;BSD-2
+    "third_party/web-animations-js" ;ASL2.0
+    "third_party/webdriver" ;ASL2.0
+    "third_party/webrtc" ;BSD-3
+    "third_party/webrtc/common_audio/third_party/fft4g" ;Non-copyleft
+    "third_party/webrtc/common_audio/third_party/spl_sqrt_floor" ;Public domain
+    "third_party/webrtc/modules/third_party/fft" ;Non-copyleft
+    "third_party/webrtc/modules/third_party/g711" ;Public domain
+    "third_party/webrtc/modules/third_party/g722" ;Public domain
+    "third_party/webrtc/rtc_base/third_party/base64" ;Non-copyleft
+    "third_party/webrtc/rtc_base/third_party/sigslot" ;Public domain
+    "third_party/widevine/cdm/widevine_cdm_version.h" ;BSD-3
+    "third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
+    "third_party/woff2" ;ASL2.0
+    "third_party/xdg-utils" ;Expat
+    "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3
+    "third_party/zlib/google" ;BSD-3
+    "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
+    "v8/src/third_party/utf8-decoder" ;Expat
+    "v8/src/third_party/valgrind" ;BSD-4
+    "v8/third_party/inspector_protocol" ;BSD-3
+    "v8/third_party/v8/builtins")) ;PSFL
+
+(define* (computed-origin-method gexp-promise hash-algo hash
+                                 #:optional (name "source")
+                                 #:key (system (%current-system))
+                                 (guile (default-guile)))
+  "Return a derivation that executes the G-expression that results
+from forcing GEXP-PROMISE."
+  (mlet %store-monad ((guile (package->derivation guile system)))
+    (gexp->derivation (or name "computed-origin")
+                      (force gexp-promise)
+                      #:system system
+                      #:guile-for-build guile)))
+
+(define %chromium-version "72.0.3626.81")
+(define %ungoogled-revision "f9b9074c322a67b04baf0982797cd7b7e09614b5")
+
+;; This is a computed origin that does the following:
+;; 1) Runs the Ungoogled scripts on a pristine Chromium tarball.
+;; 2) Prunes all third_party folders that are not explicitly preserved.
+;; 3) Adjusts "GN" build files such that system libraries are preferred.
+(define ungoogled-chromium-source
+  (let* ((chromium-source
+          (origin
+            (method url-fetch)
+            (uri (string-append "https://commondatastorage.googleapis.com"
+                                "/chromium-browser-official/chromium-"
+                                %chromium-version ".tar.xz"))
+            (sha256
+             (base32
+              "01l0vlvcckpag376mjld7qprv63l0z8li689k0h6v3h0i7irzs6z"))))
+         (ungoogled-source
+          (origin
+            (method git-fetch)
+            (uri (git-reference (url "https://github.com/mbakke/ungoogled-chromium")
+                                (commit %ungoogled-revision)))
+            (file-name (git-file-name "ungoogled-chromium"
+                                      (string-take %ungoogled-revision 7)))
+            (sha256
+             (base32
+              "0gmk1n3i7lbm7rw8zl4df171yhvrlimj8ksj096bf2dlfhbd44rb")))))
+
+    (origin
+      (method computed-origin-method)
+      (file-name (string-append "ungoogled-chromium-" %chromium-version ".tar.xz"))
+      (sha256 #f)
+      (uri
+       (delay
+         (with-imported-modules '((guix build utils))
+           #~(begin
+               (use-modules (guix build utils))
+               (let ((chromium-dir    (string-append "chromium-" #$%chromium-version))
+                     (preserved-files (list #$@%preserved-third-party-files)))
+
+                 (mkdir "/tmp/bin")
+                 (set-path-environment-variable
+                  "PATH" '("bin")
+                  (list "/tmp"
+                        #+(canonical-package patch)
+                        #+(canonical-package xz)
+                        #+(canonical-package tar)
+                        #+python-2
+                        #+python))
+
+                 (copy-recursively #+ungoogled-source "/tmp/ungoogled")
+
+                 (with-directory-excursion "/tmp/ungoogled"
+
+                   (format #t "Unpacking chromium tarball...~%")
+                   (force-output)
+                   (invoke "tar" "xf" #+chromium-source)
+
+                   (format #t "Ungooglifying...~%")
+                   (force-output)
+                   (invoke "python3" "run_buildkit_cli.py" "prune"
+                           "-b" "config_bundles/guix" chromium-dir)
+                   (invoke "python3" "run_buildkit_cli.py" "patches" "apply"
+                           "-b" "config_bundles/guix" chromium-dir)
+                   (invoke "python3" "run_buildkit_cli.py" "domains" "apply"
+                           "-b" "config_bundles/linux_rooted"
+                           "-c" "/tmp/domainscache.tar.gz" chromium-dir)
+
+                   (with-directory-excursion chromium-dir
+                     (format #t "Pruning third party files...~%")
+                     (force-output)
+                     (apply invoke "python"
+                             "build/linux/unbundle/remove_bundled_libraries.py"
+                             "--do-remove" preserved-files)
+
+                     (format #t "Replacing GN files...~%")
+                     (force-output)
+                     (invoke "python3" "build/linux/unbundle/replace_gn_files.py"
+                             "--system-libraries" "ffmpeg" "flac" "fontconfig"
+                             "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
+                             "libjpeg" "libpng" "libvpx" "libwebp" "libxml"
+                             "libxslt" "openh264" "opus" "re2" "snappy" "yasm"
+                             "zlib"))
+
+                   (format #t (string-append "Packing new Ungoogled tarball ...~%"))
+                   (force-output)
+                   (invoke "tar" "cvfa" #$output
+                           ;; Avoid non-determinism in the archive.
+                           "--mtime=@0"
+                           "--owner=root:0"
+                           "--group=root:0"
+                           "--sort=name"
+                           chromium-dir)
+
+                   #t)))))))))
+
+(define opus+custom
+  (package/inherit opus
+    (name "opus+custom")
+    (arguments
+     (substitute-keyword-arguments (package-arguments opus)
+       ((#:configure-flags flags ''())
+        ;; Opus Custom is an optional extension of the Opus
+        ;; specification that allows for unsupported frame
+        ;; sizes.  Chromium requires that this is enabled.
+        `(cons "--enable-custom-modes"
+               ,flags))))))
+
+(define libvpx/chromium
+  ;; Chromium 66 and later requires an unreleased libvpx, so we take the
+  ;; commit from "third_party/libvpx/README.chromium" in the tarball.
+  (let ((version (package-version libvpx))
+        (commit "e188b5435de71bcd602c378f1ac0441111f0f915")
+        (revision "0"))
+    (package/inherit libvpx
+      (name "libvpx-chromium")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://chromium.googlesource.com/webm/libvpx")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0v7lzvgy45zh7zwzmmzkvbcqmhs4xa97z0h97hd3j6myrxcfz1n9")))))))
+
+;; Transitional package until HarfBuzz 2.2 is available in Guix master branch.
+(define harfbuzz/chromium
+  (package/inherit harfbuzz
+    (version "2.2.0")
+    (source (origin
+              (inherit (package-source harfbuzz))
+              (uri (string-append "https://www.freedesktop.org/software/harfbuzz"
+                                  "/release/harfbuzz-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "047q63jr513azf3g1y7f5xn60b4jdjs9zsmrx04sfw5rasyzrk5p"))))))
+
+(define-public ungoogled-chromium
+  (package
+    (name "ungoogled-chromium")
+    (version %chromium-version)
+    (synopsis "Graphical web browser")
+    (source ungoogled-chromium-source)
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       ;; FIXME: There is a "gn" option specifically for setting -rpath, but
+       ;; it overrides the RUNPATH set by the linker.
+       #:validate-runpath? #f
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (ice-9 regex)
+                  (srfi srfi-26))
+       #:configure-flags
+       ;; See tools/gn/docs/cookbook.md and
+       ;; https://www.chromium.org/developers/gn-build-configuration
+       ;; for usage.  Run "./gn args . --list" in the Release
+       ;; directory for an exhaustive list of supported flags.
+       ;; (Note: The 'configure' phase will do that for you.)
+       (list "is_debug=false"
+             "use_gold=false"
+             "use_lld=false"
+             "linux_use_bundled_binutils=false"
+             "use_custom_libcxx=false"
+             "use_sysroot=false"
+             "enable_precompiled_headers=false"
+             "goma_dir=\"\""
+             "enable_nacl=false"
+             "enable_nacl_nonsfi=false"
+             "use_allocator=\"none\""   ;don't use tcmalloc
+             "use_unofficial_version_number=false"
+
+             ;; Define a custom toolchain that simply looks up CC, AR and
+             ;; friends from the environment.
+             "custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
+             "host_toolchain=\"//build/toolchain/linux/unbundle:default\""
+
+             ;; Don't assume it's clang.
+             "is_clang=false"
+
+             ;; Optimize for building everything at once, as opposed to
+             ;; incrementally for development.  See "docs/jumbo.md".
+             "use_jumbo_build=true"
+
+             ;; Disable type-checking for the Web UI to avoid a Java dependency.
+             "closure_compile=false"
+
+             ;; Disable debugging features to save space.
+             "blink_symbol_level=0"
+             "enable_iterator_debugging=false"
+
+             ;; Some of the unbundled libraries throws deprecation
+             ;; warnings, etc.  Ignore it.
+             "treat_warnings_as_errors=false"
+
+             ;; Don't add any API keys.  End users can set them in the
+             ;; environment if desired.  See
+             ;; <https://www.chromium.org/developers/how-tos/api-keys>.
+             "use_official_google_api_keys=false"
+
+             ;; Disable "safe browsing", which pulls in a dependency on
+             ;; the nonfree "unrar" program (as of m66).
+             "safe_browsing_mode=0"
+
+             ;; Disable "field trials".
+             "fieldtrial_testing_like_official_build=true"
+
+             ;; Ungoogled components.
+             "enable_mdns=false"
+             "enable_one_click_signin=false"
+             "enable_reading_list=false"
+             "enable_remoting=false"
+             "enable_reporting=false"
+             "enable_service_discovery=false"
+             "enable_swiftshader=false"
+             "use_vaapi=true"
+
+             ;; Use system libraries where possible.
+             "use_system_freetype=true"
+             "use_system_harfbuzz=true"
+             "use_system_lcms2=true"
+             "use_system_libdrm=true"
+             "use_system_libjpeg=true"
+             "use_system_libpng=true"
+             ;;"use_system_libsync=true"
+             "use_system_zlib=true"
+
+             "use_gnome_keyring=false"  ;deprecated by libsecret
+             "use_openh264=true"
+             "use_pulseaudio=true"
+             "link_pulseaudio=true"
+
+             ;; Don't arbitrarily restrict formats supported by system ffmpeg.
+             "proprietary_codecs=true"
+             "ffmpeg_branding=\"Chrome\""
+
+             ;; WebRTC stuff.
+             "rtc_use_h264=true"
+             ;; Don't use bundled sources.
+             "rtc_build_json=false"
+             "rtc_build_libevent=false"
+             "rtc_build_libvpx=false"
+             "rtc_build_opus=false"
+             "rtc_build_ssl=false"
+
+             "rtc_build_libsrtp=true"   ;FIXME: fails to find headers
+             "rtc_build_usrsctp=true"   ;TODO: package this
+             (string-append "rtc_jsoncpp_root=\""
+                            (assoc-ref %build-inputs "jsoncpp")
+                            "/include/jsoncpp/json\"")
+             (string-append "rtc_ssl_root=\""
+                            (assoc-ref %build-inputs "openssl")
+                            "/include/openssl\""))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-stuff
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "printing/cups_config_helper.py"
+               (("cups_config =.*")
+                (string-append "cups_config = '" (assoc-ref inputs "cups")
+                               "/bin/cups-config'\n")))
+
+             (substitute*
+                 '("base/process/launch_posix.cc"
+                   "base/third_party/dynamic_annotations/dynamic_annotations.c"
+                   "sandbox/linux/seccomp-bpf/sandbox_bpf.cc"
+                   "sandbox/linux/services/credentials.cc"
+                   "sandbox/linux/services/namespace_utils.cc"
+                   "sandbox/linux/services/syscall_wrappers.cc"
+                   "sandbox/linux/syscall_broker/broker_host.cc")
+               (("include \"base/third_party/valgrind/") "include \"valgrind/"))
+
+             (for-each (lambda (file)
+                         (substitute* file
+                           ;; Fix opus include path.
+                           ;; Do not substitute opus_private.h.
+                           (("#include \"opus\\.h\"")
+                            "#include \"opus/opus.h\"")
+                           (("#include \"opus_custom\\.h\"")
+                            "#include \"opus/opus_custom.h\"")
+                           (("#include \"opus_defines\\.h\"")
+                            "#include \"opus/opus_defines.h\"")
+                           (("#include \"opus_multistream\\.h\"")
+                            "#include \"opus/opus_multistream.h\"")
+                           (("#include \"opus_types\\.h\"")
+                            "#include \"opus/opus_types.h\"")))
+                       (find-files (string-append "third_party/webrtc/modules"
+                                                  "/audio_coding/codecs/opus")))
+
+             (substitute* "chrome/common/chrome_paths.cc"
+               (("/usr/share/chromium/extensions")
+                ;; TODO: Add ~/.guix-profile.
+                "/run/current-system/profile/share/chromium/extensions"))
+
+             ;; XXX: Should be unnecessary when use_system_lcms2=true.
+             (substitute* "third_party/pdfium/core/fxcodec/codec/ccodec_iccmodule.h"
+               (("include \"third_party/lcms/include/lcms2\\.h\"")
+                "include \"lcms2.h\""))
+
+             (substitute*
+                 "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
+               (("include \"third_party/curl") "include \"curl"))
+
+             (substitute* "third_party/webrtc/rtc_base/strings/json.h"
+               (("#include \"third_party/jsoncpp/") "#include \"json/"))
+
+             (substitute* "media/base/decode_capabilities.cc"
+               (("third_party/libvpx/source/libvpx/") ""))
+
+             (substitute* "ui/gfx/skia_util.h"
+               (("third_party/vulkan/include/") ""))
+
+             ;; Building chromedriver embeds some files using the ZIP
+             ;; format which doesn't support timestamps before
+             ;; 1980. Therefore, advance the timestamps of the files
+             ;; which are included so that building chromedriver
+             ;; works.
+             (let ((circa-1980 (* 10 366 24 60 60)))
+               (for-each (lambda (file)
+                           (utime file circa-1980 circa-1980))
+                         '("chrome/test/chromedriver/extension/background.js"
+                           "chrome/test/chromedriver/extension/manifest.json")))
+
+             #t))
+         (add-before 'configure 'prepare-build-environment
+           (lambda* (#:key inputs #:allow-other-keys)
+
+             ;; Make sure the right build tools are used.
+             (setenv "AR" "ar") (setenv "NM" "nm")
+             (setenv "CC" "gcc") (setenv "CXX" "g++")
+
+             ;; Work around <https://bugs.gnu.org/30756>.
+             (unsetenv "C_INCLUDE_PATH")
+             (unsetenv "CPLUS_INCLUDE_PATH")
+
+             ;; TODO: pre-compile instead. Avoids a race condition.
+             (setenv "PYTHONDONTWRITEBYTECODE" "1")
+
+             ;; XXX: How portable is this.
+             (mkdir-p "third_party/node/linux/node-linux-x64")
+             (symlink (string-append (assoc-ref inputs "node") "/bin")
+                      "third_party/node/linux/node-linux-x64/bin")
+
+             #t))
+         (replace 'configure
+           (lambda* (#:key configure-flags #:allow-other-keys)
+             (let ((args (string-join configure-flags " ")))
+               ;; Generate ninja build files.
+               (invoke "gn" "gen" "out/Release"
+                       (string-append "--args=" args))
+
+               ;; Print the full list of supported arguments as well as
+               ;; their current status for convenience.
+               (format #t "Dumping configure flags...\n")
+               (invoke "gn" "args" "out/Release" "--list"))))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "ninja" "-C" "out/Release"
+                     "-j" (number->string (parallel-job-count))
+                     "chrome"
+                     "chromedriver")))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out            (assoc-ref outputs "out"))
+                    (bin            (string-append out "/bin"))
+                    (exe            (string-append bin "/chromium"))
+                    (lib            (string-append out "/lib"))
+                    (man            (string-append out "/share/man/man1"))
+                    (applications   (string-append out "/share/applications"))
+                    (install-regexp (make-regexp "\\.(bin|pak)$"))
+                    (locales        (string-append lib "/locales"))
+                    (resources      (string-append lib "/resources"))
+                    (preferences    (assoc-ref inputs "master-preferences"))
+                    (gtk+           (assoc-ref inputs "gtk+"))
+                    (mesa           (assoc-ref inputs "mesa"))
+                    (nss            (assoc-ref inputs "nss"))
+                    (udev           (assoc-ref inputs "udev"))
+                    (sh             (which "sh")))
+
+               (substitute* '("chrome/app/resources/manpage.1.in"
+                              "chrome/installer/linux/common/desktop.template")
+                 (("@@MENUNAME@@") "Chromium")
+                 (("@@PACKAGE@@") "chromium")
+                 (("/usr/bin/@@USR_BIN_SYMLINK_NAME@@") exe))
+
+               (mkdir-p man)
+               (copy-file "chrome/app/resources/manpage.1.in"
+                          (string-append man "/chromium.1"))
+
+               (mkdir-p applications)
+               (copy-file "chrome/installer/linux/common/desktop.template"
+                          (string-append applications "/chromium.desktop"))
+
+               (mkdir-p lib)
+               (copy-file preferences (string-append lib "/master_preferences"))
+
+               (with-directory-excursion "out/Release"
+                 (for-each (lambda (file)
+                             (install-file file lib))
+                           (scandir "." (cut regexp-exec install-regexp <>)))
+                 (copy-file "chrome" (string-append lib "/chromium"))
+
+                 ;; TODO: Install icons from "../../chrome/app/themes" into
+                 ;; "out/share/icons/hicolor/$size".
+                 (install-file
+                  "product_logo_48.png"
+                  (string-append out "/share/icons/48x48/chromium.png"))
+
+                 (copy-recursively "locales" locales)
+                 (copy-recursively "resources" resources)
+
+                 (mkdir-p bin)
+                 (symlink "../lib/chromium" exe)
+                 (install-file "chromedriver" bin)
+
+                 (wrap-program exe
+                   ;; TODO: Get these in RUNPATH.
+                   `("LD_LIBRARY_PATH" ":" prefix
+                     (,(string-append lib ":" nss "/lib/nss:" gtk+ "/lib:"
+                                      mesa "/lib:" udev "/lib")))
+                   ;; Avoid file manager crash.  See <https://bugs.gnu.org/26593>.
+                   `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))))
+                 #t)))))))
+    (native-inputs
+     `(("bison" ,bison)
+       ("gcc" ,gcc-8)
+       ("gn" ,gn)
+       ("gperf" ,gperf)
+       ("ninja" ,ninja)
+       ("node" ,node)
+       ("pkg-config" ,pkg-config)
+       ("which" ,which)
+       ("yasm" ,yasm)
+
+       ;; This file contains defaults for new user profiles.
+       ("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json"))
+
+       ("python-beautifulsoup4" ,python2-beautifulsoup4)
+       ("python-html5lib" ,python2-html5lib)
+       ("python" ,python-2)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("atk" ,atk)
+       ("cups" ,cups)
+       ("curl" ,curl)
+       ("dbus" ,dbus)
+       ("dbus-glib" ,dbus-glib)
+       ("expat" ,expat)
+       ("flac" ,flac)
+       ("ffmpeg" ,ffmpeg)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("harfbuzz" ,harfbuzz/chromium)
+       ("icu4c" ,icu4c)
+       ("jsoncpp" ,jsoncpp)
+       ("lcms" ,lcms)
+       ("libevent" ,libevent)
+       ("libffi" ,libffi)
+       ("libjpeg-turbo" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("libva" ,libva)
+       ("libvpx" ,libvpx/chromium)
+       ("libwebp" ,libwebp)
+       ("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("libxcomposite" ,libxcomposite)
+       ("libxcursor" ,libxcursor)
+       ("libxdamage" ,libxdamage)
+       ("libxext" ,libxext)
+       ("libxfixes" ,libxfixes)
+       ("libxi" ,libxi)
+       ("libxml2" ,libxml2)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("libxslt" ,libxslt)
+       ("libxtst" ,libxtst)
+       ("mesa" ,mesa)
+       ("minizip" ,minizip)
+       ("mit-krb5" ,mit-krb5)
+       ("nss" ,nss)
+       ("openh264" ,openh264)
+       ("openjpeg" ,openjpeg)                          ;PDFium only
+       ("openssl" ,openssl)
+       ("opus" ,opus+custom)
+       ("pango" ,pango)
+       ("pciutils" ,pciutils)
+       ("pulseaudio" ,pulseaudio)
+       ("re2" ,re2)
+       ("snappy" ,snappy)
+       ("speech-dispatcher" ,speech-dispatcher)
+       ("udev" ,eudev)
+       ("valgrind" ,valgrind)
+       ("vulkan-headers" ,vulkan-headers)))
+    (home-page "https://www.chromium.org/")
+    (description
+     "Ungoogled-Chromium is the Chromium web browser, sans integration with
+Google web services.")
+    ;; Chromium is developed as BSD-3, but bundles a large number of third-party
+    ;; components with other licenses.  For full information, see chrome://credits.
+    (license (list license:bsd-3
+                   license:bsd-2
+                   license:expat
+                   license:asl2.0
+                   license:mpl1.1
+                   license:mpl2.0
+                   license:public-domain
+                   license:isc
+                   (license:non-copyleft "chrome://credits"
+                                         "See chrome://credits for more information.")
+                   license:lgpl2.1+))))
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-02 19:20 ` [PATCH] gnu: Add ungoogled-chromium Marius Bakke
@ 2019-02-03 18:16   ` Joshua Branson
  2019-02-04  4:52     ` bill-auger
  2019-02-03 20:21   ` Amin Bandali
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 57+ messages in thread
From: Joshua Branson @ 2019-02-03 18:16 UTC (permalink / raw)
  To: guix-devel

Marius Bakke <mbakke@fastmail.com> writes:

> Thanks to Marks beautiful "computed-origin-method", Ungoogled-Chromium
> is finally ready for inclusion in Guix.
>
> Features:
> * Chromium 72.
> * No unsolicited network traffic.
> * Free software only.
> * No DRM.
> * Not an April Fools joke.

Ahh man.  I was really hoping this was an April fools joke.  Last year
someone had packaged systemd, and this person recommended that we do
away with the Shepherd.  May I request that we do an April fools joke
once a year?

I'm sorry if this email is not professional enough.

>
> It's currently using my trivial "fork" of Ungoogled-Chromium[0], which
> will be upstreamed once the upstream reorganization[1] is done.
>
> Comments appreciated!
>
> [0]: https://github.com/mbakke/ungoogled-chromium/commit/f9b9074c322a67b04baf0982797cd7b7e09614b5
> [1]: https://github.com/Eloston/ungoogled-chromium/issues/651
>
> * gnu/packages/aux-files/chromium/master-preferences.json,
> gnu/packages/chromium.scm: New files.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Adjust accordingly.
> ---
>  gnu/local.mk                                  |   1 +
>  .../chromium/master-preferences.json          |  26 +
>  gnu/packages/chromium.scm                     | 741 ++++++++++++++++++
>  3 files changed, 768 insertions(+)
>  create mode 100644 gnu/packages/aux-files/chromium/master-preferences.json
>  create mode 100644 gnu/packages/chromium.scm
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 82db1488d6..b5e937cdd7 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -100,6 +100,7 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/check.scm			\
>    %D%/packages/chemistry.scm			\
>    %D%/packages/chez.scm				\
> +  %D%/packages/chromium.scm			\
>    %D%/packages/ci.scm				\
>    %D%/packages/cinnamon.scm			\
>    %D%/packages/clojure.scm			\
> diff --git a/gnu/packages/aux-files/chromium/master-preferences.json b/gnu/packages/aux-files/chromium/master-preferences.json
> new file mode 100644
> index 0000000000..0caa7cc4cd
> --- /dev/null
> +++ b/gnu/packages/aux-files/chromium/master-preferences.json
> @@ -0,0 +1,26 @@
> +{
> +  "distribution": {
> +     "import_bookmarks": false,
> +     "make_chrome_default": false,
> +     "make_chrome_default_for_user": false,
> +     "verbose_logging": true,
> +     "skip_first_run_ui": true,
> +     "suppress_first_run_default_browser_prompt": true
> +  },
> +  "browser": {
> +     "has_seen_welcome_page" : true,
> +     "check_default_browser" : false
> +  },
> +  "dns_prefetching": {
> +    "enabled": false
> +  },
> +  "alternate_error_pages": {
> +    "enabled": false
> +  },
> +  "hardware": {
> +    "audio_capture_enabled": false
> +  },
> +  "default_apps": "noinstall",
> +  "hide_web_store_icon": true,
> +  "homepage": "https://www.gnu.org/software/guix"
> +}
> diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
> new file mode 100644
> index 0000000000..eb404246d3
> --- /dev/null
> +++ b/gnu/packages/chromium.scm
> @@ -0,0 +1,741 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages chromium)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages)
> +  #:use-module (guix gexp)
> +  #:use-module (guix store)
> +  #:use-module (guix monads)
> +  #:use-module (guix download)
> +  #:use-module (guix git-download)
> +  #:use-module (guix utils)
> +  #:use-module (guix build-system gnu)
> +  #:use-module (gnu packages)
> +  #:use-module (gnu packages assembly)
> +  #:use-module (gnu packages base)
> +  #:use-module (gnu packages bison)
> +  #:use-module (gnu packages build-tools)
> +  #:use-module (gnu packages compression)
> +  #:use-module (gnu packages cups)
> +  #:use-module (gnu packages curl)
> +  #:use-module (gnu packages fontutils)
> +  #:use-module (gnu packages gcc)
> +  #:use-module (gnu packages ghostscript)
> +  #:use-module (gnu packages gl)
> +  #:use-module (gnu packages glib)
> +  #:use-module (gnu packages gnome)
> +  #:use-module (gnu packages gnuzilla)
> +  #:use-module (gnu packages gperf)
> +  #:use-module (gnu packages gtk)
> +  #:use-module (gnu packages icu4c)
> +  #:use-module (gnu packages image)
> +  #:use-module (gnu packages libevent)
> +  #:use-module (gnu packages libffi)
> +  #:use-module (gnu packages linux)
> +  #:use-module (gnu packages kerberos)
> +  #:use-module (gnu packages ninja)
> +  #:use-module (gnu packages node)
> +  #:use-module (gnu packages pciutils)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages pulseaudio)
> +  #:use-module (gnu packages python)
> +  #:use-module (gnu packages python-web)
> +  #:use-module (gnu packages python-xyz)
> +  #:use-module (gnu packages regex)
> +  #:use-module (gnu packages serialization)
> +  #:use-module (gnu packages speech)
> +  #:use-module (gnu packages tls)
> +  #:use-module (gnu packages valgrind)
> +  #:use-module (gnu packages vulkan)
> +  #:use-module (gnu packages video)
> +  #:use-module (gnu packages xiph)
> +  #:use-module (gnu packages xml)
> +  #:use-module (gnu packages xdisorg)
> +  #:use-module (gnu packages xorg))
> +
> +(define %preserved-third-party-files
> +  '("base/third_party/dmg_fp" ;X11-style
> +    "base/third_party/dynamic_annotations" ;BSD-2
> +    "base/third_party/icu" ;Unicode, X11-style
> +    "base/third_party/superfasthash" ;BSD-3
> +    "base/third_party/symbolize" ;BSD-3
> +    "base/third_party/xdg_mime" ;LGPL2.1+ or Academic 2.0
> +    "base/third_party/xdg_user_dirs" ;Expat
> +    "chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
> +    "courgette/third_party/bsdiff" ;BSD-2, BSD protection license
> +    "courgette/third_party/divsufsort" ;Expat
> +    "net/third_party/http2" ;BSD-3
> +    "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
> +    "net/third_party/nss" ;MPL-2.0
> +    "net/third_party/quic" ;BSD-3
> +    "net/third_party/spdy" ;BSD-3
> +    "net/third_party/uri_template" ;ASL2.0
> +    "third_party/abseil-cpp" ;ASL2.0
> +    "third_party/adobe/flash/flapper_version.h" ;no license, trivial
> +    "third_party/angle" ;BSD-3
> +    "third_party/angle/src/common/third_party/base" ;BSD-3
> +    "third_party/angle/src/common/third_party/smhasher" ;Public domain
> +    "third_party/angle/src/common/third_party/xxhash" ;BSD-2
> +    "third_party/angle/src/third_party/compiler" ;BSD-2
> +    "third_party/angle/src/third_party/libXNVCtrl" ;Expat
> +    "third_party/angle/src/third_party/trace_event" ;BSD-3
> +    "third_party/angle/third_party/glslang" ;BSD-3
> +    "third_party/angle/third_party/spirv-headers" ;Expat
> +    "third_party/angle/third_party/spirv-tools" ;Expat
> +    "third_party/angle/third_party/vulkan-headers" ;ASL2.0
> +    "third_party/angle/third_party/vulkan-loader" ;ASL2.0
> +    "third_party/angle/third_party/vulkan-tools" ;ASL2.0
> +    "third_party/angle/third_party/vulkan-validation-layers" ;ASL2.0
> +    "third_party/apple_apsl" ;APSL2.0
> +    "third_party/blink" ;BSD-3
> +    "third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
> +    "third_party/boringssl/src/third_party/fiat" ;Expat
> +    "third_party/breakpad" ;BSD-3
> +    "third_party/brotli" ;Expat
> +    "third_party/cacheinvalidation" ;ASL2.0
> +    "third_party/catapult" ;BSD-3
> +    "third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
> +    "third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
> +    "third_party/catapult/third_party/polymer" ;BSD-3
> +    "third_party/catapult/tracing/third_party/d3" ;BSD-3
> +    "third_party/catapult/tracing/third_party/gl-matrix" ;Expat
> +    "third_party/catapult/tracing/third_party/jszip" ;Expat or GPL3
> +    "third_party/catapult/tracing/third_party/mannwhitneyu" ;Expat
> +    "third_party/catapult/tracing/third_party/oboe" ;BSD-2
> +    "third_party/catapult/tracing/third_party/pako" ;Expat
> +    "third_party/ced" ;BSD-3
> +    "third_party/cld_3" ;ASL2.0
> +    "third_party/closure_compiler" ;ASL2.0
> +    "third_party/crashpad" ;ASL2.0
> +    "third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
> +    "third_party/crc32c" ;BSD-3
> +    "third_party/cros_system_api" ;BSD-3
> +    "third_party/dom_distiller_js" ;BSD-3
> +    "third_party/fips181" ;BSD-3
> +    "third_party/flatbuffers" ;ASL2.0
> +    "third_party/google_input_tools" ;ASL2.0
> +    "third_party/google_input_tools/third_party/closure_library" ;ASL2.0
> +    "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat
> +    "third_party/googletest" ;BSD-3
> +    "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
> +    "third_party/iccjpeg" ;IJG
> +    "third_party/inspector_protocol" ;BSD-3
> +    "third_party/jinja2" ;BSD-3
> +    "third_party/jstemplate" ;ASL2.0
> +    "third_party/khronos" ;Expat, SGI
> +    "third_party/leveldatabase" ;BSD-3
> +    "third_party/libXNVCtrl" ;Expat
> +    "third_party/libaddressinput" ;ASL2.0
> +    "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
> +    "third_party/libaom/source/libaom/third_party/vector" ;Expat
> +    "third_party/libaom/source/libaom/third_party/x86inc" ;ISC
> +    "third_party/libjingle_xmpp" ;BSD-3
> +    "third_party/libphonenumber" ;ASL2.0
> +    "third_party/libsecret" ;LGPL2.1+
> +    "third_party/libsrtp" ;BSD-3
> +    "third_party/libsync" ;ASL2.0
> +    "third_party/libudev" ;LGPL2.1+
> +    "third_party/libwebm" ;BSD-3
> +    "third_party/libxml/chromium" ;BSD-3
> +    "third_party/libyuv" ;BSD-3
> +    "third_party/lss" ;BSD-3
> +    "third_party/markupsafe" ;BSD-3
> +    "third_party/mesa_headers" ;Expat, SGI
> +    "third_party/metrics_proto" ;BSD-3
> +    "third_party/modp_b64" ;BSD-3
> +    "third_party/nasm" ;BSD-2
> +    "third_party/node" ;Expat
> +    "third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2" ;BSD-2
> +    "third_party/ots" ;BSD-3
> +    "third_party/pdfium" ;BSD-3
> +    "third_party/pdfium/third_party/agg23" ;Expat
> +    "third_party/pdfium/third_party/base" ;BSD-3
> +    "third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
> +    "third_party/pdfium/third_party/skia_shared" ;BSD-3
> +    "third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
> +    "third_party/ply" ;BSD-3
> +    "third_party/polymer" ;BSD-3
> +    "third_party/protobuf" ;BSD-3
> +    "third_party/protobuf/third_party/six" ;Expat
> +    "third_party/pyjson5" ;ASL2.0
> +    "third_party/qcms" ;Expat
> +    "third_party/rnnoise" ;BSD-3
> +    "third_party/s2cellid" ;ASL2.0
> +    "third_party/sfntly" ;ASL2.0
> +    "third_party/skia" ;BSD-3
> +    "third_party/skia/third_party/gif" ;MPL1.1/GPL2+/LGPL2.1+
> +    "third_party/skia/third_party/skcms" ;BSD-3
> +    "third_party/skia/third_party/vulkan" ;BSD-3
> +    "third_party/smhasher" ;Expat, public domain
> +    "third_party/speech-dispatcher" ;GPL2+
> +    "third_party/spirv-headers" ;ASL2.0
> +    "third_party/SPIRV-Tools" ;ASL2.0
> +    "third_party/sqlite" ;Public domain
> +    "third_party/ungoogled" ;BSD-3
> +    "third_party/usb_ids" ;BSD-3
> +    "third_party/usrsctp" ;BSD-2
> +    "third_party/web-animations-js" ;ASL2.0
> +    "third_party/webdriver" ;ASL2.0
> +    "third_party/webrtc" ;BSD-3
> +    "third_party/webrtc/common_audio/third_party/fft4g" ;Non-copyleft
> +    "third_party/webrtc/common_audio/third_party/spl_sqrt_floor" ;Public domain
> +    "third_party/webrtc/modules/third_party/fft" ;Non-copyleft
> +    "third_party/webrtc/modules/third_party/g711" ;Public domain
> +    "third_party/webrtc/modules/third_party/g722" ;Public domain
> +    "third_party/webrtc/rtc_base/third_party/base64" ;Non-copyleft
> +    "third_party/webrtc/rtc_base/third_party/sigslot" ;Public domain
> +    "third_party/widevine/cdm/widevine_cdm_version.h" ;BSD-3
> +    "third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
> +    "third_party/woff2" ;ASL2.0
> +    "third_party/xdg-utils" ;Expat
> +    "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3
> +    "third_party/zlib/google" ;BSD-3
> +    "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
> +    "v8/src/third_party/utf8-decoder" ;Expat
> +    "v8/src/third_party/valgrind" ;BSD-4
> +    "v8/third_party/inspector_protocol" ;BSD-3
> +    "v8/third_party/v8/builtins")) ;PSFL
> +
> +(define* (computed-origin-method gexp-promise hash-algo hash
> +                                 #:optional (name "source")
> +                                 #:key (system (%current-system))
> +                                 (guile (default-guile)))
> +  "Return a derivation that executes the G-expression that results
> +from forcing GEXP-PROMISE."
> +  (mlet %store-monad ((guile (package->derivation guile system)))
> +    (gexp->derivation (or name "computed-origin")
> +                      (force gexp-promise)
> +                      #:system system
> +                      #:guile-for-build guile)))
> +
> +(define %chromium-version "72.0.3626.81")
> +(define %ungoogled-revision "f9b9074c322a67b04baf0982797cd7b7e09614b5")
> +
> +;; This is a computed origin that does the following:
> +;; 1) Runs the Ungoogled scripts on a pristine Chromium tarball.
> +;; 2) Prunes all third_party folders that are not explicitly preserved.
> +;; 3) Adjusts "GN" build files such that system libraries are preferred.
> +(define ungoogled-chromium-source
> +  (let* ((chromium-source
> +          (origin
> +            (method url-fetch)
> +            (uri (string-append "https://commondatastorage.googleapis.com"
> +                                "/chromium-browser-official/chromium-"
> +                                %chromium-version ".tar.xz"))
> +            (sha256
> +             (base32
> +              "01l0vlvcckpag376mjld7qprv63l0z8li689k0h6v3h0i7irzs6z"))))
> +         (ungoogled-source
> +          (origin
> +            (method git-fetch)
> +            (uri (git-reference (url "https://github.com/mbakke/ungoogled-chromium")
> +                                (commit %ungoogled-revision)))
> +            (file-name (git-file-name "ungoogled-chromium"
> +                                      (string-take %ungoogled-revision 7)))
> +            (sha256
> +             (base32
> +              "0gmk1n3i7lbm7rw8zl4df171yhvrlimj8ksj096bf2dlfhbd44rb")))))
> +
> +    (origin
> +      (method computed-origin-method)
> +      (file-name (string-append "ungoogled-chromium-" %chromium-version ".tar.xz"))
> +      (sha256 #f)
> +      (uri
> +       (delay
> +         (with-imported-modules '((guix build utils))
> +           #~(begin
> +               (use-modules (guix build utils))
> +               (let ((chromium-dir    (string-append "chromium-" #$%chromium-version))
> +                     (preserved-files (list #$@%preserved-third-party-files)))
> +
> +                 (mkdir "/tmp/bin")
> +                 (set-path-environment-variable
> +                  "PATH" '("bin")
> +                  (list "/tmp"
> +                        #+(canonical-package patch)
> +                        #+(canonical-package xz)
> +                        #+(canonical-package tar)
> +                        #+python-2
> +                        #+python))
> +
> +                 (copy-recursively #+ungoogled-source "/tmp/ungoogled")
> +
> +                 (with-directory-excursion "/tmp/ungoogled"
> +
> +                   (format #t "Unpacking chromium tarball...~%")
> +                   (force-output)
> +                   (invoke "tar" "xf" #+chromium-source)
> +
> +                   (format #t "Ungooglifying...~%")
> +                   (force-output)
> +                   (invoke "python3" "run_buildkit_cli.py" "prune"
> +                           "-b" "config_bundles/guix" chromium-dir)
> +                   (invoke "python3" "run_buildkit_cli.py" "patches" "apply"
> +                           "-b" "config_bundles/guix" chromium-dir)
> +                   (invoke "python3" "run_buildkit_cli.py" "domains" "apply"
> +                           "-b" "config_bundles/linux_rooted"
> +                           "-c" "/tmp/domainscache.tar.gz" chromium-dir)
> +
> +                   (with-directory-excursion chromium-dir
> +                     (format #t "Pruning third party files...~%")
> +                     (force-output)
> +                     (apply invoke "python"
> +                             "build/linux/unbundle/remove_bundled_libraries.py"
> +                             "--do-remove" preserved-files)
> +
> +                     (format #t "Replacing GN files...~%")
> +                     (force-output)
> +                     (invoke "python3" "build/linux/unbundle/replace_gn_files.py"
> +                             "--system-libraries" "ffmpeg" "flac" "fontconfig"
> +                             "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
> +                             "libjpeg" "libpng" "libvpx" "libwebp" "libxml"
> +                             "libxslt" "openh264" "opus" "re2" "snappy" "yasm"
> +                             "zlib"))
> +
> +                   (format #t (string-append "Packing new Ungoogled tarball ...~%"))
> +                   (force-output)
> +                   (invoke "tar" "cvfa" #$output
> +                           ;; Avoid non-determinism in the archive.
> +                           "--mtime=@0"
> +                           "--owner=root:0"
> +                           "--group=root:0"
> +                           "--sort=name"
> +                           chromium-dir)
> +
> +                   #t)))))))))
> +
> +(define opus+custom
> +  (package/inherit opus
> +    (name "opus+custom")
> +    (arguments
> +     (substitute-keyword-arguments (package-arguments opus)
> +       ((#:configure-flags flags ''())
> +        ;; Opus Custom is an optional extension of the Opus
> +        ;; specification that allows for unsupported frame
> +        ;; sizes.  Chromium requires that this is enabled.
> +        `(cons "--enable-custom-modes"
> +               ,flags))))))
> +
> +(define libvpx/chromium
> +  ;; Chromium 66 and later requires an unreleased libvpx, so we take the
> +  ;; commit from "third_party/libvpx/README.chromium" in the tarball.
> +  (let ((version (package-version libvpx))
> +        (commit "e188b5435de71bcd602c378f1ac0441111f0f915")
> +        (revision "0"))
> +    (package/inherit libvpx
> +      (name "libvpx-chromium")
> +      (version (git-version version revision commit))
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url "https://chromium.googlesource.com/webm/libvpx")
> +                      (commit commit)))
> +                (file-name (git-file-name name version))
> +                (sha256
> +                 (base32
> +                  "0v7lzvgy45zh7zwzmmzkvbcqmhs4xa97z0h97hd3j6myrxcfz1n9")))))))
> +
> +;; Transitional package until HarfBuzz 2.2 is available in Guix master branch.
> +(define harfbuzz/chromium
> +  (package/inherit harfbuzz
> +    (version "2.2.0")
> +    (source (origin
> +              (inherit (package-source harfbuzz))
> +              (uri (string-append "https://www.freedesktop.org/software/harfbuzz"
> +                                  "/release/harfbuzz-" version ".tar.bz2"))
> +              (sha256
> +               (base32
> +                "047q63jr513azf3g1y7f5xn60b4jdjs9zsmrx04sfw5rasyzrk5p"))))))
> +
> +(define-public ungoogled-chromium
> +  (package
> +    (name "ungoogled-chromium")
> +    (version %chromium-version)
> +    (synopsis "Graphical web browser")
> +    (source ungoogled-chromium-source)
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:tests? #f
> +       ;; FIXME: There is a "gn" option specifically for setting -rpath, but
> +       ;; it overrides the RUNPATH set by the linker.
> +       #:validate-runpath? #f
> +       #:modules ((guix build gnu-build-system)
> +                  (guix build utils)
> +                  (ice-9 ftw)
> +                  (ice-9 regex)
> +                  (srfi srfi-26))
> +       #:configure-flags
> +       ;; See tools/gn/docs/cookbook.md and
> +       ;; https://www.chromium.org/developers/gn-build-configuration
> +       ;; for usage.  Run "./gn args . --list" in the Release
> +       ;; directory for an exhaustive list of supported flags.
> +       ;; (Note: The 'configure' phase will do that for you.)
> +       (list "is_debug=false"
> +             "use_gold=false"
> +             "use_lld=false"
> +             "linux_use_bundled_binutils=false"
> +             "use_custom_libcxx=false"
> +             "use_sysroot=false"
> +             "enable_precompiled_headers=false"
> +             "goma_dir=\"\""
> +             "enable_nacl=false"
> +             "enable_nacl_nonsfi=false"
> +             "use_allocator=\"none\""   ;don't use tcmalloc
> +             "use_unofficial_version_number=false"
> +
> +             ;; Define a custom toolchain that simply looks up CC, AR and
> +             ;; friends from the environment.
> +             "custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
> +             "host_toolchain=\"//build/toolchain/linux/unbundle:default\""
> +
> +             ;; Don't assume it's clang.
> +             "is_clang=false"
> +
> +             ;; Optimize for building everything at once, as opposed to
> +             ;; incrementally for development.  See "docs/jumbo.md".
> +             "use_jumbo_build=true"
> +
> +             ;; Disable type-checking for the Web UI to avoid a Java dependency.
> +             "closure_compile=false"
> +
> +             ;; Disable debugging features to save space.
> +             "blink_symbol_level=0"
> +             "enable_iterator_debugging=false"
> +
> +             ;; Some of the unbundled libraries throws deprecation
> +             ;; warnings, etc.  Ignore it.
> +             "treat_warnings_as_errors=false"
> +
> +             ;; Don't add any API keys.  End users can set them in the
> +             ;; environment if desired.  See
> +             ;; <https://www.chromium.org/developers/how-tos/api-keys>.
> +             "use_official_google_api_keys=false"
> +
> +             ;; Disable "safe browsing", which pulls in a dependency on
> +             ;; the nonfree "unrar" program (as of m66).
> +             "safe_browsing_mode=0"
> +
> +             ;; Disable "field trials".
> +             "fieldtrial_testing_like_official_build=true"
> +
> +             ;; Ungoogled components.
> +             "enable_mdns=false"
> +             "enable_one_click_signin=false"
> +             "enable_reading_list=false"
> +             "enable_remoting=false"
> +             "enable_reporting=false"
> +             "enable_service_discovery=false"
> +             "enable_swiftshader=false"
> +             "use_vaapi=true"
> +
> +             ;; Use system libraries where possible.
> +             "use_system_freetype=true"
> +             "use_system_harfbuzz=true"
> +             "use_system_lcms2=true"
> +             "use_system_libdrm=true"
> +             "use_system_libjpeg=true"
> +             "use_system_libpng=true"
> +             ;;"use_system_libsync=true"
> +             "use_system_zlib=true"
> +
> +             "use_gnome_keyring=false"  ;deprecated by libsecret
> +             "use_openh264=true"
> +             "use_pulseaudio=true"
> +             "link_pulseaudio=true"
> +
> +             ;; Don't arbitrarily restrict formats supported by system ffmpeg.
> +             "proprietary_codecs=true"
> +             "ffmpeg_branding=\"Chrome\""
> +
> +             ;; WebRTC stuff.
> +             "rtc_use_h264=true"
> +             ;; Don't use bundled sources.
> +             "rtc_build_json=false"
> +             "rtc_build_libevent=false"
> +             "rtc_build_libvpx=false"
> +             "rtc_build_opus=false"
> +             "rtc_build_ssl=false"
> +
> +             "rtc_build_libsrtp=true"   ;FIXME: fails to find headers
> +             "rtc_build_usrsctp=true"   ;TODO: package this
> +             (string-append "rtc_jsoncpp_root=\""
> +                            (assoc-ref %build-inputs "jsoncpp")
> +                            "/include/jsoncpp/json\"")
> +             (string-append "rtc_ssl_root=\""
> +                            (assoc-ref %build-inputs "openssl")
> +                            "/include/openssl\""))
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'patch-stuff
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (substitute* "printing/cups_config_helper.py"
> +               (("cups_config =.*")
> +                (string-append "cups_config = '" (assoc-ref inputs "cups")
> +                               "/bin/cups-config'\n")))
> +
> +             (substitute*
> +                 '("base/process/launch_posix.cc"
> +                   "base/third_party/dynamic_annotations/dynamic_annotations.c"
> +                   "sandbox/linux/seccomp-bpf/sandbox_bpf.cc"
> +                   "sandbox/linux/services/credentials.cc"
> +                   "sandbox/linux/services/namespace_utils.cc"
> +                   "sandbox/linux/services/syscall_wrappers.cc"
> +                   "sandbox/linux/syscall_broker/broker_host.cc")
> +               (("include \"base/third_party/valgrind/") "include \"valgrind/"))
> +
> +             (for-each (lambda (file)
> +                         (substitute* file
> +                           ;; Fix opus include path.
> +                           ;; Do not substitute opus_private.h.
> +                           (("#include \"opus\\.h\"")
> +                            "#include \"opus/opus.h\"")
> +                           (("#include \"opus_custom\\.h\"")
> +                            "#include \"opus/opus_custom.h\"")
> +                           (("#include \"opus_defines\\.h\"")
> +                            "#include \"opus/opus_defines.h\"")
> +                           (("#include \"opus_multistream\\.h\"")
> +                            "#include \"opus/opus_multistream.h\"")
> +                           (("#include \"opus_types\\.h\"")
> +                            "#include \"opus/opus_types.h\"")))
> +                       (find-files (string-append "third_party/webrtc/modules"
> +                                                  "/audio_coding/codecs/opus")))
> +
> +             (substitute* "chrome/common/chrome_paths.cc"
> +               (("/usr/share/chromium/extensions")
> +                ;; TODO: Add ~/.guix-profile.
> +                "/run/current-system/profile/share/chromium/extensions"))
> +
> +             ;; XXX: Should be unnecessary when use_system_lcms2=true.
> +             (substitute* "third_party/pdfium/core/fxcodec/codec/ccodec_iccmodule.h"
> +               (("include \"third_party/lcms/include/lcms2\\.h\"")
> +                "include \"lcms2.h\""))
> +
> +             (substitute*
> +                 "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
> +               (("include \"third_party/curl") "include \"curl"))
> +
> +             (substitute* "third_party/webrtc/rtc_base/strings/json.h"
> +               (("#include \"third_party/jsoncpp/") "#include \"json/"))
> +
> +             (substitute* "media/base/decode_capabilities.cc"
> +               (("third_party/libvpx/source/libvpx/") ""))
> +
> +             (substitute* "ui/gfx/skia_util.h"
> +               (("third_party/vulkan/include/") ""))
> +
> +             ;; Building chromedriver embeds some files using the ZIP
> +             ;; format which doesn't support timestamps before
> +             ;; 1980. Therefore, advance the timestamps of the files
> +             ;; which are included so that building chromedriver
> +             ;; works.
> +             (let ((circa-1980 (* 10 366 24 60 60)))
> +               (for-each (lambda (file)
> +                           (utime file circa-1980 circa-1980))
> +                         '("chrome/test/chromedriver/extension/background.js"
> +                           "chrome/test/chromedriver/extension/manifest.json")))
> +
> +             #t))
> +         (add-before 'configure 'prepare-build-environment
> +           (lambda* (#:key inputs #:allow-other-keys)
> +
> +             ;; Make sure the right build tools are used.
> +             (setenv "AR" "ar") (setenv "NM" "nm")
> +             (setenv "CC" "gcc") (setenv "CXX" "g++")
> +
> +             ;; Work around <https://bugs.gnu.org/30756>.
> +             (unsetenv "C_INCLUDE_PATH")
> +             (unsetenv "CPLUS_INCLUDE_PATH")
> +
> +             ;; TODO: pre-compile instead. Avoids a race condition.
> +             (setenv "PYTHONDONTWRITEBYTECODE" "1")
> +
> +             ;; XXX: How portable is this.
> +             (mkdir-p "third_party/node/linux/node-linux-x64")
> +             (symlink (string-append (assoc-ref inputs "node") "/bin")
> +                      "third_party/node/linux/node-linux-x64/bin")
> +
> +             #t))
> +         (replace 'configure
> +           (lambda* (#:key configure-flags #:allow-other-keys)
> +             (let ((args (string-join configure-flags " ")))
> +               ;; Generate ninja build files.
> +               (invoke "gn" "gen" "out/Release"
> +                       (string-append "--args=" args))
> +
> +               ;; Print the full list of supported arguments as well as
> +               ;; their current status for convenience.
> +               (format #t "Dumping configure flags...\n")
> +               (invoke "gn" "args" "out/Release" "--list"))))
> +         (replace 'build
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (invoke "ninja" "-C" "out/Release"
> +                     "-j" (number->string (parallel-job-count))
> +                     "chrome"
> +                     "chromedriver")))
> +         (replace 'install
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let* ((out            (assoc-ref outputs "out"))
> +                    (bin            (string-append out "/bin"))
> +                    (exe            (string-append bin "/chromium"))
> +                    (lib            (string-append out "/lib"))
> +                    (man            (string-append out "/share/man/man1"))
> +                    (applications   (string-append out "/share/applications"))
> +                    (install-regexp (make-regexp "\\.(bin|pak)$"))
> +                    (locales        (string-append lib "/locales"))
> +                    (resources      (string-append lib "/resources"))
> +                    (preferences    (assoc-ref inputs "master-preferences"))
> +                    (gtk+           (assoc-ref inputs "gtk+"))
> +                    (mesa           (assoc-ref inputs "mesa"))
> +                    (nss            (assoc-ref inputs "nss"))
> +                    (udev           (assoc-ref inputs "udev"))
> +                    (sh             (which "sh")))
> +
> +               (substitute* '("chrome/app/resources/manpage.1.in"
> +                              "chrome/installer/linux/common/desktop.template")
> +                 (("@@MENUNAME@@") "Chromium")
> +                 (("@@PACKAGE@@") "chromium")
> +                 (("/usr/bin/@@USR_BIN_SYMLINK_NAME@@") exe))
> +
> +               (mkdir-p man)
> +               (copy-file "chrome/app/resources/manpage.1.in"
> +                          (string-append man "/chromium.1"))
> +
> +               (mkdir-p applications)
> +               (copy-file "chrome/installer/linux/common/desktop.template"
> +                          (string-append applications "/chromium.desktop"))
> +
> +               (mkdir-p lib)
> +               (copy-file preferences (string-append lib "/master_preferences"))
> +
> +               (with-directory-excursion "out/Release"
> +                 (for-each (lambda (file)
> +                             (install-file file lib))
> +                           (scandir "." (cut regexp-exec install-regexp <>)))
> +                 (copy-file "chrome" (string-append lib "/chromium"))
> +
> +                 ;; TODO: Install icons from "../../chrome/app/themes" into
> +                 ;; "out/share/icons/hicolor/$size".
> +                 (install-file
> +                  "product_logo_48.png"
> +                  (string-append out "/share/icons/48x48/chromium.png"))
> +
> +                 (copy-recursively "locales" locales)
> +                 (copy-recursively "resources" resources)
> +
> +                 (mkdir-p bin)
> +                 (symlink "../lib/chromium" exe)
> +                 (install-file "chromedriver" bin)
> +
> +                 (wrap-program exe
> +                   ;; TODO: Get these in RUNPATH.
> +                   `("LD_LIBRARY_PATH" ":" prefix
> +                     (,(string-append lib ":" nss "/lib/nss:" gtk+ "/lib:"
> +                                      mesa "/lib:" udev "/lib")))
> +                   ;; Avoid file manager crash.  See <https://bugs.gnu.org/26593>.
> +                   `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))))
> +                 #t)))))))
> +    (native-inputs
> +     `(("bison" ,bison)
> +       ("gcc" ,gcc-8)
> +       ("gn" ,gn)
> +       ("gperf" ,gperf)
> +       ("ninja" ,ninja)
> +       ("node" ,node)
> +       ("pkg-config" ,pkg-config)
> +       ("which" ,which)
> +       ("yasm" ,yasm)
> +
> +       ;; This file contains defaults for new user profiles.
> +       ("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json"))
> +
> +       ("python-beautifulsoup4" ,python2-beautifulsoup4)
> +       ("python-html5lib" ,python2-html5lib)
> +       ("python" ,python-2)))
> +    (inputs
> +     `(("alsa-lib" ,alsa-lib)
> +       ("atk" ,atk)
> +       ("cups" ,cups)
> +       ("curl" ,curl)
> +       ("dbus" ,dbus)
> +       ("dbus-glib" ,dbus-glib)
> +       ("expat" ,expat)
> +       ("flac" ,flac)
> +       ("ffmpeg" ,ffmpeg)
> +       ("fontconfig" ,fontconfig)
> +       ("freetype" ,freetype)
> +       ("gdk-pixbuf" ,gdk-pixbuf)
> +       ("glib" ,glib)
> +       ("gtk+" ,gtk+)
> +       ("harfbuzz" ,harfbuzz/chromium)
> +       ("icu4c" ,icu4c)
> +       ("jsoncpp" ,jsoncpp)
> +       ("lcms" ,lcms)
> +       ("libevent" ,libevent)
> +       ("libffi" ,libffi)
> +       ("libjpeg-turbo" ,libjpeg-turbo)
> +       ("libpng" ,libpng)
> +       ("libva" ,libva)
> +       ("libvpx" ,libvpx/chromium)
> +       ("libwebp" ,libwebp)
> +       ("libx11" ,libx11)
> +       ("libxcb" ,libxcb)
> +       ("libxcomposite" ,libxcomposite)
> +       ("libxcursor" ,libxcursor)
> +       ("libxdamage" ,libxdamage)
> +       ("libxext" ,libxext)
> +       ("libxfixes" ,libxfixes)
> +       ("libxi" ,libxi)
> +       ("libxml2" ,libxml2)
> +       ("libxrandr" ,libxrandr)
> +       ("libxrender" ,libxrender)
> +       ("libxscrnsaver" ,libxscrnsaver)
> +       ("libxslt" ,libxslt)
> +       ("libxtst" ,libxtst)
> +       ("mesa" ,mesa)
> +       ("minizip" ,minizip)
> +       ("mit-krb5" ,mit-krb5)
> +       ("nss" ,nss)
> +       ("openh264" ,openh264)
> +       ("openjpeg" ,openjpeg)                          ;PDFium only
> +       ("openssl" ,openssl)
> +       ("opus" ,opus+custom)
> +       ("pango" ,pango)
> +       ("pciutils" ,pciutils)
> +       ("pulseaudio" ,pulseaudio)
> +       ("re2" ,re2)
> +       ("snappy" ,snappy)
> +       ("speech-dispatcher" ,speech-dispatcher)
> +       ("udev" ,eudev)
> +       ("valgrind" ,valgrind)
> +       ("vulkan-headers" ,vulkan-headers)))
> +    (home-page "https://www.chromium.org/")
> +    (description
> +     "Ungoogled-Chromium is the Chromium web browser, sans integration with
> +Google web services.")
> +    ;; Chromium is developed as BSD-3, but bundles a large number of third-party
> +    ;; components with other licenses.  For full information, see chrome://credits.
> +    (license (list license:bsd-3
> +                   license:bsd-2
> +                   license:expat
> +                   license:asl2.0
> +                   license:mpl1.1
> +                   license:mpl2.0
> +                   license:public-domain
> +                   license:isc
> +                   (license:non-copyleft "chrome://credits"
> +                                         "See chrome://credits for more information.")
> +                   license:lgpl2.1+))))

--
Joshua Branson
Sent from Emacs and Gnus

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-02 19:20 ` [PATCH] gnu: Add ungoogled-chromium Marius Bakke
  2019-02-03 18:16   ` Joshua Branson
@ 2019-02-03 20:21   ` Amin Bandali
  2019-02-05  5:22   ` [bug#28004] " swedebugia
  2019-02-12 15:58   ` [PATCH v2] " Marius Bakke
  3 siblings, 0 replies; 57+ messages in thread
From: Amin Bandali @ 2019-02-03 20:21 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel, 28004

Hello Marius,

Thanks for your work patching and packaging ungoogled-chromium!

I haven’t had a chance to have a closer look at your patch, but would
you mind elaborating on the “* Free software only.” part of your stated
feature-set and if/how it addresses licensing concerns raised previously
e.g. by bill-auger here[1] with respect to the FSDG status of Chromium,
as well as maintaining solidarity with other FSDG-complying distros?

[1]: https://lists.gnu.org/r/guix-devel/2018-09/msg00264.html

Best,
amin

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-03 18:16   ` Joshua Branson
@ 2019-02-04  4:52     ` bill-auger
  2019-02-04  5:52       ` brettg
                         ` (4 more replies)
  0 siblings, 5 replies; 57+ messages in thread
From: bill-auger @ 2019-02-04  4:52 UTC (permalink / raw)
  To: guix-devel; +Cc: 28004, gnu-linux-libre

re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html

i would like to remind readers of the guix-devel list that it was
discussed some months ago, why no FSDG distros currently distribute
chromium[1] - it appeared at that time, that most people in that
discussion were in agreement that chromium should not be included in
guix; and marius was instead hosting it in a private repo, as not to
taint the main guix repos with dubious software - has there been a
notable break-through since then?

what is the evidence for this claim that this guix package is "free
software only"? - what does "Marks beautiful computed-origin-method" do
toward that end? - if a procedure for liberating any chromium-derived
software has been discovered, this would be a marvelous accomplishment
and very good news indeed, of which people outside of the guix dev team
would also be interested to learn

if the guix team has discovered some new information or has concocted a
viable liberation recipe for chromium or any of it's offspring, then i
hope that, for the benefit of all fellow Fosstopians, someone would
present that information to the FSDG mailing list for review and
discussion - it would be extra neighborly if that happened *before*
offering this program to guix users, while fully knowing that the other
FSDG distros are still intentionally suppressing it in solidarity

again, i am totally indifferent as to whether anyone uses chromium or
not - my only interest in this is that i would like to strengthen the
FSDG by convincing FSDG distros to communicate and collaborate with each
other, and to achieve consensus about common issues such as this, that
clearly affect all distros equally; so that no one is compelled to ask
"why does guixsd endorse that popular program if other FSDG distros
reject it on principal?" - it is difficult enough to explain to users
why these programs are rejected in the first place; but at least the
way things are now, we can say that all FSDG distros are in agreement to
err on the conservative side until a satisfactory liberation procedure
is found and documented - currently, the documented liberation
procedure is: "Remove program/package. Use GNU IceCat, or
equivalent"[2] - if there is a better candidate procedure now, let us
get it onto the table for discussion

i would like to consider all FSDG distros as being part of a larger
federation, sharing the same primary goals; but we cant all be reading
all of the dev lists - let us communicate whenever applicable, in the
common venue that exists for that purpose[3] - i tried enticing the
folks on the guix team to do that previously - if there is indeed
something new to announce regarding chromium's dubious FSDG status,
please elect someone from guix to do so now - this would be very
interesting news to the readers of that list, and your effort and/or
accomplishment would be sincerely applauded - other FSDG distros would
be happy (and some quite eager) to re-instate any of these
chromium-derived packages if a consensus could be reached that any of
them could be distributed 100% freely; but if all distros are to decide
for themselves what is freely distributable and what is not, without
evidence and without discussing it with the other FSDG distros nor the
FSF, then the FSDG loses its teeth, and we all look wishy-washy and
flakey on that, the main, central FSDG concern: which programs are
freely distributable and which are not


[1]: https://lists.gnu.org/archive/html/guix-devel/2018-09/msg00264.html
[2]:
https://libreplanet.org/wiki/List_of_software_that_does_not_respect_the_Free_System_Distribution_Guidelines#chromium-browser
[3]: https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04  4:52     ` bill-auger
@ 2019-02-04  5:52       ` brettg
  2019-02-04  7:46       ` Ineiev
                         ` (3 subsequent siblings)
  4 siblings, 0 replies; 57+ messages in thread
From: brettg @ 2019-02-04  5:52 UTC (permalink / raw)
  To: bill-auger; +Cc: guix-devel, 28004, Guix-devel, gnu-linux-libre

As always, I second Bill here. There is a lot of history behind the 
Chromium project that I think many of us are aware of. There, to my 
knowledge, remains to be a complete audit of the Chromium source. Such 
an audit is crucial for us to even know what is problematic and what is 
not when it comes to FSDG compliance. So, unless the ungoogled chromium 
project has done this audit successfully I remain a kind skeptic.

On 04.02.2019 05:52, bill-auger wrote:
> re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html
> 
> i would like to remind readers of the guix-devel list that it was
> discussed some months ago, why no FSDG distros currently distribute
> chromium[1] - it appeared at that time, that most people in that
> discussion were in agreement that chromium should not be included in
> guix; and marius was instead hosting it in a private repo, as not to
> taint the main guix repos with dubious software - has there been a
> notable break-through since then?
> 
> what is the evidence for this claim that this guix package is "free
> software only"? - what does "Marks beautiful computed-origin-method" do
> toward that end? - if a procedure for liberating any chromium-derived
> software has been discovered, this would be a marvelous accomplishment
> and very good news indeed, of which people outside of the guix dev team
> would also be interested to learn
> 
> if the guix team has discovered some new information or has concocted a
> viable liberation recipe for chromium or any of it's offspring, then i
> hope that, for the benefit of all fellow Fosstopians, someone would
> present that information to the FSDG mailing list for review and
> discussion - it would be extra neighborly if that happened *before*
> offering this program to guix users, while fully knowing that the other
> FSDG distros are still intentionally suppressing it in solidarity
> 
> again, i am totally indifferent as to whether anyone uses chromium or
> not - my only interest in this is that i would like to strengthen the
> FSDG by convincing FSDG distros to communicate and collaborate with 
> each
> other, and to achieve consensus about common issues such as this, that
> clearly affect all distros equally; so that no one is compelled to ask
> "why does guixsd endorse that popular program if other FSDG distros
> reject it on principal?" - it is difficult enough to explain to users
> why these programs are rejected in the first place; but at least the
> way things are now, we can say that all FSDG distros are in agreement 
> to
> err on the conservative side until a satisfactory liberation procedure
> is found and documented - currently, the documented liberation
> procedure is: "Remove program/package. Use GNU IceCat, or
> equivalent"[2] - if there is a better candidate procedure now, let us
> get it onto the table for discussion
> 
> i would like to consider all FSDG distros as being part of a larger
> federation, sharing the same primary goals; but we cant all be reading
> all of the dev lists - let us communicate whenever applicable, in the
> common venue that exists for that purpose[3] - i tried enticing the
> folks on the guix team to do that previously - if there is indeed
> something new to announce regarding chromium's dubious FSDG status,
> please elect someone from guix to do so now - this would be very
> interesting news to the readers of that list, and your effort and/or
> accomplishment would be sincerely applauded - other FSDG distros would
> be happy (and some quite eager) to re-instate any of these
> chromium-derived packages if a consensus could be reached that any of
> them could be distributed 100% freely; but if all distros are to decide
> for themselves what is freely distributable and what is not, without
> evidence and without discussing it with the other FSDG distros nor the
> FSF, then the FSDG loses its teeth, and we all look wishy-washy and
> flakey on that, the main, central FSDG concern: which programs are
> freely distributable and which are not
> 
> 
> [1]: 
> https://lists.gnu.org/archive/html/guix-devel/2018-09/msg00264.html
> [2]:
> https://libreplanet.org/wiki/List_of_software_that_does_not_respect_the_Free_System_Distribution_Guidelines#chromium-browser
> [3]: https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04  4:52     ` bill-auger
  2019-02-04  5:52       ` brettg
@ 2019-02-04  7:46       ` Ineiev
  2019-02-04 10:56         ` bill-auger
  2019-02-04 12:26       ` [GNU-linux-libre] " Julie Marchant
                         ` (2 subsequent siblings)
  4 siblings, 1 reply; 57+ messages in thread
From: Ineiev @ 2019-02-04  7:46 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions; +Cc: guix-devel, 28004

[-- Attachment #1: Type: text/plain, Size: 478 bytes --]

On Sun, Feb 03, 2019 at 11:52:04PM -0500, bill-auger wrote:
> FSF, then the FSDG loses its teeth, and we all look wishy-washy and
> flakey on that, the main, central FSDG concern: which programs are
> freely distributable and which are not

I don't think the main FSDG concern is which programs are freely
distributable, and even which programs are free; IMHO it is,
"a free system distribution must not steer users towards obtaining
any nonfree information for practical use."

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04  7:46       ` Ineiev
@ 2019-02-04 10:56         ` bill-auger
  2019-02-04 14:43           ` Jean Louis
  0 siblings, 1 reply; 57+ messages in thread
From: bill-auger @ 2019-02-04 10:56 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

On Mon, 4 Feb 2019 02:46:30 -0500 Ineiev wrote:
> On Sun, Feb 03, 2019 at 11:52:04PM -0500, bill-auger wrote:
> > the main, central FSDG concern: which programs are
> > freely distributable and which are not  
> 
> I don't think the main FSDG concern is which programs are freely
> distributable, and even which programs are free

geez, i almost erased that bit before sending it too :( - to be clear:
by "freely distributable" i totally meant "provides all five of the
four freedoms"

i will append just this - the issue here is really quite simple to
express - one (and only one) of the following statements must be true:

* the chromium software provides all of the four freedoms
* the chromium software does not provide all of the four freedoms

there is no third option

according to the FSDG, qualifying distros are free to distribute any
software that is known to provide all of the four freedoms; and must
not distribute any software that does not meet that standard - we can
all agree on this so far - yes?

therefore, both of the following statements must be true:

* IF chromium provides all of the four freedoms, then any FSDG distro
  is free to distribute it, if they so choose

* IF chromium is not known to provide all of the four freedoms, or is
  known to not provide all of the four freedoms, then none of the
  FSDG distros should choose to distribute it; and any that does,
  should have a freedom bug posted against it immediately, just as
  happened with pureos

does anyone disagree with either of those two statements?

the FSDG itself is not really the issue here - it is quite clear on
most matters - the problem is that no one knows for certain which one
of those two statements is the actual case in reality - so the key
concerns are: "who shall make that determination?", and "by which
standards?"

should software be considered to be provide all of the four freedoms
until proven otherwise? (e.g. because someone slapped an MIT on top of
it) - or should software be considered to not necessarily provide all
of the four freedoms until proven to do so?

should each distro decide for itself what qualifies as FSDG-free
software and what does not? - or would such decisions be better made by
consensus with the guidance of the FSF?

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04  4:52     ` bill-auger
  2019-02-04  5:52       ` brettg
  2019-02-04  7:46       ` Ineiev
@ 2019-02-04 12:26       ` Julie Marchant
  2019-02-04 15:03         ` bill-auger
  2019-02-04 22:34       ` Ludovic Courtès
  2019-02-09 14:04       ` Adonay Felipe Nogueira
  4 siblings, 1 reply; 57+ messages in thread
From: Julie Marchant @ 2019-02-04 12:26 UTC (permalink / raw)
  To: guix-devel; +Cc: 28004

On 02/03/2019 11:52 PM, bill-auger wrote:
> re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html
> 
> i would like to remind readers of the guix-devel list that it was
> discussed some months ago, why no FSDG distros currently distribute
> chromium[1] - it appeared at that time, that most people in that
> discussion were in agreement that chromium should not be included in
> guix; and marius was instead hosting it in a private repo, as not to
> taint the main guix repos with dubious software - has there been a
> notable break-through since then?
> 
> what is the evidence for this claim that this guix package is "free
> software only"? - what does "Marks beautiful computed-origin-method" do
> toward that end? - if a procedure for liberating any chromium-derived
> software has been discovered, this would be a marvelous accomplishment
> and very good news indeed, of which people outside of the guix dev team
> would also be interested to learn
> 
> if the guix team has discovered some new information or has concocted a
> viable liberation recipe for chromium or any of it's offspring, then i
> hope that, for the benefit of all fellow Fosstopians, someone would
> present that information to the FSDG mailing list for review and
> discussion - it would be extra neighborly if that happened *before*
> offering this program to guix users, while fully knowing that the other
> FSDG distros are still intentionally suppressing it in solidarity
> 
> again, i am totally indifferent as to whether anyone uses chromium or
> not - my only interest in this is that i would like to strengthen the
> FSDG by convincing FSDG distros to communicate and collaborate with each
> other, and to achieve consensus about common issues such as this, that
> clearly affect all distros equally; so that no one is compelled to ask
> "why does guixsd endorse that popular program if other FSDG distros
> reject it on principal?" - it is difficult enough to explain to users
> why these programs are rejected in the first place; but at least the
> way things are now, we can say that all FSDG distros are in agreement to
> err on the conservative side until a satisfactory liberation procedure
> is found and documented - currently, the documented liberation
> procedure is: "Remove program/package. Use GNU IceCat, or
> equivalent"[2] - if there is a better candidate procedure now, let us
> get it onto the table for discussion
> 
> i would like to consider all FSDG distros as being part of a larger
> federation, sharing the same primary goals; but we cant all be reading
> all of the dev lists - let us communicate whenever applicable, in the
> common venue that exists for that purpose[3] - i tried enticing the
> folks on the guix team to do that previously - if there is indeed
> something new to announce regarding chromium's dubious FSDG status,
> please elect someone from guix to do so now - this would be very
> interesting news to the readers of that list, and your effort and/or
> accomplishment would be sincerely applauded - other FSDG distros would
> be happy (and some quite eager) to re-instate any of these
> chromium-derived packages if a consensus could be reached that any of
> them could be distributed 100% freely; but if all distros are to decide
> for themselves what is freely distributable and what is not, without
> evidence and without discussing it with the other FSDG distros nor the
> FSF, then the FSDG loses its teeth, and we all look wishy-washy and
> flakey on that, the main, central FSDG concern: which programs are
> freely distributable and which are not
> 
> 
> [1]: https://lists.gnu.org/archive/html/guix-devel/2018-09/msg00264.html
> [2]:
> https://libreplanet.org/wiki/List_of_software_that_does_not_respect_the_Free_System_Distribution_Guidelines#chromium-browser
> [3]: https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre

Sorry, I didn't notice that this thread was on multiple lists, so when I
hit "Reply List" it only went to the GNU-linux-libre list. Sending a
copy to the other lists; sorry for the messiness.

I'm not sure if I've mentioned it on the GNU-linux-libre list before,
but I have never seen any actual evidence of the current version of
Chromium containing proprietary components.

It's an unreasonable standard to demand proof that programs are libre.
That's an impossible thing to prove. If someone points out, as I have
many times, "I have looked through Chromium's code and not found a
single proprietary program," someone can simply say that they didn't
look hard enough.

That LibrePlanet page, by the way, is not evidence of Chromium
containing proprietary components. It claims such, but the only evidence
provided is a copyright file that clearly indicates a libre license, and
a bug report about not passing a license checking script, which I might
add is also not proof of any program being proprietary. Not to mention,
this is from over eight years ago. Should distro maintainers also take
the outdated recommendation to remove Project: Starfighter from that
page at face value, despite the fact that I released a completely libre
version almost four years ago? The point is, that's a wiki page
sporadically maintained by volunteers. It's a possible starting point
(though to be honest I'm not so sure it's even useful for that), but not
an indication of the GNU FSDG gold standard, so to speak.

-- 
Julie Marchant
http://onpon4.github.io

Encrypt your emails with GnuPG:
https://emailselfdefense.fsf.org

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04 10:56         ` bill-auger
@ 2019-02-04 14:43           ` Jean Louis
  0 siblings, 0 replies; 57+ messages in thread
From: Jean Louis @ 2019-02-04 14:43 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions; +Cc: guix-devel

On Mon, Feb 04, 2019 at 05:56:56AM -0500, bill-auger wrote:
> On Mon, 4 Feb 2019 02:46:30 -0500 Ineiev wrote:
> > On Sun, Feb 03, 2019 at 11:52:04PM -0500, bill-auger wrote:
> > > the main, central FSDG concern: which programs are
> > > freely distributable and which are not  
> > 
> > I don't think the main FSDG concern is which programs are freely
> > distributable, and even which programs are free
> 
> geez, i almost erased that bit before sending it too :( - to be clear:
> by "freely distributable" i totally meant "provides all five of the
> four freedoms"
> 
> i will append just this - the issue here is really quite simple to
> express - one (and only one) of the following statements must be true:
> 
> * the chromium software provides all of the four freedoms
> * the chromium software does not provide all of the four freedoms
> 
> there is no third option

I am not sure that issue is just that simple.

Software may have free license, but it may be made
to control users, or steer to non-free software.

I cannot know if Chromium is now full free, but I
do know, and there are references on issues, here
is one example I found:
https://tracker.pureos.net/T57

There are various issues here referenced:
https://en.wikipedia.org/wiki/Talk:Chromium_(web_browser)

In general, one can make also the free software
that is controlling user or abusing users'
privacy, or sending information to companies
worldwide.

Should such software be included in free software
distributions? I don't think so.

None of 4 freedoms is referencing "no spyware",
but the guidelines do:
https://www.gnu.org/distros/free-system-distribution-guidelines.html

"The distro must contain no DRM, no back doors,
and no spyware."

That is just example, as so far I know, Chromium
was so much connected to Google and was sending
data there.

Jean

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04 12:26       ` [GNU-linux-libre] " Julie Marchant
@ 2019-02-04 15:03         ` bill-auger
  0 siblings, 0 replies; 57+ messages in thread
From: bill-auger @ 2019-02-04 15:03 UTC (permalink / raw)
  To: guix-devel

On Mon, 4 Feb 2019 07:26:59 -0500 Julie wrote:
> I have never seen any actual evidence of the current version of
> Chromium containing proprietary components.
> It's an unreasonable standard to demand proof that programs are libre.

julie, that is like saying "i dont see any evidence on that new car
that says: i do not belong to you" - would you then conclude that you
can drive it home? - i think you would prefer to see the explicit
evidence proving that you do in fact have the right to do that

the default copy permissions for every copyrighted work is "none" - in
order for that work be be set free, the author must very explicitly
label it as such, and try their very best to ensure that their formal
statement of permission follows along with any copies of it - because if
that permission is missing, or difficult to locate or to comprehend,
there is no reason to assume the work is freely distributable

the burden of proof is not upon the one who claims that the default
case applies, it is upon the one who claims that some special case
applies

i will say again though, that my main intention was not to make any
claims neither for nor against this particular program; but to entice
the guix devs to discuss it on the FSDG mailing list for the benefit
of the others who are also interested

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04  4:52     ` bill-auger
                         ` (2 preceding siblings ...)
  2019-02-04 12:26       ` [GNU-linux-libre] " Julie Marchant
@ 2019-02-04 22:34       ` Ludovic Courtès
  2019-02-06 21:04         ` [GNU-linux-libre] " Marius Bakke
  2019-02-07 23:52         ` Christopher Lemmer Webber
  2019-02-09 14:04       ` Adonay Felipe Nogueira
  4 siblings, 2 replies; 57+ messages in thread
From: Ludovic Courtès @ 2019-02-04 22:34 UTC (permalink / raw)
  To: bill-auger; +Cc: guix-devel, 28004, gnu-linux-libre

Hi bill-auger,

bill-auger <bill-auger@peers.community> skribis:

> re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html
>
> i would like to remind readers of the guix-devel list that it was
> discussed some months ago, why no FSDG distros currently distribute
> chromium[1] - it appeared at that time, that most people in that
> discussion were in agreement that chromium should not be included in
> guix; and marius was instead hosting it in a private repo, as not to
> taint the main guix repos with dubious software - has there been a
> notable break-through since then?

It’s not entirely clear to me what the problems are, to be honest.
Marius listed specific issues that were addressed by the patches; others
then pointed out at additional issues that ungoogled-chromium fixes,
which Marius took into account; what’s left now?

I understand you’re skeptical about Chromium, but we cannot base
decisions based on vague skepticism.  If you know of issues that are
still unaddressed, please do list them.

I’d also like to stress that, if Chromium is eventually included in
Guix, we are committed to fixing it or removing it should someone later
discover that it does not comply with the FSDG (that’s the “Commitment
to Correct Mistakes” section of FSDG.)

> i would like to consider all FSDG distros as being part of a larger
> federation, sharing the same primary goals;

As you know, several of us have occasionally asked for advice on the
gnu-linux-libre list regarding concrete issues that we encountered (a
recent example was Inferno, which we ended up not adding to the distro
due to unresolved issues.)

I believe Marius and others here made a real effort in understanding and
addressing the ways in which Chromium would not comply with the FSDG.
If you’re aware of issues that are unaddressed, please share!

Thank you,
Ludo’.

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [bug#28004] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-02 19:20 ` [PATCH] gnu: Add ungoogled-chromium Marius Bakke
  2019-02-03 18:16   ` Joshua Branson
  2019-02-03 20:21   ` Amin Bandali
@ 2019-02-05  5:22   ` swedebugia
  2019-02-12 15:58   ` [PATCH v2] " Marius Bakke
  3 siblings, 0 replies; 57+ messages in thread
From: swedebugia @ 2019-02-05  5:22 UTC (permalink / raw)
  To: guix-patches, Marius Bakke, guix-devel; +Cc: 28004

[-- Attachment #1: Type: text/plain, Size: 37242 bytes --]

Marius Bakke <mbakke@fastmail.com> skrev: (2 februari 2019 20:20:23 CET)
>Thanks to Marks beautiful "computed-origin-method", Ungoogled-Chromium
>is finally ready for inclusion in Guix.
>
>Features:
>* Chromium 72.
>* No unsolicited network traffic.
>* Free software only.
>* No DRM.
>* Not an April Fools joke.
>
>It's currently using my trivial "fork" of Ungoogled-Chromium[0], which
>will be upstreamed once the upstream reorganization[1] is done.
>
>Comments appreciated!
>
>[0]:
>https://github.com/mbakke/ungoogled-chromium/commit/f9b9074c322a67b04baf0982797cd7b7e09614b5
>[1]: https://github.com/Eloston/ungoogled-chromium/issues/651
>
>* gnu/packages/aux-files/chromium/master-preferences.json,
>gnu/packages/chromium.scm: New files.
>* gnu/local.mk (GNU_SYSTEM_MODULES): Adjust accordingly.
>---
> gnu/local.mk                                  |   1 +
> .../chromium/master-preferences.json          |  26 +
> gnu/packages/chromium.scm                     | 741 ++++++++++++++++++
> 3 files changed, 768 insertions(+)
>create mode 100644
>gnu/packages/aux-files/chromium/master-preferences.json
> create mode 100644 gnu/packages/chromium.scm
>
>diff --git a/gnu/local.mk b/gnu/local.mk
>index 82db1488d6..b5e937cdd7 100644
>--- a/gnu/local.mk
>+++ b/gnu/local.mk
>@@ -100,6 +100,7 @@ GNU_SYSTEM_MODULES =				\
>   %D%/packages/check.scm			\
>   %D%/packages/chemistry.scm			\
>   %D%/packages/chez.scm				\
>+  %D%/packages/chromium.scm			\
>   %D%/packages/ci.scm				\
>   %D%/packages/cinnamon.scm			\
>   %D%/packages/clojure.scm			\
>diff --git a/gnu/packages/aux-files/chromium/master-preferences.json
>b/gnu/packages/aux-files/chromium/master-preferences.json
>new file mode 100644
>index 0000000000..0caa7cc4cd
>--- /dev/null
>+++ b/gnu/packages/aux-files/chromium/master-preferences.json
>@@ -0,0 +1,26 @@
>+{
>+  "distribution": {
>+     "import_bookmarks": false,
>+     "make_chrome_default": false,
>+     "make_chrome_default_for_user": false,
>+     "verbose_logging": true,
>+     "skip_first_run_ui": true,
>+     "suppress_first_run_default_browser_prompt": true
>+  },
>+  "browser": {
>+     "has_seen_welcome_page" : true,
>+     "check_default_browser" : false
>+  },
>+  "dns_prefetching": {
>+    "enabled": false
>+  },
>+  "alternate_error_pages": {
>+    "enabled": false
>+  },
>+  "hardware": {
>+    "audio_capture_enabled": false
>+  },
>+  "default_apps": "noinstall",
>+  "hide_web_store_icon": true,
>+  "homepage": "https://www.gnu.org/software/guix"
>+}
>diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
>new file mode 100644
>index 0000000000..eb404246d3
>--- /dev/null
>+++ b/gnu/packages/chromium.scm
>@@ -0,0 +1,741 @@
>+;;; GNU Guix --- Functional package management for GNU
>+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
>+;;;
>+;;; GNU Guix is free software; you can redistribute it and/or modify
>it
>+;;; under the terms of the GNU General Public License as published by
>+;;; the Free Software Foundation; either version 3 of the License, or
>(at
>+;;; your option) any later version.
>+;;;
>+;;; GNU Guix is distributed in the hope that it will be useful, but
>+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
>+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>+;;; GNU General Public License for more details.
>+;;;
>+;;; You should have received a copy of the GNU General Public License
>+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
>+
>+(define-module (gnu packages chromium)
>+  #:use-module ((guix licenses) #:prefix license:)
>+  #:use-module (guix packages)
>+  #:use-module (guix gexp)
>+  #:use-module (guix store)
>+  #:use-module (guix monads)
>+  #:use-module (guix download)
>+  #:use-module (guix git-download)
>+  #:use-module (guix utils)
>+  #:use-module (guix build-system gnu)
>+  #:use-module (gnu packages)
>+  #:use-module (gnu packages assembly)
>+  #:use-module (gnu packages base)
>+  #:use-module (gnu packages bison)
>+  #:use-module (gnu packages build-tools)
>+  #:use-module (gnu packages compression)
>+  #:use-module (gnu packages cups)
>+  #:use-module (gnu packages curl)
>+  #:use-module (gnu packages fontutils)
>+  #:use-module (gnu packages gcc)
>+  #:use-module (gnu packages ghostscript)
>+  #:use-module (gnu packages gl)
>+  #:use-module (gnu packages glib)
>+  #:use-module (gnu packages gnome)
>+  #:use-module (gnu packages gnuzilla)
>+  #:use-module (gnu packages gperf)
>+  #:use-module (gnu packages gtk)
>+  #:use-module (gnu packages icu4c)
>+  #:use-module (gnu packages image)
>+  #:use-module (gnu packages libevent)
>+  #:use-module (gnu packages libffi)
>+  #:use-module (gnu packages linux)
>+  #:use-module (gnu packages kerberos)
>+  #:use-module (gnu packages ninja)
>+  #:use-module (gnu packages node)
>+  #:use-module (gnu packages pciutils)
>+  #:use-module (gnu packages pkg-config)
>+  #:use-module (gnu packages pulseaudio)
>+  #:use-module (gnu packages python)
>+  #:use-module (gnu packages python-web)
>+  #:use-module (gnu packages python-xyz)
>+  #:use-module (gnu packages regex)
>+  #:use-module (gnu packages serialization)
>+  #:use-module (gnu packages speech)
>+  #:use-module (gnu packages tls)
>+  #:use-module (gnu packages valgrind)
>+  #:use-module (gnu packages vulkan)
>+  #:use-module (gnu packages video)
>+  #:use-module (gnu packages xiph)
>+  #:use-module (gnu packages xml)
>+  #:use-module (gnu packages xdisorg)
>+  #:use-module (gnu packages xorg))
>+
>+(define %preserved-third-party-files
>+  '("base/third_party/dmg_fp" ;X11-style
>+    "base/third_party/dynamic_annotations" ;BSD-2
>+    "base/third_party/icu" ;Unicode, X11-style
>+    "base/third_party/superfasthash" ;BSD-3
>+    "base/third_party/symbolize" ;BSD-3
>+    "base/third_party/xdg_mime" ;LGPL2.1+ or Academic 2.0
>+    "base/third_party/xdg_user_dirs" ;Expat
>+    "chrome/third_party/mozilla_security_manager"
>;MPL-1.1/GPL2+/LGPL2.1+
>+    "courgette/third_party/bsdiff" ;BSD-2, BSD protection license
>+    "courgette/third_party/divsufsort" ;Expat
>+    "net/third_party/http2" ;BSD-3
>+    "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
>+    "net/third_party/nss" ;MPL-2.0
>+    "net/third_party/quic" ;BSD-3
>+    "net/third_party/spdy" ;BSD-3
>+    "net/third_party/uri_template" ;ASL2.0
>+    "third_party/abseil-cpp" ;ASL2.0
>+    "third_party/adobe/flash/flapper_version.h" ;no license, trivial
>+    "third_party/angle" ;BSD-3
>+    "third_party/angle/src/common/third_party/base" ;BSD-3
>+    "third_party/angle/src/common/third_party/smhasher" ;Public domain
>+    "third_party/angle/src/common/third_party/xxhash" ;BSD-2
>+    "third_party/angle/src/third_party/compiler" ;BSD-2
>+    "third_party/angle/src/third_party/libXNVCtrl" ;Expat
>+    "third_party/angle/src/third_party/trace_event" ;BSD-3
>+    "third_party/angle/third_party/glslang" ;BSD-3
>+    "third_party/angle/third_party/spirv-headers" ;Expat
>+    "third_party/angle/third_party/spirv-tools" ;Expat
>+    "third_party/angle/third_party/vulkan-headers" ;ASL2.0
>+    "third_party/angle/third_party/vulkan-loader" ;ASL2.0
>+    "third_party/angle/third_party/vulkan-tools" ;ASL2.0
>+    "third_party/angle/third_party/vulkan-validation-layers" ;ASL2.0
>+    "third_party/apple_apsl" ;APSL2.0
>+    "third_party/blink" ;BSD-3
>+    "third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
>+    "third_party/boringssl/src/third_party/fiat" ;Expat
>+    "third_party/breakpad" ;BSD-3
>+    "third_party/brotli" ;Expat
>+    "third_party/cacheinvalidation" ;ASL2.0
>+    "third_party/catapult" ;BSD-3
>+    "third_party/catapult/common/py_vulcanize/third_party/rcssmin"
>;ASL2.0
>+    "third_party/catapult/common/py_vulcanize/third_party/rjsmin"
>;ASL2.0
>+    "third_party/catapult/third_party/polymer" ;BSD-3
>+    "third_party/catapult/tracing/third_party/d3" ;BSD-3
>+    "third_party/catapult/tracing/third_party/gl-matrix" ;Expat
>+    "third_party/catapult/tracing/third_party/jszip" ;Expat or GPL3
>+    "third_party/catapult/tracing/third_party/mannwhitneyu" ;Expat
>+    "third_party/catapult/tracing/third_party/oboe" ;BSD-2
>+    "third_party/catapult/tracing/third_party/pako" ;Expat
>+    "third_party/ced" ;BSD-3
>+    "third_party/cld_3" ;ASL2.0
>+    "third_party/closure_compiler" ;ASL2.0
>+    "third_party/crashpad" ;ASL2.0
>+    "third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h"
>;Zlib
>+    "third_party/crc32c" ;BSD-3
>+    "third_party/cros_system_api" ;BSD-3
>+    "third_party/dom_distiller_js" ;BSD-3
>+    "third_party/fips181" ;BSD-3
>+    "third_party/flatbuffers" ;ASL2.0
>+    "third_party/google_input_tools" ;ASL2.0
>+    "third_party/google_input_tools/third_party/closure_library"
>;ASL2.0
>+   
>"third_party/google_input_tools/third_party/closure_library/third_party/closure"
>;Expat
>+    "third_party/googletest" ;BSD-3
>+    "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
>+    "third_party/iccjpeg" ;IJG
>+    "third_party/inspector_protocol" ;BSD-3
>+    "third_party/jinja2" ;BSD-3
>+    "third_party/jstemplate" ;ASL2.0
>+    "third_party/khronos" ;Expat, SGI
>+    "third_party/leveldatabase" ;BSD-3
>+    "third_party/libXNVCtrl" ;Expat
>+    "third_party/libaddressinput" ;ASL2.0
>+    "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent
>License 1.0"
>+    "third_party/libaom/source/libaom/third_party/vector" ;Expat
>+    "third_party/libaom/source/libaom/third_party/x86inc" ;ISC
>+    "third_party/libjingle_xmpp" ;BSD-3
>+    "third_party/libphonenumber" ;ASL2.0
>+    "third_party/libsecret" ;LGPL2.1+
>+    "third_party/libsrtp" ;BSD-3
>+    "third_party/libsync" ;ASL2.0
>+    "third_party/libudev" ;LGPL2.1+
>+    "third_party/libwebm" ;BSD-3
>+    "third_party/libxml/chromium" ;BSD-3
>+    "third_party/libyuv" ;BSD-3
>+    "third_party/lss" ;BSD-3
>+    "third_party/markupsafe" ;BSD-3
>+    "third_party/mesa_headers" ;Expat, SGI
>+    "third_party/metrics_proto" ;BSD-3
>+    "third_party/modp_b64" ;BSD-3
>+    "third_party/nasm" ;BSD-2
>+    "third_party/node" ;Expat
>+   
>"third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2"
>;BSD-2
>+    "third_party/ots" ;BSD-3
>+    "third_party/pdfium" ;BSD-3
>+    "third_party/pdfium/third_party/agg23" ;Expat
>+    "third_party/pdfium/third_party/base" ;BSD-3
>+    "third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
>+    "third_party/pdfium/third_party/skia_shared" ;BSD-3
>+    "third_party/pdfium/third_party/freetype/include/pstables.h"
>;FreeType
>+    "third_party/ply" ;BSD-3
>+    "third_party/polymer" ;BSD-3
>+    "third_party/protobuf" ;BSD-3
>+    "third_party/protobuf/third_party/six" ;Expat
>+    "third_party/pyjson5" ;ASL2.0
>+    "third_party/qcms" ;Expat
>+    "third_party/rnnoise" ;BSD-3
>+    "third_party/s2cellid" ;ASL2.0
>+    "third_party/sfntly" ;ASL2.0
>+    "third_party/skia" ;BSD-3
>+    "third_party/skia/third_party/gif" ;MPL1.1/GPL2+/LGPL2.1+
>+    "third_party/skia/third_party/skcms" ;BSD-3
>+    "third_party/skia/third_party/vulkan" ;BSD-3
>+    "third_party/smhasher" ;Expat, public domain
>+    "third_party/speech-dispatcher" ;GPL2+
>+    "third_party/spirv-headers" ;ASL2.0
>+    "third_party/SPIRV-Tools" ;ASL2.0
>+    "third_party/sqlite" ;Public domain
>+    "third_party/ungoogled" ;BSD-3
>+    "third_party/usb_ids" ;BSD-3
>+    "third_party/usrsctp" ;BSD-2
>+    "third_party/web-animations-js" ;ASL2.0
>+    "third_party/webdriver" ;ASL2.0
>+    "third_party/webrtc" ;BSD-3
>+    "third_party/webrtc/common_audio/third_party/fft4g" ;Non-copyleft
>+    "third_party/webrtc/common_audio/third_party/spl_sqrt_floor"
>;Public domain
>+    "third_party/webrtc/modules/third_party/fft" ;Non-copyleft
>+    "third_party/webrtc/modules/third_party/g711" ;Public domain
>+    "third_party/webrtc/modules/third_party/g722" ;Public domain
>+    "third_party/webrtc/rtc_base/third_party/base64" ;Non-copyleft
>+    "third_party/webrtc/rtc_base/third_party/sigslot" ;Public domain
>+    "third_party/widevine/cdm/widevine_cdm_version.h" ;BSD-3
>+    "third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
>+    "third_party/woff2" ;ASL2.0
>+    "third_party/xdg-utils" ;Expat
>+    "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3
>+    "third_party/zlib/google" ;BSD-3
>+    "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
>+    "v8/src/third_party/utf8-decoder" ;Expat
>+    "v8/src/third_party/valgrind" ;BSD-4
>+    "v8/third_party/inspector_protocol" ;BSD-3
>+    "v8/third_party/v8/builtins")) ;PSFL
>+
>+(define* (computed-origin-method gexp-promise hash-algo hash
>+                                 #:optional (name "source")
>+                                 #:key (system (%current-system))
>+                                 (guile (default-guile)))
>+  "Return a derivation that executes the G-expression that results
>+from forcing GEXP-PROMISE."
>+  (mlet %store-monad ((guile (package->derivation guile system)))
>+    (gexp->derivation (or name "computed-origin")
>+                      (force gexp-promise)
>+                      #:system system
>+                      #:guile-for-build guile)))
>+
>+(define %chromium-version "72.0.3626.81")
>+(define %ungoogled-revision
>"f9b9074c322a67b04baf0982797cd7b7e09614b5")
>+
>+;; This is a computed origin that does the following:
>+;; 1) Runs the Ungoogled scripts on a pristine Chromium tarball.
>+;; 2) Prunes all third_party folders that are not explicitly
>preserved.
>+;; 3) Adjusts "GN" build files such that system libraries are
>preferred.
>+(define ungoogled-chromium-source
>+  (let* ((chromium-source
>+          (origin
>+            (method url-fetch)
>+            (uri (string-append
>"https://commondatastorage.googleapis.com"
>+                                "/chromium-browser-official/chromium-"
>+                                %chromium-version ".tar.xz"))
>+            (sha256
>+             (base32
>+             
>"01l0vlvcckpag376mjld7qprv63l0z8li689k0h6v3h0i7irzs6z"))))
>+         (ungoogled-source
>+          (origin
>+            (method git-fetch)
>+            (uri (git-reference (url
>"https://github.com/mbakke/ungoogled-chromium")
>+                                (commit %ungoogled-revision)))
>+            (file-name (git-file-name "ungoogled-chromium"
>+                                      (string-take %ungoogled-revision
>7)))
>+            (sha256
>+             (base32
>+             
>"0gmk1n3i7lbm7rw8zl4df171yhvrlimj8ksj096bf2dlfhbd44rb")))))
>+
>+    (origin
>+      (method computed-origin-method)
>+      (file-name (string-append "ungoogled-chromium-"
>%chromium-version ".tar.xz"))
>+      (sha256 #f)
>+      (uri
>+       (delay
>+         (with-imported-modules '((guix build utils))
>+           #~(begin
>+               (use-modules (guix build utils))
>+               (let ((chromium-dir    (string-append "chromium-"
>#$%chromium-version))
>+                     (preserved-files (list
>#$@%preserved-third-party-files)))
>+
>+                 (mkdir "/tmp/bin")
>+                 (set-path-environment-variable
>+                  "PATH" '("bin")
>+                  (list "/tmp"
>+                        #+(canonical-package patch)
>+                        #+(canonical-package xz)
>+                        #+(canonical-package tar)
>+                        #+python-2
>+                        #+python))
>+
>+                 (copy-recursively #+ungoogled-source
>"/tmp/ungoogled")
>+
>+                 (with-directory-excursion "/tmp/ungoogled"
>+
>+                   (format #t "Unpacking chromium tarball...~%")
>+                   (force-output)
>+                   (invoke "tar" "xf" #+chromium-source)
>+
>+                   (format #t "Ungooglifying...~%")
>+                   (force-output)
>+                   (invoke "python3" "run_buildkit_cli.py" "prune"
>+                           "-b" "config_bundles/guix" chromium-dir)
>+                   (invoke "python3" "run_buildkit_cli.py" "patches"
>"apply"
>+                           "-b" "config_bundles/guix" chromium-dir)
>+                   (invoke "python3" "run_buildkit_cli.py" "domains"
>"apply"
>+                           "-b" "config_bundles/linux_rooted"
>+                           "-c" "/tmp/domainscache.tar.gz"
>chromium-dir)
>+
>+                   (with-directory-excursion chromium-dir
>+                     (format #t "Pruning third party files...~%")
>+                     (force-output)
>+                     (apply invoke "python"
>+                            
>"build/linux/unbundle/remove_bundled_libraries.py"
>+                             "--do-remove" preserved-files)
>+
>+                     (format #t "Replacing GN files...~%")
>+                     (force-output)
>+                     (invoke "python3"
>"build/linux/unbundle/replace_gn_files.py"
>+                             "--system-libraries" "ffmpeg" "flac"
>"fontconfig"
>+                             "freetype" "harfbuzz-ng" "icu" "libdrm"
>"libevent"
>+                             "libjpeg" "libpng" "libvpx" "libwebp"
>"libxml"
>+                             "libxslt" "openh264" "opus" "re2"
>"snappy" "yasm"
>+                             "zlib"))
>+
>+                   (format #t (string-append "Packing new Ungoogled
>tarball ...~%"))
>+                   (force-output)
>+                   (invoke "tar" "cvfa" #$output
>+                           ;; Avoid non-determinism in the archive.
>+                           "--mtime=@0"
>+                           "--owner=root:0"
>+                           "--group=root:0"
>+                           "--sort=name"
>+                           chromium-dir)
>+
>+                   #t)))))))))
>+
>+(define opus+custom
>+  (package/inherit opus
>+    (name "opus+custom")
>+    (arguments
>+     (substitute-keyword-arguments (package-arguments opus)
>+       ((#:configure-flags flags ''())
>+        ;; Opus Custom is an optional extension of the Opus
>+        ;; specification that allows for unsupported frame
>+        ;; sizes.  Chromium requires that this is enabled.
>+        `(cons "--enable-custom-modes"
>+               ,flags))))))
>+
>+(define libvpx/chromium
>+  ;; Chromium 66 and later requires an unreleased libvpx, so we take
>the
>+  ;; commit from "third_party/libvpx/README.chromium" in the tarball.
>+  (let ((version (package-version libvpx))
>+        (commit "e188b5435de71bcd602c378f1ac0441111f0f915")
>+        (revision "0"))
>+    (package/inherit libvpx
>+      (name "libvpx-chromium")
>+      (version (git-version version revision commit))
>+      (source (origin
>+                (method git-fetch)
>+                (uri (git-reference
>+                      (url
>"https://chromium.googlesource.com/webm/libvpx")
>+                      (commit commit)))
>+                (file-name (git-file-name name version))
>+                (sha256
>+                 (base32
>+                 
>"0v7lzvgy45zh7zwzmmzkvbcqmhs4xa97z0h97hd3j6myrxcfz1n9")))))))
>+
>+;; Transitional package until HarfBuzz 2.2 is available in Guix master
>branch.
>+(define harfbuzz/chromium
>+  (package/inherit harfbuzz
>+    (version "2.2.0")
>+    (source (origin
>+              (inherit (package-source harfbuzz))
>+              (uri (string-append
>"https://www.freedesktop.org/software/harfbuzz"
>+                                  "/release/harfbuzz-" version
>".tar.bz2"))
>+              (sha256
>+               (base32
>+               
>"047q63jr513azf3g1y7f5xn60b4jdjs9zsmrx04sfw5rasyzrk5p"))))))
>+
>+(define-public ungoogled-chromium
>+  (package
>+    (name "ungoogled-chromium")
>+    (version %chromium-version)
>+    (synopsis "Graphical web browser")
>+    (source ungoogled-chromium-source)
>+    (build-system gnu-build-system)
>+    (arguments
>+     `(#:tests? #f
>+       ;; FIXME: There is a "gn" option specifically for setting
>-rpath, but
>+       ;; it overrides the RUNPATH set by the linker.
>+       #:validate-runpath? #f
>+       #:modules ((guix build gnu-build-system)
>+                  (guix build utils)
>+                  (ice-9 ftw)
>+                  (ice-9 regex)
>+                  (srfi srfi-26))
>+       #:configure-flags
>+       ;; See tools/gn/docs/cookbook.md and
>+       ;; https://www.chromium.org/developers/gn-build-configuration
>+       ;; for usage.  Run "./gn args . --list" in the Release
>+       ;; directory for an exhaustive list of supported flags.
>+       ;; (Note: The 'configure' phase will do that for you.)
>+       (list "is_debug=false"
>+             "use_gold=false"
>+             "use_lld=false"
>+             "linux_use_bundled_binutils=false"
>+             "use_custom_libcxx=false"
>+             "use_sysroot=false"
>+             "enable_precompiled_headers=false"
>+             "goma_dir=\"\""
>+             "enable_nacl=false"
>+             "enable_nacl_nonsfi=false"
>+             "use_allocator=\"none\""   ;don't use tcmalloc
>+             "use_unofficial_version_number=false"
>+
>+             ;; Define a custom toolchain that simply looks up CC, AR
>and
>+             ;; friends from the environment.
>+            
>"custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
>+            
>"host_toolchain=\"//build/toolchain/linux/unbundle:default\""
>+
>+             ;; Don't assume it's clang.
>+             "is_clang=false"
>+
>+             ;; Optimize for building everything at once, as opposed
>to
>+             ;; incrementally for development.  See "docs/jumbo.md".
>+             "use_jumbo_build=true"
>+
>+             ;; Disable type-checking for the Web UI to avoid a Java
>dependency.
>+             "closure_compile=false"
>+
>+             ;; Disable debugging features to save space.
>+             "blink_symbol_level=0"
>+             "enable_iterator_debugging=false"
>+
>+             ;; Some of the unbundled libraries throws deprecation
>+             ;; warnings, etc.  Ignore it.
>+             "treat_warnings_as_errors=false"
>+
>+             ;; Don't add any API keys.  End users can set them in the
>+             ;; environment if desired.  See
>+             ;;
><https://www.chromium.org/developers/how-tos/api-keys>.
>+             "use_official_google_api_keys=false"
>+
>+             ;; Disable "safe browsing", which pulls in a dependency
>on
>+             ;; the nonfree "unrar" program (as of m66).
>+             "safe_browsing_mode=0"
>+
>+             ;; Disable "field trials".
>+             "fieldtrial_testing_like_official_build=true"
>+
>+             ;; Ungoogled components.
>+             "enable_mdns=false"
>+             "enable_one_click_signin=false"
>+             "enable_reading_list=false"
>+             "enable_remoting=false"
>+             "enable_reporting=false"
>+             "enable_service_discovery=false"
>+             "enable_swiftshader=false"
>+             "use_vaapi=true"
>+
>+             ;; Use system libraries where possible.
>+             "use_system_freetype=true"
>+             "use_system_harfbuzz=true"
>+             "use_system_lcms2=true"
>+             "use_system_libdrm=true"
>+             "use_system_libjpeg=true"
>+             "use_system_libpng=true"
>+             ;;"use_system_libsync=true"
>+             "use_system_zlib=true"
>+
>+             "use_gnome_keyring=false"  ;deprecated by libsecret
>+             "use_openh264=true"
>+             "use_pulseaudio=true"
>+             "link_pulseaudio=true"
>+
>+             ;; Don't arbitrarily restrict formats supported by system
>ffmpeg.
>+             "proprietary_codecs=true"
>+             "ffmpeg_branding=\"Chrome\""
>+
>+             ;; WebRTC stuff.
>+             "rtc_use_h264=true"
>+             ;; Don't use bundled sources.
>+             "rtc_build_json=false"
>+             "rtc_build_libevent=false"
>+             "rtc_build_libvpx=false"
>+             "rtc_build_opus=false"
>+             "rtc_build_ssl=false"
>+
>+             "rtc_build_libsrtp=true"   ;FIXME: fails to find headers
>+             "rtc_build_usrsctp=true"   ;TODO: package this
>+             (string-append "rtc_jsoncpp_root=\""
>+                            (assoc-ref %build-inputs "jsoncpp")
>+                            "/include/jsoncpp/json\"")
>+             (string-append "rtc_ssl_root=\""
>+                            (assoc-ref %build-inputs "openssl")
>+                            "/include/openssl\""))
>+       #:phases
>+       (modify-phases %standard-phases
>+         (add-after 'unpack 'patch-stuff
>+           (lambda* (#:key inputs #:allow-other-keys)
>+             (substitute* "printing/cups_config_helper.py"
>+               (("cups_config =.*")
>+                (string-append "cups_config = '" (assoc-ref inputs
>"cups")
>+                               "/bin/cups-config'\n")))
>+
>+             (substitute*
>+                 '("base/process/launch_posix.cc"
>+                  
>"base/third_party/dynamic_annotations/dynamic_annotations.c"
>+                   "sandbox/linux/seccomp-bpf/sandbox_bpf.cc"
>+                   "sandbox/linux/services/credentials.cc"
>+                   "sandbox/linux/services/namespace_utils.cc"
>+                   "sandbox/linux/services/syscall_wrappers.cc"
>+                   "sandbox/linux/syscall_broker/broker_host.cc")
>+               (("include \"base/third_party/valgrind/") "include
>\"valgrind/"))
>+
>+             (for-each (lambda (file)
>+                         (substitute* file
>+                           ;; Fix opus include path.
>+                           ;; Do not substitute opus_private.h.
>+                           (("#include \"opus\\.h\"")
>+                            "#include \"opus/opus.h\"")
>+                           (("#include \"opus_custom\\.h\"")
>+                            "#include \"opus/opus_custom.h\"")
>+                           (("#include \"opus_defines\\.h\"")
>+                            "#include \"opus/opus_defines.h\"")
>+                           (("#include \"opus_multistream\\.h\"")
>+                            "#include \"opus/opus_multistream.h\"")
>+                           (("#include \"opus_types\\.h\"")
>+                            "#include \"opus/opus_types.h\"")))
>+                       (find-files (string-append
>"third_party/webrtc/modules"
>+                                                 
>"/audio_coding/codecs/opus")))
>+
>+             (substitute* "chrome/common/chrome_paths.cc"
>+               (("/usr/share/chromium/extensions")
>+                ;; TODO: Add ~/.guix-profile.
>+               
>"/run/current-system/profile/share/chromium/extensions"))
>+
>+             ;; XXX: Should be unnecessary when use_system_lcms2=true.
>+             (substitute*
>"third_party/pdfium/core/fxcodec/codec/ccodec_iccmodule.h"
>+               (("include \"third_party/lcms/include/lcms2\\.h\"")
>+                "include \"lcms2.h\""))
>+
>+             (substitute*
>+                
>"third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
>+               (("include \"third_party/curl") "include \"curl"))
>+
>+             (substitute* "third_party/webrtc/rtc_base/strings/json.h"
>+               (("#include \"third_party/jsoncpp/") "#include
>\"json/"))
>+
>+             (substitute* "media/base/decode_capabilities.cc"
>+               (("third_party/libvpx/source/libvpx/") ""))
>+
>+             (substitute* "ui/gfx/skia_util.h"
>+               (("third_party/vulkan/include/") ""))
>+
>+             ;; Building chromedriver embeds some files using the ZIP
>+             ;; format which doesn't support timestamps before
>+             ;; 1980. Therefore, advance the timestamps of the files
>+             ;; which are included so that building chromedriver
>+             ;; works.
>+             (let ((circa-1980 (* 10 366 24 60 60)))
>+               (for-each (lambda (file)
>+                           (utime file circa-1980 circa-1980))
>+                        
>'("chrome/test/chromedriver/extension/background.js"
>+                          
>"chrome/test/chromedriver/extension/manifest.json")))
>+
>+             #t))
>+         (add-before 'configure 'prepare-build-environment
>+           (lambda* (#:key inputs #:allow-other-keys)
>+
>+             ;; Make sure the right build tools are used.
>+             (setenv "AR" "ar") (setenv "NM" "nm")
>+             (setenv "CC" "gcc") (setenv "CXX" "g++")
>+
>+             ;; Work around <https://bugs.gnu.org/30756>.
>+             (unsetenv "C_INCLUDE_PATH")
>+             (unsetenv "CPLUS_INCLUDE_PATH")
>+
>+             ;; TODO: pre-compile instead. Avoids a race condition.
>+             (setenv "PYTHONDONTWRITEBYTECODE" "1")
>+
>+             ;; XXX: How portable is this.
>+             (mkdir-p "third_party/node/linux/node-linux-x64")
>+             (symlink (string-append (assoc-ref inputs "node") "/bin")
>+                      "third_party/node/linux/node-linux-x64/bin")
>+
>+             #t))
>+         (replace 'configure
>+           (lambda* (#:key configure-flags #:allow-other-keys)
>+             (let ((args (string-join configure-flags " ")))
>+               ;; Generate ninja build files.
>+               (invoke "gn" "gen" "out/Release"
>+                       (string-append "--args=" args))
>+
>+               ;; Print the full list of supported arguments as well
>as
>+               ;; their current status for convenience.
>+               (format #t "Dumping configure flags...\n")
>+               (invoke "gn" "args" "out/Release" "--list"))))
>+         (replace 'build
>+           (lambda* (#:key outputs #:allow-other-keys)
>+             (invoke "ninja" "-C" "out/Release"
>+                     "-j" (number->string (parallel-job-count))
>+                     "chrome"
>+                     "chromedriver")))
>+         (replace 'install
>+           (lambda* (#:key inputs outputs #:allow-other-keys)
>+             (let* ((out            (assoc-ref outputs "out"))
>+                    (bin            (string-append out "/bin"))
>+                    (exe            (string-append bin "/chromium"))
>+                    (lib            (string-append out "/lib"))
>+                    (man            (string-append out
>"/share/man/man1"))
>+                    (applications   (string-append out
>"/share/applications"))
>+                    (install-regexp (make-regexp "\\.(bin|pak)$"))
>+                    (locales        (string-append lib "/locales"))
>+                    (resources      (string-append lib "/resources"))
>+                    (preferences    (assoc-ref inputs
>"master-preferences"))
>+                    (gtk+           (assoc-ref inputs "gtk+"))
>+                    (mesa           (assoc-ref inputs "mesa"))
>+                    (nss            (assoc-ref inputs "nss"))
>+                    (udev           (assoc-ref inputs "udev"))
>+                    (sh             (which "sh")))
>+
>+               (substitute* '("chrome/app/resources/manpage.1.in"
>+                             
>"chrome/installer/linux/common/desktop.template")
>+                 (("@@MENUNAME@@") "Chromium")
>+                 (("@@PACKAGE@@") "chromium")
>+                 (("/usr/bin/@@USR_BIN_SYMLINK_NAME@@") exe))
>+
>+               (mkdir-p man)
>+               (copy-file "chrome/app/resources/manpage.1.in"
>+                          (string-append man "/chromium.1"))
>+
>+               (mkdir-p applications)
>+               (copy-file
>"chrome/installer/linux/common/desktop.template"
>+                          (string-append applications
>"/chromium.desktop"))
>+
>+               (mkdir-p lib)
>+               (copy-file preferences (string-append lib
>"/master_preferences"))
>+
>+               (with-directory-excursion "out/Release"
>+                 (for-each (lambda (file)
>+                             (install-file file lib))
>+                           (scandir "." (cut regexp-exec
>install-regexp <>)))
>+                 (copy-file "chrome" (string-append lib "/chromium"))
>+
>+                 ;; TODO: Install icons from "../../chrome/app/themes"
>into
>+                 ;; "out/share/icons/hicolor/$size".
>+                 (install-file
>+                  "product_logo_48.png"
>+                  (string-append out
>"/share/icons/48x48/chromium.png"))
>+
>+                 (copy-recursively "locales" locales)
>+                 (copy-recursively "resources" resources)
>+
>+                 (mkdir-p bin)
>+                 (symlink "../lib/chromium" exe)
>+                 (install-file "chromedriver" bin)
>+
>+                 (wrap-program exe
>+                   ;; TODO: Get these in RUNPATH.
>+                   `("LD_LIBRARY_PATH" ":" prefix
>+                     (,(string-append lib ":" nss "/lib/nss:" gtk+
>"/lib:"
>+                                      mesa "/lib:" udev "/lib")))
>+                   ;; Avoid file manager crash.  See
><https://bugs.gnu.org/26593>.
>+                   `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+
>"/share"))))
>+                 #t)))))))
>+    (native-inputs
>+     `(("bison" ,bison)
>+       ("gcc" ,gcc-8)
>+       ("gn" ,gn)
>+       ("gperf" ,gperf)
>+       ("ninja" ,ninja)
>+       ("node" ,node)
>+       ("pkg-config" ,pkg-config)
>+       ("which" ,which)
>+       ("yasm" ,yasm)
>+
>+       ;; This file contains defaults for new user profiles.
>+       ("master-preferences" ,(local-file
>"aux-files/chromium/master-preferences.json"))
>+
>+       ("python-beautifulsoup4" ,python2-beautifulsoup4)
>+       ("python-html5lib" ,python2-html5lib)
>+       ("python" ,python-2)))
>+    (inputs
>+     `(("alsa-lib" ,alsa-lib)
>+       ("atk" ,atk)
>+       ("cups" ,cups)
>+       ("curl" ,curl)
>+       ("dbus" ,dbus)
>+       ("dbus-glib" ,dbus-glib)
>+       ("expat" ,expat)
>+       ("flac" ,flac)
>+       ("ffmpeg" ,ffmpeg)
>+       ("fontconfig" ,fontconfig)
>+       ("freetype" ,freetype)
>+       ("gdk-pixbuf" ,gdk-pixbuf)
>+       ("glib" ,glib)
>+       ("gtk+" ,gtk+)
>+       ("harfbuzz" ,harfbuzz/chromium)
>+       ("icu4c" ,icu4c)
>+       ("jsoncpp" ,jsoncpp)
>+       ("lcms" ,lcms)
>+       ("libevent" ,libevent)
>+       ("libffi" ,libffi)
>+       ("libjpeg-turbo" ,libjpeg-turbo)
>+       ("libpng" ,libpng)
>+       ("libva" ,libva)
>+       ("libvpx" ,libvpx/chromium)
>+       ("libwebp" ,libwebp)
>+       ("libx11" ,libx11)
>+       ("libxcb" ,libxcb)
>+       ("libxcomposite" ,libxcomposite)
>+       ("libxcursor" ,libxcursor)
>+       ("libxdamage" ,libxdamage)
>+       ("libxext" ,libxext)
>+       ("libxfixes" ,libxfixes)
>+       ("libxi" ,libxi)
>+       ("libxml2" ,libxml2)
>+       ("libxrandr" ,libxrandr)
>+       ("libxrender" ,libxrender)
>+       ("libxscrnsaver" ,libxscrnsaver)
>+       ("libxslt" ,libxslt)
>+       ("libxtst" ,libxtst)
>+       ("mesa" ,mesa)
>+       ("minizip" ,minizip)
>+       ("mit-krb5" ,mit-krb5)
>+       ("nss" ,nss)
>+       ("openh264" ,openh264)
>+       ("openjpeg" ,openjpeg)                          ;PDFium only
>+       ("openssl" ,openssl)
>+       ("opus" ,opus+custom)
>+       ("pango" ,pango)
>+       ("pciutils" ,pciutils)
>+       ("pulseaudio" ,pulseaudio)
>+       ("re2" ,re2)
>+       ("snappy" ,snappy)
>+       ("speech-dispatcher" ,speech-dispatcher)
>+       ("udev" ,eudev)
>+       ("valgrind" ,valgrind)
>+       ("vulkan-headers" ,vulkan-headers)))
>+    (home-page "https://www.chromium.org/")
>+    (description
>+     "Ungoogled-Chromium is the Chromium web browser, sans integration
>with
>+Google web services.")
>+    ;; Chromium is developed as BSD-3, but bundles a large number of
>third-party
>+    ;; components with other licenses.  For full information, see
>chrome://credits.
>+    (license (list license:bsd-3
>+                   license:bsd-2
>+                   license:expat
>+                   license:asl2.0
>+                   license:mpl1.1
>+                   license:mpl2.0
>+                   license:public-domain
>+                   license:isc
>+                   (license:non-copyleft "chrome://credits"
>+                                         "See chrome://credits for
>more information.")
>+                   license:lgpl2.1+))))
>-- 
>2.20.1

Wow. 
Nice work! 😃
-- 
Sent from my k-9 mail for Android.

[-- Attachment #2: Type: text/html, Size: 38621 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04 22:34       ` Ludovic Courtès
@ 2019-02-06 21:04         ` Marius Bakke
  2019-02-07 23:52         ` Christopher Lemmer Webber
  1 sibling, 0 replies; 57+ messages in thread
From: Marius Bakke @ 2019-02-06 21:04 UTC (permalink / raw)
  To: Ludovic Courtès, bill-auger; +Cc: guix-devel, 28004, gnu-linux-libre

[-- Attachment #1: Type: text/plain, Size: 1597 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Hi bill-auger,
>
> bill-auger <bill-auger@peers.community> skribis:
>
>> re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html
>>
>> i would like to remind readers of the guix-devel list that it was
>> discussed some months ago, why no FSDG distros currently distribute
>> chromium[1] - it appeared at that time, that most people in that
>> discussion were in agreement that chromium should not be included in
>> guix; and marius was instead hosting it in a private repo, as not to
>> taint the main guix repos with dubious software - has there been a
>> notable break-through since then?
>
> It’s not entirely clear to me what the problems are, to be honest.
> Marius listed specific issues that were addressed by the patches; others
> then pointed out at additional issues that ungoogled-chromium fixes,
> which Marius took into account; what’s left now?

Indeed, the only real breakthrough is that we now have a script to
create an Ungooglified source tarball with all unnecessary third_party
components removed.  The compressed tarball is smaller than that of
IceCat and takes up around 2.1 GiB uncompressed, roughly 1GiB of which
is third_party stuff.

That leaves "just" over 1GiB of source code to audit (assuming my
third_party audit is correct).  I haven't been able to find any
proprietary parts in first party code, and am convinced that the
remaining third_party components are free, hence this patch.

I am of course happy to help other FSDG distributions liberate their
Chromium too.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04 22:34       ` Ludovic Courtès
  2019-02-06 21:04         ` [GNU-linux-libre] " Marius Bakke
@ 2019-02-07 23:52         ` Christopher Lemmer Webber
  2019-02-07 23:59           ` Julie Marchant
  2019-02-16  8:00           ` bill-auger
  1 sibling, 2 replies; 57+ messages in thread
From: Christopher Lemmer Webber @ 2019-02-07 23:52 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel, gnu-linux-libre, 28004

Ludovic Courtès writes:

> Hi bill-auger,
>
> bill-auger <bill-auger@peers.community> skribis:
>
>> re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html
>>
>> i would like to remind readers of the guix-devel list that it was
>> discussed some months ago, why no FSDG distros currently distribute
>> chromium[1] - it appeared at that time, that most people in that
>> discussion were in agreement that chromium should not be included in
>> guix; and marius was instead hosting it in a private repo, as not to
>> taint the main guix repos with dubious software - has there been a
>> notable break-through since then?
>
> It’s not entirely clear to me what the problems are, to be honest.
> Marius listed specific issues that were addressed by the patches; others
> then pointed out at additional issues that ungoogled-chromium fixes,
> which Marius took into account; what’s left now?
>
> I understand you’re skeptical about Chromium, but we cannot base
> decisions based on vague skepticism.  If you know of issues that are
> still unaddressed, please do list them.
>
> I’d also like to stress that, if Chromium is eventually included in
> Guix, we are committed to fixing it or removing it should someone later
> discover that it does not comply with the FSDG (that’s the “Commitment
> to Correct Mistakes” section of FSDG.)

+1 ... If concrete problems are found, by all means those should be
raised and addressed.  Otherwise I really think we ought to merge this
work.

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-07 23:52         ` Christopher Lemmer Webber
@ 2019-02-07 23:59           ` Julie Marchant
  2019-02-16  8:00           ` bill-auger
  1 sibling, 0 replies; 57+ messages in thread
From: Julie Marchant @ 2019-02-07 23:59 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions,
	Christopher Lemmer Webber, Ludovic Courtès
  Cc: guix-devel, 28004

On 02/07/2019 06:52 PM, Christopher Lemmer Webber wrote:
> Ludovic Courtès writes:
> 
>> Hi bill-auger,
>>
>> bill-auger <bill-auger@peers.community> skribis:
>>
>>> re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html
>>>
>>> i would like to remind readers of the guix-devel list that it was
>>> discussed some months ago, why no FSDG distros currently distribute
>>> chromium[1] - it appeared at that time, that most people in that
>>> discussion were in agreement that chromium should not be included in
>>> guix; and marius was instead hosting it in a private repo, as not to
>>> taint the main guix repos with dubious software - has there been a
>>> notable break-through since then?
>>
>> It’s not entirely clear to me what the problems are, to be honest.
>> Marius listed specific issues that were addressed by the patches; others
>> then pointed out at additional issues that ungoogled-chromium fixes,
>> which Marius took into account; what’s left now?
>>
>> I understand you’re skeptical about Chromium, but we cannot base
>> decisions based on vague skepticism.  If you know of issues that are
>> still unaddressed, please do list them.
>>
>> I’d also like to stress that, if Chromium is eventually included in
>> Guix, we are committed to fixing it or removing it should someone later
>> discover that it does not comply with the FSDG (that’s the “Commitment
>> to Correct Mistakes” section of FSDG.)
> 
> +1 ... If concrete problems are found, by all means those should be
> raised and addressed.  Otherwise I really think we ought to merge this
> work.

Yes, exactly.

-- 
Julie Marchant
http://onpon4.github.io

Encrypt your emails with GnuPG:
https://emailselfdefense.fsf.org

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-04  4:52     ` bill-auger
                         ` (3 preceding siblings ...)
  2019-02-04 22:34       ` Ludovic Courtès
@ 2019-02-09 14:04       ` Adonay Felipe Nogueira
  4 siblings, 0 replies; 57+ messages in thread
From: Adonay Felipe Nogueira @ 2019-02-09 14:04 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions, guix-devel; +Cc: 28004


[-- Attachment #1.1: Type: text/plain, Size: 3488 bytes --]

Em 04/02/2019 02:52, bill-auger escreveu:
> re: https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00009.html
> 
> i would like to remind readers of the guix-devel list that it was
> discussed some months ago, why no FSDG distros currently distribute
> chromium[1] - it appeared at that time, that most people in that
> discussion were in agreement that chromium should not be included in
> guix; and marius was instead hosting it in a private repo, as not to
> taint the main guix repos with dubious software - has there been a
> notable break-through since then?
> 
> what is the evidence for this claim that this guix package is "free
> software only"? - what does "Marks beautiful computed-origin-method" do
> toward that end? - if a procedure for liberating any chromium-derived
> software has been discovered, this would be a marvelous accomplishment
> and very good news indeed, of which people outside of the guix dev team
> would also be interested to learn

On this matter, I think this discussion and also the review should be
tracked either in a bug report or in the Free Software Directory wiki
talk page about Chromium package/entry[1], this one also has a partial
review still to be finished. Besides, the last time I read the FSD's
entry inclusion requirements (about June, 2018) I was informed also in
IRC that they have plans to make the FSD mimic the requirements of the
GNU FSDG so that free/libre system distributions would have an easier
time getting a list of reviewed packages for inclusion. That means that
the FSD would also have the requirements from the GNU FSDG regarding not
including malware and not steering towards non-free functional data.
There are optional things to consider, for which the Antifeature Project
Team is working on drafting[2], although these are not requirements for
inclusion in the FSD.

Regarding the review results in the page referenced by [1], please keep
in mind that the torrents have no trackers, so please share/seed with
DHT and PEX enabled so others can discover the shares too.

Another alternative is of course to ditch Chromium and
Ungoogled-Chromium and focus on Iridium Browser[3].

Anyways, if you do want to see progress in the Chromium review, please
contribute by downloading, seeding and also actually reviewing parts of
the reports generated. The last stop is marked with "Continue.". I did
start the review, but I'm not the most experienced person in regards to
all of legal, security and privacy matters. Just remember to remake a
torrent with the modified report and change the old hash in the page to
the new one you're seeding if you do make changes to the report, and
mark/save the change as major so that other people get notified.

Lastly, bill-auger's question of which should be the "assumed value" for
the GNU FSDG compliance status of a unreviewed package, based on various
proofs related to the dangers of non-free software (well, gnu.org has a
page with these reports/news[4]) and also on the reasoning given by
Richard Stallman in his talks[5], the unreviewed entries should be
considered non-free.

[1] https://directory.fsf.org/wiki/Talk:Chromium
[2] https://directory.fsf.org/wiki/Free_Software_Directory:Antifeatures
[3] https://directory.fsf.org/wiki/Iridium_Browser
[4] https://www.gnu.org/proprietary/proprietary.html
[5]
http://audio-video.gnu.org/video/2015-10-24--rms--free-software-and-your-freedom--seagl--speech.ogv


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 213 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* [PATCH v2] gnu: Add ungoogled-chromium.
  2019-02-02 19:20 ` [PATCH] gnu: Add ungoogled-chromium Marius Bakke
                     ` (2 preceding siblings ...)
  2019-02-05  5:22   ` [bug#28004] " swedebugia
@ 2019-02-12 15:58   ` Marius Bakke
  2019-02-18 22:43     ` [bug#28004] " Marius Bakke
  3 siblings, 1 reply; 57+ messages in thread
From: Marius Bakke @ 2019-02-12 15:58 UTC (permalink / raw)
  To: guix-devel; +Cc: 28004

Changes in this version:

* New upstream release.
* No longer using a fork of Ungoogled-Chromium.
* The special HarfBuzz and libvpx variants have been removed due to
  obsolesence.

Enjoy (or despair)!  Comments appreciated.

* gnu/packages/aux-files/chromium/master-preferences.json,
gnu/packages/chromium.scm: New files.
* gnu/local.mk (GNU_SYSTEM_MODULES): Adjust accordingly.
---
 gnu/local.mk                                  |   1 +
 .../chromium/master-preferences.json          |  26 +
 gnu/packages/chromium.scm                     | 726 ++++++++++++++++++
 3 files changed, 753 insertions(+)
 create mode 100644 gnu/packages/aux-files/chromium/master-preferences.json
 create mode 100644 gnu/packages/chromium.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 154b03313a..1496bae066 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -100,6 +100,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/check.scm			\
   %D%/packages/chemistry.scm			\
   %D%/packages/chez.scm				\
+  %D%/packages/chromium.scm			\
   %D%/packages/ci.scm				\
   %D%/packages/cinnamon.scm			\
   %D%/packages/clojure.scm			\
diff --git a/gnu/packages/aux-files/chromium/master-preferences.json b/gnu/packages/aux-files/chromium/master-preferences.json
new file mode 100644
index 0000000000..5a2049fa72
--- /dev/null
+++ b/gnu/packages/aux-files/chromium/master-preferences.json
@@ -0,0 +1,26 @@
+{
+    "distribution": {
+        "import_bookmarks": false,
+        "make_chrome_default": false,
+        "make_chrome_default_for_user": false,
+        "verbose_logging": true,
+        "skip_first_run_ui": true,
+        "suppress_first_run_default_browser_prompt": true
+    },
+    "browser": {
+        "has_seen_welcome_page" : true,
+        "check_default_browser" : false
+    },
+    "dns_prefetching": {
+        "enabled": false
+    },
+    "alternate_error_pages": {
+        "enabled": false
+    },
+    "hardware": {
+        "audio_capture_enabled": false
+    },
+    "default_apps": "noinstall",
+    "hide_web_store_icon": true,
+    "homepage": "https://www.gnu.org/software/guix/"
+}
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
new file mode 100644
index 0000000000..85e96131e3
--- /dev/null
+++ b/gnu/packages/chromium.scm
@@ -0,0 +1,726 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages chromium)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:use-module (guix store)
+  #:use-module (guix monads)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages assembly)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages build-tools)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages kerberos)
+  #:use-module (gnu packages ninja)
+  #:use-module (gnu packages node)
+  #:use-module (gnu packages pciutils)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages regex)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages speech)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages vulkan)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xorg))
+
+(define %preserved-third-party-files
+  '("base/third_party/dmg_fp" ;X11-style
+    "base/third_party/dynamic_annotations" ;BSD-2
+    "base/third_party/icu" ;Unicode, X11-style
+    "base/third_party/superfasthash" ;BSD-3
+    "base/third_party/symbolize" ;BSD-3
+    "base/third_party/xdg_mime" ;LGPL2.1+ or Academic 2.0
+    "base/third_party/xdg_user_dirs" ;Expat
+    "chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
+    "courgette/third_party/bsdiff" ;BSD-2, BSD protection license
+    "courgette/third_party/divsufsort" ;Expat
+    "net/third_party/http2" ;BSD-3
+    "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
+    "net/third_party/nss" ;MPL-2.0
+    "net/third_party/quic" ;BSD-3
+    "net/third_party/spdy" ;BSD-3
+    "net/third_party/uri_template" ;ASL2.0
+    "third_party/abseil-cpp" ;ASL2.0
+    "third_party/adobe/flash/flapper_version.h" ;no license, trivial
+    "third_party/angle" ;BSD-3
+    "third_party/angle/src/common/third_party/base" ;BSD-3
+    "third_party/angle/src/common/third_party/smhasher" ;Public domain
+    "third_party/angle/src/common/third_party/xxhash" ;BSD-2
+    "third_party/angle/src/third_party/compiler" ;BSD-2
+    "third_party/angle/src/third_party/libXNVCtrl" ;Expat
+    "third_party/angle/src/third_party/trace_event" ;BSD-3
+    "third_party/angle/third_party/glslang" ;BSD-3
+    "third_party/angle/third_party/spirv-headers" ;Expat
+    "third_party/angle/third_party/spirv-tools" ;Expat
+    "third_party/angle/third_party/vulkan-headers" ;ASL2.0
+    "third_party/angle/third_party/vulkan-loader" ;ASL2.0
+    "third_party/angle/third_party/vulkan-tools" ;ASL2.0
+    "third_party/angle/third_party/vulkan-validation-layers" ;ASL2.0
+    "third_party/apple_apsl" ;APSL2.0
+    "third_party/blink" ;BSD-3
+    "third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
+    "third_party/boringssl/src/third_party/fiat" ;Expat
+    "third_party/breakpad" ;BSD-3
+    "third_party/brotli" ;Expat
+    "third_party/cacheinvalidation" ;ASL2.0
+    "third_party/catapult" ;BSD-3
+    "third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
+    "third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
+    "third_party/catapult/third_party/polymer" ;BSD-3
+    "third_party/catapult/tracing/third_party/d3" ;BSD-3
+    "third_party/catapult/tracing/third_party/gl-matrix" ;Expat
+    "third_party/catapult/tracing/third_party/jszip" ;Expat or GPL3
+    "third_party/catapult/tracing/third_party/mannwhitneyu" ;Expat
+    "third_party/catapult/tracing/third_party/oboe" ;BSD-2
+    "third_party/catapult/tracing/third_party/pako" ;Expat
+    "third_party/ced" ;BSD-3
+    "third_party/cld_3" ;ASL2.0
+    "third_party/crashpad" ;ASL2.0
+    "third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
+    "third_party/crc32c" ;BSD-3
+    "third_party/cros_system_api" ;BSD-3
+    "third_party/dom_distiller_js" ;BSD-3
+    "third_party/fips181" ;BSD-3
+    "third_party/flatbuffers" ;ASL2.0
+    "third_party/google_input_tools" ;ASL2.0
+    "third_party/google_input_tools/third_party/closure_library" ;ASL2.0
+    "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat
+    "third_party/googletest" ;BSD-3
+    "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
+    "third_party/iccjpeg" ;IJG
+    "third_party/inspector_protocol" ;BSD-3
+    "third_party/jinja2" ;BSD-3
+    "third_party/jstemplate" ;ASL2.0
+    "third_party/khronos" ;Expat, SGI
+    "third_party/leveldatabase" ;BSD-3
+    "third_party/libXNVCtrl" ;Expat
+    "third_party/libaddressinput" ;ASL2.0
+    "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
+    "third_party/libaom/source/libaom/third_party/vector" ;Expat
+    "third_party/libaom/source/libaom/third_party/x86inc" ;ISC
+    "third_party/libjingle_xmpp" ;BSD-3
+    "third_party/libphonenumber" ;ASL2.0
+    "third_party/libsecret" ;LGPL2.1+
+    "third_party/libsrtp" ;BSD-3
+    "third_party/libsync" ;ASL2.0
+    "third_party/libudev" ;LGPL2.1+
+    "third_party/libwebm" ;BSD-3
+    "third_party/libxml/chromium" ;BSD-3
+    "third_party/libyuv" ;BSD-3
+    "third_party/lss" ;BSD-3
+    "third_party/markupsafe" ;BSD-3
+    "third_party/mesa_headers" ;Expat, SGI
+    "third_party/metrics_proto" ;BSD-3
+    "third_party/modp_b64" ;BSD-3
+    "third_party/nasm" ;BSD-2
+    "third_party/node" ;Expat
+    "third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2" ;BSD-2
+    "third_party/ots" ;BSD-3
+    "third_party/pdfium" ;BSD-3
+    "third_party/pdfium/third_party/agg23" ;Expat
+    "third_party/pdfium/third_party/base" ;BSD-3
+    "third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
+    "third_party/pdfium/third_party/skia_shared" ;BSD-3
+    "third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
+    "third_party/ply" ;BSD-3
+    "third_party/polymer" ;BSD-3
+    "third_party/protobuf" ;BSD-3
+    "third_party/protobuf/third_party/six" ;Expat
+    "third_party/pyjson5" ;ASL2.0
+    "third_party/qcms" ;Expat
+    "third_party/rnnoise" ;BSD-3
+    "third_party/s2cellid" ;ASL2.0
+    "third_party/sfntly" ;ASL2.0
+    "third_party/skia" ;BSD-3
+    "third_party/skia/third_party/gif" ;MPL1.1/GPL2+/LGPL2.1+
+    "third_party/skia/third_party/skcms" ;BSD-3
+    "third_party/skia/third_party/vulkan" ;BSD-3
+    "third_party/smhasher" ;Expat, public domain
+    "third_party/speech-dispatcher" ;GPL2+
+    "third_party/spirv-headers" ;ASL2.0
+    "third_party/SPIRV-Tools" ;ASL2.0
+    "third_party/sqlite" ;Public domain
+    "third_party/ungoogled" ;BSD-3
+    "third_party/usb_ids" ;BSD-3
+    "third_party/usrsctp" ;BSD-2
+    "third_party/web-animations-js" ;ASL2.0
+    "third_party/webdriver" ;ASL2.0
+    "third_party/webrtc" ;BSD-3
+    "third_party/webrtc/common_audio/third_party/fft4g" ;Non-copyleft
+    "third_party/webrtc/common_audio/third_party/spl_sqrt_floor" ;Public domain
+    "third_party/webrtc/modules/third_party/fft" ;Non-copyleft
+    "third_party/webrtc/modules/third_party/g711" ;Public domain
+    "third_party/webrtc/modules/third_party/g722" ;Public domain
+    "third_party/webrtc/rtc_base/third_party/base64" ;Non-copyleft
+    "third_party/webrtc/rtc_base/third_party/sigslot" ;Public domain
+    "third_party/widevine/cdm/widevine_cdm_version.h" ;BSD-3
+    "third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
+    "third_party/woff2" ;ASL2.0
+    "third_party/xdg-utils" ;Expat
+    "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3
+    "third_party/zlib/google" ;BSD-3
+    "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
+    "v8/src/third_party/utf8-decoder" ;Expat
+    "v8/src/third_party/valgrind" ;BSD-4
+    "v8/third_party/inspector_protocol" ;BSD-3
+    "v8/third_party/v8/builtins")) ;PSFL
+
+(define* (computed-origin-method gexp-promise hash-algo hash
+                                 #:optional (name "source")
+                                 #:key (system (%current-system))
+                                 (guile (default-guile)))
+  "Return a derivation that executes the G-expression that results
+from forcing GEXP-PROMISE."
+  (mlet %store-monad ((guile (package->derivation guile system)))
+    (gexp->derivation (or name "computed-origin")
+                      (force gexp-promise)
+                      #:system system
+                      #:guile-for-build guile)))
+
+(define %chromium-version "72.0.3626.96")
+(define %ungoogled-revision "82b1194615a6542c28edfc5505d357c9dfca88c7")
+
+;; This is a "computed" origin that does the following:
+;; 1) Runs the Ungoogled scripts on a pristine Chromium tarball.
+;; 2) Prunes all third_party folders that are not explicitly preserved.
+;; 3) Adjusts "GN" build files such that system libraries are preferred.
+(define ungoogled-chromium-source
+  (let* ((chromium-source
+          (origin
+            (method url-fetch)
+            (uri (string-append "https://commondatastorage.googleapis.com"
+                                "/chromium-browser-official/chromium-"
+                                %chromium-version ".tar.xz"))
+            (sha256
+             (base32
+              "0fxavi4nwfiyb15lqm02vlq6kb8i4ipxnd7hp45bm7jdmhmgbnmj"))))
+         (ungoogled-source
+          (origin
+            (method git-fetch)
+            (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium")
+                                (commit %ungoogled-revision)))
+            (file-name (git-file-name "ungoogled-chromium"
+                                      (string-take %ungoogled-revision 7)))
+            (sha256
+             (base32
+              "067bccrv67wh8p0vak0n38gc8mvb9hvx2pz83r0y1iiqkhrglnp3")))))
+
+    (origin
+      (method computed-origin-method)
+      (file-name (string-append "ungoogled-chromium-" %chromium-version ".tar.xz"))
+      (sha256 #f)
+      (uri
+       (delay
+         (with-imported-modules '((guix build utils))
+           #~(begin
+               (use-modules (guix build utils))
+               (let ((chromium-dir    (string-append "chromium-" #$%chromium-version))
+                     (preserved-files (list #$@%preserved-third-party-files)))
+
+                 (mkdir "/tmp/bin")
+                 (set-path-environment-variable
+                  "PATH" '("bin")
+                  (list "/tmp"
+                        #+(canonical-package patch)
+                        #+(canonical-package xz)
+                        #+(canonical-package tar)
+                        #+python-2
+                        #+python))
+
+                 (copy-recursively #+ungoogled-source "/tmp/ungoogled")
+
+                 (with-directory-excursion "/tmp/ungoogled"
+
+                   ;; Create a custom "bundle" that inherits from linux_rooted
+                   ;; and adds an additional patch.
+                   (format #t "Creating Guix config bundle...~%")
+                   (force-output)
+                   (mkdir-p "config_bundles/guix")
+                   (call-with-output-file "config_bundles/guix/bundlemeta.ini"
+                     (lambda (port)
+                       (format port
+                               "[bundle]
+display_name = GNU Guix
+depends = linux_rooted\n")))
+                   (call-with-output-file "config_bundles/guix/patch_order.list"
+                     (lambda (port)
+                       (format port "debian_buster/system/openjpeg.patch\n")))
+
+                   (format #t "Unpacking chromium tarball...~%")
+                   (force-output)
+                   (invoke "tar" "xf" #+chromium-source)
+
+                   (format #t "Ungooglifying...~%")
+                   (force-output)
+                   (invoke "python3" "run_buildkit_cli.py" "prune"
+                           "-b" "config_bundles/guix" chromium-dir)
+                   (invoke "python3" "run_buildkit_cli.py" "patches" "apply"
+                           "-b" "config_bundles/guix" chromium-dir)
+                   (invoke "python3" "run_buildkit_cli.py" "domains" "apply"
+                           "-b" "config_bundles/linux_rooted"
+                           "-c" "/tmp/domainscache.tar.gz" chromium-dir)
+
+                   (with-directory-excursion chromium-dir
+                     (format #t "Pruning third party files...~%")
+                     (force-output)
+                     (apply invoke "python"
+                             "build/linux/unbundle/remove_bundled_libraries.py"
+                             "--do-remove" preserved-files)
+
+                     (format #t "Replacing GN files...~%")
+                     (force-output)
+                     (invoke "python3" "build/linux/unbundle/replace_gn_files.py"
+                             "--system-libraries" "ffmpeg" "flac" "fontconfig"
+                             "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
+                             "libjpeg" "libpng" "libvpx" "libwebp" "libxml"
+                             "libxslt" "openh264" "opus" "re2" "snappy" "yasm"
+                             "zlib"))
+
+                   (format #t (string-append "Packing new Ungoogled tarball ...~%"))
+                   (force-output)
+                   (invoke "tar" "cvfa" #$output
+                           ;; Avoid non-determinism in the archive.
+                           "--mtime=@0"
+                           "--owner=root:0"
+                           "--group=root:0"
+                           "--sort=name"
+                           chromium-dir)
+
+                   #t)))))))))
+
+(define opus+custom
+  (package/inherit opus
+    (name "opus+custom")
+    (arguments
+     (substitute-keyword-arguments (package-arguments opus)
+       ((#:configure-flags flags ''())
+        ;; Opus Custom is an optional extension of the Opus
+        ;; specification that allows for unsupported frame
+        ;; sizes.  Chromium requires that this is enabled.
+        `(cons "--enable-custom-modes"
+               ,flags))))))
+
+(define-public ungoogled-chromium
+  (package
+    (name "ungoogled-chromium")
+    (version %chromium-version)
+    (synopsis "Graphical web browser")
+    (source ungoogled-chromium-source)
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       ;; FIXME: There is a "gn" option specifically for setting -rpath, but
+       ;; it overrides the RUNPATH set by the linker.
+       #:validate-runpath? #f
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (ice-9 regex)
+                  (srfi srfi-26))
+       #:configure-flags
+       ;; See tools/gn/docs/cookbook.md and
+       ;; https://www.chromium.org/developers/gn-build-configuration
+       ;; for usage.  Run "./gn args . --list" in the Release
+       ;; directory for an exhaustive list of supported flags.
+       ;; (Note: The 'configure' phase will do that for you.)
+       (list "is_debug=false"
+             "use_gold=false"
+             "use_lld=false"
+             "linux_use_bundled_binutils=false"
+             "use_custom_libcxx=false"
+             "use_sysroot=false"
+             "enable_precompiled_headers=false"
+             "goma_dir=\"\""
+             "enable_nacl=false"
+             "enable_nacl_nonsfi=false"
+             "use_allocator=\"none\""   ;don't use tcmalloc
+             "use_unofficial_version_number=false"
+
+             ;; Define a custom toolchain that simply looks up CC, AR and
+             ;; friends from the environment.
+             "custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
+             "host_toolchain=\"//build/toolchain/linux/unbundle:default\""
+
+             ;; Don't assume it's clang.
+             "is_clang=false"
+
+             ;; Optimize for building everything at once, as opposed to
+             ;; incrementally for development.  See "docs/jumbo.md".
+             "use_jumbo_build=true"
+
+             ;; Disable type-checking for the Web UI to avoid a Java dependency.
+             "closure_compile=false"
+
+             ;; Disable debugging features to save space.
+             "blink_symbol_level=0"
+             "enable_iterator_debugging=false"
+
+             ;; Some of the unbundled libraries throws deprecation
+             ;; warnings, etc.  Ignore it.
+             "treat_warnings_as_errors=false"
+
+             ;; Don't add any API keys.  End users can set them in the
+             ;; environment if desired.  See
+             ;; <https://www.chromium.org/developers/how-tos/api-keys>.
+             "use_official_google_api_keys=false"
+
+             ;; Disable "safe browsing", which pulls in a dependency on
+             ;; the nonfree "unrar" program (as of m66).
+             "safe_browsing_mode=0"
+
+             ;; Disable "field trials".
+             "fieldtrial_testing_like_official_build=true"
+
+             ;; Ungoogled components.
+             "enable_mdns=false"
+             "enable_one_click_signin=false"
+             "enable_reading_list=false"
+             "enable_remoting=false"
+             "enable_reporting=false"
+             "enable_service_discovery=false"
+             "enable_swiftshader=false"
+             "use_vaapi=true"
+
+             ;; Use system libraries where possible.
+             "use_system_freetype=true"
+             "use_system_harfbuzz=true"
+             "use_system_lcms2=true"
+             "use_system_libdrm=true"
+             "use_system_libjpeg=true"
+             "use_system_libpng=true"
+             ;;"use_system_libsync=true"
+             "use_system_zlib=true"
+
+             "use_gnome_keyring=false"  ;deprecated by libsecret
+             "use_openh264=true"
+             "use_pulseaudio=true"
+             "link_pulseaudio=true"
+
+             ;; Don't arbitrarily restrict formats supported by system ffmpeg.
+             "proprietary_codecs=true"
+             "ffmpeg_branding=\"Chrome\""
+
+             ;; WebRTC stuff.
+             "rtc_use_h264=true"
+             ;; Don't use bundled sources.
+             "rtc_build_json=false"
+             "rtc_build_libevent=false"
+             "rtc_build_libvpx=false"
+             "rtc_build_opus=false"
+             "rtc_build_ssl=false"
+
+             "rtc_build_libsrtp=true"   ;FIXME: fails to find headers
+             "rtc_build_usrsctp=true"   ;TODO: package this
+             (string-append "rtc_jsoncpp_root=\""
+                            (assoc-ref %build-inputs "jsoncpp")
+                            "/include/jsoncpp/json\"")
+             (string-append "rtc_ssl_root=\""
+                            (assoc-ref %build-inputs "openssl")
+                            "/include/openssl\""))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-stuff
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "printing/cups_config_helper.py"
+               (("cups_config =.*")
+                (string-append "cups_config = '" (assoc-ref inputs "cups")
+                               "/bin/cups-config'\n")))
+
+             (substitute*
+                 '("base/process/launch_posix.cc"
+                   "base/third_party/dynamic_annotations/dynamic_annotations.c"
+                   "sandbox/linux/seccomp-bpf/sandbox_bpf.cc"
+                   "sandbox/linux/services/credentials.cc"
+                   "sandbox/linux/services/namespace_utils.cc"
+                   "sandbox/linux/services/syscall_wrappers.cc"
+                   "sandbox/linux/syscall_broker/broker_host.cc")
+               (("include \"base/third_party/valgrind/") "include \"valgrind/"))
+
+             (for-each (lambda (file)
+                         (substitute* file
+                           ;; Fix opus include path.
+                           ;; Do not substitute opus_private.h.
+                           (("#include \"opus\\.h\"")
+                            "#include \"opus/opus.h\"")
+                           (("#include \"opus_custom\\.h\"")
+                            "#include \"opus/opus_custom.h\"")
+                           (("#include \"opus_defines\\.h\"")
+                            "#include \"opus/opus_defines.h\"")
+                           (("#include \"opus_multistream\\.h\"")
+                            "#include \"opus/opus_multistream.h\"")
+                           (("#include \"opus_types\\.h\"")
+                            "#include \"opus/opus_types.h\"")))
+                       (find-files (string-append "third_party/webrtc/modules"
+                                                  "/audio_coding/codecs/opus")))
+
+             (substitute* "chrome/common/chrome_paths.cc"
+               (("/usr/share/chromium/extensions")
+                ;; TODO: Add ~/.guix-profile.
+                "/run/current-system/profile/share/chromium/extensions"))
+
+             ;; XXX: Should be unnecessary when use_system_lcms2=true.
+             (substitute* "third_party/pdfium/core/fxcodec/codec/ccodec_iccmodule.h"
+               (("include \"third_party/lcms/include/lcms2\\.h\"")
+                "include \"lcms2.h\""))
+
+             (substitute*
+                 "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
+               (("include \"third_party/curl") "include \"curl"))
+
+             (substitute* "third_party/webrtc/rtc_base/strings/json.h"
+               (("#include \"third_party/jsoncpp/") "#include \"json/"))
+
+             (substitute* "media/base/decode_capabilities.cc"
+               (("third_party/libvpx/source/libvpx/") ""))
+
+             (substitute* "ui/gfx/skia_util.h"
+               (("third_party/vulkan/include/") ""))
+
+             ;; Building chromedriver embeds some files using the ZIP
+             ;; format which doesn't support timestamps before
+             ;; 1980. Therefore, advance the timestamps of the files
+             ;; which are included so that building chromedriver
+             ;; works.
+             (let ((circa-1980 (* 10 366 24 60 60)))
+               (for-each (lambda (file)
+                           (utime file circa-1980 circa-1980))
+                         '("chrome/test/chromedriver/extension/background.js"
+                           "chrome/test/chromedriver/extension/manifest.json")))
+
+             #t))
+         (add-before 'configure 'prepare-build-environment
+           (lambda* (#:key inputs #:allow-other-keys)
+
+             ;; Make sure the right build tools are used.
+             (setenv "AR" "ar") (setenv "NM" "nm")
+             (setenv "CC" "gcc") (setenv "CXX" "g++")
+
+             ;; Work around <https://bugs.gnu.org/30756>.
+             (unsetenv "C_INCLUDE_PATH")
+             (unsetenv "CPLUS_INCLUDE_PATH")
+
+             ;; TODO: pre-compile instead. Avoids a race condition.
+             (setenv "PYTHONDONTWRITEBYTECODE" "1")
+
+             ;; XXX: How portable is this.
+             (mkdir-p "third_party/node/linux/node-linux-x64")
+             (symlink (string-append (assoc-ref inputs "node") "/bin")
+                      "third_party/node/linux/node-linux-x64/bin")
+
+             #t))
+         (replace 'configure
+           (lambda* (#:key configure-flags #:allow-other-keys)
+             (let ((args (string-join configure-flags " ")))
+               ;; Generate ninja build files.
+               (invoke "gn" "gen" "out/Release"
+                       (string-append "--args=" args))
+
+               ;; Print the full list of supported arguments as well as
+               ;; their current status for convenience.
+               (format #t "Dumping configure flags...\n")
+               (invoke "gn" "args" "out/Release" "--list"))))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "ninja" "-C" "out/Release"
+                     "-j" (number->string (parallel-job-count))
+                     "chrome"
+                     "chromedriver")))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out            (assoc-ref outputs "out"))
+                    (bin            (string-append out "/bin"))
+                    (exe            (string-append bin "/chromium"))
+                    (lib            (string-append out "/lib"))
+                    (man            (string-append out "/share/man/man1"))
+                    (applications   (string-append out "/share/applications"))
+                    (install-regexp (make-regexp "\\.(bin|pak)$"))
+                    (locales        (string-append lib "/locales"))
+                    (resources      (string-append lib "/resources"))
+                    (preferences    (assoc-ref inputs "master-preferences"))
+                    (gtk+           (assoc-ref inputs "gtk+"))
+                    (mesa           (assoc-ref inputs "mesa"))
+                    (nss            (assoc-ref inputs "nss"))
+                    (udev           (assoc-ref inputs "udev"))
+                    (sh             (which "sh")))
+
+               (substitute* '("chrome/app/resources/manpage.1.in"
+                              "chrome/installer/linux/common/desktop.template")
+                 (("@@MENUNAME@@") "Chromium")
+                 (("@@PACKAGE@@") "chromium")
+                 (("/usr/bin/@@USR_BIN_SYMLINK_NAME@@") exe))
+
+               (mkdir-p man)
+               (copy-file "chrome/app/resources/manpage.1.in"
+                          (string-append man "/chromium.1"))
+
+               (mkdir-p applications)
+               (copy-file "chrome/installer/linux/common/desktop.template"
+                          (string-append applications "/chromium.desktop"))
+
+               (mkdir-p lib)
+               (copy-file preferences (string-append lib "/master_preferences"))
+
+               (with-directory-excursion "out/Release"
+                 (for-each (lambda (file)
+                             (install-file file lib))
+                           (scandir "." (cut regexp-exec install-regexp <>)))
+                 (copy-file "chrome" (string-append lib "/chromium"))
+
+                 ;; TODO: Install icons from "../../chrome/app/themes" into
+                 ;; "out/share/icons/hicolor/$size".
+                 (install-file
+                  "product_logo_48.png"
+                  (string-append out "/share/icons/48x48/chromium.png"))
+
+                 (copy-recursively "locales" locales)
+                 (copy-recursively "resources" resources)
+
+                 (mkdir-p bin)
+                 (symlink "../lib/chromium" exe)
+                 (install-file "chromedriver" bin)
+
+                 (wrap-program exe
+                   ;; TODO: Get these in RUNPATH.
+                   `("LD_LIBRARY_PATH" ":" prefix
+                     (,(string-append lib ":" nss "/lib/nss:" gtk+ "/lib:"
+                                      mesa "/lib:" udev "/lib")))
+                   ;; Avoid file manager crash.  See <https://bugs.gnu.org/26593>.
+                   `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))))
+                 #t)))))))
+    (native-inputs
+     `(("bison" ,bison)
+       ("gcc" ,gcc-8)
+       ("gn" ,gn)
+       ("gperf" ,gperf)
+       ("ninja" ,ninja)
+       ("node" ,node)
+       ("pkg-config" ,pkg-config)
+       ("which" ,which)
+       ("yasm" ,yasm)
+
+       ;; This file contains defaults for new user profiles.
+       ("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json"))
+
+       ("python-beautifulsoup4" ,python2-beautifulsoup4)
+       ("python-html5lib" ,python2-html5lib)
+       ("python" ,python-2)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("atk" ,atk)
+       ("cups" ,cups)
+       ("curl" ,curl)
+       ("dbus" ,dbus)
+       ("dbus-glib" ,dbus-glib)
+       ("expat" ,expat)
+       ("flac" ,flac)
+       ("ffmpeg" ,ffmpeg)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("harfbuzz" ,harfbuzz)
+       ("icu4c" ,icu4c)
+       ("jsoncpp" ,jsoncpp)
+       ("lcms" ,lcms)
+       ("libevent" ,libevent)
+       ("libffi" ,libffi)
+       ("libjpeg-turbo" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("libva" ,libva)
+       ("libvpx" ,libvpx)
+       ("libwebp" ,libwebp)
+       ("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("libxcomposite" ,libxcomposite)
+       ("libxcursor" ,libxcursor)
+       ("libxdamage" ,libxdamage)
+       ("libxext" ,libxext)
+       ("libxfixes" ,libxfixes)
+       ("libxi" ,libxi)
+       ("libxml2" ,libxml2)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("libxslt" ,libxslt)
+       ("libxtst" ,libxtst)
+       ("mesa" ,mesa)
+       ("minizip" ,minizip)
+       ("mit-krb5" ,mit-krb5)
+       ("nss" ,nss)
+       ("openh264" ,openh264)
+       ("openjpeg" ,openjpeg)                          ;PDFium only
+       ("openssl" ,openssl)
+       ("opus" ,opus+custom)
+       ("pango" ,pango)
+       ("pciutils" ,pciutils)
+       ("pulseaudio" ,pulseaudio)
+       ("re2" ,re2)
+       ("snappy" ,snappy)
+       ("speech-dispatcher" ,speech-dispatcher)
+       ("udev" ,eudev)
+       ("valgrind" ,valgrind)
+       ("vulkan-headers" ,vulkan-headers)))
+    (home-page "https://www.chromium.org/")
+    (description
+     "Ungoogled-Chromium is the Chromium web browser, sans integration with
+Google web services.")
+    ;; Chromium is developed as BSD-3, but bundles a large number of third-party
+    ;; components with other licenses.  For full information, see chrome://credits.
+    (license (list license:bsd-3
+                   license:bsd-2
+                   license:expat
+                   license:asl2.0
+                   license:mpl1.1
+                   license:mpl2.0
+                   license:public-domain
+                   license:isc
+                   (license:non-copyleft "chrome://credits"
+                                         "See chrome://credits for more information.")
+                   license:lgpl2.1+))))
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-07 23:52         ` Christopher Lemmer Webber
  2019-02-07 23:59           ` Julie Marchant
@ 2019-02-16  8:00           ` bill-auger
  2019-02-16 10:25             ` Brett Gilio
                               ` (4 more replies)
  1 sibling, 5 replies; 57+ messages in thread
From: bill-auger @ 2019-02-16  8:00 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

On Mon, 04 Feb 2019 23:34:45 +0100 Ludovic wrote:
> It’s not entirely clear to me what the problems are, to be honest.  

On Wed, 06 Feb 2019 22:04:59 +0100 Marius wrote:
> Indeed, the only real breakthrough is that we now have a script to
> create an Ungooglified source tarball with all unnecessary third_party
> components removed.
> I am of course happy to help other FSDG distributions liberate their
> Chromium too.  

it is not clear to *anyone* precisely what the licensing problems are -
not even the upstream developers have been able to confirm or deny them
with any certainty - that is the very reason why this ugly situation has
been standing all these years, as yet unresolved

by your own admittance there, you have not "liberated" chromium - you
have "ungooglified" it, and discarded some non-essential third-party
code - the work of the "ungoogled" and "iridium" teams has been
discussed at length and was concluded to be insufficient as a liberation
procedure, because their work only addresses proivacy issues, but not
licensing - "liberation" would first require *something* that is not
FSDG compliant to be identified as such, and *then* for that something
to be removed or patched in order to be compliant - neither of those
events has occurred, and we all know it - that is the very reason this
situation has stood unresolved for so long

so, this recent work done by guix is not a resolution to the problem -
it is merely sweeping the problem under the rug, rather than confronting
it at face value, as Adfeno has been suggesting


On Thu, 07 Feb 2019 18:52:02 -0500 Christopher wrote:
> +1 ... If concrete problems are found, by all means those should be
> raised and addressed.  Otherwise I really think we ought to merge this
> work.  

this statement is indicative of the lack of concern for the wider FSDG
ecosystem which is implicit in most of the guix team's statements on
this issue - do correct me if im wrong, but i read that: "we" as:
"guix" - as in: guix should adopt this program - as in: regardless of
the long standing consensus among the other FSDG distros that it is not
yet fit for inclusion

this is puts the other FSDG distros in a very uncomfortable position;
and the chromium program specifically, is not really the crux of the
issue - i do hope that i have not lost anyone's attention yet; because
this is where i will try to explain, what is the critical point of
contention at this time

about a year ago, the FSDG review process and criteria for endorsement
of new distros was updated - the new FSDG criteria checklist for
community review that was adopted includes the following essential
criteria:

  "Programs commonly known to have freedom issues are liberated or
  excluded"

that criteria is a link to the "software that does not respect the
FSDG" wiki page, which includes an entry for 'chromium-browser' (the
debian package name) with the liberation procedure being specified as:

  "Remove program/package Use GNU IceCat, or equivalent"

that created an uncomfortable pressure point for any distro that wants
to distribute this browser - according to the literal reading of that
criteria, no new distro could be endorsed by the FSF today if it
distributes chromium; because it would never make it past the community
review stage - this was not a concern for the last new distro because
it did not include chromium; so that ugly wart is still sitting there
today

it was also agreed upon at that time, that the FSDG criteria should be
applicable to all currently endorsed distros in perpetuity, so ...


On Mon, 04 Feb 2019 23:34:45 +0100 Ludovic wrote:
> I’d also like to stress that, if Chromium is eventually included in
> Guix, we are committed to fixing it or removing it should someone
> later discover that it does not comply with the FSDG (that’s the
> “Commitment to Correct Mistakes” section of FSDG.)  

if chromium enters the guix repo it will almost surely be followed by a
freedom bug report (which per the current FSDG criteria, would be fully
justifiable), just as what happened with pureos; which they reluctantly,
but eventually acted upon by removing chromium from their free repos -
so, why would guix want to invite controversy, by knowingly repeating
this historical mistake?

and BTW, where was guix's voice on this matter last year when pureos was
trying to defend their very same position on this very same issue? - no
one came forward to back them up on that position then; and to their
credit, they decided to adopt the position of the group, for the sake of
presenting a coherent message to the free software community as a
unified group - that was an important gesture on their part, which
strengthened the credibility of the FSDG, by showing that its
guidelines are not subject to the interpretation of each distro
arbitrarily - perhaps that consensus could have gone the other way if
the argument: "we should always trust the upstream on their word"[1]
had gained favor, and guix's induction of a chromium package would be
an entirely uninteresting event today

so, i suggest that it is in the best interest of guix (and any other
distro that wants chromium) to explicitly challenge that one point and
see if that entry can be removed or changed before that bug report is
posted against guix - i think i have just demonstrated that it would be
an easy argument to make, that chromium entered guix knowingly and
willingly in conflict with the new FSDG criteria

this is not a comfortable situation for anyone - a number of people
on this list have openly expressed a strong dislike for that current
situation - it is a really ugly point of contention at the moment; but
nothing has been done about it yet - i think the reason for that, is
mainly because there has been too few interested in defending or
liberating that program until now - even the pureos devs, who were the
last to remove it, were not particularly fond of it, but were slow to
remove it, only to appease users - this would be a great entry point for
guix to join the discussions on the FSDG mailing list, and perhaps
resolve this issue for everyone, including distros yet to come

it was, of course, nice of Marius to offer to assist other distros; but
individual assistance is not what is needed - what is needed is a
generally agreed upon, documented, liberation procedure that can
replace: "Use GNU IceCat instead" as the new FSDG recommendation - i
think we would all like to see that happen; but i dont think anything
convincing has yet been presented, much less been discussed openly or
agreed upon


[1]: https://debbugs.gnu.org/cgi/bugreport.cgi?msg=305;bug=28004;att=0 

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16  8:00           ` bill-auger
@ 2019-02-16 10:25             ` Brett Gilio
  2019-02-16 14:18               ` Julie Marchant
  2019-02-16 11:16             ` Gábor Boskovits
                               ` (3 subsequent siblings)
  4 siblings, 1 reply; 57+ messages in thread
From: Brett Gilio @ 2019-02-16 10:25 UTC (permalink / raw)
  To: bill-auger; +Cc: guix-devel, gnu-linux-libre


bill-auger writes:

> On Mon, 04 Feb 2019 23:34:45 +0100 Ludovic wrote:
>> It’s not entirely clear to me what the problems are, to be honest.  
>
> On Wed, 06 Feb 2019 22:04:59 +0100 Marius wrote:
>> Indeed, the only real breakthrough is that we now have a script to
>> create an Ungooglified source tarball with all unnecessary third_party
>> components removed.
>> I am of course happy to help other FSDG distributions liberate their
>> Chromium too.  
>

I agree with everything Bill said in his message, and I heavily
encourage all of us lurking in this mailing list with an opinion on the
matter to please state your opinion on this controversy and the Guix
relationship to the FSDG.

The free software guidelines are first and foremost put up by the free
software community by what is specified to be important to the values of
free software. This needs to be addressed sooner than later, because the
act of solidarity on the part of the community here is a tremendously
crucial and singular event.

I'd like to see the offerings of free software to grow, and include
chromium if chromium has a reasonable method of liberation. But there is
yet to be a complete audit to identify the problems. We can not rely
solely on speculation, so lets get to the bottom of this once and for
all.

Brett Gilio

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16  8:00           ` bill-auger
  2019-02-16 10:25             ` Brett Gilio
@ 2019-02-16 11:16             ` Gábor Boskovits
  2019-02-16 12:55               ` ng0
  2019-02-18 13:47               ` Denis 'GNUtoo' Carikli
  2019-02-16 15:10             ` znavko
                               ` (2 subsequent siblings)
  4 siblings, 2 replies; 57+ messages in thread
From: Gábor Boskovits @ 2019-02-16 11:16 UTC (permalink / raw)
  To: bill-auger; +Cc: Guix-devel, gnu-linux-libre

Hello,

bill-auger <bill-auger@peers.community> ezt írta (időpont: 2019. febr.
16., Szo, 9:01):

> it is not clear to *anyone* precisely what the licensing problems are -
> not even the upstream developers have been able to confirm or deny them
> with any certainty - that is the very reason why this ugly situation has
> been standing all these years, as yet unresolved
>

It seems to me, that there is a whole bunch of people interested in this,
but due to lack of resources or for some other reasons nothing is really
happening. Do you know any we we could help getting this resolved?

> by your own admittance there, you have not "liberated" chromium - you
> have "ungooglified" it, and discarded some non-essential third-party
> code - the work of the "ungoogled" and "iridium" teams has been
> discussed at length and was concluded to be insufficient as a liberation
> procedure, because their work only addresses proivacy issues, but not
> licensing - "liberation" would first require *something* that is not
> FSDG compliant to be identified as such, and *then* for that something
> to be removed or patched in order to be compliant - neither of those
> events has occurred, and we all know it - that is the very reason this
> situation has stood unresolved for so long

I also suspect, that the possible licensing problems are not resolved by this,
if they even exists, what seemingly noone has checked yet.

Also, what ensures you that on the very next commit no non-free software gets
included?

> about a year ago, the FSDG review process and criteria for endorsement
> of new distros was updated - the new FSDG criteria checklist for
> community review that was adopted includes the following essential
> criteria:
>
>   "Programs commonly known to have freedom issues are liberated or
>   excluded"
>
> that criteria is a link to the "software that does not respect the
> FSDG" wiki page, which includes an entry for 'chromium-browser' (the
> debian package name) with the liberation procedure being specified as:
>
>   "Remove program/package Use GNU IceCat, or equivalent"
>
> that created an uncomfortable pressure point for any distro that wants
> to distribute this browser - according to the literal reading of that
> criteria, no new distro could be endorsed by the FSF today if it
> distributes chromium; because it would never make it past the community
> review stage - this was not a concern for the last new distro because
> it did not include chromium; so that ugly wart is still sitting there
> today

The main question is what needs to be done, in order to get chromium off
that list. Whatever it takes however, it is very clear that upstream won't do
that, so it is not an option to rely on them any more. What's the way forward?

> if chromium enters the guix repo it will almost surely be followed by a
> freedom bug report (which per the current FSDG criteria, would be fully
> justifiable), just as what happened with pureos; which they reluctantly,
> but eventually acted upon by removing chromium from their free repos -
> so, why would guix want to invite controversy, by knowingly repeating
> this historical mistake?

Most probably you are right on this point.

>
> this is not a comfortable situation for anyone - a number of people
> on this list have openly expressed a strong dislike for that current
> situation - it is a really ugly point of contention at the moment; but
> nothing has been done about it yet - i think the reason for that, is
> mainly because there has been too few interested in defending or
> liberating that program until now - even the pureos devs, who were the
> last to remove it, were not particularly fond of it, but were slow to
> remove it, only to appease users - this would be a great entry point for
> guix to join the discussions on the FSDG mailing list, and perhaps
> resolve this issue for everyone, including distros yet to come
>
> it was, of course, nice of Marius to offer to assist other distros; but
> individual assistance is not what is needed - what is needed is a
> generally agreed upon, documented, liberation procedure that can
> replace: "Use GNU IceCat instead" as the new FSDG recommendation - i
> think we would all like to see that happen; but i dont think anything
> convincing has yet been presented, much less been discussed openly or
> agreed upon
>

Yes I think it would be really important to decide what liberation procedure
would be applicable.

>
> [1]: https://debbugs.gnu.org/cgi/bugreport.cgi?msg=305;bug=28004;att=0
>

Best regards,
g_bor

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 11:16             ` Gábor Boskovits
@ 2019-02-16 12:55               ` ng0
  2019-02-16 13:10                 ` Gábor Boskovits
  2019-02-18 13:47               ` Denis 'GNUtoo' Carikli
  1 sibling, 1 reply; 57+ messages in thread
From: ng0 @ 2019-02-16 12:55 UTC (permalink / raw)
  To: guix-devel

I think it's unreasonable to assume that everyone involved in GNU Distros
reads and participates in gnu-linux-libre@nongnu.org discussions. You have
a limited amount of time for projects, and this other mailinglist, when I
used to follow it has lots of discussions not related to Guix. So please
don't assume that the collective "we" gets involved in discussions on
two lists.

Gbor Boskovits transcribed 4.5K bytes:
> Hello,
> 
> bill-auger <bill-auger@peers.community> ezt írta (időpont: 2019. febr.
> 16., Szo, 9:01):
> 
> > it is not clear to *anyone* precisely what the licensing problems are -
> > not even the upstream developers have been able to confirm or deny them
> > with any certainty - that is the very reason why this ugly situation has
> > been standing all these years, as yet unresolved
> >
> 
> It seems to me, that there is a whole bunch of people interested in this,
> but due to lack of resources or for some other reasons nothing is really
> happening. Do you know any we we could help getting this resolved?
> 
> > by your own admittance there, you have not "liberated" chromium - you
> > have "ungooglified" it, and discarded some non-essential third-party
> > code - the work of the "ungoogled" and "iridium" teams has been
> > discussed at length and was concluded to be insufficient as a liberation
> > procedure, because their work only addresses proivacy issues, but not
> > licensing - "liberation" would first require *something* that is not
> > FSDG compliant to be identified as such, and *then* for that something
> > to be removed or patched in order to be compliant - neither of those
> > events has occurred, and we all know it - that is the very reason this
> > situation has stood unresolved for so long
> 
> I also suspect, that the possible licensing problems are not resolved by this,
> if they even exists, what seemingly noone has checked yet.
> 
> Also, what ensures you that on the very next commit no non-free software gets
> included?
> 
> > about a year ago, the FSDG review process and criteria for endorsement
> > of new distros was updated - the new FSDG criteria checklist for
> > community review that was adopted includes the following essential
> > criteria:
> >
> >   "Programs commonly known to have freedom issues are liberated or
> >   excluded"
> >
> > that criteria is a link to the "software that does not respect the
> > FSDG" wiki page, which includes an entry for 'chromium-browser' (the
> > debian package name) with the liberation procedure being specified as:
> >
> >   "Remove program/package Use GNU IceCat, or equivalent"
> >
> > that created an uncomfortable pressure point for any distro that wants
> > to distribute this browser - according to the literal reading of that
> > criteria, no new distro could be endorsed by the FSF today if it
> > distributes chromium; because it would never make it past the community
> > review stage - this was not a concern for the last new distro because
> > it did not include chromium; so that ugly wart is still sitting there
> > today
> 
> The main question is what needs to be done, in order to get chromium off
> that list. Whatever it takes however, it is very clear that upstream won't do
> that, so it is not an option to rely on them any more. What's the way forward?
> 
> > if chromium enters the guix repo it will almost surely be followed by a
> > freedom bug report (which per the current FSDG criteria, would be fully
> > justifiable), just as what happened with pureos; which they reluctantly,
> > but eventually acted upon by removing chromium from their free repos -
> > so, why would guix want to invite controversy, by knowingly repeating
> > this historical mistake?
> 
> Most probably you are right on this point.
> 
> >
> > this is not a comfortable situation for anyone - a number of people
> > on this list have openly expressed a strong dislike for that current
> > situation - it is a really ugly point of contention at the moment; but
> > nothing has been done about it yet - i think the reason for that, is
> > mainly because there has been too few interested in defending or
> > liberating that program until now - even the pureos devs, who were the
> > last to remove it, were not particularly fond of it, but were slow to
> > remove it, only to appease users - this would be a great entry point for
> > guix to join the discussions on the FSDG mailing list, and perhaps
> > resolve this issue for everyone, including distros yet to come
> >
> > it was, of course, nice of Marius to offer to assist other distros; but
> > individual assistance is not what is needed - what is needed is a
> > generally agreed upon, documented, liberation procedure that can
> > replace: "Use GNU IceCat instead" as the new FSDG recommendation - i
> > think we would all like to see that happen; but i dont think anything
> > convincing has yet been presented, much less been discussed openly or
> > agreed upon
> >
> 
> Yes I think it would be really important to decide what liberation procedure
> would be applicable.
> 
> >
> > [1]: https://debbugs.gnu.org/cgi/bugreport.cgi?msg=305;bug=28004;att=0
> >
> 
> Best regards,
> g_bor
> 
> 

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 12:55               ` ng0
@ 2019-02-16 13:10                 ` Gábor Boskovits
  0 siblings, 0 replies; 57+ messages in thread
From: Gábor Boskovits @ 2019-02-16 13:10 UTC (permalink / raw)
  To: Guix-devel

Hello,

<ng0@n0.is> ezt írta (időpont: 2019. febr. 16., Szo, 13:56):
>
> I think it's unreasonable to assume that everyone involved in GNU Distros
> reads and participates in gnu-linux-libre@nongnu.org discussions. You have
> a limited amount of time for projects, and this other mailinglist, when I
> used to follow it has lots of discussions not related to Guix. So please
> don't assume that the collective "we" gets involved in discussions on
> two lists.
>

Yes, I totally agree. I believe that keeping both list in CC is the
way to go here.

I am also not subscribed to gnu-linux-libre.

Best regards,
g_bor

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 10:25             ` Brett Gilio
@ 2019-02-16 14:18               ` Julie Marchant
  2019-02-16 15:37                 ` [GNU-linux-libre] " Adam Van Ymeren
                                   ` (3 more replies)
  0 siblings, 4 replies; 57+ messages in thread
From: Julie Marchant @ 2019-02-16 14:18 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions, Brett Gilio,
	bill-auger
  Cc: guix-devel

On 02/16/2019 05:25 AM, Brett Gilio wrote:
> I agree with everything Bill said in his message, and I heavily
> encourage all of us lurking in this mailing list with an opinion on the
> matter to please state your opinion on this controversy and the Guix
> relationship to the FSDG.
> 
> The free software guidelines are first and foremost put up by the free
> software community by what is specified to be important to the values of
> free software. This needs to be addressed sooner than later, because the
> act of solidarity on the part of the community here is a tremendously
> crucial and singular event.
> 
> I'd like to see the offerings of free software to grow, and include
> chromium if chromium has a reasonable method of liberation. But there is
> yet to be a complete audit to identify the problems. We can not rely
> solely on speculation, so lets get to the bottom of this once and for
> all.

I think that assuming Chromium is no good until something no good is
found in it is a wrong approach.

I don't understand what's so complicated about this issue. In justice
systems, we adopt an "innocent until proven guilty" system because you
can't really prove innocence, only guilt. Would it not make sense to use
this tried and tested system when evaluating whether or not a program is
libre? The only argument I've seen on the matter is the way copyright
works, but Chromium is under the Modified BSD License according to
documentation I was able to find. If some files are not actually covered
by this license, or some other license, it would be very easy to simply
point to the file. As far as I know, and correct me if I'm wrong here,
no one in the entire history of this claim about Chromium being
proprietary has ever done so. If I'm wrong about this, though, then it
seems to me that the correct action to take would be to address that
issue, if not upstream, then in a fork.

-- 
Julie Marchant
http://onpon4.github.io

Encrypt your emails with GnuPG:
https://emailselfdefense.fsf.org

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16  8:00           ` bill-auger
  2019-02-16 10:25             ` Brett Gilio
  2019-02-16 11:16             ` Gábor Boskovits
@ 2019-02-16 15:10             ` znavko
  2019-02-16 15:50             ` Marius Bakke
  2019-02-16 18:56             ` Giovanni Biscuolo
  4 siblings, 0 replies; 57+ messages in thread
From: znavko @ 2019-02-16 15:10 UTC (permalink / raw)
  To: bill-auger; +Cc: Guix Devel, gnu-linux-libre

[-- Attachment #1: Type: text/plain, Size: 484 bytes --]

Hello, bill! Thanks for your clarifications!
Really, is it possible to make chromium free software?
Also, FSF free software directory can divide packages by criteria like
1) Totally free GNU - open-source and free license GPL
2) Totally free nonGNU - - open-source and free license non-GPL
3) Totally open-source (with non-free license)
4) Non-free

This may help people to solve such issues more conveniently, having this knowledge base.
It also will help developers to adopt FSDG.


[-- Attachment #2: Type: text/html, Size: 1106 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 14:18               ` Julie Marchant
@ 2019-02-16 15:37                 ` Adam Van Ymeren
  2019-02-16 19:47                 ` Adonay Felipe Nogueira
                                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 57+ messages in thread
From: Adam Van Ymeren @ 2019-02-16 15:37 UTC (permalink / raw)
  To: guix-devel, Julie Marchant,
	Workgroup for fully free GNU/Linux distributions, Brett Gilio,
	bill-auger



On February 16, 2019 9:18:58 AM EST, Julie Marchant <onpon4@riseup.net> wrote:
>On 02/16/2019 05:25 AM, Brett Gilio wrote:
>> I agree with everything Bill said in his message, and I heavily
>> encourage all of us lurking in this mailing list with an opinion on
>the
>> matter to please state your opinion on this controversy and the Guix
>> relationship to the FSDG.
>> 
>> The free software guidelines are first and foremost put up by the
>free
>> software community by what is specified to be important to the values
>of
>> free software. This needs to be addressed sooner than later, because
>the
>> act of solidarity on the part of the community here is a tremendously
>> crucial and singular event.
>> 
>> I'd like to see the offerings of free software to grow, and include
>> chromium if chromium has a reasonable method of liberation. But there
>is
>> yet to be a complete audit to identify the problems. We can not rely
>> solely on speculation, so lets get to the bottom of this once and for
>> all.
>
>I think that assuming Chromium is no good until something no good is
>found in it is a wrong approach.
>
>I don't understand what's so complicated about this issue. In justice
>systems, we adopt an "innocent until proven guilty" system because you
>can't really prove innocence, only guilt. Would it not make sense to
>use
>this tried and tested system when evaluating whether or not a program
>is
>libre? The only argument I've seen on the matter is the way copyright
>works, but Chromium is under the Modified BSD License according to
>documentation I was able to find. If some files are not actually
>covered
>by this license, or some other license, it would be very easy to simply
>point to the file. As far as I know, and correct me if I'm wrong here,
>no one in the entire history of this claim about Chromium being
>proprietary has ever done so. If I'm wrong about this, though, then it
>seems to me that the correct action to take would be to address that
>issue, if not upstream, then in a fork.

This issue documents some chromium efforts to update to copyright on all files.  I haven't looked at the source myself yet but this bug suggests that there are still hundreds to thousand's of files with no clear license.

https://bugs.chromium.org/p/chromium/issues/detail?id=28291

Someone should run their check licenses script again on the latest codebase and see what it reports.

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16  8:00           ` bill-auger
                               ` (2 preceding siblings ...)
  2019-02-16 15:10             ` znavko
@ 2019-02-16 15:50             ` Marius Bakke
  2019-02-16 16:20               ` [GNU-linux-libre] " Amin Bandali
  2019-02-16 16:34               ` Alexandre Oliva
  2019-02-16 18:56             ` Giovanni Biscuolo
  4 siblings, 2 replies; 57+ messages in thread
From: Marius Bakke @ 2019-02-16 15:50 UTC (permalink / raw)
  To: bill-auger, gnu-linux-libre; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 3699 bytes --]

bill-auger <bill-auger@peers.community> writes:

> On Mon, 04 Feb 2019 23:34:45 +0100 Ludovic wrote:
>> It’s not entirely clear to me what the problems are, to be honest.  
>
> On Wed, 06 Feb 2019 22:04:59 +0100 Marius wrote:
>> Indeed, the only real breakthrough is that we now have a script to
>> create an Ungooglified source tarball with all unnecessary third_party
>> components removed.
>> I am of course happy to help other FSDG distributions liberate their
>> Chromium too.  
>
> it is not clear to *anyone* precisely what the licensing problems are -
> not even the upstream developers have been able to confirm or deny them
> with any certainty - that is the very reason why this ugly situation has
> been standing all these years, as yet unresolved
>
> by your own admittance there, you have not "liberated" chromium - you
> have "ungooglified" it, and discarded some non-essential third-party
> code - the work of the "ungoogled" and "iridium" teams has been
> discussed at length and was concluded to be insufficient as a liberation
> procedure, because their work only addresses proivacy issues, but not
> licensing - "liberation" would first require *something* that is not
> FSDG compliant to be identified as such, and *then* for that something
> to be removed or patched in order to be compliant - neither of those
> events has occurred, and we all know it - that is the very reason this
> situation has stood unresolved for so long
>
> so, this recent work done by guix is not a resolution to the problem -
> it is merely sweeping the problem under the rug, rather than confronting
> it at face value, as Adfeno has been suggesting

For the benefit of everyone following this discussion, I'll summarize
the problems with Chromium and how they are addressed by my patch.

1) Chromium is non-free.

The raw Chromium tarball contains a lot of software that is non-free.
Heck, it's not even possible to build it without the proprietary Unrar
program unless you patch it!

Luckily, these non-free components are in various "third_party"
directories.  Thus, it is possible to traverse the tarball and remove
all such parts that are not already audited and whitelisted.  Which is
exactly what my patch does.

Despite years of searching, I have not found any proprietary parts in
first party code!  I cannot prove this obviously; but proving the
contrary should be trivial.

Thus, I surmise that the code is indeed free --- I would not have
submitted it for Guix if I had the slightest doubt to the contrary.

2) Chromium spies on the user.

Just starting the browser in the default configuration will cause it to
submit traffic to Google.  The exact nature of this data is unclear, but
such behaviour is clearly not something fit for a GNU distribution.

Ungoogled-Chromium solves this by 1) patching out all non-essential
functionality (such as "safe browsing" and web store integration); and
2) performing a tree-wide "domain substitution" such that all Google
(and some more) domains are replaced with a bogus "9oo91e.qjz9zk" domain.

I have verified that the browser sends no unsolicited network requests
when launching or during usage after applying the Ungoogled patches,
something I never managed with the "normal" free Chromium no matter how
many flags or patches I tried.

Thus, I surmise that this browser does indeed protect the users privacy.

------------------------------------------------------------------------

Since there have been no coherent arguments against this browser in the
two weeks since it was submitted, I plan to push this patch *tomorrow*.

Thanks for the feedback,
Marius

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 15:50             ` Marius Bakke
@ 2019-02-16 16:20               ` Amin Bandali
  2019-02-16 16:33                 ` Marius Bakke
  2019-02-16 16:34               ` Alexandre Oliva
  1 sibling, 1 reply; 57+ messages in thread
From: Amin Bandali @ 2019-02-16 16:20 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel, gnu-linux-libre

Marius, if I understand correctly, you have summarized your patch with
respect to the following two issues:

1. Your patch strips out parts of Chromium that are /clearly/ nonfree
   and proprietary (e.g. unrar per your example), and

2. Your patch addresses (or tries to) privacy concerns.

But as far as I can tell, you have not addressed the concerns shared by
Bill and others about the situation with files in the Chromium codebase
that don’t have a clear license.  So I’ll try to repeat/rephrase their
question(s): does your patch address the files with unclear license?
Does it strip out those files that don’t have a clear license?  Can we
be certain that the Chromium built from your patch explicitly *only*
contained free software?

Best,
amin

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 16:20               ` [GNU-linux-libre] " Amin Bandali
@ 2019-02-16 16:33                 ` Marius Bakke
  2019-02-16 19:27                   ` Amin Bandali
  2019-02-17  2:20                   ` bill-auger
  0 siblings, 2 replies; 57+ messages in thread
From: Marius Bakke @ 2019-02-16 16:33 UTC (permalink / raw)
  To: Amin Bandali; +Cc: guix-devel, gnu-linux-libre

[-- Attachment #1: Type: text/plain, Size: 975 bytes --]

Amin,

Amin Bandali <bandali@gnu.org> writes:

> Marius, if I understand correctly, you have summarized your patch with
> respect to the following two issues:
>
> 1. Your patch strips out parts of Chromium that are /clearly/ nonfree
>    and proprietary (e.g. unrar per your example), and
>
> 2. Your patch addresses (or tries to) privacy concerns.
>
> But as far as I can tell, you have not addressed the concerns shared by
> Bill and others about the situation with files in the Chromium codebase
> that don’t have a clear license.  So I’ll try to repeat/rephrase their
> question(s): does your patch address the files with unclear license?
> Does it strip out those files that don’t have a clear license?  Can we
> be certain that the Chromium built from your patch explicitly *only*
> contained free software?

Can you point out one or more files with an unclear license?  Do we have
any reason to distrust what's written in the LICENSE file?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 15:50             ` Marius Bakke
  2019-02-16 16:20               ` [GNU-linux-libre] " Amin Bandali
@ 2019-02-16 16:34               ` Alexandre Oliva
  2019-02-16 16:54                 ` Marius Bakke
  2019-02-17  3:38                 ` bill-auger
  1 sibling, 2 replies; 57+ messages in thread
From: Alexandre Oliva @ 2019-02-16 16:34 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel, gnu-linux-libre

On Feb 16, 2019, Marius Bakke <mbakke@fastmail.com> wrote:

> Despite years of searching, I have not found any proprietary parts in
> first party code!

Could you please summarize what you did in your searching?

Maybe you have actually completed the steps that were missing in the
auditing or Chromium to conclude it's Free, or at least some of the
remaining tasks can be checked off.

-- 
Alexandre Oliva, freedom fighter   https://FSFLA.org/blogs/lxo
Be the change, be Free!         FSF Latin America board member
GNU Toolchain Engineer                Free Software Evangelist
Hay que enGNUrecerse, pero sin perder la terGNUra jamás-GNUChe

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 16:34               ` Alexandre Oliva
@ 2019-02-16 16:54                 ` Marius Bakke
  2019-02-17  3:38                 ` bill-auger
  1 sibling, 0 replies; 57+ messages in thread
From: Marius Bakke @ 2019-02-16 16:54 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: guix-devel, gnu-linux-libre

[-- Attachment #1: Type: text/plain, Size: 756 bytes --]

Alexandre Oliva <lxoliva@fsfla.org> writes:

> On Feb 16, 2019, Marius Bakke <mbakke@fastmail.com> wrote:
>
>> Despite years of searching, I have not found any proprietary parts in
>> first party code!
>
> Could you please summarize what you did in your searching?
>
> Maybe you have actually completed the steps that were missing in the
> auditing or Chromium to conclude it's Free, or at least some of the
> remaining tasks can be checked off.

I'm afraid I don't have a good summary.  I have grepped for certain
keywords and looked for LICENSE-like files, sanity checked many
different parts of the source...  Much like I do for any Guix package,
only going over the course of years.  Are there any concrete tasks that
that I can look at and check off?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16  8:00           ` bill-auger
                               ` (3 preceding siblings ...)
  2019-02-16 15:50             ` Marius Bakke
@ 2019-02-16 18:56             ` Giovanni Biscuolo
  2019-02-19 16:28               ` Giovanni Biscuolo
  4 siblings, 1 reply; 57+ messages in thread
From: Giovanni Biscuolo @ 2019-02-16 18:56 UTC (permalink / raw)
  To: bill-auger, guix-devel; +Cc: 28004

[-- Attachment #1: Type: text/plain, Size: 2439 bytes --]

Hi guix-devel!

this is my humble contribution to this discussion...
(I'm not a Guix maintainer)

first and foremost, IMHO guix-devel is not the place to discuss GNU FSDG
criteria; I'm going to subscribe gnu-linux-libre@nongnu.org to send
my comments - and I _have_ some - on the FSDG compliance process

if you are interested please follow this thread:
http://lists.nongnu.org/archive/html/gnu-linux-libre/2019-02/threads.html#00020
:-D

bill-auger <bill-auger@peers.community> writes:

[...]

> about a year ago, the FSDG review process and criteria for endorsement
> of new distros was updated the new FSDG criteria checklist for
> community review that was adopted includes the following essential
> criteria:
>
>   "Programs commonly known to have freedom issues are liberated or
>   excluded"
>
> that criteria is a link to the "software that does not respect the
> FSDG" wiki page,

for reference, this page:
https://libreplanet.org/wiki/Template:FSDG_Checklist

> which includes an entry for 'chromium-browser' (the
> debian package name) with the liberation procedure being specified as:
>
>   "Remove program/package Use GNU IceCat, or equivalent"

[...]

> it was also agreed upon at that time, that the FSDG criteria should be
> applicable to all currently endorsed distros in perpetuity, so ...

thank you for the clarification, Bill: you explained us the entire
FSDG_Checklist is *mandatory* for a distro to be GNU FSDG compliant; so
there's **no discussion** here

if Guix System Distribution wants to remain GNU FSDG compliant - as most
if not all Guix contributors would like, I suppose - ungoogled-chromium
should still not be included in Guix System Distribution

so, regarding this bug #28004 the natural resolution should be to
*postpone* the inclusion of this package with a statement like this one:

  "ungoogled-chromium cannot be included in Guix System Distribution since
  it is listed - as 'chromium-browser' - on the page
  <List_of_software_that_does_not_respect_the_Free_System_Distribution_Guidelines#chromium-browser>
  that is an integral part of the GNU FSDG Guidelines as extended by the
  FSDG_Checklist via https://libreplanet.org/wiki/Incoming_distros#Endorsement_Process"

Happy hacking! :-)
Giovanni



[1] https://www.gnu.org/distros/free-system-distribution-guidelines.en.html

-- 
Giovanni Biscuolo

Xelera IT Infrastructures

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 16:33                 ` Marius Bakke
@ 2019-02-16 19:27                   ` Amin Bandali
  2019-02-17  2:20                   ` bill-auger
  1 sibling, 0 replies; 57+ messages in thread
From: Amin Bandali @ 2019-02-16 19:27 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel, gnu-linux-libre

Marius,

On 2019-02-16  5:33 PM, Marius Bakke wrote:

[...]

>
> Can you point out one or more files with an unclear license?  Do we have
> any reason to distrust what's written in the LICENSE file?
>

I don’t have a direct example of one such file off top of my head, but
looking at the large reported chromium issue[1], I see there are a
number of open blocking issues linked to that one.  Also, I was looking
at [2] and [3] from a little over a year ago, which included the results
of running licensecheck on the chromium tree, but I wasn’t able to
download any of the resulting txt files there.  So I thought I’d clone a
fresh copy of chromium and run licensecheck from the Debian Stretch repo
on all the files as follows:

git clone --depth 1 https://chromium.googlesource.com/chromium/src.git
cd src
git rev-parse HEAD  # result: eda06a0b859a08d15a1ab6a6850e42e667530f0b
licensecheck -c '.*' -r * > ../licensecheck-chromium-eda06a0b859a.txt

I’ve attached a gzipped version of the above text file.  Granted, there
are caveats: firstly, that the above invocation of licensecheck examines
/all/ of the files in the repo, including test html files which are not
relevant and should be filtered out; and secondly, the output contains a
very large number of “UNKNOWN” results which may be false positives.

Link [3] mentioned running FSD Script Aid on the chromium tree as well,
but I don’t have enough time at the moment to do so.

Hope this is of some help.

[1]: https://bugs.chromium.org/p/chromium/issues/detail?id=28291
[2]: https://lists.gnu.org/r/directory-discuss/2017-11/msg00014.html
[3]: https://directory.fsf.org/wiki/Talk:Chromium

Best,
amin

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 14:18               ` Julie Marchant
  2019-02-16 15:37                 ` [GNU-linux-libre] " Adam Van Ymeren
@ 2019-02-16 19:47                 ` Adonay Felipe Nogueira
  2019-02-16 20:01                   ` Brett Gilio
  2019-02-16 20:07                   ` Alex Griffin
  2019-02-17  1:37                 ` bill-auger
  2019-02-17 20:55                 ` Christopher Lemmer Webber
  3 siblings, 2 replies; 57+ messages in thread
From: Adonay Felipe Nogueira @ 2019-02-16 19:47 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions, 28004; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 1683 bytes --]

Em 16/02/2019 12:18, Julie Marchant escreveu:
> libre? The only argument I've seen on the matter is the way copyright
> works, but Chromium is under the Modified BSD License according to
> documentation I was able to find. If some files are not actually covered

For what is worth, what I learned with projects that don't follow the
Open Source Definition (I know that I shouldn't support this term here,
but I had to mention it) is that they mask their non-compliance behind a
license. Of course we don't intend to foster open source here, as this
project, having the goal to provide a package manager that is under the
GNU project, also aims to create a system distribution that follows the
GNU FSDG and uses such package manager

If the norm would be to only check the licenses, then we would have for
example, taken ages to figure out that the kernel source files from
upstream of GNU Linux-libre was/is non-free.

Having a requirement for a package to be first throughly reviewed
eliminates some of the possibility of having non-free functional data or
non-distributable non-functional data. It's not a perfect protection
(since the package in review might have implemented things from other
works that one of the reviewers might not be aware of).

As I said in a message to these mailing lists, I already started
reviewing Chromium, although this project is big and I might not have
the time nor all the skills to do it alone. Since today, I moved the
review, which was available at [1], to the appropriate Review namespace
at [2].


[1] https://directory.fsf.org/wiki/Talk:Chromium
[2] https://directory.fsf.org/wiki/Review:Chromium-REV-ID-1


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 213 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 19:47                 ` Adonay Felipe Nogueira
@ 2019-02-16 20:01                   ` Brett Gilio
  2019-02-16 20:06                     ` Brett Gilio
  2019-02-16 20:07                   ` Alex Griffin
  1 sibling, 1 reply; 57+ messages in thread
From: Brett Gilio @ 2019-02-16 20:01 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions; +Cc: guix-devel, 28004


Adonay Felipe Nogueira writes:

> Em 16/02/2019 12:18, Julie Marchant escreveu:
>> libre? The only argument I've seen on the matter is the way copyright
>> works, but Chromium is under the Modified BSD License according to
>> documentation I was able to find. If some files are not actually covered
>
> For what is worth, what I learned with projects that don't follow the
> Open Source Definition (I know that I shouldn't support this term here,
> but I had to mention it) is that they mask their non-compliance behind a
> license. Of course we don't intend to foster open source here, as this
> project, having the goal to provide a package manager that is under the
> GNU project, also aims to create a system distribution that follows the
> GNU FSDG and uses such package manager
>
> If the norm would be to only check the licenses, then we would have for
> example, taken ages to figure out that the kernel source files from
> upstream of GNU Linux-libre was/is non-free.
>
> Having a requirement for a package to be first throughly reviewed
> eliminates some of the possibility of having non-free functional data or
> non-distributable non-functional data. It's not a perfect protection
> (since the package in review might have implemented things from other
> works that one of the reviewers might not be aware of).
>
> As I said in a message to these mailing lists, I already started
> reviewing Chromium, although this project is big and I might not have
> the time nor all the skills to do it alone. Since today, I moved the
> review, which was available at [1], to the appropriate Review namespace
> at [2].
>
>
> [1] https://directory.fsf.org/wiki/Talk:Chromium
> [2] https://directory.fsf.org/wiki/Review:Chromium-REV-ID-1

Adonay, thank you for taking the initiative here! I think this is a
needed step forward.

Brett Gilio

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 20:01                   ` Brett Gilio
@ 2019-02-16 20:06                     ` Brett Gilio
  2019-02-17  1:39                       ` bill-auger
  0 siblings, 1 reply; 57+ messages in thread
From: Brett Gilio @ 2019-02-16 20:06 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions; +Cc: guix-devel, 28004


Brett Gilio writes:

> Adonay Felipe Nogueira writes:
>
>> Em 16/02/2019 12:18, Julie Marchant escreveu:
>>> libre? The only argument I've seen on the matter is the way copyright
>>> works, but Chromium is under the Modified BSD License according to
>>> documentation I was able to find. If some files are not actually covered
>>
>> For what is worth, what I learned with projects that don't follow the
>> Open Source Definition (I know that I shouldn't support this term here,
>> but I had to mention it) is that they mask their non-compliance behind a
>> license. Of course we don't intend to foster open source here, as this
>> project, having the goal to provide a package manager that is under the
>> GNU project, also aims to create a system distribution that follows the
>> GNU FSDG and uses such package manager
>>
>> If the norm would be to only check the licenses, then we would have for
>> example, taken ages to figure out that the kernel source files from
>> upstream of GNU Linux-libre was/is non-free.
>>
>> Having a requirement for a package to be first throughly reviewed
>> eliminates some of the possibility of having non-free functional data or
>> non-distributable non-functional data. It's not a perfect protection
>> (since the package in review might have implemented things from other
>> works that one of the reviewers might not be aware of).
>>
>> As I said in a message to these mailing lists, I already started
>> reviewing Chromium, although this project is big and I might not have
>> the time nor all the skills to do it alone. Since today, I moved the
>> review, which was available at [1], to the appropriate Review namespace
>> at [2].
>>
>>
>> [1] https://directory.fsf.org/wiki/Talk:Chromium
>> [2] https://directory.fsf.org/wiki/Review:Chromium-REV-ID-1
>
> Adonay, thank you for taking the initiative here! I think this is a
> needed step forward.
>
> Brett Gilio

Also, maybe it would be of some help to involve somebody from the FSF to
be a neutral mediator on this process until we come to some reasonable
conclusion?

Marius,

I think you can probably go ahead and push that patch, knowing full well
that Bill warned a bug report will be filed against the Guix source tree
until such time that an audit concludes or Adonay's suggestion is
followed through with.

Bill,

What do you think here?

Brett Gilio

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 19:47                 ` Adonay Felipe Nogueira
  2019-02-16 20:01                   ` Brett Gilio
@ 2019-02-16 20:07                   ` Alex Griffin
  2019-02-17  1:49                     ` bill-auger
  1 sibling, 1 reply; 57+ messages in thread
From: Alex Griffin @ 2019-02-16 20:07 UTC (permalink / raw)
  To: guix-devel

On Sat, Feb 16, 2019, at 7:48 PM, Adonay Felipe Nogueira wrote:
> If the norm would be to only check the licenses, then we would have for
> example, taken ages to figure out that the kernel source files from
> upstream of GNU Linux-libre was/is non-free.

The Linux kernel was included in GNU distributions until a concrete problem was identified, exactly the opposite of what is being demanded here. AFAICT Marius has expended quite a bit of effort to resolve every known problem with the package, and what is left is literally just FUD (fear, uncertainty, doubt).

-- 
Alex Griffin

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 14:18               ` Julie Marchant
  2019-02-16 15:37                 ` [GNU-linux-libre] " Adam Van Ymeren
  2019-02-16 19:47                 ` Adonay Felipe Nogueira
@ 2019-02-17  1:37                 ` bill-auger
  2019-02-17  2:30                   ` Julie Marchant
  2019-02-17 20:55                 ` Christopher Lemmer Webber
  3 siblings, 1 reply; 57+ messages in thread
From: bill-auger @ 2019-02-17  1:37 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

On Sat, 16 Feb 2019 09:18:58 -0500 Julie wrote:
> In justice
> systems, we adopt an "innocent until proven guilty" system because you
> can't really prove innocence, only guilt.   

i wondered if someone would bring that up - 

there is a huge difference with this (and i have already made this
clear, BTW) - the default state for copyright is not "innocent" - the
default state is "no permission granted" - according to this analogy,
software is guilty until proven innocent under the existing copyright
laws - that is not something we can decide to re-interpret


On Sat, 16 Feb 2019 09:18:58 -0500 Julie wrote:
> As far as I know, and correct
> me if I'm wrong here, no one in the entire history of this claim  

yes they have - the original bug report noted several; and those were
said to be fixed


On Sat, 16 Feb 2019 09:18:58 -0500 Julie wrote:
> this, though, then it seems to me that the correct action to take
> would be to address that issue, if not upstream, then in a fork.  
 
i agree - at the very least, i would to see that original bug report
closed by the upstream - its continued presence is looms ominously and
dubiously

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 20:06                     ` Brett Gilio
@ 2019-02-17  1:39                       ` bill-auger
  2019-02-17 22:33                         ` [GNU-linux-libre] " Ricardo Wurmus
  0 siblings, 1 reply; 57+ messages in thread
From: bill-auger @ 2019-02-17  1:39 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

On Sat, 16 Feb 2019 14:06:43 -0600 Brett wrote:
> I think you can probably go ahead and push that patch
> Bill,  What do you think here?

i think that would be intentionally creating exactly the same
unpleasant situation as the pureos bug report that stood for many
months, unaddressed

i think that IF this is the proper course of action, then we
should apologize to pureos for asking them to remove it last year

but let me rephrase that more plainly:

if we do not FIRSTLY apologize to pureos for asking them to remove
chromium and publicly endorse them to re-instate it, then endorsing it
into guix would be hypocritical and shameful

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 20:07                   ` Alex Griffin
@ 2019-02-17  1:49                     ` bill-auger
  0 siblings, 0 replies; 57+ messages in thread
From: bill-auger @ 2019-02-17  1:49 UTC (permalink / raw)
  To: guix-devel

Alex -

you are really mis-characterizing the situation here - this really has
very little to do with chromium specifically - the problem is when some
FSDG distro decide for themselves that *any* program qualifies as "free
software" when the others have agreed that it does not - this plants the
seeds for an uncomfortable family fued which could be best avoided
i dont know that anyone really cares enough about this browser to
waste their time spreading FUD about it - we just want everyone to
agree whether it is "free software" or it is not, and for all FSDG
distros to endorse or OR reject as a unified group - whichever the case
may actually be is not central to the discussion

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 16:33                 ` Marius Bakke
  2019-02-16 19:27                   ` Amin Bandali
@ 2019-02-17  2:20                   ` bill-auger
  1 sibling, 0 replies; 57+ messages in thread
From: bill-auger @ 2019-02-17  2:20 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

On Sat, 16 Feb 2019 17:33:21 +0100 Marius wrote:
> Do we have
> any reason to distrust what's written in the LICENSE file?  

based on your own account, you very explicitly distrust the code
released by those authors in terms of privacy - so why would you
implicitly trust it in terms of licensing - there seems to be a
disjunct in logic there

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17  1:37                 ` bill-auger
@ 2019-02-17  2:30                   ` Julie Marchant
  2019-02-17  2:42                     ` bill-auger
  0 siblings, 1 reply; 57+ messages in thread
From: Julie Marchant @ 2019-02-17  2:30 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions, bill-auger; +Cc: guix-devel

On 02/16/2019 08:37 PM, bill-auger wrote:
> On Sat, 16 Feb 2019 09:18:58 -0500 Julie wrote:
> yes they have - the original bug report noted several; and those were
> said to be fixed

Ah, perfect. Then the problem is solved, no? Those issues, as you say,
were fixed by the Chromium team (according to them, and since you don't
point to evidence that the problems remain, I assume that means they
don't), and the Ungoogled-Chromium project has apparently fixed all
other problems. Unless you are aware of another unaddressed problem,
that is.

> there is a huge difference with this (and i have already made this
> clear, BTW) - the default state for copyright is not "innocent" - the
> default state is "no permission granted" - according to this analogy,
> software is guilty until proven innocent under the existing copyright
> laws - that is not something we can decide to re-interpret

I already responded to this, but it appears it went past your radar for
some reason, or perhaps I just didn't make myself clear enough, so let
me restate it. I'll be talking about how copyright works, so let me just
state upfront that I'm not a lawyer and no one should take this as legal
advice.

Copyright is based on declarations. That is, when someone declares that
you are allowed to do something, as long as they are the rightful
copyright holder, you are allowed to do that thing. It's the same sort
of deal as any other permission you might have to get from someone else.
So what you need is proof of such a declaration of permission. That's
what license statements are for.

So looking at the Chromium source code tree, we see a number of text
files. Of particular note, you see a file called "LICENSE", which is
simply a copy of the Modified BSD License. It doesn't specify what files
it applies to, and obviously, there are files it doesn't. But the fact
that they label it this way strongly implies that Chromium is generally
speaking under that license. And when you look through files, that
assumption is reaffirmed with statements that look like this:

// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

So given this, any differently-licensed file would be an exception, and
it would be very easy to point these exceptions out and then fix them.
The same is true of Linux, by the way, and apparently there was no
problem simply identifying proprietary pieces and removing them.

Hence, I think, if someone says they've produced a version of Chromium
with all freedom-related problems solved, and no one has any evidence to
the contrary, that version of Chromium should be accepted.

-- 
Julie Marchant
http://onpon4.github.io

Encrypt your emails with GnuPG:
https://emailselfdefense.fsf.org

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17  2:30                   ` Julie Marchant
@ 2019-02-17  2:42                     ` bill-auger
  2019-02-17  4:19                       ` Julie Marchant
  0 siblings, 1 reply; 57+ messages in thread
From: bill-auger @ 2019-02-17  2:42 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

Julie -

that was all just a long winded re-statement of the "we should always
trust the upstream blindly" argument - i think the Great Wise Old Gnu
would conclude that is a very unwise general policy; and especially
unwise when that particular upstream is well-known for its code being
non-FSDG free

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 16:34               ` Alexandre Oliva
  2019-02-16 16:54                 ` Marius Bakke
@ 2019-02-17  3:38                 ` bill-auger
  1 sibling, 0 replies; 57+ messages in thread
From: bill-auger @ 2019-02-17  3:38 UTC (permalink / raw)
  To: guix-devel; +Cc: gnu-linux-libre

On Sat, 16 Feb 2019 14:34:38 -0200 Alexandre wrote:
> Maybe you have actually completed the steps that were missing in the
> auditing or Chromium to conclude it's Free, or at least some of the
> remaining tasks can be checked off.

that would be something wonderful, indeed

nothing would please me more at this time than to declare chromium as
FSDG-free, to finally put this controversy behind us in the past, and
never to speak of chromium nor qt5-webengine nor electron again - never
again to devote precious time liberating and re-packaging yet another
KDE program, for such a trivial reason as the frivolous presumption,
that the year 2019, demands their 20 year old system monitor GUI to
embed it's own web browser

im not making this up - the 'kde-plasma-desktop' became un-installable
on parabola this week, for exactly that reason

it should not be surprising that most have been satisfied thus far, to
throw this insidious chromiumm/webengine/electron thing under the bus
and move on; but it cant stay that way forever - at some point, a real
solution will be imperative, as this "javascript-on-the-desktop" trend
continues to infect the system

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17  2:42                     ` bill-auger
@ 2019-02-17  4:19                       ` Julie Marchant
  2019-02-17  7:43                         ` bill-auger
  0 siblings, 1 reply; 57+ messages in thread
From: Julie Marchant @ 2019-02-17  4:19 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions, bill-auger; +Cc: guix-devel

On 02/16/2019 09:42 PM, bill-auger wrote:
> Julie -
> 
> that was all just a long winded re-statement of the "we should always
> trust the upstream blindly" argument - i think the Great Wise Old Gnu
> would conclude that is a very unwise general policy; and especially
> unwise when that particular upstream is well-known for its code being
> non-FSDG free

Just to repeat the disclaimer, I'm not a lawyer and none of this is
legal advice.

I don't see why you're bringing "trust" into this. I've been trying to
argue that it has nothing to do with the issue. If the copyright holder
of a work says you're allowed to use it under X conditions, you are.
There's no "trust" there. You can't say that someone is allowed to do X
and then claim later that they weren't *really* allowed to do X.

I feel like I already gave this analogy at some point, but it's like
your "trust" that Walmart permits you to enter the store and shop. You
don't demand proof that you're allowed to shop at Walmart; it's implied
by the fact that the doors are unlocked and the building is enticing you
to go in. Similarly, Walmart can't just retroactively claim you weren't
really allowed in, even though you obviously were, and have you arrested
for trespassing. No, because of the conditions, if a Walmart wants to
keep you out, you have to be specifically told that you're not welcome.
They can't just call the police one day and have you arrested for
trespassing. Ergo, you don't need "trust".

The same sort of thing would apply to a licensing situation like this.
If the Chromium team says that Chromium is under the Modified BSD
License, then it *is* under the Modified BSD License, unless a
particular file says otherwise. The same applies to ungoogled-chromium
and its maintainer.

-- 
Julie Marchant
http://onpon4.github.io

Encrypt your emails with GnuPG:
https://emailselfdefense.fsf.org

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17  4:19                       ` Julie Marchant
@ 2019-02-17  7:43                         ` bill-auger
  2019-02-17 14:06                           ` Julie Marchant
  0 siblings, 1 reply; 57+ messages in thread
From: bill-auger @ 2019-02-17  7:43 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

the difference there is that chromium is not one piece of software
written by one person or even one modestly sized team - it is a
conglomeration of perhaps 100s of different projects written by perhaps
1000s of authors - for some files, it may not actually be known who the
author is, never mind which license they chose, or when - the word
"trust" comes into play there, because it is not clear that any one
single person on the chromium team can honestly account for everything
in the code-base, much less to authoritatively vouch for all of the
authors and various licensing

it is a more reasonable argument to make for projects with a much,
much fewer number of files and many, many fewer devs; but i think a
program this size is far beyond the benefit of reasonable doubt - and,
of course, on the other hand, if the project had many fewer files and
many fewer devs, then a comprehensive audit would not be as absurdly
difficult - so i think that is a moot point in this case

per your analogy, this is more like the owners of one building giving
you permission to go anywhere in the city, because they believe that
every other building in the city shares their trespassing policy -
though, they can not themselves, demonstrate that they have precise
knowledge of the exact number of buildings in the city, nor who their
owners are, nor their owners' trespassing policies

o/c someone could probably raise exactly the same doubts about mozilla -
luckily for us though, we are not aware of any, and so are not yet so
uncomfortably compelled to address them

most importantly, i personally dont care to argue for nor against
chromium - i just want all FSDG distros to agree on how it should be
treated, regardless of what that entails

if we can not all agree on how to interpret the FSDG, and apply it
uniformly to all distro, then the FSDG endorsement has no value and the
FSDG work-group serves no meaningful purpose to the world - we may as
well just go our own separate ways, and satisfy our own individual
fancies

that is what is truly at stake here - not this particular: "yet another
web browser"

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17  7:43                         ` bill-auger
@ 2019-02-17 14:06                           ` Julie Marchant
  2019-02-18  7:43                             ` bill-auger
  0 siblings, 1 reply; 57+ messages in thread
From: Julie Marchant @ 2019-02-17 14:06 UTC (permalink / raw)
  To: Workgroup for fully free GNU/Linux distributions, bill-auger; +Cc: guix-devel

On 02/17/2019 02:43 AM, bill-auger wrote:
> the difference there is that chromium is not one piece of software
> written by one person or even one modestly sized team - it is a
> conglomeration of perhaps 100s of different projects written by perhaps
> 1000s of authors - for some files, it may not actually be known who the
> author is, never mind which license they chose, or when - the word
> "trust" comes into play there, because it is not clear that any one
> single person on the chromium team can honestly account for everything
> in the code-base, much less to authoritatively vouch for all of the
> authors and various licensing

So... the same thing as Linux. And many stores, for that matter. On that
note...

> per your analogy, this is more like the owners of one building giving
> you permission to go anywhere in the city, because they believe that
> every other building in the city shares their trespassing policy -
> though, they can not themselves, demonstrate that they have precise
> knowledge of the exact number of buildings in the city, nor who their
> owners are, nor their owners' trespassing policies

You do know many stores don't own everything in the building, right?
Lots of machinery is owned by third parties such as vendors; coolers
holding drinks, for example, are typically owned and stocked by vendors
such as Coca-Cola and Pepsi. In the Walmart I work at, there's even a
separate business in the exact same building whose area is either owned
or leased by them (I don't know which). Plus, all stores have sections
where customers are not allowed to go (indicated by signs). So no, the
analogy is exactly the same. You see that a door says "Employees Only"
and don't enter; you don't go asking for proof that you can walk
throughout every inch of the store that you seem to have implicit
permission to walk through.

> o/c someone could probably raise exactly the same doubts about mozilla -
> luckily for us though, we are not aware of any, and so are not yet so
> uncomfortably compelled to address them

Are you saying, then, that we are specifically aware of proprietary
software in ungoogled-chromium? Have stated what that proprietary
software is?

After all, if you aren't aware of proprietary software in
ungoogled-chromium, this would seem to be special pleading. Am I wrong?

> most importantly, i personally dont care to argue for nor against
> chromium - i just want all FSDG distros to agree on how it should be
> treated, regardless of what that entails

Why? Are you opposed to individual distros making their own individual
decisions?

-- 
Julie Marchant
http://onpon4.github.io

Encrypt your emails with GnuPG:
https://emailselfdefense.fsf.org

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 14:18               ` Julie Marchant
                                   ` (2 preceding siblings ...)
  2019-02-17  1:37                 ` bill-auger
@ 2019-02-17 20:55                 ` Christopher Lemmer Webber
  3 siblings, 0 replies; 57+ messages in thread
From: Christopher Lemmer Webber @ 2019-02-17 20:55 UTC (permalink / raw)
  To: Julie Marchant
  Cc: guix-devel, Workgroup for fully free GNU/Linux distributions

Julie Marchant writes:

> I don't understand what's so complicated about this issue. In justice
> systems, we adopt an "innocent until proven guilty" system because you
> can't really prove innocence, only guilt.

I agree with Julie's point here.  The fear that "there might be
something nonfree in there"... well, that's true for our entire system.
We also have a similar issue with security vulnerabilities... there are
almost certainly security vulnerabilities in the sum total of our
packages.  Which packages though?  And what are they?  We don't know the
answer to either of those.  Our response is to take action if and when
problems are found.  That's the same approach we should take here.

 - Chris

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17  1:39                       ` bill-auger
@ 2019-02-17 22:33                         ` Ricardo Wurmus
  2019-02-18 12:05                           ` bill-auger
  0 siblings, 1 reply; 57+ messages in thread
From: Ricardo Wurmus @ 2019-02-17 22:33 UTC (permalink / raw)
  To: bill-auger; +Cc: guix-devel, gnu-linux-libre


bill-auger <bill-auger@peers.community> writes:

> if we do not FIRSTLY apologize to pureos for asking them to remove
> chromium and publicly endorse them to re-instate it, then endorsing it
> into guix would be hypocritical and shameful

I find this use of “we” confusing.

I don’t feel motivated to apologize to the people involved in PureOS
because I wasn’t around when they were pressured / convinced to drop
Chromium.  I don’t know if any of the regular Guix contributors have.

In day to day Guix activities, we don’t ask developers of other distros
that also happen to subscribe to the FSDG to reach consensus before
making project decisions.  You are suggesting that FSDG distros form a
community beyond the sense that they abide by the same guidelines.  I
don’t think that’s reflecting reality.  It’s another thing to discuss if
this should be so.

With regards to the Chromium upstream bug report about the license
script and the suggestion that upstream doesn’t know what license their
code has, I’m satisfied with this comment:

   https://bugs.chromium.org/p/chromium/issues/detail?id=28291#c31

The script appears to be not very successful in detecting valid license
declarations in third party code.  FWIW, in my opinion it would be
unreasonable to further delay Marius’s work from becoming part of Guix.
I see no violation of the FSDG here.

--
Ricardo

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17 14:06                           ` Julie Marchant
@ 2019-02-18  7:43                             ` bill-auger
  0 siblings, 0 replies; 57+ messages in thread
From: bill-auger @ 2019-02-18  7:43 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

On Sun, 17 Feb 2019 09:06:20 -0500 Julie wrote:
> So... the same thing as Linux.

yes, much the same situation as linux, but with the very important
difference, that we have people like the good folks at linux-libre who
are constantly watching linux for new undesirables entering it, and
those people are actively and routinely removing anything non-free - no
such thing is happening for web browsers - no one is even watching


On Sun, 17 Feb 2019 09:06:20 -0500 Julie wrote:
> Are you saying, then, that we are specifically aware of proprietary
> software in ungoogled-chromium? Have stated what that proprietary
> software is?

i am saying that i am not aware of anyone making any such accusations
of non-free software being in that browser - but we are painfully aware
of the accusations against chromium, and it is sitting "on the table";
so we are very unfortunately compelled to address it - thats all

i am not personally wedded to any preference on *how* we should address
it; but we should address it

if ever someone raises the same concern with firefox, then we will be
compelled to address that, when or if that unfortunate day comes;
because that is exactly what the FSDG is for: to determine which
software is fit for free distribution, and which is not


On Sun, 17 Feb 2019 09:06:20 -0500 Julie wrote:
> Why? Are you opposed to individual distros making their own individual
> decisions?

not all "decisions" - only the most crucial and obvious decisions like
this one, regarding exactly what is "free software" and what is not
"free software" - because if we can not agree on what is and is not
"free software", then the term "free software" is meaningless, and
hence a FSDG-free distro is a pointless distinction

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-17 22:33                         ` [GNU-linux-libre] " Ricardo Wurmus
@ 2019-02-18 12:05                           ` bill-auger
  2019-02-18 12:15                             ` Hartmut Goebel
  2019-02-18 13:44                             ` Tobias Geerinckx-Rice
  0 siblings, 2 replies; 57+ messages in thread
From: bill-auger @ 2019-02-18 12:05 UTC (permalink / raw)
  To: gnu-linux-libre; +Cc: guix-devel

On Sun, 17 Feb 2019 23:33:06 +0100 Ricardo wrote:
> I don’t feel motivated to apologize to the people involved in PureOS
> because I wasn’t around when they were pressured / convinced to drop
> Chromium.

no, but you could have been around - you also could have argued for
pureos on their side of the debate, and perhaps won favor for chromium
at that time; so that none of us would need to be discussing it today,
nor ever again - but unfortunately, it is true, you did not do that -
so here we are today, raking this ugly old thing out of the mud once
again


On Sun, 17 Feb 2019 23:33:06 +0100 Ricardo wrote:
> In day to day Guix activities, we don’t ask developers of other
> distros that also happen to subscribe to the FSDG to reach consensus
> before making project decisions.  

of course every distro should have complete autonomy, especially for
decisions that only pertain to that one distro - i am only considering
the most fundamental decisions that obviously affect all distros
equally, and reflect upon the integrity of the FSDG itself, such as
which software is FSDG-free and which are not (and clarifying why or
why not, and ideally, offering specific guidance for acceptably
liberating the most common or troublesome ones) - if we can not all
agree on that single most central concern to the FSDG, then what
exactly is the value of the FSDG anyways?


On Sun, 17 Feb 2019 23:33:06 +0100 Ricardo wrote:
> You are suggesting that FSDG
> distros form a community beyond the sense that they abide by the same
> guidelines.  I don’t think that’s reflecting reality.  It’s another
> thing to discuss if this should be so.

yes - awesome!! - that is exactly what i have been proposing and
working toward for a long time - in this case, not as just "another
thing to discuss"; but it is *the* sole reason that i raised this issue
with guix at this time (last september actually[1])

i have repeated it over and over again, that i couldnt care less about
the chromium program, specifically - i want to discuss only and exactly
this: enticing all FSDG distros to collaborate toward the achievement
of common goals and solutions to common problems; as to avoid both
redundant efforts and the presenting of conflicting philosophies to
users, regarding the nature and essence of "free software" - the
chromium program is not itself a fundamental problem, but one, albeit
notorious, example of a common problem that affects all FSDG distros,
and has been addressed by the group for the purpose of presenting a
uniform message regarding it's FSDG status

it would be a beautiful thing to have vigorous cross-distro
collaboration as a focal point of the FSDG itself, very much in the
collaborative spirit of GNU; and i think that most of the distros are
already on board with that idea as a worthwhile plan, and have always
been participating on the FSDG mailing list under that presumption -
last year's re-structuring of the incoming distros community evaluation
process was a concrete step in that direction

"reality" is only what we make of it - if you see the FSDG as nothing
more than a trophy or badge that you earned once upon a time, a
milestone that need not be any concerned ever more after, then that
is the reality you will have - the FSF does not want to mandate that
anyone participate in the on-going group discussions; but it is a very
good idea to show that the FSDG distros behave as a community of
siblings by, at the very least, presenting a uniform stance on shared
freedom issues


On Sun, 17 Feb 2019 23:33:06 +0100 Ricardo wrote:
> I see no violation of the FSDG here.

that is not news, Ricardo - no one sees any obvious licensing violation
of the FSDG; not today, nor a year ago, nor five years ago - if there
were any known, they could have (and probably would have) been
addressed long ago, and maybe we would not be discussing this now - the
only clear FSDG problem today is the new one that guix is making for all
other distros that are trying to be compliant with the FSDG as it is
written, by intentionally doing something that is explicitly against
the written recommendation - the "as it is written" part is perhaps
dubious; but it is the keystone of a long-standing FSDG anomaly, and
guix is in a very good position to help resolve that once and for all,
for the benefit of all

whether anyone likes it or not, adding chromium into any FSDG distro
today, is in direct conflict with that pesky: "what is written" - the
solution is almost certainly, that it needs to be re-written; but there
is not yet anything to over-write it with - "i see no problem" is
clearly not sufficient - we all know it has FSDG problems; and the
current wording will remain until someone who cares about chromium
offers a convincing liberation procedure to replace it as the FSDG
recommendation

we are asking for your help with this, for the benefit of all FSDG
distros and their users, present and future, because it is only guix
that claims to have any new information about chromium, and guix is
probably the only distro that wants this program to be considered as
FSDG-free badly enough to do anything about it; but all we have seen so
far, are sentiments plainly discounting the validity of the request
like: "i dont see any problem", "i dont feel compelled to address
this", and "sorry, i dont remember how i did it" - not only is that
indifference leaving the others to remain in this quagmire that we have
been in for years; but pushing this through while knowing that this
conflict exists, is making it more uncomfortable than it needs to be
going forward, especially if no one from guix plans to help resolve the
conflict in a timely manor

whether or not guix considers itself to be part of the larger
FSDG community, you should realize that we do exist as such, and that
this particular action by guix is forcing a wedge into a small, but
visible crack in the foundation of FSDG itself; which has negative
repercussion on those who would be your allies, and creates a strong
point of contention for any new distro that comes along


[1]: https://lists.gnu.org/archive/html/guix-devel/2018-09/msg00264.html

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-18 12:05                           ` bill-auger
@ 2019-02-18 12:15                             ` Hartmut Goebel
  2019-02-18 13:44                             ` Tobias Geerinckx-Rice
  1 sibling, 0 replies; 57+ messages in thread
From: Hartmut Goebel @ 2019-02-18 12:15 UTC (permalink / raw)
  To: guix-devel

Am 18.02.19 um 13:05 schrieb bill-auger:
> no, but you could have been around -


InvalidArgementError

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-18 12:05                           ` bill-auger
  2019-02-18 12:15                             ` Hartmut Goebel
@ 2019-02-18 13:44                             ` Tobias Geerinckx-Rice
  2019-02-18 19:22                               ` Simon Nielsen
  1 sibling, 1 reply; 57+ messages in thread
From: Tobias Geerinckx-Rice @ 2019-02-18 13:44 UTC (permalink / raw)
  To: guix-devel; +Cc: gnu-linux-libre

bill-auger wrote:
> On Sun, 17 Feb 2019 23:33:06 +0100 Ricardo wrote:
>> I don’t feel motivated to apologize to the people involved in 
>> PureOS
>> because I wasn’t around when they were pressured / convinced to 
>> drop
>> Chromium.
>
> no, but you could have been around - you also could have argued 
> for
> pureos on their side of the debate, and perhaps won favor for 
> chromium
> at that time; so that none of us would need to be discussing it 
> today,
> nor ever again - but unfortunately, it is true, you did not do 
> that -
> so here we are today, raking this ugly old thing out of the mud 
> once
> again

If this is the quality of argument that ‘won’ over PureOS, it's 
blaming Guix/Ricardo for not being around to stop others from 
being bullied.

Kind regards,

T G-R

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 11:16             ` Gábor Boskovits
  2019-02-16 12:55               ` ng0
@ 2019-02-18 13:47               ` Denis 'GNUtoo' Carikli
  1 sibling, 0 replies; 57+ messages in thread
From: Denis 'GNUtoo' Carikli @ 2019-02-18 13:47 UTC (permalink / raw)
  To: Gábor Boskovits
  Cc: Guix-devel, Workgroup for fully free GNU/Linux distributions

[-- Attachment #1: Type: text/plain, Size: 584 bytes --]

On Sat, 16 Feb 2019 12:16:41 +0100
Gábor Boskovits <boskovits@gmail.com> wrote:

> It seems to me, that there is a whole bunch of people interested in
> this, but due to lack of resources or for some other reasons nothing
> is really happening. Do you know any we we could help getting this
> resolved?
This is a very good point.

I also wonder if at the end, working to fix the problem by reviewing
chromium source code more carefully would take less resources than
discussing endlessly on how to deal with the fact that the source code
hasn't been reviewed.

Denis.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-18 13:44                             ` Tobias Geerinckx-Rice
@ 2019-02-18 19:22                               ` Simon Nielsen
  2019-02-19 20:45                                 ` [GNU-linux-libre] " bill-auger
  0 siblings, 1 reply; 57+ messages in thread
From: Simon Nielsen @ 2019-02-18 19:22 UTC (permalink / raw)
  To: Tobias Geerinckx-Rice, guix-devel@gnu.org; +Cc: gnu-linux-libre@nongnu.org

18.02.2019, 14:44, "Tobias Geerinckx-Rice" <somebody@not-sent-or-endorsed-by.tobias.gr>:
> If this is the quality of argument that ‘won’ over PureOS, it's
> blaming Guix/Ricardo for not being around to stop others from
> being bullied.
>
> Kind regards,
>
> T G-R

Hi Tobias,

I've been reading this conversation from the outside but noticed it seems to be shifting to a meta
rather than about the state of chromium itself so it would be nice if it went back on topic.
‌
Seeing as the issue here relates to being uncertain shouldn't upstream confirm which parts run
under what license in more detail? As I can tell so far this hasn't been done (unless I've missed
something) thus the current situation.

So the choice here is really about following the FSDG for now until it's revised or going against it
causing a split in the community around it. Guix would be in the right but depending on the result
there's a chance for a negative return (or a positive one). Are most here sure which direction it
will go? From just reading the snippets about PureOS they seemed to have gotten quite a bit of
flack until it was removed, won't the same happen to Guix?

I've enjoyed using Guix for a bit over a year now and will continue regardless of the outcome.

I apologize if this email is in conflict with the standard format as I usually don't engage in responding
to mailing lists so my interpretation of the desired style might not be as accurate as of yet.

Thank you

Simon Nielsen

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [bug#28004] [PATCH v2] gnu: Add ungoogled-chromium.
  2019-02-12 15:58   ` [PATCH v2] " Marius Bakke
@ 2019-02-18 22:43     ` Marius Bakke
  0 siblings, 0 replies; 57+ messages in thread
From: Marius Bakke @ 2019-02-18 22:43 UTC (permalink / raw)
  To: guix-devel; +Cc: 28004-done

[-- Attachment #1: Type: text/plain, Size: 435 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> Changes in this version:
>
> * New upstream release.
> * No longer using a fork of Ungoogled-Chromium.
> * The special HarfBuzz and libvpx variants have been removed due to
>   obsolesence.

I've pushed this patch now, with minor cosmetic improvements:

<https://git.savannah.gnu.org/cgit/guix.git/commit/?id=f1e9de4d3aefae420db633a56ba9cd93f7750df3>

Thanks to everyone who participated!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [PATCH] gnu: Add ungoogled-chromium.
  2019-02-16 18:56             ` Giovanni Biscuolo
@ 2019-02-19 16:28               ` Giovanni Biscuolo
  0 siblings, 0 replies; 57+ messages in thread
From: Giovanni Biscuolo @ 2019-02-19 16:28 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1249 bytes --]

Hi!

Giovanni Biscuolo <g@xelera.eu> writes:

[...]

> first and foremost, IMHO guix-devel is not the place to discuss GNU FSDG
> criteria; I'm going to subscribe gnu-linux-libre@nongnu.org to send
> my comments - and I _have_ some - on the FSDG compliance process

then I decided to "escalate" this issue since I found the "Software
blacklist" mandatory requiment is a mistake

if anybody is interested in the followup, this is what I asked to
licensing@fsf.org:
http://lists.nongnu.org/archive/html/gnu-linux-libre/2019-02/msg00064.html

[...]

>   "ungoogled-chromium cannot be included in Guix System Distribution since
>   it is listed - as 'chromium-browser' - on the page
>   <List_of_software_that_does_not_respect_the_Free_System_Distribution_Guidelines#chromium-browser>
>   that is an integral part of the GNU FSDG Guidelines as extended by the
>   FSDG_Checklist via
>   https://libreplanet.org/wiki/Incoming_distros#Endorsement_Process"

indeed I'm very happy Guix maintainers decided to push

kudos Marius Bakke! it is very likely you liberated chromium once and
for all! and if not... we can **build** it out :-D

Happy hacking
Giovanni

[...]

-- 
Giovanni Biscuolo

Xelera IT Infrastructures

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 57+ messages in thread

* Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.
  2019-02-18 19:22                               ` Simon Nielsen
@ 2019-02-19 20:45                                 ` bill-auger
  0 siblings, 0 replies; 57+ messages in thread
From: bill-auger @ 2019-02-19 20:45 UTC (permalink / raw)
  To: guix-devel

On Mon, 18 Feb 2019 20:22:20 +0100 Simon wrote:
> seems to be shifting to a meta rather than about the state of
> chromium itself

simon - i would like to explain that the reason for that confusion, is
because this thread got cross-posted on multiple mailing lists

the chromium browser is the topic of the thread on the guix mailing
list - but that "meta" divergence as you described it, is entirely the
purpose of the FSDG workgroup - the central concern on that list
today, is not chromium itself, but is enticing guix to discuss what has
been done to liberate chromium with the group; so that the recipe can
be peer reviewed and possibly be recommended to other distros

the folks reading the FSDG list would not describe that as a
divergence, but as the latest attempt to make progress on a long
standing problem that affects all FSDG distros equally

^ permalink raw reply	[flat|nested] 57+ messages in thread

end of thread, other threads:[~2019-02-19 20:46 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <87y3qvb15k.fsf@fastmail.com>
2019-02-02 19:20 ` [PATCH] gnu: Add ungoogled-chromium Marius Bakke
2019-02-03 18:16   ` Joshua Branson
2019-02-04  4:52     ` bill-auger
2019-02-04  5:52       ` brettg
2019-02-04  7:46       ` Ineiev
2019-02-04 10:56         ` bill-auger
2019-02-04 14:43           ` Jean Louis
2019-02-04 12:26       ` [GNU-linux-libre] " Julie Marchant
2019-02-04 15:03         ` bill-auger
2019-02-04 22:34       ` Ludovic Courtès
2019-02-06 21:04         ` [GNU-linux-libre] " Marius Bakke
2019-02-07 23:52         ` Christopher Lemmer Webber
2019-02-07 23:59           ` Julie Marchant
2019-02-16  8:00           ` bill-auger
2019-02-16 10:25             ` Brett Gilio
2019-02-16 14:18               ` Julie Marchant
2019-02-16 15:37                 ` [GNU-linux-libre] " Adam Van Ymeren
2019-02-16 19:47                 ` Adonay Felipe Nogueira
2019-02-16 20:01                   ` Brett Gilio
2019-02-16 20:06                     ` Brett Gilio
2019-02-17  1:39                       ` bill-auger
2019-02-17 22:33                         ` [GNU-linux-libre] " Ricardo Wurmus
2019-02-18 12:05                           ` bill-auger
2019-02-18 12:15                             ` Hartmut Goebel
2019-02-18 13:44                             ` Tobias Geerinckx-Rice
2019-02-18 19:22                               ` Simon Nielsen
2019-02-19 20:45                                 ` [GNU-linux-libre] " bill-auger
2019-02-16 20:07                   ` Alex Griffin
2019-02-17  1:49                     ` bill-auger
2019-02-17  1:37                 ` bill-auger
2019-02-17  2:30                   ` Julie Marchant
2019-02-17  2:42                     ` bill-auger
2019-02-17  4:19                       ` Julie Marchant
2019-02-17  7:43                         ` bill-auger
2019-02-17 14:06                           ` Julie Marchant
2019-02-18  7:43                             ` bill-auger
2019-02-17 20:55                 ` Christopher Lemmer Webber
2019-02-16 11:16             ` Gábor Boskovits
2019-02-16 12:55               ` ng0
2019-02-16 13:10                 ` Gábor Boskovits
2019-02-18 13:47               ` Denis 'GNUtoo' Carikli
2019-02-16 15:10             ` znavko
2019-02-16 15:50             ` Marius Bakke
2019-02-16 16:20               ` [GNU-linux-libre] " Amin Bandali
2019-02-16 16:33                 ` Marius Bakke
2019-02-16 19:27                   ` Amin Bandali
2019-02-17  2:20                   ` bill-auger
2019-02-16 16:34               ` Alexandre Oliva
2019-02-16 16:54                 ` Marius Bakke
2019-02-17  3:38                 ` bill-auger
2019-02-16 18:56             ` Giovanni Biscuolo
2019-02-19 16:28               ` Giovanni Biscuolo
2019-02-09 14:04       ` Adonay Felipe Nogueira
2019-02-03 20:21   ` Amin Bandali
2019-02-05  5:22   ` [bug#28004] " swedebugia
2019-02-12 15:58   ` [PATCH v2] " Marius Bakke
2019-02-18 22:43     ` [bug#28004] " Marius Bakke

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).