summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-04-14 23:17:37 +0200
committerLudovic Courtès <ludo@gnu.org>2021-04-14 23:39:24 +0200
commit09e3c8bff91e9af7dbce3ecc7e585e1df7c0c0ae (patch)
tree57dc825895961255b3c76fb1aba9cd2ba67fbf86
parentsoftware: Guarantee person pointer identity (!). (diff)
Add /people.
* projects.scm: New file, with code formerly... * software.sxml: ... here. Include it. * people.sxml: New file. * haunt.scm (static-pages): Add it. * posts/kickoff.md, index.md: Refer to it.
-rw-r--r--haunt.scm2
-rw-r--r--index.md2
-rw-r--r--people.sxml49
-rw-r--r--posts/kickoff.md2
-rw-r--r--projects.scm224
-rw-r--r--software.sxml226
6 files changed, 278 insertions, 227 deletions
diff --git a/haunt.scm b/haunt.scm
index 1b0bd04..b0f917a 100644
--- a/haunt.scm
+++ b/haunt.scm
@@ -160,6 +160,8 @@ representation."
160 160
161 (sxml-page "/en/software/index.html" 161 (sxml-page "/en/software/index.html"
162 "software.sxml") 162 "software.sxml")
163 (sxml-page "/en/people/index.html"
164 "people.sxml")
163 (markdown-page "/en/documents/index.html" 165 (markdown-page "/en/documents/index.html"
164 "documents.md") 166 "documents.md")
165 (markdown-page "/en/contribute/index.html" 167 (markdown-page "/en/contribute/index.html"
diff --git a/index.md b/index.md
index 59f5112..c553f46 100644
--- a/index.md
+++ b/index.md
@@ -7,7 +7,7 @@ frontpage: yes
7Here’s what “GNU” means to us: 7Here’s what “GNU” means to us:
8 8
9 - Gathering under a New Umbrella — 9 - Gathering under a New Umbrella —
10 [We](https://wiki.gnu.tools/gnu:social-contract-endorsement), 10 [We](/en/people),
11 maintainers and contributors of [well-known free software 11 maintainers and contributors of [well-known free software
12 projects](/en/software) are making this place our new home, fighting 12 projects](/en/software) are making this place our new home, fighting
13 for the freedom of computer users and hacking the good hack. 13 for the freedom of computer users and hacking the good hack.
diff --git a/people.sxml b/people.sxml
new file mode 100644
index 0000000..e9ab88b
--- /dev/null
+++ b/people.sxml
@@ -0,0 +1,49 @@
1(use-modules (srfi srfi-1))
2
3(include "projects.scm")
4
5(define %members
6 ;; List of member/projects tuples.
7 (let ((table (make-hash-table eq? hashq)))
8 (hash-table-fold %projects
9 (lambda (key project lst)
10 (for-each (lambda (member)
11 (let ((projects (hash-table-ref/default
12 table member '())))
13 (hash-table-set! table member
14 (cons project
15 projects))))
16 (project-members project)))
17 '())
18 (sort (delete-duplicates
19 (hash-table-fold table alist-cons '()))
20 (match-lambda*
21 (((member1 . _) (member2 . _))
22 (string<? (person-name member1)
23 (person-name member2)))))))
24
25`((title . "Software")
26 (author . "The GNU Assembly")
27 (date . ,(string->date* "2021-04-14 23:00"))
28
29 (content
30 ((h2 "People")
31 (p "The following maintainers and contributors participate in "
32 "the GNU Assembly and have endorsed the "
33 (a (@ (href "/en/documents/social-contract"))
34 "Social Contract") ":")
35
36 (ul ;; (@ (class "projects"))
37 ,@(map (match-lambda
38 ((person projects ...)
39 `(li (@ (class "person"))
40 ,(let ((home-page (person-url person)))
41 (if home-page
42 `(a (@ (href ,home-page))
43 ,(person-name person))
44 (person-name person)))
45 " ("
46 ,(string-join (map project-name projects)
47 ", ")
48 ")")))
49 %members)))))
diff --git a/posts/kickoff.md b/posts/kickoff.md
index 8fa1d15..869475c 100644
--- a/posts/kickoff.md
+++ b/posts/kickoff.md
@@ -75,6 +75,6 @@ list](https://lists.gnu.tools/hyperkitty/list/assembly@lists.gnu.tools/)
75is where this group discusses its organization, including 75is where this group discusses its organization, including
76[governance](/en/documents/governance). 76[governance](/en/documents/governance).
77 77
78Currently, the GNU Assembly consists of maintainers and developers from 78Currently, the GNU Assembly consists of [maintainers and developers](/en/people) from
79about [30 packages](/en/software)—old and young, small and big. You too 79about [30 packages](/en/software)—old and young, small and big. You too
80can [join us](/en/contribute)! 80can [join us](/en/contribute)!
diff --git a/projects.scm b/projects.scm
new file mode 100644
index 0000000..9551582
--- /dev/null
+++ b/projects.scm
@@ -0,0 +1,224 @@
1(use-modules (ice-9 match)
2 (srfi srfi-9)
3 (srfi srfi-69)
4 (haunt utils))
5
6(define-record-type <project>
7 (project id name url logo members)
8 project?
9 (id project-id)
10 (name project-name)
11 (url project-url)
12 (logo project-logo)
13 (members project-members set-project-members!))
14
15(define-record-type <person>
16 (make-person name url avatar)
17 person?
18 (name person-name)
19 (url person-url)
20 (avatar person-avatar))
21
22(define* (person name #:optional url avatar)
23 (make-person name url avatar))
24
25(define %projects
26 (let ((table (make-hash-table))
27 (placeholder-logo "/static/images/logos/placeholder.svg"))
28 (for-each
29 (match-lambda
30 ((id name url logo)
31 (hash-table-set! table id
32 (project id name url logo (list))))
33 ((id name url)
34 (hash-table-set! table id
35 (project id name url placeholder-logo (list)))))
36 '((8sync
37 "8sync"
38 "https://www.gnu.org/software/8sync/"
39 "/static/images/logos/8sync.png")
40 (adns
41 "GNU adns"
42 "https://www.gnu.org/software/adns/")
43 (archimedes
44 "GNU Archimedes"
45 "https://www.gnu.org/software/archimedes/")
46 (binutils
47 "binutils"
48 "https://www.gnu.org/software/binutils/")
49 (classpath
50 "GNU Classpath"
51 "https://www.gnu.org/software/classpath/")
52 (dominion
53 "GNU Dominion"
54 "https://savannah.gnu.org/projects/dominion")
55 (gcc
56 "GNU Compiler Collection (GCC)"
57 "https://gcc.gnu.org"
58 "/static/images/logos/gcc.png")
59 (gdb
60 "GDB"
61 "https://www.gnu.org/software/gdb/"
62 "/static/images/logos/gdb.svg")
63 (glibc
64 "GNU C Library"
65 "https://www.gnu.org/software/libc/"
66 "/static/images/logos/glibc.jpg")
67 (gneural
68 "GNU Gneural Network"
69 "https://www.gnu.org/software/gneuralnetwork/"
70 "/static/images/logos/gneural_network.png")
71 (gnucobol
72 "GnuCOBOL"
73 "https://gnucobol.sourceforge.io/"
74 "/static/images/logos/gnucobol.png")
75 (gnupg
76 "GnuPG"
77 "https://gnupg.org"
78 "/static/images/logos/gnupg.png")
79 (gsl
80 "GNU Scientific Library"
81 "https://www.gnu.org/software/gsl/")
82 (guile
83 "GNU Guile"
84 "https://www.gnu.org/software/guile/"
85 "/static/images/logos/guile.svg")
86 (guile-debbugs
87 "Guile-Debbugs"
88 "https://savannah.gnu.org/projects/guile-debbugs/"
89 "/static/images/logos/guile.svg")
90 (guile-gnome
91 "Guile-GNOME"
92 "https://www.gnu.org/software/guile-gnome/"
93 "/static/images/logos/guile.svg")
94 (guile-opengl
95 "Guile-OpenGL"
96 "https://www.gnu.org/software/guile-opengl/"
97 "/static/images/logos/guile.svg")
98 (guile-rpc
99 "GNU Guile-RPC"
100 "https://www.gnu.org/software/guile-rpc/"
101 "/static/images/logos/guile.svg")
102 (guix
103 "GNU Guix"
104 "https://guix.gnu.org"
105 "/static/images/logos/guix.png")
106 (gwl
107 "Guix Workflow Language"
108 "https://guixwl.org"
109 "/static/images/logos/gwl.png")
110 (hurd
111 "GNU Hurd"
112 "https://hurd.gnu.org"
113 "/static/images/logos/hurd.png")
114 (indent
115 "GNU indent"
116 "https://www.gnu.org/software/indent/")
117 (libgcrypt
118 "GNU Libgcrypt"
119 "https://gnupg.org/related_software/libgcrypt/"
120 "/static/images/logos/gnupg.png")
121 (libtasn1
122 "GNU Libtasn1"
123 "https://www.gnu.org/software/libtasn1/")
124 (lilypond
125 "GNU LilyPond"
126 "https://lilypond.org/"
127 "/static/images/logos/lilypond.png")
128 (liquid-war-6
129 "Liquid War 6"
130 "https://www.gnu.org/software/liquidwar6/")
131 (mcsim
132 "GNU MCSim"
133 "https://www.gnu.org/software/mcsim/"
134 "/static/images/logos/mcsim.png")
135 (mediagoblin
136 "GNU MediaGoblin"
137 "https://mediagoblin.org/"
138 "/static/images/logos/mediagoblin.svg")
139 (mes
140 "GNU Mes"
141 "https://www.gnu.org/software/mes/")
142 (mpc
143 "GNU MPC"
144 "http://www.multiprecision.org/mpc/")
145 (nano-archimedes
146 "GNU Nano-Archimedes"
147 "https://www.gnu.org/software/archimedes/")
148 (shepherd
149 "GNU Shepherd"
150 "https://www.gnu.org/software/shepherd/")
151 (source-highlight
152 "GNU Source Highlight"
153 "https://www.gnu.org/software/src-highlite/")
154 (userv
155 "GNU userv"
156 "https://www.gnu.org/software/userv/")))
157 table))
158
159(define-syntax-rule (define-member person projects ...)
160 (let ((p person))
161 (for-each (lambda (project-id)
162 (let ((project
163 (hash-table-ref %projects project-id
164 (lambda ()
165 (error (format #false
166 "Unknown project ~a for ~a~%"
167 project-id name))))))
168 (set-project-members!
169 project (cons p (project-members project)))))
170 (quote (projects ...)))))
171
172(define-member (person "Carlos O'Donell")
173 glibc gcc)
174(define-member (person "Mark J. Wielaard"
175 "https://gnu.wildebeest.org/blog/mjw/")
176 classpath gcc glibc)
177(define-member (person "Andy Wingo"
178 "https://wingolog.org")
179 guile guile-gnome guile-opengl)
180(define-member (person "Ludovic Courtès"
181 "https://people.bordeaux.inria.fr/lcourtes/")
182 guix guile shepherd guile-rpc)
183(define-member (person "Frederic Y. Bois")
184 mcsim)
185(define-member (person "Andrej Shadura")
186 indent)
187(define-member (person "Werner Koch")
188 gnupg libgcrypt)
189(define-member (person "Mark Galassi")
190 gsl dominion)
191(define-member (person "Jean Michel Sellier")
192 archimedes nano-archimedes gneural)
193(define-member (person "Christopher Webber"
194 "https://dustycloud.org")
195 8sync mediagoblin)
196(define-member (person "Ian Jackson")
197 adns userv)
198(define-member (person "Samuel Thibault")
199 hurd)
200(define-member (person "Jan Nieuwenhuizen")
201 mes lilypond)
202(define-member (person "Christian Mauduit")
203 liquid-war-6)
204(define-member (person "Nikos Mavrogiannopoulos")
205 libtasn1)
206(define-member (person "Andreas Enge")
207 mpc)
208(define-member (person "Han-Wen Nienhuys")
209 lilypond)
210(define-member (person "Tobias Geerinckx-Rice")
211 guix)
212(define-member (person "Bernard Giroud")
213 gnucobol)
214(define-member (person "Tom Tromey")
215 source-highlight)
216(define-member (person "Jeff Law")
217 gcc)
218(define-member (person "David Malcolm")
219 gcc)
220(define-member (person "Ricardo Wurmus"
221 "https://elephly.net")
222 guix gwl guile-debbugs)
223(define-member (person "Marius Bakke")
224 guix)
diff --git a/software.sxml b/software.sxml
index cc6a308..9942eb7 100644
--- a/software.sxml
+++ b/software.sxml
@@ -1,228 +1,4 @@
1(use-modules (ice-9 match) 1(include "projects.scm")
2 (srfi srfi-9)
3 (srfi srfi-69)
4 (haunt utils))
5
6(define-record-type <project>
7 (project id name url logo members)
8 project?
9 (id project-id)
10 (name project-name)
11 (url project-url)
12 (logo project-logo)
13 (members project-members set-project-members!))
14
15(define-record-type <person>
16 (make-person name url avatar)
17 person?
18 (name person-name)
19 (url person-url)
20 (avatar person-avatar))
21
22(define* (person name #:optional url avatar)
23 (make-person name url avatar))
24
25(define %projects
26 (let ((table (make-hash-table))
27 (placeholder-logo "/static/images/logos/placeholder.svg"))
28 (for-each
29 (match-lambda
30 ((id name url logo)
31 (hash-table-set! table id
32 (project id name url logo (list))))
33 ((id name url)
34 (hash-table-set! table id
35 (project id name url placeholder-logo (list)))))
36 '((8sync
37 "8sync"
38 "https://www.gnu.org/software/8sync/"
39 "/static/images/logos/8sync.png")
40 (adns
41 "GNU adns"
42 "https://www.gnu.org/software/adns/")
43 (archimedes
44 "GNU Archimedes"
45 "https://www.gnu.org/software/archimedes/")
46 (binutils
47 "binutils"
48 "https://www.gnu.org/software/binutils/")
49 (classpath
50 "GNU Classpath"
51 "https://www.gnu.org/software/classpath/")
52 (dominion
53 "GNU Dominion"
54 "https://savannah.gnu.org/projects/dominion")
55 (gcc
56 "GNU Compiler Collection (GCC)"
57 "https://gcc.gnu.org"
58 "/static/images/logos/gcc.png")
59 (gdb
60 "GDB"
61 "https://www.gnu.org/software/gdb/"
62 "/static/images/logos/gdb.svg")
63 (glibc
64 "GNU C Library"
65 "https://www.gnu.org/software/libc/"
66 "/static/images/logos/glibc.jpg")
67 (gneural
68 "GNU Gneural Network"
69 "https://www.gnu.org/software/gneuralnetwork/"
70 "/static/images/logos/gneural_network.png")
71 (gnucobol
72 "GnuCOBOL"
73 "https://gnucobol.sourceforge.io/"
74 "/static/images/logos/gnucobol.png")
75 (gnupg
76 "GnuPG"
77 "https://gnupg.org"
78 "/static/images/logos/gnupg.png")
79 (gsl
80 "GNU Scientific Library"
81 "https://www.gnu.org/software/gsl/")
82 (guile
83 "GNU Guile"
84 "https://www.gnu.org/software/guile/"
85 "/static/images/logos/guile.svg")
86 (guile-debbugs
87 "Guile-Debbugs"
88 "https://savannah.gnu.org/projects/guile-debbugs/"
89 "/static/images/logos/guile.svg")
90 (guile-gnome
91 "Guile-GNOME"
92 "https://www.gnu.org/software/guile-gnome/"
93 "/static/images/logos/guile.svg")
94 (guile-opengl
95 "Guile-OpenGL"
96 "https://www.gnu.org/software/guile-opengl/"
97 "/static/images/logos/guile.svg")
98 (guile-rpc
99 "GNU Guile-RPC"
100 "https://www.gnu.org/software/guile-rpc/"
101 "/static/images/logos/guile.svg")
102 (guix
103 "GNU Guix"
104 "https://guix.gnu.org"
105 "/static/images/logos/guix.png")
106 (gwl
107 "Guix Workflow Language"
108 "https://guixwl.org"
109 "/static/images/logos/gwl.png")
110 (hurd
111 "GNU Hurd"
112 "https://hurd.gnu.org"
113 "/static/images/logos/hurd.png")
114 (indent
115 "GNU indent"
116 "https://www.gnu.org/software/indent/")
117 (libgcrypt
118 "GNU Libgcrypt"
119 "https://gnupg.org/related_software/libgcrypt/"
120 "/static/images/logos/gnupg.png")
121 (libtasn1
122 "GNU Libtasn1"
123 "https://www.gnu.org/software/libtasn1/")
124 (lilypond
125 "GNU LilyPond"
126 "https://lilypond.org/"
127 "/static/images/logos/lilypond.png")
128 (liquid-war-6
129 "Liquid War 6"
130 "https://www.gnu.org/software/liquidwar6/")
131 (mcsim
132 "GNU MCSim"
133 "https://www.gnu.org/software/mcsim/"
134 "/static/images/logos/mcsim.png")
135 (mediagoblin
136 "GNU MediaGoblin"
137 "https://mediagoblin.org/"
138 "/static/images/logos/mediagoblin.svg")
139 (mes
140 "GNU Mes"
141 "https://www.gnu.org/software/mes/")
142 (mpc
143 "GNU MPC"
144 "http://www.multiprecision.org/mpc/")
145 (nano-archimedes
146 "GNU Nano-Archimedes"
147 "https://www.gnu.org/software/archimedes/")
148 (shepherd
149 "GNU Shepherd"
150 "https://www.gnu.org/software/shepherd/")
151 (source-highlight
152 "GNU Source Highlight"
153 "https://www.gnu.org/software/src-highlite/")
154 (userv
155 "GNU userv"
156 "https://www.gnu.org/software/userv/")))
157 table))
158
159(define-syntax-rule (define-member person projects ...)
160 (let ((p person))
161 (for-each (lambda (project-id)
162 (let ((project
163 (hash-table-ref %projects project-id
164 (lambda ()
165 (error (format #false
166 "Unknown project ~a for ~a~%"
167 project-id name))))))
168 (set-project-members!
169 project (cons p (project-members project)))))
170 (quote (projects ...)))))
171
172(define-member (person "Carlos O'Donell")
173 glibc gcc)
174(define-member (person "Mark J. Wielaard"
175 "https://gnu.wildebeest.org/blog/mjw/")
176 classpath gcc glibc)
177(define-member (person "Andy Wingo"
178 "https://wingolog.org")
179 guile guile-gnome guile-opengl)
180(define-member (person "Ludovic Courtès"
181 "https://people.bordeaux.inria.fr/lcourtes/")
182 guix guile shepherd guile-rpc)
183(define-member (person "Frederic Y. Bois")
184 mcsim)
185(define-member (person "Andrej Shadura")
186 indent)
187(define-member (person "Werner Koch")
188 gnupg libgcrypt)
189(define-member (person "Mark Galassi")
190 gsl dominion)
191(define-member (person "Jean Michel Sellier")
192 archimedes nano-archimedes gneural)
193(define-member (person "Christopher Webber"
194 "https://dustycloud.org")
195 8sync mediagoblin)
196(define-member (person "Ian Jackson")
197 adns userv)
198(define-member (person "Samuel Thibault")
199 hurd)
200(define-member (person "Jan Nieuwenhuizen")
201 mes lilypond)
202(define-member (person "Christian Mauduit")
203 liquid-war-6)
204(define-member (person "Nikos Mavrogiannopoulos")
205 libtasn1)
206(define-member (person "Andreas Enge")
207 mpc)
208(define-member (person "Han-Wen Nienhuys")
209 lilypond)
210(define-member (person "Tobias Geerinckx-Rice")
211 guix)
212(define-member (person "Bernard Giroud")
213 gnucobol)
214(define-member (person "Tom Tromey")
215 source-highlight)
216(define-member (person "Jeff Law")
217 gcc)
218(define-member (person "David Malcolm")
219 gcc)
220(define-member (person "Ricardo Wurmus"
221 "https://elephly.net")
222 guix gwl guile-debbugs)
223(define-member (person "Marius Bakke")
224 guix)
225
226 2
227`((title . "Software") 3`((title . "Software")
228 (author . "The GNU Assembly") 4 (author . "The GNU Assembly")