all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#48637] [PATCH] website: Add publications page
@ 2021-05-24 23:35 Luis Felipe via Guix-patches via
  2021-05-25 13:44 ` pelzflorian (Florian Pelz)
  2021-05-28 11:06 ` Ludovic Courtès
  0 siblings, 2 replies; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-24 23:35 UTC (permalink / raw)
  To: 48637

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

Hi,

This patch adds a new Publications page to the website.


---
Luis Felipe López Acevedo
https://luis-felipe.gitlab.io/

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-website-Add-publications-page.patch --]
[-- Type: text/x-patch; name=0001-website-Add-publications-page.patch, Size: 14740 bytes --]

From eb36bae9f13b7825b22303e1efe6fd37c563ccdd Mon Sep 17 00:00:00 2001
From: Luis Felipe <luis.felipe.la@protonmail.com>
Date: Mon, 24 May 2021 17:54:17 -0500
Subject: [PATCH] website: Add publications page.

This page lists different kinds of written publications that talk about
Guix.

* website/apps/base/templates/components.scm (navbar): Link to the new
page from the Media menu.
* website/apps/media/builder.scm (publication-list-builder): New helper
builder.
(builder): Use the new helper builder.
* website/apps/media/data.scm (publications): New data set.
* website/apps/media/templates/components.scm (publication->shtml): New
component.
* website/apps/media/templates/publication-list.scm: New template.
* website/apps/media/types.scm (<publication>): New record type.
* website/static/base/img/link-arrow-shaper.svg: New image.
* website/static/media/css/publications.css: New style sheet.
---
 website/apps/base/templates/components.scm    | 14 +++-
 website/apps/media/builder.scm                | 19 ++++--
 website/apps/media/data.scm                   | 25 +++++++
 website/apps/media/templates/components.scm   | 25 ++++++-
 .../apps/media/templates/publication-list.scm | 46 +++++++++++++
 website/apps/media/types.scm                  | 52 ++++++++++++++-
 website/static/base/img/link-arrow-shaper.svg | 66 +++++++++++++++++++
 website/static/media/css/publications.css     | 35 ++++++++++
 8 files changed, 274 insertions(+), 8 deletions(-)
 create mode 100644 website/apps/media/templates/publication-list.scm
 create mode 100644 website/static/base/img/link-arrow-shaper.svg
 create mode 100644 website/static/media/css/publications.css

diff --git a/website/apps/base/templates/components.scm b/website/apps/base/templates/components.scm
index b615f98..e2a74d3 100644
--- a/website/apps/base/templates/components.scm
+++ b/website/apps/base/templates/components.scm
@@ -461,8 +461,18 @@ manual.
       ,(menu-dropdown #:label (C_ "website menu" "Media") #:active-item active-item
         #:items
         (list
-         (C_ "website menu" (menu-item #:label "Videos" #:active-item active-item #:url (guix-url "videos/")))
-         (C_ "website menu" (menu-item #:label "Screenshots" #:active-item active-item #:url (guix-url "screenshots/")))))
+         (C_ "website menu"
+             (menu-item #:label "Videos"
+                        #:active-item active-item
+                        #:url (guix-url "videos/")))
+         (C_ "website menu"
+             (menu-item #:label "Screenshots"
+                        #:active-item active-item
+                        #:url (guix-url "screenshots/")))
+         (C_ "website menu"
+             (menu-item #:label "Publications"
+                        #:active-item active-item
+                        #:url (guix-url "publications/")))))
 
       ,(C_ "website menu" (menu-item #:label "Donate" #:active-item active-item #:url (guix-url "donate/")))
 
diff --git a/website/apps/media/builder.scm b/website/apps/media/builder.scm
index 53378e6..c270db5 100644
--- a/website/apps/media/builder.scm
+++ b/website/apps/media/builder.scm
@@ -6,11 +6,13 @@
 (define-module (apps media builder)
   #:use-module (apps aux system)
   #:use-module (apps media data)
+  #:use-module (apps media templates publication-list)
   #:use-module (apps media templates screenshot)
   #:use-module (apps media templates screenshots-overview)
   #:use-module (apps media templates video)
   #:use-module (apps media templates video-list)
   #:use-module (apps media types)
+  #:use-module (haunt artifact)
   #:use-module (haunt html)
   #:use-module (haunt page)
   #:use-module (haunt utils)
@@ -37,11 +39,13 @@
      A list of post objects that represent articles from the blog. See
      Haunt <post> objects for more information.
 
-   RETURN (list of <page>)
-     A list of page objects that represent the web resources of the
-     application. See Haunt <page> objects for more information."
+   RETURN (list of <artifact> and <page>)
+     A list of objects that represent the web resources of the
+     application. See Haunt <artifact> and <page> objects for more
+     information."
   (flatten
-   (list (screenshots-overview-builder)
+   (list (publication-list-builder)
+         (screenshots-overview-builder)
          (screenshots-builder)
          (videos-builder)
          (video-list-builder))))
@@ -51,6 +55,13 @@
 ;;; Helper builders.
 ;;;
 
+(define (publication-list-builder)
+  "Return a Haunt artifact representing the publications page."
+  (serialized-artifact (url-path-join "publications" "index.html")
+                       (publication-list-t publications)
+                       sxml->html))
+
+
 (define (screenshots-builder)
   "Return a list of Haunt pages representing screenshot pages."
   (map
diff --git a/website/apps/media/data.scm b/website/apps/media/data.scm
index 9b1e2c5..8f4f2b0 100644
--- a/website/apps/media/data.scm
+++ b/website/apps/media/data.scm
@@ -9,6 +9,7 @@
   #:use-module (apps media types)
   #:use-module (srfi srfi-19)
   #:export (playlists
+            publications
             screenshots))
 
 
@@ -98,6 +99,30 @@ distribution."))
      #:last-updated (string->date "2020-03-28T16:00:00" "~Y-~m-~dT~H:~M:~S")))))
 
 
+(define publications
+  (list
+   (publication
+    #:title "Functional Package Management with Guix"
+    #:url "https://arxiv.org/abs/1305.4584"
+    #:authors (list "Ludovic Courtès")
+    #:date (string->date "2013-05-20" "~Y-~m-~d"))
+   (publication
+    #:title "Reproducible and User-Controlled Software Environments in HPC with Guix"
+    #:url "https://hal.inria.fr/hal-01161771/en"
+    #:authors (list "Ludovic Courtès" "Ricardo Wurmus")
+    #:date (string->date "2015-07-25" "~Y-~m-~d"))
+   (publication
+    #:title "Code Staging in GNU Guix"
+    #:url "https://arxiv.org/abs/1709.00833"
+    #:authors (list "Ludovic Courtès")
+    #:date (string->date "2017-09-04" "~Y-~m-~d"))
+   (publication
+    #:title "Guix: A most advanced operating system"
+    #:url "https://ambrevar.xyz/guix-advance/index.html"
+    #:authors (list "Pierre Neidhardt")
+    #:date (string->date "2019-01-14" "~Y-~m-~d"))))
+
+
 (define screenshots
   (list
    (screenshot
diff --git a/website/apps/media/templates/components.scm b/website/apps/media/templates/components.scm
index d928d23..e72b380 100644
--- a/website/apps/media/templates/components.scm
+++ b/website/apps/media/templates/components.scm
@@ -14,7 +14,8 @@
   #:use-module (apps media types)
   #:use-module (apps media utils)
   #:use-module (srfi srfi-19)
-  #:export (screenshot->shtml
+  #:export (publication->shtml
+            screenshot->shtml
             screenshots-box
             video->shtml
             video-content
@@ -25,6 +26,28 @@
 ;;; Components.
 ;;;
 
+(define (publication->shtml publication)
+  "Return an SHTML representation of the given publication object.
+
+   PUBLICATION (<publication>)
+     A publication object as defined in (apps media types)."
+  `(a
+    (@ (class "publication-preview")
+       (href ,(publication-url publication)))
+
+    (h3
+     (@ (lang ,(publication-language publication))
+        (class "publication-title"))
+     ,(publication-title publication))
+
+    (p
+     (@ (class "publication-info"))
+     ,(G_ `("Published "
+            ,(date->string (publication-date publication) "~b ~d, ~Y")
+            " by "
+            ,(string-join (publication-authors publication) ", "))))))
+
+
 (define (screenshot->shtml shot)
   "Return an SHTML representation of the given screenshot object.
 
diff --git a/website/apps/media/templates/publication-list.scm b/website/apps/media/templates/publication-list.scm
new file mode 100644
index 0000000..44847c7
--- /dev/null
+++ b/website/apps/media/templates/publication-list.scm
@@ -0,0 +1,46 @@
+;;; GNU Guix web site
+;;; Public domain 2021 Luis Felipe López Acevedo
+
+(define-module (apps media templates publication-list)
+  #:use-module (apps base templates theme)
+  #:use-module (apps base types)
+  #:use-module (apps base utils)
+  #:use-module (apps i18n)
+  #:use-module (apps media templates components)
+  #:export (publication-list-t))
+
+
+(define (publication-list-t publications)
+  "Return the Publication list page in SHTML.
+
+   PUBLICATIONS (list of <publication>)
+     See the (apps media types) module for information on the
+     <publication> type."
+  (theme
+   #:title (C_ "webpage title" '("Publications"))
+   #:description
+   (G_ "A list of written publications about GNU Guix.")
+   #:keywords
+   ;; TRANSLATORS: |-separated list of webpage keywords.
+   (string-split (G_ "Publications|Papers") #\|)
+   #:active-menu-item (C_ "website menu" "Publications")
+   #:css (list
+	  (guix-url "static/base/css/page.css")
+	  (guix-url "static/media/css/publications.css"))
+   #:crumbs (list (crumb (C_ "website menu" "Publications") "./"))
+   #:content
+   `(main
+     (section
+      (@ (class "page"))
+      ,(G_ `(h2 "Publications"))
+
+      ,(G_
+        `(p
+          (@ (class "centered-block limit-width"))
+
+          "The following is a list of written materials that talk about GNU Guix. It is a diverse collection of writings, from blog posts to grey literature to academic and research papers."))
+
+      (div
+       (@ (class "publication-list centered-block limit-width"))
+
+       ,@(map publication->shtml publications))))))
diff --git a/website/apps/media/types.scm b/website/apps/media/types.scm
index 50c0989..9054141 100644
--- a/website/apps/media/types.scm
+++ b/website/apps/media/types.scm
@@ -5,7 +5,14 @@
 
 (define-module (apps media types)
   #:use-module (srfi srfi-9)
-  #:export (screenshot
+  #:export (publication
+            publication?
+            publication-authors
+            publication-date
+            publication-language
+            publication-title
+            publication-url
+            screenshot
             screenshot?
             screenshot-caption
             screenshot-image
@@ -32,6 +39,49 @@
 ;;; Data types.
 ;;;
 
+;;; Publication (record type)
+;;; -------------------------
+;;;
+;;; A publication object represents a written material that talks about
+;;; GNU Guix.
+;;;
+;;; Objects of this type can be created with the "publication" procedure
+;;; (see Helper procedures below).
+;;;
+;;; Fields:
+;;;
+;;; title (string)
+;;;   The title of the publication.
+;;;
+;;; url (string)
+;;;   A URL to the publication.
+;;;
+;;; authors (list of string)
+;;;   The names of the authors.
+;;;
+;;; date (date)
+;;;   The date of publication.
+;;;
+;;; language (string)
+;;;   IETF language tag corresponding to the language in which the
+;;;   publication is written.
+;;;
+(define-record-type <publication>
+  (make-publication title url authors date language)
+  publication?
+  (title publication-title)
+  (url publication-url)
+  (authors publication-authors)
+  (date publication-date)
+  (language publication-language))
+
+;;; Helper procedures.
+
+(define* (publication #:key title url authors date (language "en"))
+  "Return a <publication> object with the given attributes."
+  (make-publication title url authors date language))
+
+
 ;;; Screenshot (record type)
 ;;; ------------------------
 ;;;
diff --git a/website/static/base/img/link-arrow-shaper.svg b/website/static/base/img/link-arrow-shaper.svg
new file mode 100644
index 0000000..834fd84
--- /dev/null
+++ b/website/static/base/img/link-arrow-shaper.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="50"
+   height="100"
+   id="RSSicon"
+   viewBox="0 0 100 200"
+   inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+   sodipodi:docname="link-arrow-shaper.svg"
+   inkscape:export-filename="feed-bg-whitepng.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <metadata
+     id="metadata34">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     id="namedview32"
+     showgrid="false"
+     inkscape:showpageshadow="false"
+     inkscape:zoom="1"
+     inkscape:cx="94.060188"
+     inkscape:cy="157.85589"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="RSSicon"
+     inkscape:snap-page="false"
+     inkscape:document-rotation="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs3" />
+  <path
+     id="rect88"
+     style="opacity:1;fill:#ffffff;stroke:none;stroke-width:3.77734"
+     d="M 0,-4 H 104 V 204 H 0 L 56,100 Z"
+     sodipodi:nodetypes="cccccc" />
+</svg>
diff --git a/website/static/media/css/publications.css b/website/static/media/css/publications.css
new file mode 100644
index 0000000..797918f
--- /dev/null
+++ b/website/static/media/css/publications.css
@@ -0,0 +1,35 @@
+.publication-list {
+    margin-top: 2em;
+}
+
+.publication-preview,
+.publication-preview:link,
+.publication-preview:visited {
+    display: block;
+    border-image: linear-gradient(to right, gray, transparent) 1;
+    border-style: none none solid none;
+    border-width: thin thick;
+    color: #4D4D4D;
+    padding: 20px 70px 20px 10px;
+    transition: border-width .2s cubic-bezier(.22,.61,.36,1);
+}
+
+.publication-preview:active,
+.publication-preview:focus,
+.publication-preview:hover {
+    background-color: gold;
+    background-image: url("/static/base/img/link-arrow-shaper.svg");
+    background-position: right;
+    background-repeat: no-repeat;
+    background-size: auto 100%;
+    border-image: linear-gradient(to right, #333, white, white) 1;
+    border-style: none none solid solid;
+}
+
+.publication-title {
+    margin: 0px;
+}
+
+.publication-info {
+    margin-bottom: 0px;
+}

base-commit: eeb5120135ad3f96f4aad2c7fa37364e6dca584b
-- 
2.31.1


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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-24 23:35 [bug#48637] [PATCH] website: Add publications page Luis Felipe via Guix-patches via
@ 2021-05-25 13:44 ` pelzflorian (Florian Pelz)
  2021-05-25 14:37   ` Luis Felipe via Guix-patches via
  2021-05-28 11:06 ` Ludovic Courtès
  1 sibling, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2021-05-25 13:44 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 48637

On Mon, May 24, 2021 at 11:35:24PM +0000, Luis Felipe via Guix-patches via wrote:
> Hi,
> 
> This patch adds a new Publications page to the website.

Nice!

I could not test yet, but maybe make the date string in

> +(define (publication->shtml publication)
> +  "Return an SHTML representation of the given publication object.
> +
> +   PUBLICATION (<publication>)
> +     A publication object as defined in (apps media types)."
> +  `(a
> +    (@ (class "publication-preview")
> +       (href ,(publication-url publication)))
> +
> +    (h3
> +     (@ (lang ,(publication-language publication))
> +        (class "publication-title"))
> +     ,(publication-title publication))
> +
> +    (p
> +     (@ (class "publication-info"))
> +     ,(G_ `("Published "
> +            ,(date->string (publication-date publication) "~b ~d, ~Y")

translatable like website/apps/blog/templates/components.scm line 33.


> +(define (publication-list-t publications)
> +  "Return the Publication list page in SHTML.
> +
> +   PUBLICATIONS (list of <publication>)
> +     See the (apps media types) module for information on the
> +     <publication> type."
> +  (theme
> +   #:title (C_ "webpage title" '("Publications"))
> +   #:description
> +   (G_ "A list of written publications about GNU Guix.")
> +   #:keywords
> +   ;; TRANSLATORS: |-separated list of webpage keywords.
> +   (string-split (G_ "Publications|Papers") #\|)

I don’t know, but should there really be only none of the other pages’
SEO keywords?  All other occurrences of #:keywords begin with

GNU|Linux|Unix|Free software


Regards,
Florian




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 13:44 ` pelzflorian (Florian Pelz)
@ 2021-05-25 14:37   ` Luis Felipe via Guix-patches via
  2021-05-25 18:21     ` pelzflorian (Florian Pelz)
  2021-05-25 18:35     ` pelzflorian (Florian Pelz)
  0 siblings, 2 replies; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-25 14:37 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: 48637@debbugs.gnu.org

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Tuesday, May 25, 2021 1:44 PM, pelzflorian (Florian Pelz) <pelzflorian@pelzflorian.de> wrote:

> On Mon, May 24, 2021 at 11:35:24PM +0000, Luis Felipe via Guix-patches via wrote:
>
> > Hi,
> > This patch adds a new Publications page to the website.
>
> Nice!
>
> I could not test yet, but maybe make the date string in
>
> > +(define (publication->shtml publication)
> >
> > -   "Return an SHTML representation of the given publication object.
> > -
> > -   PUBLICATION (<publication>)
> > -       A publication object as defined in (apps media types)."
> >
> >
> > -   `(a
> > -   (@ (class "publication-preview")
> > -         (href ,(publication-url publication)))
> >
> >
> > -
> > -   (h3
> > -       (@ (lang ,(publication-language publication))
> >
> >
> > -          (class "publication-title"))
> >
> >
> > -       ,(publication-title publication))
> >
> >
> > -
> > -   (p
> > -       (@ (class "publication-info"))
> >
> >
> > -       ,(G_ `("Published "
> >
> >
> > -              ,(date->string (publication-date publication) "~b ~d, ~Y")
> >
> >
>
> translatable like website/apps/blog/templates/components.scm line 33.

Yeah. Would it as follows? (I still struggle with i18n):

(p
 (@ (class "publication-info"))
 ,(G_ `("Published "
        ,(date->string (publication-date publication)
                       (C_ "SRFI-19 date->string format" "~b ~d, ~Y"))
        " by "
        ,(string-join (publication-authors publication) ", "))))

Also, I think the delimiter for "string-join" in the list of authors should be translated because that comma is not used in Japanese, for example. So would it be ok like this:

(p
 (@ (class "publication-info"))
 ,(G_ `("Published "
        ,(date->string (publication-date publication)
                       (C_ "SRFI-19 date->string format" "~b ~d, ~Y"))
        " by "
        ,(string-join (publication-authors publication)
                      (C_ "Separator of items in a list" ", ")))))


I'm still unsure about when I should use a context and when a TRANSLATORS comment...


> > +(define (publication-list-t publications)
> >
> > -   "Return the Publication list page in SHTML.
> > -
> > -   PUBLICATIONS (list of <publication>)
> > -       See the (apps media types) module for information on the
> >
> >
> > -       <publication> type."
> >
> >
> > -   (theme
> > -   #:title (C_ "webpage title" '("Publications"))
> > -   #:description
> > -   (G_ "A list of written publications about GNU Guix.")
> > -   #:keywords
> > -   ;; TRANSLATORS: |-separated list of webpage keywords.
> > -   (string-split (G_ "Publications|Papers") #\|)
>
> I don’t know, but should there really be only none of the other pages’
> SEO keywords? All other occurrences of #:keywords begin with
>
> GNU|Linux|Unix|Free software

Hmm, I don't know... Last time I checked, I think I saw that search engines care more about the page content than meta keywords. So I don't think it would make a difference.

Also, if it turns out to be important to repeat these keywords in all pages, maybe it would be better to add these by default in (apps base templates theme).




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 14:37   ` Luis Felipe via Guix-patches via
@ 2021-05-25 18:21     ` pelzflorian (Florian Pelz)
  2021-05-25 19:46       ` Luis Felipe via Guix-patches via
  2021-05-25 18:35     ` pelzflorian (Florian Pelz)
  1 sibling, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2021-05-25 18:21 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 48637@debbugs.gnu.org

On Tue, May 25, 2021 at 02:37:03PM +0000, Luis Felipe wrote:
> Yeah. Would it as follows? (I still struggle with i18n):
> 
> (p
>  (@ (class "publication-info"))
>  ,(G_ `("Published "
>         ,(date->string (publication-date publication)
>                        (C_ "SRFI-19 date->string format" "~b ~d, ~Y"))
>         " by "
>         ,(string-join (publication-authors publication) ", "))))

It would need to be

(p
 (@ (class "publication-info"))
 ,(let ((format (C_ "SRFI-19 date->string format" "~b ~d, ~Y")))
    (G_ `("Published "
          ,(date->string (publication-date publication) format)
          " by "
          ,(string-join (publication-authors publication) ", ")
          ""))))

The let is needed because C_ cannot be nested inside G_ because the
sexp-xgettext script parses Scheme files in only one pass currently.
(And I’m not motivated enough to make it go back to parse the nested
C_ because nesting is seldom needed.)

The "" at the end is needed so (string-join …) gets its own XML
element that can be moved by translators.

Without "":

msgid "Published <1/> by "

With "":

msgid "Published <1/> by <2/>"



> Also, I think the delimiter for "string-join" in the list of authors
> should be translated because that comma is not used in Japanese, for
> example. So would it be ok like this:
> […]
>         ,(string-join (publication-authors publication)
>                       (C_ "Separator of items in a list" ", ")))))

Yes, you are very right, although as above please move it to the let.
Then it can become 、 or と or whatever; I don’t know what is common
in Japan.


> I'm still unsure about when I should use a context and when a
> TRANSLATORS comment...

A msgctxt should be used if another ", " string with different
translations might be added.  I would use a context, I think, but
maybe it is an abundance of caution.

Regards,
Florian




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 14:37   ` Luis Felipe via Guix-patches via
  2021-05-25 18:21     ` pelzflorian (Florian Pelz)
@ 2021-05-25 18:35     ` pelzflorian (Florian Pelz)
  2021-05-25 19:14       ` Luis Felipe via Guix-patches via
  1 sibling, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2021-05-25 18:35 UTC (permalink / raw)
  To: Luis Felipe; +Cc: sirgazil, 48637@debbugs.gnu.org

On Tue, May 25, 2021 at 02:37:03PM +0000, Luis Felipe wrote:
> On Tuesday, May 25, 2021 1:44 PM, pelzflorian (Florian Pelz) <pelzflorian@pelzflorian.de> wrote:
> > On Mon, May 24, 2021 at 11:35:24PM +0000, Luis Felipe via Guix-patches via wrote:
> > > -   (theme
> > > -   #:title (C_ "webpage title" '("Publications"))
> > > -   #:description
> > > -   (G_ "A list of written publications about GNU Guix.")
> > > -   #:keywords
> > > -   ;; TRANSLATORS: |-separated list of webpage keywords.
> > > -   (string-split (G_ "Publications|Papers") #\|)
> >
> > I don’t know, but should there really be only none of the other pages’
> > SEO keywords? All other occurrences of #:keywords begin with
> >
> > GNU|Linux|Unix|Free software
>
> Hmm, I don't know... Last time I checked, I think I saw that search
> engines care more about the page content than meta keywords. So I
> don't think it would make a difference.
>
> Also, if it turns out to be important to repeat these keywords in
> all pages, maybe it would be better to add these by default in (apps
> base templates theme).

I did not know and just thought we should cargo-cult it.  Does it
matter?  Maybe @sirgazil has an opinion?

Regards,
Florian




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 18:35     ` pelzflorian (Florian Pelz)
@ 2021-05-25 19:14       ` Luis Felipe via Guix-patches via
  0 siblings, 0 replies; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-25 19:14 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: sirgazil, 48637@debbugs.gnu.org

On Tuesday, May 25, 2021 6:35 PM, pelzflorian (Florian Pelz) <pelzflorian@pelzflorian.de> wrote:

> On Tue, May 25, 2021 at 02:37:03PM +0000, Luis Felipe wrote:
>
> > On Tuesday, May 25, 2021 1:44 PM, pelzflorian (Florian Pelz) pelzflorian@pelzflorian.de wrote:
> >
> > > On Mon, May 24, 2021 at 11:35:24PM +0000, Luis Felipe via Guix-patches via wrote:
> > >
> > > > -   (theme
> > > > -   #:title (C_ "webpage title" '("Publications"))
> > > > -   #:description
> > > > -   (G_ "A list of written publications about GNU Guix.")
> > > > -   #:keywords
> > > > -   ;; TRANSLATORS: |-separated list of webpage keywords.
> > > > -   (string-split (G_ "Publications|Papers") #\|)
> > >
> > > I don’t know, but should there really be only none of the other pages’
> > > SEO keywords? All other occurrences of #:keywords begin with
> > > GNU|Linux|Unix|Free software
> >
> > Hmm, I don't know... Last time I checked, I think I saw that search
> > engines care more about the page content than meta keywords. So I
> > don't think it would make a difference.
> > Also, if it turns out to be important to repeat these keywords in
> > all pages, maybe it would be better to add these by default in (apps
> > base templates theme).
>
> I did not know and just thought we should cargo-cult it. Does it
> matter? Maybe @sirgazil has an opinion?

He, he, I'm sirgazil :)




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 18:21     ` pelzflorian (Florian Pelz)
@ 2021-05-25 19:46       ` Luis Felipe via Guix-patches via
  2021-05-25 19:58         ` Julien Lepiller
  0 siblings, 1 reply; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-25 19:46 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: 48637@debbugs.gnu.org

On Tuesday, May 25, 2021 6:21 PM, pelzflorian (Florian Pelz) <pelzflorian@pelzflorian.de> wrote:

> On Tue, May 25, 2021 at 02:37:03PM +0000, Luis Felipe wrote:
>
> > Yeah. Would it as follows? (I still struggle with i18n):
> > (p
> > (@ (class "publication-info"))
> > ,(G_ `("Published "
> > ,(date->string (publication-date publication)
> > (C_ "SRFI-19 date->string format" "~b ~d, ~Y"))
> > " by "
> > ,(string-join (publication-authors publication) ", "))))
>
> It would need to be
>
> (p
> (@ (class "publication-info"))
> ,(let ((format (C_ "SRFI-19 date->string format" "~b ~d, ~Y")))
>
>     (G_ `("Published "
>           ,(date->string (publication-date publication) format)
>
>           " by "
>           ,(string-join (publication-authors publication) ", ")
>           ""))))
>
>
> The let is needed because C_ cannot be nested inside G_ because the
> sexp-xgettext script parses Scheme files in only one pass currently.
> (And I’m not motivated enough to make it go back to parse the nested
> C_ because nesting is seldom needed.)
>
> The "" at the end is needed so (string-join …) gets its own XML
> element that can be moved by translators.
>
> Without "":
>
> msgid "Published <1/> by "
>
> With "":
>
> msgid "Published <1/> by <2/>"

You told me that before but I forgot :P


> > Also, I think the delimiter for "string-join" in the list of authors
> > should be translated because that comma is not used in Japanese, for
> > example. So would it be ok like this:
> > […]
> > ,(string-join (publication-authors publication)
> > (C_ "Separator of items in a list" ", ")))))
>
> Yes, you are very right, although as above please move it to the let.
> Then it can become 、 or と or whatever; I don’t know what is common
> in Japan.
>
> > I'm still unsure about when I should use a context and when a
> > TRANSLATORS comment...
>
> A msgctxt should be used if another ", " string with different
> translations might be added. I would use a context, I think, but
> maybe it is an abundance of caution.

Ok, so I moved both the date and the list authors to the definitions part of a let:

(define (publication->shtml publication)
  "Return an SHTML representation of the given publication object.

   PUBLICATION (<publication>)
     A publication object as defined in (apps media types)."
  (let ((date
         (date->string (publication-date publication)
                       (C_ "SRFI-19 date->string format" "~b ~d, ~Y")))
        (authors
         (string-join (publication-authors publication)
                      (C_ "Separator for authors in a list" ", "))))

    `(a
      (@ (class "publication-preview")
         (href ,(publication-url publication)))

      (h3
       (@ (lang ,(publication-language publication))
          (class "publication-title"))
       ,(publication-title publication))

      (p
       (@ (class "publication-info"))
       ,(G_ `("Published " ,date " by " ,authors ""))))))

Does it look right?




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 19:46       ` Luis Felipe via Guix-patches via
@ 2021-05-25 19:58         ` Julien Lepiller
  2021-05-25 20:16           ` Luis Felipe via Guix-patches via
  0 siblings, 1 reply; 30+ messages in thread
From: Julien Lepiller @ 2021-05-25 19:58 UTC (permalink / raw)
  To: luis.felipe.la, 48637, pelzflorian

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

Do we need to have a list for authors? Couldn't we have a single translatable string with all the authors, so it's easier to translate than having to translate a separator? I mean you could have weird rujes on separators. Even in English, you'd need an "and" for the last element, unless there's one author. Giving the full list of authors to translate gives the most freedom to translators.

Also, please give context/comment to the last one, because it's not easy to guess what <1> in "Published <1> by <2>" would be :)

Le 25 mai 2021 15:46:17 GMT-04:00, Luis Felipe via Guix-patches via <guix-patches@gnu.org> a écrit :
>On Tuesday, May 25, 2021 6:21 PM, pelzflorian (Florian Pelz)
><pelzflorian@pelzflorian.de> wrote:
>
>> On Tue, May 25, 2021 at 02:37:03PM +0000, Luis Felipe wrote:
>>
>> > Yeah. Would it as follows? (I still struggle with i18n):
>> > (p
>> > (@ (class "publication-info"))
>> > ,(G_ `("Published "
>> > ,(date->string (publication-date publication)
>> > (C_ "SRFI-19 date->string format" "~b ~d, ~Y"))
>> > " by "
>> > ,(string-join (publication-authors publication) ", "))))
>>
>> It would need to be
>>
>> (p
>> (@ (class "publication-info"))
>> ,(let ((format (C_ "SRFI-19 date->string format" "~b ~d, ~Y")))
>>
>>     (G_ `("Published "
>>           ,(date->string (publication-date publication) format)
>>
>>           " by "
>>           ,(string-join (publication-authors publication) ", ")
>>           ""))))
>>
>>
>> The let is needed because C_ cannot be nested inside G_ because the
>> sexp-xgettext script parses Scheme files in only one pass currently.
>> (And I’m not motivated enough to make it go back to parse the nested
>> C_ because nesting is seldom needed.)
>>
>> The "" at the end is needed so (string-join …) gets its own XML
>> element that can be moved by translators.
>>
>> Without "":
>>
>> msgid "Published <1/> by "
>>
>> With "":
>>
>> msgid "Published <1/> by <2/>"
>
>You told me that before but I forgot :P
>
>
>> > Also, I think the delimiter for "string-join" in the list of
>authors
>> > should be translated because that comma is not used in Japanese,
>for
>> > example. So would it be ok like this:
>> > […]
>> > ,(string-join (publication-authors publication)
>> > (C_ "Separator of items in a list" ", ")))))
>>
>> Yes, you are very right, although as above please move it to the let.
>> Then it can become 、 or と or whatever; I don’t know what is common
>> in Japan.
>>
>> > I'm still unsure about when I should use a context and when a
>> > TRANSLATORS comment...
>>
>> A msgctxt should be used if another ", " string with different
>> translations might be added. I would use a context, I think, but
>> maybe it is an abundance of caution.
>
>Ok, so I moved both the date and the list authors to the definitions
>part of a let:
>
>(define (publication->shtml publication)
>  "Return an SHTML representation of the given publication object.
>
>   PUBLICATION (<publication>)
>     A publication object as defined in (apps media types)."
>  (let ((date
>         (date->string (publication-date publication)
>                       (C_ "SRFI-19 date->string format" "~b ~d, ~Y")))
>        (authors
>         (string-join (publication-authors publication)
>                      (C_ "Separator for authors in a list" ", "))))
>
>    `(a
>      (@ (class "publication-preview")
>         (href ,(publication-url publication)))
>
>      (h3
>       (@ (lang ,(publication-language publication))
>          (class "publication-title"))
>       ,(publication-title publication))
>
>      (p
>       (@ (class "publication-info"))
>       ,(G_ `("Published " ,date " by " ,authors ""))))))
>
>Does it look right?

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 19:58         ` Julien Lepiller
@ 2021-05-25 20:16           ` Luis Felipe via Guix-patches via
  2021-05-26  2:03             ` Julien Lepiller
  0 siblings, 1 reply; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-25 20:16 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: pelzflorian, 48637

On Tuesday, May 25, 2021 7:58 PM, Julien Lepiller <julien@lepiller.eu> wrote:

> Do we need to have a list for authors? Couldn't we have a single translatable string with all the authors, so it's easier to translate than having to translate a separator? I mean you could have weird rujes on separators. Even in English, you'd need an "and" for the last element, unless there's one author. Giving the full list of authors to translate gives the most freedom to translators.

Hmm... As a scripter I'd prefer to use the list, but as a translator, I'd like to have complete control of the string... For the benefit of the latter, I think it's ok to use the string instead. So, when instancing a Publication record, the authors field would be simply like this?

#:authors (G_ "Jane Roe, Eva Lua and Luis Felipe")


> Also, please give context/comment to the last one, because it's not easy to guess what <1> in "Published <1> by <2>" would be :)

That's what I thought, and I was about to ask if it was possible to have <date> and <authors> instead of <1> and <2>. I guess not...

I need a course on the i18n system :)




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-25 20:16           ` Luis Felipe via Guix-patches via
@ 2021-05-26  2:03             ` Julien Lepiller
  2021-05-26 10:00               ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 30+ messages in thread
From: Julien Lepiller @ 2021-05-26  2:03 UTC (permalink / raw)
  To: Luis Felipe; +Cc: pelzflorian, 48637



Le 25 mai 2021 16:16:42 GMT-04:00, Luis Felipe <luis.felipe.la@protonmail.com> a écrit :
>On Tuesday, May 25, 2021 7:58 PM, Julien Lepiller <julien@lepiller.eu>
>wrote:
>
>> Do we need to have a list for authors? Couldn't we have a single
>translatable string with all the authors, so it's easier to translate
>than having to translate a separator? I mean you could have weird rujes
>on separators. Even in English, you'd need an "and" for the last
>element, unless there's one author. Giving the full list of authors to
>translate gives the most freedom to translators.
>
>Hmm... As a scripter I'd prefer to use the list, but as a translator,
>I'd like to have complete control of the string... For the benefit of
>the latter, I think it's ok to use the string instead. So, when
>instancing a Publication record, the authors field would be simply like
>this?
>
>#:authors (G_ "Jane Roe, Eva Lua and Luis Felipe")

I think so, but I think we'll have to test, because I don't really know the i18n process either for the website ^^'

>
>
>> Also, please give context/comment to the last one, because it's not
>easy to guess what <1> in "Published <1> by <2>" would be :)
>
>That's what I thought, and I was about to ask if it was possible to
>have <date> and <authors> instead of <1> and <2>. I guess not...
>
>I need a course on the i18n system :)




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-26  2:03             ` Julien Lepiller
@ 2021-05-26 10:00               ` pelzflorian (Florian Pelz)
  2021-05-26 14:06                 ` Luis Felipe via Guix-patches via
  0 siblings, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2021-05-26 10:00 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: Luis Felipe, 48637@debbugs.gnu.org

On Tue, May 25, 2021 at 10:03:01PM -0400, Julien Lepiller wrote:
> Le 25 mai 2021 16:16:42 GMT-04:00, Luis Felipe <luis.felipe.la@protonmail.com> a écrit :
> >#:authors (G_ "Jane Roe, Eva Lua and Luis Felipe")
> 
> I think so, but I think we'll have to test, because I don't really know the i18n process either for the website ^^'

Yes, it is correct and the best way, but testing by running the
sexp-xgettext script is good too.


> >That's what I thought, and I was about to ask if it was possible to
> >have <date> and <authors> instead of <1> and <2>. I guess not...
> >
> >I need a course on the i18n system :)

I wanted the sexp-xgettext i18n system so developers would not have to
add a tag name to every element …  Well, we can use regexp helper
function find-empty-element like website/sexp-xgettext.scm uses at the
beginning of the deconstruct procedure:

(define (find-empty-element msgstr name)
  "Return the regex match structure for the empty tag for XML
element of type NAME inside MSGSTR.  If the element does not exist or
is more than the empty tag, #f is returned."
  (string-match (string-append "<" (regexp-quote name) "/>") msgstr))

and call it on a translation with G_, but I would prefer not to
increase code complexity in the website.

Regards,
Florian




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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-26 10:00               ` pelzflorian (Florian Pelz)
@ 2021-05-26 14:06                 ` Luis Felipe via Guix-patches via
  2021-05-26 17:41                   ` Julien Lepiller
  0 siblings, 1 reply; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-26 14:06 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: Julien Lepiller, 48637@debbugs.gnu.org

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

On Wednesday, May 26, 2021 10:00 AM, pelzflorian (Florian Pelz) <pelzflorian@pelzflorian.de> wrote:

> On Tue, May 25, 2021 at 10:03:01PM -0400, Julien Lepiller wrote:
>
> > Le 25 mai 2021 16:16:42 GMT-04:00, Luis Felipe luis.felipe.la@protonmail.com a écrit :
> >
> > > #:authors (G_ "Jane Roe, Eva Lua and Luis Felipe")
> >
> > I think so, but I think we'll have to test, because I don't really know the i18n process either for the website ^^'
>
> Yes, it is correct and the best way, but testing by running the
> sexp-xgettext script is good too.
>
> > > That's what I thought, and I was about to ask if it was possible to
> > > have <date> and <authors> instead of <1> and <2>. I guess not...
> > > I need a course on the i18n system :)
>
> I wanted the sexp-xgettext i18n system so developers would not have to
> add a tag name to every element … Well, we can use regexp helper
> function find-empty-element like website/sexp-xgettext.scm uses at the
> beginning of the deconstruct procedure:
>
> (define (find-empty-element msgstr name)
> "Return the regex match structure for the empty tag for XML
> element of type NAME inside MSGSTR. If the element does not exist or
> is more than the empty tag, #f is returned."
> (string-match (string-append "<" (regexp-quote name) "/>") msgstr))
>
> and call it on a translation with G_, but I would prefer not to
> increase code complexity in the website.

Ok, here is the new patch with the suggested changes.

I updated the POT to check the translation strings and I think they are well formed. For example:

#. TRANSLATORS: <1/> is a date, and <2/> a list of authors.
#: apps/media/templates/components.scm:50
#, xml-text
msgid "Published <1/> by <2/>"
msgstr ""

I didn't include the POT update in the patch though. Maybe for future patches I'll do the whole i18n process.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-website-Add-publications-page.patch --]
[-- Type: text/x-patch; name=0001-website-Add-publications-page.patch, Size: 14851 bytes --]

From 0bfa0bc0992a8cfc81903ce0418bab6490b5d110 Mon Sep 17 00:00:00 2001
From: Luis Felipe <luis.felipe.la@protonmail.com>
Date: Mon, 24 May 2021 17:54:17 -0500
Subject: [PATCH] website: Add publications page.

This page lists different kinds of written publications that talk about
Guix.

* website/apps/base/templates/components.scm (navbar): Link to the new
page from the Media menu.
* website/apps/media/builder.scm (publication-list-builder): New helper
builder.
(builder): Use the new helper builder.
* website/apps/media/data.scm (publications): New data set.
* website/apps/media/templates/components.scm (publication->shtml): New
component.
* website/apps/media/templates/publication-list.scm: New template.
* website/apps/media/types.scm (<publication>): New record type.
* website/static/base/img/link-arrow-shaper.svg: New image.
* website/static/media/css/publications.css: New style sheet.
---
 website/apps/base/templates/components.scm    | 14 +++-
 website/apps/media/builder.scm                | 19 ++++--
 website/apps/media/data.scm                   | 25 +++++++
 website/apps/media/templates/components.scm   | 28 +++++++-
 .../apps/media/templates/publication-list.scm | 46 +++++++++++++
 website/apps/media/types.scm                  | 52 ++++++++++++++-
 website/static/base/img/link-arrow-shaper.svg | 66 +++++++++++++++++++
 website/static/media/css/publications.css     | 35 ++++++++++
 8 files changed, 277 insertions(+), 8 deletions(-)
 create mode 100644 website/apps/media/templates/publication-list.scm
 create mode 100644 website/static/base/img/link-arrow-shaper.svg
 create mode 100644 website/static/media/css/publications.css

diff --git a/website/apps/base/templates/components.scm b/website/apps/base/templates/components.scm
index b615f98..e2a74d3 100644
--- a/website/apps/base/templates/components.scm
+++ b/website/apps/base/templates/components.scm
@@ -461,8 +461,18 @@ manual.
       ,(menu-dropdown #:label (C_ "website menu" "Media") #:active-item active-item
         #:items
         (list
-         (C_ "website menu" (menu-item #:label "Videos" #:active-item active-item #:url (guix-url "videos/")))
-         (C_ "website menu" (menu-item #:label "Screenshots" #:active-item active-item #:url (guix-url "screenshots/")))))
+         (C_ "website menu"
+             (menu-item #:label "Videos"
+                        #:active-item active-item
+                        #:url (guix-url "videos/")))
+         (C_ "website menu"
+             (menu-item #:label "Screenshots"
+                        #:active-item active-item
+                        #:url (guix-url "screenshots/")))
+         (C_ "website menu"
+             (menu-item #:label "Publications"
+                        #:active-item active-item
+                        #:url (guix-url "publications/")))))
 
       ,(C_ "website menu" (menu-item #:label "Donate" #:active-item active-item #:url (guix-url "donate/")))
 
diff --git a/website/apps/media/builder.scm b/website/apps/media/builder.scm
index 53378e6..c270db5 100644
--- a/website/apps/media/builder.scm
+++ b/website/apps/media/builder.scm
@@ -6,11 +6,13 @@
 (define-module (apps media builder)
   #:use-module (apps aux system)
   #:use-module (apps media data)
+  #:use-module (apps media templates publication-list)
   #:use-module (apps media templates screenshot)
   #:use-module (apps media templates screenshots-overview)
   #:use-module (apps media templates video)
   #:use-module (apps media templates video-list)
   #:use-module (apps media types)
+  #:use-module (haunt artifact)
   #:use-module (haunt html)
   #:use-module (haunt page)
   #:use-module (haunt utils)
@@ -37,11 +39,13 @@
      A list of post objects that represent articles from the blog. See
      Haunt <post> objects for more information.
 
-   RETURN (list of <page>)
-     A list of page objects that represent the web resources of the
-     application. See Haunt <page> objects for more information."
+   RETURN (list of <artifact> and <page>)
+     A list of objects that represent the web resources of the
+     application. See Haunt <artifact> and <page> objects for more
+     information."
   (flatten
-   (list (screenshots-overview-builder)
+   (list (publication-list-builder)
+         (screenshots-overview-builder)
          (screenshots-builder)
          (videos-builder)
          (video-list-builder))))
@@ -51,6 +55,13 @@
 ;;; Helper builders.
 ;;;
 
+(define (publication-list-builder)
+  "Return a Haunt artifact representing the publications page."
+  (serialized-artifact (url-path-join "publications" "index.html")
+                       (publication-list-t publications)
+                       sxml->html))
+
+
 (define (screenshots-builder)
   "Return a list of Haunt pages representing screenshot pages."
   (map
diff --git a/website/apps/media/data.scm b/website/apps/media/data.scm
index 9b1e2c5..a82d647 100644
--- a/website/apps/media/data.scm
+++ b/website/apps/media/data.scm
@@ -9,6 +9,7 @@
   #:use-module (apps media types)
   #:use-module (srfi srfi-19)
   #:export (playlists
+            publications
             screenshots))
 
 
@@ -98,6 +99,30 @@ distribution."))
      #:last-updated (string->date "2020-03-28T16:00:00" "~Y-~m-~dT~H:~M:~S")))))
 
 
+(define publications
+  (list
+   (publication
+    #:title "Functional Package Management with Guix"
+    #:url "https://arxiv.org/abs/1305.4584"
+    #:authors "Ludovic Courtès"
+    #:date (string->date "2013-05-20" "~Y-~m-~d"))
+   (publication
+    #:title "Reproducible and User-Controlled Software Environments in HPC with Guix"
+    #:url "https://hal.inria.fr/hal-01161771/en"
+    #:authors (G_ "Ludovic Courtès, Ricardo Wurmus")
+    #:date (string->date "2015-07-25" "~Y-~m-~d"))
+   (publication
+    #:title "Code Staging in GNU Guix"
+    #:url "https://arxiv.org/abs/1709.00833"
+    #:authors "Ludovic Courtès"
+    #:date (string->date "2017-09-04" "~Y-~m-~d"))
+   (publication
+    #:title "Guix: A most advanced operating system"
+    #:url "https://ambrevar.xyz/guix-advance/index.html"
+    #:authors "Pierre Neidhardt"
+    #:date (string->date "2019-01-14" "~Y-~m-~d"))))
+
+
 (define screenshots
   (list
    (screenshot
diff --git a/website/apps/media/templates/components.scm b/website/apps/media/templates/components.scm
index d928d23..ce9d944 100644
--- a/website/apps/media/templates/components.scm
+++ b/website/apps/media/templates/components.scm
@@ -14,7 +14,8 @@
   #:use-module (apps media types)
   #:use-module (apps media utils)
   #:use-module (srfi srfi-19)
-  #:export (screenshot->shtml
+  #:export (publication->shtml
+            screenshot->shtml
             screenshots-box
             video->shtml
             video-content
@@ -25,6 +26,31 @@
 ;;; Components.
 ;;;
 
+(define (publication->shtml publication)
+  "Return an SHTML representation of the given publication object.
+
+   PUBLICATION (<publication>)
+     A publication object as defined in (apps media types)."
+  (let ((date
+         (date->string (publication-date publication)
+                       (C_ "SRFI-19 date->string format" "~b ~d, ~Y"))))
+
+    `(a
+      (@ (class "publication-preview")
+         (href ,(publication-url publication)))
+
+      (h3
+       (@ (lang ,(publication-language publication))
+          (class "publication-title"))
+       ,(publication-title publication))
+
+      (p
+       (@ (class "publication-info"))
+       ;; TRANSLATORS: <1/> is a date, and <2/> a list of authors.
+       ,(G_ `("Published " ,date " by "
+              ,(publication-authors publication) ""))))))
+
+
 (define (screenshot->shtml shot)
   "Return an SHTML representation of the given screenshot object.
 
diff --git a/website/apps/media/templates/publication-list.scm b/website/apps/media/templates/publication-list.scm
new file mode 100644
index 0000000..44847c7
--- /dev/null
+++ b/website/apps/media/templates/publication-list.scm
@@ -0,0 +1,46 @@
+;;; GNU Guix web site
+;;; Public domain 2021 Luis Felipe López Acevedo
+
+(define-module (apps media templates publication-list)
+  #:use-module (apps base templates theme)
+  #:use-module (apps base types)
+  #:use-module (apps base utils)
+  #:use-module (apps i18n)
+  #:use-module (apps media templates components)
+  #:export (publication-list-t))
+
+
+(define (publication-list-t publications)
+  "Return the Publication list page in SHTML.
+
+   PUBLICATIONS (list of <publication>)
+     See the (apps media types) module for information on the
+     <publication> type."
+  (theme
+   #:title (C_ "webpage title" '("Publications"))
+   #:description
+   (G_ "A list of written publications about GNU Guix.")
+   #:keywords
+   ;; TRANSLATORS: |-separated list of webpage keywords.
+   (string-split (G_ "Publications|Papers") #\|)
+   #:active-menu-item (C_ "website menu" "Publications")
+   #:css (list
+	  (guix-url "static/base/css/page.css")
+	  (guix-url "static/media/css/publications.css"))
+   #:crumbs (list (crumb (C_ "website menu" "Publications") "./"))
+   #:content
+   `(main
+     (section
+      (@ (class "page"))
+      ,(G_ `(h2 "Publications"))
+
+      ,(G_
+        `(p
+          (@ (class "centered-block limit-width"))
+
+          "The following is a list of written materials that talk about GNU Guix. It is a diverse collection of writings, from blog posts to grey literature to academic and research papers."))
+
+      (div
+       (@ (class "publication-list centered-block limit-width"))
+
+       ,@(map publication->shtml publications))))))
diff --git a/website/apps/media/types.scm b/website/apps/media/types.scm
index 50c0989..579e642 100644
--- a/website/apps/media/types.scm
+++ b/website/apps/media/types.scm
@@ -5,7 +5,14 @@
 
 (define-module (apps media types)
   #:use-module (srfi srfi-9)
-  #:export (screenshot
+  #:export (publication
+            publication?
+            publication-authors
+            publication-date
+            publication-language
+            publication-title
+            publication-url
+            screenshot
             screenshot?
             screenshot-caption
             screenshot-image
@@ -32,6 +39,49 @@
 ;;; Data types.
 ;;;
 
+;;; Publication (record type)
+;;; -------------------------
+;;;
+;;; A publication object represents a written material that talks about
+;;; GNU Guix.
+;;;
+;;; Objects of this type can be created with the "publication" procedure
+;;; (see Helper procedures below).
+;;;
+;;; Fields:
+;;;
+;;; title (string)
+;;;   The title of the publication.
+;;;
+;;; url (string)
+;;;   A URL to the publication.
+;;;
+;;; authors (string)
+;;;   The names of the authors.
+;;;
+;;; date (date)
+;;;   The date of publication.
+;;;
+;;; language (string)
+;;;   IETF language tag corresponding to the language in which the
+;;;   publication is written.
+;;;
+(define-record-type <publication>
+  (make-publication title url authors date language)
+  publication?
+  (title publication-title)
+  (url publication-url)
+  (authors publication-authors)
+  (date publication-date)
+  (language publication-language))
+
+;;; Helper procedures.
+
+(define* (publication #:key title url authors date (language "en"))
+  "Return a <publication> object with the given attributes."
+  (make-publication title url authors date language))
+
+
 ;;; Screenshot (record type)
 ;;; ------------------------
 ;;;
diff --git a/website/static/base/img/link-arrow-shaper.svg b/website/static/base/img/link-arrow-shaper.svg
new file mode 100644
index 0000000..834fd84
--- /dev/null
+++ b/website/static/base/img/link-arrow-shaper.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="50"
+   height="100"
+   id="RSSicon"
+   viewBox="0 0 100 200"
+   inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+   sodipodi:docname="link-arrow-shaper.svg"
+   inkscape:export-filename="feed-bg-whitepng.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <metadata
+     id="metadata34">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     id="namedview32"
+     showgrid="false"
+     inkscape:showpageshadow="false"
+     inkscape:zoom="1"
+     inkscape:cx="94.060188"
+     inkscape:cy="157.85589"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="RSSicon"
+     inkscape:snap-page="false"
+     inkscape:document-rotation="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs3" />
+  <path
+     id="rect88"
+     style="opacity:1;fill:#ffffff;stroke:none;stroke-width:3.77734"
+     d="M 0,-4 H 104 V 204 H 0 L 56,100 Z"
+     sodipodi:nodetypes="cccccc" />
+</svg>
diff --git a/website/static/media/css/publications.css b/website/static/media/css/publications.css
new file mode 100644
index 0000000..797918f
--- /dev/null
+++ b/website/static/media/css/publications.css
@@ -0,0 +1,35 @@
+.publication-list {
+    margin-top: 2em;
+}
+
+.publication-preview,
+.publication-preview:link,
+.publication-preview:visited {
+    display: block;
+    border-image: linear-gradient(to right, gray, transparent) 1;
+    border-style: none none solid none;
+    border-width: thin thick;
+    color: #4D4D4D;
+    padding: 20px 70px 20px 10px;
+    transition: border-width .2s cubic-bezier(.22,.61,.36,1);
+}
+
+.publication-preview:active,
+.publication-preview:focus,
+.publication-preview:hover {
+    background-color: gold;
+    background-image: url("/static/base/img/link-arrow-shaper.svg");
+    background-position: right;
+    background-repeat: no-repeat;
+    background-size: auto 100%;
+    border-image: linear-gradient(to right, #333, white, white) 1;
+    border-style: none none solid solid;
+}
+
+.publication-title {
+    margin: 0px;
+}
+
+.publication-info {
+    margin-bottom: 0px;
+}

base-commit: eeb5120135ad3f96f4aad2c7fa37364e6dca584b
-- 
2.31.1


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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-26 14:06                 ` Luis Felipe via Guix-patches via
@ 2021-05-26 17:41                   ` Julien Lepiller
  2021-05-26 18:25                     ` Luis Felipe via Guix-patches via
  0 siblings, 1 reply; 30+ messages in thread
From: Julien Lepiller @ 2021-05-26 17:41 UTC (permalink / raw)
  To: Luis Felipe, pelzflorian (Florian Pelz); +Cc: 48637@debbugs.gnu.org

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

Since last time we calked, I changed che script that updates weblate, so it now ignores the checked out pot file and regenerates it for weblate. Maybe we should now drop it entirely?

Le 26 mai 2021 10:06:43 GMT-04:00, Luis Felipe <luis.felipe.la@protonmail.com> a écrit :
>On Wednesday, May 26, 2021 10:00 AM, pelzflorian (Florian Pelz)
><pelzflorian@pelzflorian.de> wrote:
>
>> On Tue, May 25, 2021 at 10:03:01PM -0400, Julien Lepiller wrote:
>>
>> > Le 25 mai 2021 16:16:42 GMT-04:00, Luis Felipe
>luis.felipe.la@protonmail.com a écrit :
>> >
>> > > #:authors (G_ "Jane Roe, Eva Lua and Luis Felipe")
>> >
>> > I think so, but I think we'll have to test, because I don't really
>know the i18n process either for the website ^^'
>>
>> Yes, it is correct and the best way, but testing by running the
>> sexp-xgettext script is good too.
>>
>> > > That's what I thought, and I was about to ask if it was possible
>to
>> > > have <date> and <authors> instead of <1> and <2>. I guess not...
>> > > I need a course on the i18n system :)
>>
>> I wanted the sexp-xgettext i18n system so developers would not have
>to
>> add a tag name to every element … Well, we can use regexp helper
>> function find-empty-element like website/sexp-xgettext.scm uses at
>the
>> beginning of the deconstruct procedure:
>>
>> (define (find-empty-element msgstr name)
>> "Return the regex match structure for the empty tag for XML
>> element of type NAME inside MSGSTR. If the element does not exist or
>> is more than the empty tag, #f is returned."
>> (string-match (string-append "<" (regexp-quote name) "/>") msgstr))
>>
>> and call it on a translation with G_, but I would prefer not to
>> increase code complexity in the website.
>
>Ok, here is the new patch with the suggested changes.
>
>I updated the POT to check the translation strings and I think they are
>well formed. For example:
>
>#. TRANSLATORS: <1/> is a date, and <2/> a list of authors.
>#: apps/media/templates/components.scm:50
>#, xml-text
>msgid "Published <1/> by <2/>"
>msgstr ""
>
>I didn't include the POT update in the patch though. Maybe for future
>patches I'll do the whole i18n process.

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-26 17:41                   ` Julien Lepiller
@ 2021-05-26 18:25                     ` Luis Felipe via Guix-patches via
  2021-05-26 18:42                       ` Julien Lepiller
  0 siblings, 1 reply; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-26 18:25 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: pelzflorian (Florian Pelz), 48637@debbugs.gnu.org

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

On Wednesday, May 26, 2021 5:41 PM, Julien Lepiller <julien@lepiller.eu> wrote:

> Since last time we calked, I changed che script that updates weblate, so it now ignores the checked out pot file and regenerates it for weblate. Maybe we should now drop it entirely?

Ah, right. But it would be better to do that in a separate patch, right? To decide what can be removed. Because the sexp-xgettext script would still be useful to check that new translation strings are well formed.

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-26 18:25                     ` Luis Felipe via Guix-patches via
@ 2021-05-26 18:42                       ` Julien Lepiller
  2021-05-26 19:05                         ` Luis Felipe via Guix-patches via
  0 siblings, 1 reply; 30+ messages in thread
From: Julien Lepiller @ 2021-05-26 18:42 UTC (permalink / raw)
  To: Luis Felipe; +Cc: pelzflorian (Florian Pelz), 48637@debbugs.gnu.org

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

Absolutely, let's take care of that later, in a separate patch. I think your patch is in a very good shape now. Do you have commit access?

Le 26 mai 2021 14:25:48 GMT-04:00, Luis Felipe <luis.felipe.la@protonmail.com> a écrit :
>On Wednesday, May 26, 2021 5:41 PM, Julien Lepiller
><julien@lepiller.eu> wrote:
>
>> Since last time we calked, I changed che script that updates weblate,
>so it now ignores the checked out pot file and regenerates it for
>weblate. Maybe we should now drop it entirely?
>
>Ah, right. But it would be better to do that in a separate patch,
>right? To decide what can be removed. Because the sexp-xgettext script
>would still be useful to check that new translation strings are well
>formed.

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-26 18:42                       ` Julien Lepiller
@ 2021-05-26 19:05                         ` Luis Felipe via Guix-patches via
  0 siblings, 0 replies; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-26 19:05 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: pelzflorian (Florian Pelz), 48637@debbugs.gnu.org

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

On Wednesday, May 26, 2021 6:42 PM, Julien Lepiller <julien@lepiller.eu> wrote:

> Absolutely, let's take care of that later, in a separate patch. I think your patch is in a very good shape now. Do you have commit access?

I don't :)

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-24 23:35 [bug#48637] [PATCH] website: Add publications page Luis Felipe via Guix-patches via
  2021-05-25 13:44 ` pelzflorian (Florian Pelz)
@ 2021-05-28 11:06 ` Ludovic Courtès
  2021-05-28 15:20   ` Luis Felipe via Guix-patches via
  2021-06-02 19:31   ` Luis Felipe via Guix-patches via
  1 sibling, 2 replies; 30+ messages in thread
From: Ludovic Courtès @ 2021-05-28 11:06 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 48637

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

Hi Luis,

Nice work!  It’s now on-line:

  https://guix.gnu.org/en/publications/

I see that you want to keep it open to non-academic publications, which
is a good idea.  I wonder if there should be a visual distinction
between peer-reviewed scientific articles, journal articles, and other
types of publications?

I started adding historical LWN articles (patch below; the titles look
funny in hindsight :-)), and wondered whether this was a good idea since
they would come first in the list.

Thoughts?

We should call for contributions because I’m sure there are quite a few
articles that would be worth adding.

Thanks,
Ludo’.


[-- Attachment #2: Type: text/x-patch, Size: 1379 bytes --]

diff --git a/website/apps/media/data.scm b/website/apps/media/data.scm
index 8dbb035..fde5918 100644
--- a/website/apps/media/data.scm
+++ b/website/apps/media/data.scm
@@ -106,11 +106,26 @@ distribution."))
     #:url "https://arxiv.org/abs/1305.4584"
     #:authors "Ludovic Courtès"
     #:date (string->date "2013-05-20" "~Y-~m-~d"))
+   (publication
+    #:title "GNU Guix sports functional package management"
+    #:authors "Nathan Willis"
+    #:url "https://lwn.net/Articles/560857/"
+    #:date (string->date "2013-07-31" "~Y-~m-~d"))
    (publication
     #:title "Reproducible and User-Controlled Software Environments in HPC with Guix"
     #:url "https://hal.inria.fr/hal-01161771/en"
     #:authors (G_ "Ludovic Courtès, Ricardo Wurmus")
     #:date (string->date "2015-07-25" "~Y-~m-~d"))
+   (publication
+    #:title "Reproducible builds and standalone GNU systems with Guix 0.9"
+    #:url "https://lwn.net/Articles/663954/"
+    #:authors "Nathan Willis"
+    #:date (string->date "2015-11-18" "~Y-~m-~d"))
+   (publication
+    #:title "Security and reproducible-build progress in Guix 0.11"
+    #:url "https://lwn.net/Articles/696890/"
+    #:authors "Nathan Willis"
+    #:date (string->date "2016-08-10" "~Y-~m-~d"))
    (publication
     #:title "Code Staging in GNU Guix"
     #:url "https://arxiv.org/abs/1709.00833"

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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-28 11:06 ` Ludovic Courtès
@ 2021-05-28 15:20   ` Luis Felipe via Guix-patches via
  2021-05-29 10:25     ` Ludovic Courtès
  2021-06-02 19:31   ` Luis Felipe via Guix-patches via
  1 sibling, 1 reply; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-05-28 15:20 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 48637@debbugs.gnu.org

Hi Ludovic,

On Friday, May 28, 2021 11:06 AM, Ludovic Courtès <ludo@gnu.org> wrote:

> Hi Luis,
>
> Nice work! It’s now on-line:
>
> https://guix.gnu.org/en/publications/

Thanks.


> I see that you want to keep it open to non-academic publications, which
> is a good idea.

Yeah, I went with Julien's idea.


> I wonder if there should be a visual distinction
> between peer-reviewed scientific articles, journal articles, and other
> types of publications?

Yeah, now that you mention it, I think that would be good.


> I started adding historical LWN articles (patch below; the titles look
> funny in hindsight :-)), and wondered whether this was a good idea since
> they would come first in the list.
>
> Thoughts?
>
> We should call for contributions because I’m sure there are quite a few
> articles that would be worth adding.

Did you forget the patch? :)






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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-28 15:20   ` Luis Felipe via Guix-patches via
@ 2021-05-29 10:25     ` Ludovic Courtès
  0 siblings, 0 replies; 30+ messages in thread
From: Ludovic Courtès @ 2021-05-29 10:25 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 48637@debbugs.gnu.org

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

Hi,

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

>> I started adding historical LWN articles (patch below; the titles look
>> funny in hindsight :-)), and wondered whether this was a good idea since
>> they would come first in the list.
>>
>> Thoughts?
>>
>> We should call for contributions because I’m sure there are quite a few
>> articles that would be worth adding.
>
> Did you forget the patch? :)

Oops, here we go!

Ludo’.


[-- Attachment #2: Type: text/x-patch, Size: 1379 bytes --]

diff --git a/website/apps/media/data.scm b/website/apps/media/data.scm
index 8dbb035..fde5918 100644
--- a/website/apps/media/data.scm
+++ b/website/apps/media/data.scm
@@ -106,11 +106,26 @@ distribution."))
     #:url "https://arxiv.org/abs/1305.4584"
     #:authors "Ludovic Courtès"
     #:date (string->date "2013-05-20" "~Y-~m-~d"))
+   (publication
+    #:title "GNU Guix sports functional package management"
+    #:authors "Nathan Willis"
+    #:url "https://lwn.net/Articles/560857/"
+    #:date (string->date "2013-07-31" "~Y-~m-~d"))
    (publication
     #:title "Reproducible and User-Controlled Software Environments in HPC with Guix"
     #:url "https://hal.inria.fr/hal-01161771/en"
     #:authors (G_ "Ludovic Courtès, Ricardo Wurmus")
     #:date (string->date "2015-07-25" "~Y-~m-~d"))
+   (publication
+    #:title "Reproducible builds and standalone GNU systems with Guix 0.9"
+    #:url "https://lwn.net/Articles/663954/"
+    #:authors "Nathan Willis"
+    #:date (string->date "2015-11-18" "~Y-~m-~d"))
+   (publication
+    #:title "Security and reproducible-build progress in Guix 0.11"
+    #:url "https://lwn.net/Articles/696890/"
+    #:authors "Nathan Willis"
+    #:date (string->date "2016-08-10" "~Y-~m-~d"))
    (publication
     #:title "Code Staging in GNU Guix"
     #:url "https://arxiv.org/abs/1709.00833"

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

* [bug#48637] [PATCH] website: Add publications page
  2021-05-28 11:06 ` Ludovic Courtès
  2021-05-28 15:20   ` Luis Felipe via Guix-patches via
@ 2021-06-02 19:31   ` Luis Felipe via Guix-patches via
  2021-06-02 20:28     ` Julien Lepiller
  2021-06-03  9:40     ` Ludovic Courtès
  1 sibling, 2 replies; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-06-02 19:31 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 48637@debbugs.gnu.org

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

Hey,

On Friday, May 28, 2021 11:06 AM, Ludovic Courtès <ludo@gnu.org> wrote:

> I see that you want to keep it open to non-academic publications, which
> is a good idea. I wonder if there should be a visual distinction
> between peer-reviewed scientific articles, journal articles, and other
> types of publications?
>
> I started adding historical LWN articles (patch below; the titles look
> funny in hindsight :-)), and wondered whether this was a good idea since
> they would come first in the list.
>
> Thoughts?


Here is a patch that adds publication types.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-website-publications-Add-publication-type.patch --]
[-- Type: text/x-patch; name=0001-website-publications-Add-publication-type.patch, Size: 5831 bytes --]

From ef4e97ec9a49e65d70c9ba8d4c1926b2eeec2cba Mon Sep 17 00:00:00 2001
From: Luis Felipe <luis.felipe.la@protonmail.com>
Date: Wed, 2 Jun 2021 14:17:03 -0500
Subject: [PATCH] website: publications: Add publication type.

* website/apps/media/types.scm (<publication>): Add "type" field.
* website/apps/media/data.scm (publications): Specify publication types.
* website/apps/media/templates/components.scm (publication->shtml): Show
publication type.
---
 website/apps/media/data.scm                 | 21 ++++++++++++++-------
 website/apps/media/templates/components.scm |  8 +++++---
 website/apps/media/types.scm                | 15 +++++++++++----
 3 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/website/apps/media/data.scm b/website/apps/media/data.scm
index fc7854e..812f9e3 100644
--- a/website/apps/media/data.scm
+++ b/website/apps/media/data.scm
@@ -105,40 +105,47 @@ distribution."))
     #:title "Functional Package Management with Guix"
     #:url "https://arxiv.org/abs/1305.4584"
     #:authors "Ludovic Courtès"
-    #:date (string->date "2013-05-20" "~Y-~m-~d"))
+    #:date (string->date "2013-05-20" "~Y-~m-~d")
+    #:type (C_ "publication type" "Conference paper"))
    (publication
     #:title "Reproducible and User-Controlled Software Environments in HPC with Guix"
     #:url "https://hal.inria.fr/hal-01161771/en"
     #:authors (G_ "Ludovic Courtès, Ricardo Wurmus")
-    #:date (string->date "2015-07-25" "~Y-~m-~d"))
+    #:date (string->date "2015-07-25" "~Y-~m-~d")
+    #:type (C_ "publication type" "Conference paper"))
    (publication
     #:title "Code Staging in GNU Guix"
     #:url "https://arxiv.org/abs/1709.00833"
     #:authors "Ludovic Courtès"
-    #:date (string->date "2017-09-04" "~Y-~m-~d"))
+    #:date (string->date "2017-09-04" "~Y-~m-~d")
+    #:type (C_ "publication type" "Conference paper"))
    (publication
     #:title "Scientific Data Analysis Pipelines and Reproducibility"
     #:authors "Altuna Akalin"
     #:url "https://towardsdatascience.com/scientific-data-analysis-pipelines-and-reproducibility-75ff9df5b4c5"
-    #:date (string->date "2018-10-01" "~Y-~m-~d"))
+    #:date (string->date "2018-10-01" "~Y-~m-~d")
+    #:type (C_ "publication type" "Article"))
    (publication
     #:title "Reproducible Genomics Analysis Pipelines with GNU Guix"
     #:url "http://dx.doi.org/10.1093/gigascience/giy123"
     #:authors "Ricardo Wurmus, Bora Uyar, Brendan Osberg, Vedran Franke, \
 Alexander Gosdschan, Katarzyna Wreczycka, Jonathan Ronen, Altuna Akalin"
-    #:date (string->date "2018-10-02" "~Y-~m-~d"))
+    #:date (string->date "2018-10-02" "~Y-~m-~d")
+    #:type (C_ "publication type" "Journal article"))
    (publication
     #:title "Guix: A most advanced operating system"
     #:url "https://ambrevar.xyz/guix-advance/index.html"
     #:authors "Pierre Neidhardt"
-    #:date (string->date "2019-01-14" "~Y-~m-~d"))
+    #:date (string->date "2019-01-14" "~Y-~m-~d")
+    #:type (C_ "publication type" "Article"))
    (publication
     #:title "Scalable Workflows and Reproducible Data Analysis for Genomics"
     #:url "https://link.springer.com/protocol/10.1007%2F978-1-4939-9074-0_24"
     #:authors "Francesco Strozzi, Roel Janssen, Ricardo Wurmus, \
 Michael R. Crusoe, George Githinji, Paolo Di Tommaso, Dominique Belhachemi, \
 Steffen Möller, Geert Smant, Joep de Ligt, Pjotr Prins"
-    #:date (string->date "2019-07-06" "~Y-~m-~d"))))
+    #:date (string->date "2019-07-06" "~Y-~m-~d")
+    #:type (C_ "publication type" "Book chapter"))))
 
 
 (define screenshots
diff --git a/website/apps/media/templates/components.scm b/website/apps/media/templates/components.scm
index ce9d944..20fa3a9 100644
--- a/website/apps/media/templates/components.scm
+++ b/website/apps/media/templates/components.scm
@@ -46,9 +46,11 @@
 
       (p
        (@ (class "publication-info"))
-       ;; TRANSLATORS: <1/> is a date, and <2/> a list of authors.
-       ,(G_ `("Published " ,date " by "
-              ,(publication-authors publication) ""))))))
+       ;; TRANSLATORS: <1/> is a publication type, <2/> is a date, and
+       ;; <3/> is a list of authors.
+       ,(G_
+         `("" ,(publication-type publication) ". Published " ,date
+           " by " ,(publication-authors publication) ". "))))))
 
 
 (define (screenshot->shtml shot)
diff --git a/website/apps/media/types.scm b/website/apps/media/types.scm
index 579e642..2c219e5 100644
--- a/website/apps/media/types.scm
+++ b/website/apps/media/types.scm
@@ -11,6 +11,7 @@
             publication-date
             publication-language
             publication-title
+            publication-type
             publication-url
             screenshot
             screenshot?
@@ -66,20 +67,26 @@
 ;;;   IETF language tag corresponding to the language in which the
 ;;;   publication is written.
 ;;;
+;;; type (string)
+;;;   The kind of publication. See the list of publications in the
+;;;   (apps media data) module for examples.
+;;;
+;;;
 (define-record-type <publication>
-  (make-publication title url authors date language)
+  (make-publication title url authors date language type)
   publication?
   (title publication-title)
   (url publication-url)
   (authors publication-authors)
   (date publication-date)
-  (language publication-language))
+  (language publication-language)
+  (type publication-type))
 
 ;;; Helper procedures.
 
-(define* (publication #:key title url authors date (language "en"))
+(define* (publication #:key title url authors date (language "en") type)
   "Return a <publication> object with the given attributes."
-  (make-publication title url authors date language))
+  (make-publication title url authors date language type))
 
 
 ;;; Screenshot (record type)

base-commit: aa3ec5059f92ac5a0a47367cb886c87bb26d44fa
-- 
2.31.1


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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-02 19:31   ` Luis Felipe via Guix-patches via
@ 2021-06-02 20:28     ` Julien Lepiller
  2021-06-02 21:52       ` Luis Felipe via Guix-patches via
  2021-06-03  9:40     ` Ludovic Courtès
  1 sibling, 1 reply; 30+ messages in thread
From: Julien Lepiller @ 2021-06-02 20:28 UTC (permalink / raw)
  To: Luis Felipe, Ludovic Courtès; +Cc: 48637@debbugs.gnu.org

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

The patch looks good, but how would people out of science understand what's a conference paper, or the difference between an article and a journal article? Are there better terms?

Le 2 juin 2021 15:31:50 GMT-04:00, Luis Felipe via Guix-patches via <guix-patches@gnu.org> a écrit :
>Hey,
>
>On Friday, May 28, 2021 11:06 AM, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> I see that you want to keep it open to non-academic publications,
>which
>> is a good idea. I wonder if there should be a visual distinction
>> between peer-reviewed scientific articles, journal articles, and
>other
>> types of publications?
>>
>> I started adding historical LWN articles (patch below; the titles
>look
>> funny in hindsight :-)), and wondered whether this was a good idea
>since
>> they would come first in the list.
>>
>> Thoughts?
>
>
>Here is a patch that adds publication types.

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-02 20:28     ` Julien Lepiller
@ 2021-06-02 21:52       ` Luis Felipe via Guix-patches via
  2021-06-02 23:28         ` Julien Lepiller
  0 siblings, 1 reply; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-06-02 21:52 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: Ludovic Courtès, 48637@debbugs.gnu.org

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

On Wednesday, June 2, 2021 8:28 PM, Julien Lepiller <julien@lepiller.eu> wrote:

> The patch looks good, but how would people out of science understand what's a conference paper, or the difference between an article and a journal article? Are there better terms?

I don't know. As an outsider those terms sound alright to me :) And maybe when people click on the links the difference becomes clearer. But yeah, I don't know :)

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-02 21:52       ` Luis Felipe via Guix-patches via
@ 2021-06-02 23:28         ` Julien Lepiller
  0 siblings, 0 replies; 30+ messages in thread
From: Julien Lepiller @ 2021-06-02 23:28 UTC (permalink / raw)
  To: Luis Felipe; +Cc: Ludovic Courtès, 48637@debbugs.gnu.org

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

Ah, it's fine, I don't mean to delay applying the patch if the terms are good enough :)

Le 2 juin 2021 17:52:13 GMT-04:00, Luis Felipe <luis.felipe.la@protonmail.com> a écrit :
>On Wednesday, June 2, 2021 8:28 PM, Julien Lepiller
><julien@lepiller.eu> wrote:
>
>> The patch looks good, but how would people out of science understand
>what's a conference paper, or the difference between an article and a
>journal article? Are there better terms?
>
>I don't know. As an outsider those terms sound alright to me :) And
>maybe when people click on the links the difference becomes clearer.
>But yeah, I don't know :)

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-02 19:31   ` Luis Felipe via Guix-patches via
  2021-06-02 20:28     ` Julien Lepiller
@ 2021-06-03  9:40     ` Ludovic Courtès
  2021-06-03 10:37       ` Julien Lepiller
  1 sibling, 1 reply; 30+ messages in thread
From: Ludovic Courtès @ 2021-06-03  9:40 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 48637@debbugs.gnu.org

Hello!

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

> On Friday, May 28, 2021 11:06 AM, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> I see that you want to keep it open to non-academic publications, which
>> is a good idea. I wonder if there should be a visual distinction
>> between peer-reviewed scientific articles, journal articles, and other
>> types of publications?

[...]

> From ef4e97ec9a49e65d70c9ba8d4c1926b2eeec2cba Mon Sep 17 00:00:00 2001
> From: Luis Felipe <luis.felipe.la@protonmail.com>
> Date: Wed, 2 Jun 2021 14:17:03 -0500
> Subject: [PATCH] website: publications: Add publication type.
>
> * website/apps/media/types.scm (<publication>): Add "type" field.
> * website/apps/media/data.scm (publications): Specify publication types.
> * website/apps/media/templates/components.scm (publication->shtml): Show
> publication type.

Pushed, thanks!

Julien Lepiller <julien@lepiller.eu> skribis:

> The patch looks good, but how would people out of science understand what's a conference paper, or the difference between an article and a journal article? Are there better terms?

I was wondering whether we should just distinguish between “scientific
papers” (peer-reviewed, be it conference papers, journals, or book
chapters) and other publications.

Perhaps a visual cue for scientific publications, such as an English
graduate cap, would be enough?

Ludo’.




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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-03  9:40     ` Ludovic Courtès
@ 2021-06-03 10:37       ` Julien Lepiller
  2021-06-03 13:39         ` Luis Felipe via Guix-patches via
  0 siblings, 1 reply; 30+ messages in thread
From: Julien Lepiller @ 2021-06-03 10:37 UTC (permalink / raw)
  To: Ludovic Courtès, Luis Felipe; +Cc: 48637@debbugs.gnu.org

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

Yeah, good idea, though we need to make it accessible (alt="scientific" or something).

Le 3 juin 2021 05:40:49 GMT-04:00, "Ludovic Courtès" <ludo@gnu.org> a écrit :
>Hello!
>
>Luis Felipe <luis.felipe.la@protonmail.com> skribis:
>
>> On Friday, May 28, 2021 11:06 AM, Ludovic Courtès <ludo@gnu.org>
>wrote:
>>
>>> I see that you want to keep it open to non-academic publications,
>which
>>> is a good idea. I wonder if there should be a visual distinction
>>> between peer-reviewed scientific articles, journal articles, and
>other
>>> types of publications?
>
>[...]
>
>> From ef4e97ec9a49e65d70c9ba8d4c1926b2eeec2cba Mon Sep 17 00:00:00
>2001
>> From: Luis Felipe <luis.felipe.la@protonmail.com>
>> Date: Wed, 2 Jun 2021 14:17:03 -0500
>> Subject: [PATCH] website: publications: Add publication type.
>>
>> * website/apps/media/types.scm (<publication>): Add "type" field.
>> * website/apps/media/data.scm (publications): Specify publication
>types.
>> * website/apps/media/templates/components.scm (publication->shtml):
>Show
>> publication type.
>
>Pushed, thanks!
>
>Julien Lepiller <julien@lepiller.eu> skribis:
>
>> The patch looks good, but how would people out of science understand
>what's a conference paper, or the difference between an article and a
>journal article? Are there better terms?
>
>I was wondering whether we should just distinguish between “scientific
>papers” (peer-reviewed, be it conference papers, journals, or book
>chapters) and other publications.
>
>Perhaps a visual cue for scientific publications, such as an English
>graduate cap, would be enough?
>
>Ludo’.

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-03 10:37       ` Julien Lepiller
@ 2021-06-03 13:39         ` Luis Felipe via Guix-patches via
  2021-06-03 19:50           ` Luis Felipe via Guix-patches via
  2021-06-03 20:37           ` Ludovic Courtès
  0 siblings, 2 replies; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-06-03 13:39 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: Ludovic Courtès, 48637@debbugs.gnu.org

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

On Thursday, June 3, 2021 10:37 AM, Julien Lepiller <julien@lepiller.eu> wrote:

> Yeah, good idea, though we need to make it accessible (alt="scientific" or something).

So, a publication is either scientific or not, right? So just add "publication-scientific?", right?

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

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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-03 13:39         ` Luis Felipe via Guix-patches via
@ 2021-06-03 19:50           ` Luis Felipe via Guix-patches via
  2021-06-03 20:37           ` Ludovic Courtès
  1 sibling, 0 replies; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-06-03 19:50 UTC (permalink / raw)
  To: Julien Lepiller; +Cc: Ludovic Courtès, 48637@debbugs.gnu.org


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

On Thursday, June 3, 2021 1:39 PM, Luis Felipe <luis.felipe.la@protonmail.com> wrote:

> On Thursday, June 3, 2021 10:37 AM, Julien Lepiller <julien@lepiller.eu> wrote:
>
>> Yeah, good idea, though we need to make it accessible (alt="scientific" or something).
>
> So, a publication is either scientific or not, right? So just add "publication-scientific?", right?

I went ahead and added that "publication-scientific?" field and the suggested cap to scientific publications (patch attached). Let me know what you think.

[-- Attachment #1.2: Type: text/html, Size: 777 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-website-publications-Add-scientific-publication-mark.patch --]
[-- Type: text/x-patch; name=0001-website-publications-Add-scientific-publication-mark.patch, Size: 11113 bytes --]

From eea05bba2778e9b968a13ba30d64c1b6b4f60bf6 Mon Sep 17 00:00:00 2001
From: Luis Felipe <luis.felipe.la@protonmail.com>
Date: Thu, 3 Jun 2021 14:22:14 -0500
Subject: [PATCH] website: publications: Add scientific publication mark.

* website/apps/media/types.scm (<publication>): Add "scientific?" field.
* website/apps/media/data.scm (publications): Use the new field.
* website/apps/media/templates/components.scm (publication->shtml): Show
graduate cap for scientific publications.
* website/static/media/css/publications.css (.scientific-mark): New
class.
* website/static/media/img/scientific-mark.svg: New image.
---
 website/apps/media/data.scm                  |   3 +-
 website/apps/media/templates/components.scm  |  12 ++
 website/apps/media/types.scm                 |  14 +-
 website/static/media/css/publications.css    |   7 +
 website/static/media/img/scientific-mark.svg | 154 +++++++++++++++++++
 5 files changed, 185 insertions(+), 5 deletions(-)
 create mode 100644 website/static/media/img/scientific-mark.svg

diff --git a/website/apps/media/data.scm b/website/apps/media/data.scm
index 812f9e3..079a6d3 100644
--- a/website/apps/media/data.scm
+++ b/website/apps/media/data.scm
@@ -137,7 +137,8 @@ Alexander Gosdschan, Katarzyna Wreczycka, Jonathan Ronen, Altuna Akalin"
     #:url "https://ambrevar.xyz/guix-advance/index.html"
     #:authors "Pierre Neidhardt"
     #:date (string->date "2019-01-14" "~Y-~m-~d")
-    #:type (C_ "publication type" "Article"))
+    #:type (C_ "publication type" "Article")
+    #:scientific? #false)
    (publication
     #:title "Scalable Workflows and Reproducible Data Analysis for Genomics"
     #:url "https://link.springer.com/protocol/10.1007%2F978-1-4939-9074-0_24"
diff --git a/website/apps/media/templates/components.scm b/website/apps/media/templates/components.scm
index 20fa3a9..a1a6072 100644
--- a/website/apps/media/templates/components.scm
+++ b/website/apps/media/templates/components.scm
@@ -42,6 +42,18 @@
       (h3
        (@ (lang ,(publication-language publication))
           (class "publication-title"))
+       ,(if (publication-scientific? publication)
+            `((img
+               (@ (class "scientific-mark")
+                  (src ,(guix-url "static/media/img/scientific-mark.svg"))
+                  ;; TRANSLATORS: This is a tag that indicates a
+                  ;; publication is scientific.
+                  (alt ,(G_ "[Scientific]"))
+                  ;; TRANSLATORS: This is a help text indicating a
+                  ;; publication is scientific.
+                  (title ,(G_ "Scientific"))))
+              " ")
+            "")
        ,(publication-title publication))
 
       (p
diff --git a/website/apps/media/types.scm b/website/apps/media/types.scm
index 2c219e5..ac9bbda 100644
--- a/website/apps/media/types.scm
+++ b/website/apps/media/types.scm
@@ -8,6 +8,7 @@
   #:export (publication
             publication?
             publication-authors
+            publication-scientific?
             publication-date
             publication-language
             publication-title
@@ -71,22 +72,27 @@
 ;;;   The kind of publication. See the list of publications in the
 ;;;   (apps media data) module for examples.
 ;;;
+;;; scientific? (boolean)
+;;;   Whether the publication is scientific or not.
+;;;
 ;;;
 (define-record-type <publication>
-  (make-publication title url authors date language type)
+  (make-publication title url authors date language type scientific?)
   publication?
   (title publication-title)
   (url publication-url)
   (authors publication-authors)
   (date publication-date)
   (language publication-language)
-  (type publication-type))
+  (type publication-type)
+  (scientific? publication-scientific?))
 
 ;;; Helper procedures.
 
-(define* (publication #:key title url authors date (language "en") type)
+(define* (publication #:key title url authors date (language "en") type
+                      (scientific? #true))
   "Return a <publication> object with the given attributes."
-  (make-publication title url authors date language type))
+  (make-publication title url authors date language type scientific?))
 
 
 ;;; Screenshot (record type)
diff --git a/website/static/media/css/publications.css b/website/static/media/css/publications.css
index 797918f..11a8542 100644
--- a/website/static/media/css/publications.css
+++ b/website/static/media/css/publications.css
@@ -33,3 +33,10 @@
 .publication-info {
     margin-bottom: 0px;
 }
+
+.scientific-mark {
+    display: inline-block;
+    cursor: help;
+    height: 28px;
+    width: 28px;
+}
diff --git a/website/static/media/img/scientific-mark.svg b/website/static/media/img/scientific-mark.svg
new file mode 100644
index 0000000..d301307
--- /dev/null
+++ b/website/static/media/img/scientific-mark.svg
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="180"
+   height="180"
+   id="svg2"
+   version="1.1"
+   inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+   sodipodi:docname="scientific-mark.svg"
+   inkscape:export-filename="manual-latest-icon.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="338.63228"
+     inkscape:cy="-97.758331"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:showpageshadow="false"
+     inkscape:snap-global="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:document-rotation="0"
+     inkscape:snap-grids="false"
+     inkscape:snap-to-guides="false"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-page="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3245"
+       empspacing="1"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="100"
+       spacingy="100"
+       originx="40"
+       originy="40" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Cap"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-872.36218)">
+    <path
+       id="rect240"
+       style="fill:#333333;fill-opacity:1;stroke-width:1.99999"
+       d="M 90.000198,939.32109 5.5123166,969.80392 v 4.56318 l 42.5012864,15.33389 v 32.52601 h 0.01118 a 42.779802,11.407948 0 0 0 42.768622,11.1763 42.779802,11.407948 0 0 0 42.770885,-11.1763 h 0.008 v -33.09864 l 40.91539,-14.76126 v -4.56318 z m 0.494643,5.18926 -77.050437,30.24445 -4.1509766,-1.68669 z m -3.328805,20.4452 c 0.202755,-4.6e-4 0.405519,-4.6e-4 0.608275,0 18.149719,-3.6e-4 34.458049,3.62068 41.133229,9.13302 -8.25757,-3.90965 -21.87171,-6.24378 -36.414081,-6.24316 -7.194884,3.6e-4 -14.280885,0.57398 -20.643484,1.67107 v 39.96792 c -5.644696,0.7436 -10.700536,2.001 -14.525079,3.5828 v -39.53564 c -5.876691,2.51653 -9.060375,5.59376 -9.061743,8.75872 2.96e-4,0.20282 0.01367,0.40563 0.04011,0.60828 v 3.01909 c -3.127233,-2.01991 -4.757427,-4.25157 -4.759253,-6.51501 -0.004,-7.90175 19.430896,-14.33837 43.622026,-14.44709 z m 3.014639,50.85215 a 33.418522,6.440439 0 0 1 0.612731,0 33.418522,6.440439 0 0 1 33.419484,6.4417 33.418522,6.440439 0 0 1 -33.419484,6.4392 33.418522,6.440439 0 0 1 -33.417264,-6.4392 33.418522,6.440439 0 0 1 32.804533,-6.4417 z" />
+    <g
+       transform="translate(-1160.0177,610.69615)"
+       inkscape:label="referencia"
+       id="layer2-3" />
+    <g
+       inkscape:label="Layer 1"
+       id="g3194"
+       transform="translate(-381.66039,1217.4341)" />
+    <g
+       id="layer2"
+       inkscape:label="referencia"
+       transform="translate(-577.51401,231.92014)"
+       sodipodi:insensitive="true" />
+    <g
+       transform="translate(200.84331,838.65809)"
+       id="g3194-5"
+       inkscape:label="Layer 1" />
+    <g
+       inkscape:label="Layer 1"
+       id="g7737"
+       transform="translate(415.21682,1076.3667)" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Bitstream Vera Sans';fill:#000000;fill-opacity:1;stroke:none"
+       x="-225.51039"
+       y="1257.8601"
+       id="text3665"><tspan
+         sodipodi:role="line"
+         id="tspan3667"
+         x="-225.51039"
+         y="1257.8601"
+         style="font-size:40px;line-height:1.25"> </tspan></text>
+    <circle
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:2"
+       id="path256"
+       cx="161.13716"
+       cy="994.64807"
+       r="4.4626188" />
+    <path
+       id="rect258"
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:2"
+       d="m 159.53711,1001.2723 c -2.216,0 -3.80552,1.3775 -4,3.0723 l -2,17.4277 c -0.19448,1.6947 1.784,3.0723 4,3.0723 h 7.19922 c 2.216,0 4.19448,-1.3776 4,-3.0723 l -2,-17.4277 c -0.19448,-1.6948 -1.784,-3.0723 -4,-3.0723 z m -0.11914,2.334 -1.125,19.0254 c -1.15101,0 -1.46128,0.136 -2.22852,-0.834 l 2.12891,-16.8164 z" />
+    <path
+       id="rect263"
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:2"
+       d="m 159.35468,983.98439 3.56496,-1.28041 V 990.92 h -3.56496 z"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>

base-commit: 89dffa68995c39261b0bf30466a982c42294fd48
-- 
2.31.1


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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-03 13:39         ` Luis Felipe via Guix-patches via
  2021-06-03 19:50           ` Luis Felipe via Guix-patches via
@ 2021-06-03 20:37           ` Ludovic Courtès
  2021-06-03 21:50             ` Luis Felipe via Guix-patches via
  1 sibling, 1 reply; 30+ messages in thread
From: Ludovic Courtès @ 2021-06-03 20:37 UTC (permalink / raw)
  To: Luis Felipe; +Cc: Julien Lepiller, 48637@debbugs.gnu.org

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

> On Thursday, June 3, 2021 10:37 AM, Julien Lepiller <julien@lepiller.eu> wrote:
>
>> Yeah, good idea, though we need to make it accessible (alt="scientific" or something).
>
> So, a publication is either scientific or not, right? So just add "publication-scientific?", right?

We can keep the categories you added, but I suppose only scientists care
about the difference between “conference article” and “journal article”.
:-)  For the rest of us, “academic” vs. “non-academic” is probably what
matters, and this is where a visual cue could help.

WDYT?

Ludo’.




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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-03 20:37           ` Ludovic Courtès
@ 2021-06-03 21:50             ` Luis Felipe via Guix-patches via
  2021-06-04 15:38               ` Ludovic Courtès
  0 siblings, 1 reply; 30+ messages in thread
From: Luis Felipe via Guix-patches via @ 2021-06-03 21:50 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Julien Lepiller, 48637@debbugs.gnu.org

On Thursday, June 3, 2021 8:37 PM, Ludovic Courtès <ludo@gnu.org> wrote:

> Luis Felipe luis.felipe.la@protonmail.com skribis:
>
> > On Thursday, June 3, 2021 10:37 AM, Julien Lepiller julien@lepiller.eu wrote:
> >
> > > Yeah, good idea, though we need to make it accessible (alt="scientific" or something).
> >
> > So, a publication is either scientific or not, right? So just add "publication-scientific?", right?
>
> We can keep the categories you added, but I suppose only scientists care
> about the difference between “conference article” and “journal article”.
> :-) For the rest of us, “academic” vs. “non-academic” is probably what
> matters, and this is where a visual cue could help.
>
> WDYT?

So, you mean something like the following would suffice?

https://luis-felipe.gitlab.io/media/2021/06/guix-academic-publications-2021-06-03%2016-39-11.png

Personally, I'm fine with or without any of these distinctions because once you click on an article you can see how formal the article is. But I can provide a patch to make things look like in the image.




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

* [bug#48637] [PATCH] website: Add publications page
  2021-06-03 21:50             ` Luis Felipe via Guix-patches via
@ 2021-06-04 15:38               ` Ludovic Courtès
  0 siblings, 0 replies; 30+ messages in thread
From: Ludovic Courtès @ 2021-06-04 15:38 UTC (permalink / raw)
  To: Luis Felipe; +Cc: Julien Lepiller, 48637@debbugs.gnu.org

Hi,

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

> So, you mean something like the following would suffice?
>
> https://luis-felipe.gitlab.io/media/2021/06/guix-academic-publications-2021-06-03%2016-39-11.png

Yes.

> I went ahead and added that "publication-scientific?" field and the suggested cap to scientific publications (patch attached). Let me know what you think.

Awesome, pushed!

Thanks for the quick reply and pleasant result!

Ludo’.




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

end of thread, other threads:[~2021-06-04 15:39 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-24 23:35 [bug#48637] [PATCH] website: Add publications page Luis Felipe via Guix-patches via
2021-05-25 13:44 ` pelzflorian (Florian Pelz)
2021-05-25 14:37   ` Luis Felipe via Guix-patches via
2021-05-25 18:21     ` pelzflorian (Florian Pelz)
2021-05-25 19:46       ` Luis Felipe via Guix-patches via
2021-05-25 19:58         ` Julien Lepiller
2021-05-25 20:16           ` Luis Felipe via Guix-patches via
2021-05-26  2:03             ` Julien Lepiller
2021-05-26 10:00               ` pelzflorian (Florian Pelz)
2021-05-26 14:06                 ` Luis Felipe via Guix-patches via
2021-05-26 17:41                   ` Julien Lepiller
2021-05-26 18:25                     ` Luis Felipe via Guix-patches via
2021-05-26 18:42                       ` Julien Lepiller
2021-05-26 19:05                         ` Luis Felipe via Guix-patches via
2021-05-25 18:35     ` pelzflorian (Florian Pelz)
2021-05-25 19:14       ` Luis Felipe via Guix-patches via
2021-05-28 11:06 ` Ludovic Courtès
2021-05-28 15:20   ` Luis Felipe via Guix-patches via
2021-05-29 10:25     ` Ludovic Courtès
2021-06-02 19:31   ` Luis Felipe via Guix-patches via
2021-06-02 20:28     ` Julien Lepiller
2021-06-02 21:52       ` Luis Felipe via Guix-patches via
2021-06-02 23:28         ` Julien Lepiller
2021-06-03  9:40     ` Ludovic Courtès
2021-06-03 10:37       ` Julien Lepiller
2021-06-03 13:39         ` Luis Felipe via Guix-patches via
2021-06-03 19:50           ` Luis Felipe via Guix-patches via
2021-06-03 20:37           ` Ludovic Courtès
2021-06-03 21:50             ` Luis Felipe via Guix-patches via
2021-06-04 15:38               ` Ludovic Courtès

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.