Subject: bug#43796: Privacy policy

From: "pelzflorian (Florian Pelz)" <[email-masked]>
Date: Sun, 4 Oct 2020 17:34:19 +0200

IANAL but I think Guix needs a privacy policy for both its website and
the Guix software in general.

Attached is a patch for the website that also documents data use by
Guix and Guix System.  Maybe I’ve overdone some parts and probably
something important is missing.

In particular, the GDPR requires IP addresses to be deleted from logs
after a reasonable time.  I think but am not sure the current process
for nginx is to delete only when the log files become too big.  A more
suitable policy must be implemented and the users must be told about
it, I think.  See <https://gdpr-info.eu/art-13-gdpr/>.

In general I think it is better to have an incomplete policy than to
have none.

Comments?

Regards,
Florian
>From 080df2de1f1f99fce3d7dffcce57f723fd266e17 Mon Sep 17 00:00:00 2001
From: Florian Pelz <[email-masked]>
Date: Sun, 4 Oct 2020 17:10:13 +0200
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Subject: [PATCH] website: Add privacy policy.

* website/apps/base/templates/privacy.scm: New file with
web page on privacy.
* website/apps/base/templates/components.scm (navbar): Add it.
* website/po/POTFILES: Add it.
* website/apps/base/builder.scm (privacy-builder): New procedure.
(builder): Add it.
---
 website/apps/base/builder.scm              |  23 +++++
 website/apps/base/templates/components.scm |  18 +++-
 website/apps/base/templates/privacy.scm    | 115 +++++++++++++++++++++
 website/po/POTFILES                        |   1 +
 4 files changed, 156 insertions(+), 1 deletion(-)
 create mode 100644 website/apps/base/templates/privacy.scm

diff --git a/website/apps/base/builder.scm b/website/apps/base/builder.scm
index 4882dc5..2acf4dc 100644
--- a/website/apps/base/builder.scm
+++ b/website/apps/base/builder.scm
@@ -1,6 +1,22 @@
 ;;; GNU Guix web site
+;;; Copyright © 2020 Florian Pelz <[email-masked]>
 ;;; Initially written by sirgazil who waives all
 ;;; copyright interest on this file.
+;;;
+;;; This file is part of the GNU Guix web site.
+;;;
+;;; The GNU Guix web site is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; The GNU Guix web site 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 Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with the GNU Guix web site.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (apps base builder)
   #:use-module (apps base data)
@@ -13,6 +29,7 @@
   #:use-module (apps base templates help)
   #:use-module (apps base templates home)
   #:use-module (apps base templates menu)
+  #:use-module (apps base templates privacy)
   #:use-module (apps base templates security)
   #:use-module (apps base types)
   #:use-module (apps blog utils)
@@ -54,6 +71,7 @@
 	 (contact-builder)
 	 (irc-builder)
 	 (contribute-builder)
+         (privacy-builder)
 	 (security-builder)
 	 (graphics-builder))))
 
@@ -115,6 +133,11 @@
   (make-page "menu/index.html" (menu-t) sxml->html))

+(define (privacy-builder)
+  "Return a Haunt page representing the Privacy page of the website."
+  (make-page "privacy/index.html" (privacy-t) sxml->html))
+
+
 (define (security-builder)
   "Return a Haunt page representing the Security page of the website."
   (make-page "security/index.html" (security-t) sxml->html))
diff --git a/website/apps/base/templates/components.scm b/website/apps/base/templates/components.scm
index 44d410e..1bf11e9 100644
--- a/website/apps/base/templates/components.scm
+++ b/website/apps/base/templates/components.scm
@@ -1,7 +1,22 @@
 ;;; GNU Guix web site
-;;; Copyright © 2019 Florian Pelz <[email-masked]>
+;;; Copyright © 2019, 2020 Florian Pelz <[email-masked]>
 ;;; Initially written by sirgazil who waives all
 ;;; copyright interest on this file.
+;;;
+;;; This file is part of the GNU Guix web site.
+;;;
+;;; The GNU Guix web site is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; The GNU Guix web site 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 Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with the GNU Guix web site.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; This module defines HTML parts like header, breadcrumbs, footer,
 ;;; buttons, etc., which are used website-wide.
@@ -425,6 +440,7 @@ manual.
          (C_ "website menu" (menu-item #:label "Contact" #:active-item active-item #:url (guix-url "contact/")))
          (C_ "website menu" (menu-item #:label "Contribute" #:active-item active-item #:url (guix-url "contribute/")))
          (C_ "website menu" (menu-item #:label "Security" #:active-item active-item #:url (guix-url "security/")))
+         (C_ "website menu" (menu-item #:label "Privacy" #:active-item active-item #:url (guix-url "privacy/")))
          (C_ "website menu" (menu-item #:label "Graphics" #:active-item active-item #:url (guix-url "graphics/")))))
       ,(horizontal-skip)
       ;; Languages dropdown.
diff --git a/website/apps/base/templates/privacy.scm b/website/apps/base/templates/privacy.scm
new file mode 100644
index 0000000..1511fe0
--- /dev/null
+++ b/website/apps/base/templates/privacy.scm
@@ -0,0 +1,115 @@
+;;; GNU Guix web site
+;;; Copyright © 2020 Florian Pelz <[email-masked]>
+;;;
+;;; This file is part of the GNU Guix web site.
+;;;
+;;; The GNU Guix web site is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; The GNU Guix web site 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 Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with the GNU Guix web site.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (apps base templates privacy)
+  #:use-module (apps base templates components)
+  #:use-module (apps base templates theme)
+  #:use-module (apps base types)
+  #:use-module (apps base utils)
+  #:use-module (apps i18n)
+  #:export (privacy-t))
+
+(define (privacy-t)
+  "Return the Privacy page in SHTML."
+  (theme
+   #:title (C_ "webpage title" '("Privacy"))
+   #:description
+   (G_ "Information on how your personal data is processed while using
+GNU Guix’ services.")
+   #:keywords
+   (string-split ;TRANSLATORS: |-separated list of webpage keywords
+      (G_ "GNU|Linux|Unix|Free software|Libre software|Operating \
+system|GNU Hurd|GNU Guix package manager|Privacy|Data Protection") #\|)
+   #:active-menu-item (C_ "website menu" "About")
+   #:css (list
+          (guix-url "static/base/css/page.css"))
+   #:crumbs (list (crumb (C_ "website menu" "Privacy") "./"))
+   #:content
+   `(main
+     (section
+      (@ (class "page centered-block limit-width"))
+      ,(G_ `(h2 "How we use your personal information"))
+      ,(G_
+        `(p
+          "Guix is made by people and organizations without a commercial
+           interest in your personal information.  Nonetheless, some
+           services for Guix necessarily process your data to provide the
+           functionality you requested.  We keep this to a minimum."))
+
+      ,(C_ "privacy policy section" `(h3 "Guix and Guix System"))
+      ,(G_
+        `(p
+          "During your use of Guix’ software in its default configuration,
+           your IP address may be revealed to the network services you use.
+           Your IP address could be used to identify who uses the service and
+           from which internet connection it is used.  These services include "
+          ,(G_ (manual-href "substitute servers"
+                            (G_ "en")
+                            (G_ "Substitutes.html")))
+          " hosted by "
+          ,(G_ `(a (@ (href ,(guix-url "donate/"))) "our donors"))
+          " for the Guix project but also "
+          ,(G_ (manual-href "third-party services"
+                            (G_ "en")
+                            (G_ "Networking-Services.html")))
+          " such as network, DNS and Network Time Protocol service providers.
+           This is necessary to provide you with a usable and secure system
+           environment.  It shall be assumed that these services log your use 
+           of their service along with your IP address to make it easier to
+           guard against malicious use.  The "
+          ,(G_ `(a (@ (href ,(guix-url "manual/"))) "manual"))
+          " describes how to change the configuration of Guix to disable such
+           services or how to send data over the network via an HTTP(S) proxy,
+           Tor or other means that maybe expose less of your personal data."))
+      ,(G_
+        `(p
+          "When you tell Guix to install software for you, Guix will attempt
+           to download said software from the respective upstream provider and
+           various download mirrors, revealing your IP address.  Your use of
+           third-party software installed via Guix is of course your
+           responsibility."))
+      ,(C_ "privacy policy section" `(h3 "Website"))
+      ,(G_
+        `(p
+          "When you access Guix’ website, your request will be logged along
+           with your IP address and the requested URL.  This enables the
+           admins to more easily respond to excess usage or security attacks."))
+      ,(G_
+        `(p
+          "For proper presentation, Guix loads videos and scripts from "
+          ,(G_ `(a (@ (href "https://audio-video.gnu.org/"))
+                   "audio-video.gnu.org")) " and "
+          ,(G_ `(a (@ (href "https://kiwiirc.com/"))
+                   "kiwiirc.com"))
+          ".  Please see their websites for explanations how they use your
+           data.  The website also contains hyperlinks to third-party sites.
+           When you follow them, it is likely that your web browser is
+           configured to report the Guix website URL you were previously
+           visiting to the third-party site in a "
+          ,(G_ `(a (@ (href "https://en.wikipedia.org/wiki/HTTP_referer"))
+                   "Referer header"))
+          "."))
+      ,(C_ "privacy policy section"
+           `(h3 "Mailing lists, IRC and other means of communication"))
+      ,(G_
+        `(p
+          "You can "
+          ,(G_ `(a (@ (href ,(guix-url "contact/")))
+                   "contact the Guix community"))
+          " via various third-party means.  Their respective privacy policy
+           applies."))))))
diff --git a/website/po/POTFILES b/website/po/POTFILES
index 6f9f349..a97c6e5 100644
--- a/website/po/POTFILES
+++ b/website/po/POTFILES
@@ -13,6 +13,7 @@ apps/base/templates/donate.scm
 apps/base/templates/graphics.scm
 apps/base/templates/irc.scm
 apps/base/templates/menu.scm
+apps/base/templates/privacy.scm
 apps/base/templates/security.scm
 apps/blog/templates/components.scm
 apps/blog/templates/feed.scm
-- 
2.28.0