diff options
Diffstat (limited to 'projects.scm')
-rw-r--r-- | projects.scm | 224 |
1 files changed, 224 insertions, 0 deletions
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) | ||