home » dokk/dokk.org.git
Author zPlus <zplus@peers.community> 2023-07-27 02:07:15
Committer zPlus <zplus@peers.community> 2023-07-27 02:07:15
Commit 5b6e0ba (patch)
Tree 930dbc9
Parent(s)

Merge articles. These were in a separate repository.


commits diff: 94c690e..5b6e0ba
38 files changed, 1210 insertions, 240 deletionsdownload


Diffstat
-rwxr-xr-x app.py 229
?--------- dokk.png 0
-rw-r--r-- dokk.svg 3
-rw-r--r-- pages/.html 12
-rw-r--r-- pages/1984_ehf..html 46
-rw-r--r-- pages/Bottle_(web_framework).html 56
-rw-r--r-- pages/DOKK.html 33
-rw-r--r-- pages/Dragora_(software).html 49
-rw-r--r-- pages/ForgeFed.html 44
-rw-r--r-- pages/GNU_Hackers_Meeting.html 39
-rw-r--r-- pages/Gitea_(software).html 66
-rw-r--r-- pages/Gogs_(software).html 82
-rw-r--r-- pages/Header_Dictionary_Triples.html 73
-rw-r--r-- pages/Minifree_Ltd.html 60
-rw-r--r-- pages/NotABug.org.html 49
-rw-r--r-- pages/The_Peers_Community.html 54
-rw-r--r-- pages/TuxFamily.html 77
-rw-r--r-- pages/Vervis_(software).html 42
-rw-r--r-- pages/Vikings_GmbH.html 41
-rw-r--r-- pages/archive-webextension.html 11
-rw-r--r-- pages/freepost_(software).html 56
-rw-r--r-- pages/lib.reviews.html 73
-rw-r--r-- pages/library.html 39
-rw-r--r-- pages/license.html 14
-rw-r--r-- pages/manpages.html 18
-rw-r--r-- pages/mimi_and_eunice.html 15
-rw-r--r-- pages/radio-browser.info.html 30
-rw-r--r-- pages/templates/article.tpl 12
-rw-r--r-- pages/templates/articles.tpl 10
-rw-r--r-- pages/templates/base.tpl 4
-rw-r--r-- pages/templates/library/item.tpl 45
-rw-r--r-- pages/templates/license/license.tpl 9
-rw-r--r-- pages/templates/manpages/disambiguation.tpl 8
-rw-r--r-- pages/templates/manpages/distribution.tpl 6
-rw-r--r-- pages/templates/manpages/manpage.tpl 6
-rw-r--r-- pages/templates/manpages/package.tpl 6
-rw-r--r-- pages/templates/mimi_and_eunice/strip.tpl 2
-rw-r--r-- pages/virtual_hosting_platform_for_free_software.html 31

Diff options
View
Side
Whitespace
Context lines
Inter-hunk lines
+29/-200 M   app.py
index 056a737..dad8177
old size: 12K - new size: 8K
@@ -5,6 +5,7 @@ import datetime
5 5 import dateutil
6 6 import functools
7 7 import jinja2
8 + import pathlib
8 9 import pyld
9 10 import re
10 11 import requests
@@ -16,7 +17,7 @@ from string import Template
16 17 application = bottle.app()
17 18
18 19 # Directories to search for HTML templates
19 - bottle.TEMPLATE_PATH = [ './templates' ]
20 + bottle.TEMPLATE_PATH = [ './pages' ]
20 21
21 22 def query(query_string, jsonld_frame=None):
22 23 """
@@ -25,7 +26,7 @@ def query(query_string, jsonld_frame=None):
25 26 """
26 27
27 28 http_request = requests.post(
28 - 'http://localhost:7000/dokk',
29 + 'http://dokk:7000/dokk',
29 30 data = { 'format': 'json', 'query': query_string})
30 31
31 32 results = http_request.json()
@@ -54,6 +55,7 @@ template = functools.partial(template, template_settings = {
54 55 },
55 56 'globals': {
56 57 'now': lambda: datetime.datetime.now(datetime.timezone.utc),
58 + 'query': query,
57 59 'request': request,
58 60 'url': application.get_url,
59 61 },
@@ -70,158 +72,40 @@ def error404(error):
70 72
71 73 return '[404] {}'.format(error.body)
72 74
73 - @bottle.get('/static/<filename:path>', name='static')
74 - def static(filename):
75 - """
76 - Path for serving static files.
77 - """
78 -
79 - return bottle.static_file(filename, root='./static/')
80 -
81 - @bottle.get('/', name='homepage')
82 - def homepage():
75 + @bottle.get('/favicon.ico')
76 + def favicon():
83 77 """
84 78 """
85 79
86 - return template('index.html')
80 + return bottle.static_file('favicon.ico', root='./')
87 81
88 - @bottle.get('/library', name='library')
89 - def library():
82 + @bottle.get('/static/<filename:path>', name='static')
83 + def static(filename):
90 84 """
85 + Path for serving static files.
91 86 """
92 87
93 - data = query(
94 - '''
95 - PREFIX library: <dokk:library:>
96 - PREFIX license: <dokk:license:>
97 -
98 - CONSTRUCT {
99 - ?item library:title ?title;
100 - library:author ?author ;
101 - library:license ?license .
102 - ?license license:id ?license_id ;
103 - license:name ?license_name .
104 - }
105 - WHERE {
106 - ?item library:title ?title ;
107 - library:author ?author ;
108 - library:license ?license .
109 -
110 - OPTIONAL {
111 - ?license license:id ?license_id_optional ;
112 - license:name ?license_name_optional .
113 - }
114 -
115 - BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id)
116 - BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name)
117 - }
118 - ORDER BY UCASE(?title)
119 - ''',
120 - {
121 - '@context': {
122 - 'library': 'dokk:library:',
123 - 'license': 'dokk:license:',
124 - 'library:author': { '@container': '@set' },
125 - 'library:license': { '@container': '@set' }
126 - },
127 - 'library:title': {}
128 - })
129 -
130 - return template('library.html', data=data)
88 + return bottle.static_file(filename, root='./static/')
131 89
132 90 @bottle.get('/library/<item_id>', name='library_item')
133 91 def library_item(item_id):
134 92 """
135 93 """
136 94
137 - item_iri = '<dokk:library:' + item_id + '>'
138 -
139 95 try:
140 96 with open('../blob.dokk.org/pdf_to_text/' + item_id + '.txt', 'r') as file:
141 97 item_plaintext = file.read()
142 98 except:
143 99 item_plaintext = ''
144 100
145 - data = query(f'''
146 - PREFIX library: <dokk:library:>
147 - PREFIX license: <dokk:license:>
148 -
149 - CONSTRUCT {{
150 - ?item library:title ?title ;
151 - library:author ?author ;
152 - library:license ?license .
153 -
154 - ?license license:id ?license_id ;
155 - license:name ?license_name .
156 - }}
157 - WHERE {{
158 - ?item
159 - library:title ?title ;
160 - library:author ?author ;
161 - library:license ?license .
162 -
163 - FILTER (?item = {item_iri})
164 -
165 - OPTIONAL {{
166 - ?license license:id ?license_id_optional ;
167 - license:name ?license_name_optional .
168 - }}
169 -
170 - BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id)
171 - BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name)
172 - }}
173 - ''',
174 - {
175 - '@context': {
176 - 'library': 'dokk:library:',
177 - 'license': 'dokk:license:',
178 - 'library:author': { '@container': '@set' },
179 - 'library:license': { '@container': '@set' }
180 - },
181 - 'library:title': {}
182 - })
183 -
184 - return template('library_item.html', data=data['@graph'][0], item_id=item_id, plaintext=item_plaintext)
185 -
186 - @bottle.get('/license', name='licenses')
187 - def licenses():
188 - """
189 - """
190 -
191 - data = query(
192 - '''
193 - PREFIX license: <dokk:license:>
194 -
195 - SELECT *
196 - WHERE {
197 - ?license license:id ?id ;
198 - license:name ?name.
199 - }
200 - ORDER BY ASC(UCASE(?name))
201 - ''')
202 -
203 - return template('licenses.html', data=data)
101 + return template('templates/library/item.tpl', item_id=item_id, plaintext=item_plaintext)
204 102
205 - @bottle.get('/manpages', name='manpages')
206 - def manpages():
103 + @bottle.get('/license/<id>', name='license')
104 + def license(id):
207 105 """
208 106 """
209 107
210 - data = query(
211 - '''
212 - PREFIX mp: <dokk:manpages:>
213 -
214 - SELECT DISTINCT ?distribution ?version
215 - WHERE {
216 - [] mp:source [
217 - mp:distribution_version ?version ;
218 - mp:distribution_name ?distribution ;
219 - ] .
220 - }
221 - ORDER BY ?distribution ?version
222 - ''')
223 -
224 - return template('manpages.html', data=data)
108 + return template('templates/license/license.tpl', license_id=id)
225 109
226 110 @bottle.get('/manpages/<distribution>/<version>', name='manpages_distribution')
227 111 def manpages_distribution(distribution, version):
@@ -244,7 +128,7 @@ def manpages_distribution(distribution, version):
244 128 ORDER BY ?package
245 129 ''')
246 130
247 - return template('manpages_distribution.html', data=data, distribution=distribution, version=version)
131 + return template('templates/manpages/distribution.tpl', data=data, distribution=distribution, version=version)
248 132
249 133 @bottle.get('/manpages/<distribution>/<version>/<package>', name='manpages_package')
250 134 def manpages_package(distribution, version, package):
@@ -268,7 +152,7 @@ def manpages_package(distribution, version, package):
268 152 ORDER BY ?filename
269 153 ''')
270 154
271 - return template('manpages_package.html', data=data, distribution=distribution, version=version, package=package)
155 + return template('templates/manpages/package.tpl', data=data, distribution=distribution, version=version, package=package)
272 156
273 157 @bottle.get('/manpages/<distribution>/<version>/<package>/<name>.<section>.<lang>', name='manpages_page')
274 158 def manpages_page(distribution, version, package, name, section, lang):
@@ -325,7 +209,7 @@ def manpages_page(distribution, version, package, name, section, lang):
325 209
326 210 data['@graph'][0]['mp:html'] = html
327 211
328 - return template('manpage.html', data=data['@graph'][0], distribution=distribution,
212 + return template('templates/manpages/manpage.tpl', data=data['@graph'][0], distribution=distribution,
329 213 version=version, package=package, name=name, section=section, lang=lang)
330 214
331 215 @bottle.get('/manpages/<name>.<section>', name='manpages_disambiguation')
@@ -351,43 +235,7 @@ def manpages_disambiguation(name, section):
351 235 'mp:source': {},
352 236 })
353 237
354 - return template('manpage_disambiguation.html', name=name, section=section, data=data)
355 -
356 - @bottle.get('/license/<id>', name='license')
357 - def license(id):
358 - """
359 - """
360 -
361 - license_iri = 'license:' + id
362 -
363 - data = query(Template(
364 - '''
365 - PREFIX license: <dokk:license:>
366 -
367 - DESCRIBE $license
368 - ''').substitute(license=license_iri))
369 -
370 - return template('license.html', data=data)
371 -
372 - @bottle.get('/mimi_and_eunice', name='mimi_and_eunice')
373 - def mimi_and_eunice():
374 - """
375 - """
376 -
377 - data = query(
378 - '''
379 - PREFIX mimi_eunice: <dokk:mimi_and_eunice:>
380 - PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
381 -
382 - SELECT ?number ?title
383 - WHERE {
384 - ?id mimi_eunice:title ?title .
385 - BIND (SUBSTR(STR(?id), 22) as ?number)
386 - }
387 - ORDER BY ?number
388 - ''')
389 -
390 - return template('mimi_and_eunice.html', data=data)
238 + return template('templates/manpages/disambiguation.tpl', name=name, section=section, data=data)
391 239
392 240 @bottle.get('/mimi_and_eunice/<number>', name='mimi_and_eunice_strip')
393 241 def mimi_and_eunice_strip(number):
@@ -419,44 +267,25 @@ def mimi_and_eunice_strip(number):
419 267 }
420 268 })
421 269
422 - return template('mimi_and_eunice_strip.html', data=data['@graph'][0])
270 + return template('templates/mimi_and_eunice/strip.tpl', data=data['@graph'][0])
423 271
424 272 @bottle.get('/articles', name='articles')
425 273 def articles():
426 274 """
427 275 """
428 276
429 - data = query(
430 - '''
431 - PREFIX : <dokk:articles:>
277 + pages = [ page.stem for page in sorted(pathlib.Path('./pages').glob('*.html')) ]
278 + pages.remove('.html')
432 279
433 - SELECT ?iri ?title
434 - WHERE {
435 - ?iri :title ?title
436 - }
437 - ORDER BY ?title
438 - ''')
280 + return template('templates/articles.tpl', pages=pages)
439 281
440 - return template('articles.html', data=data)
441 -
442 - @bottle.get('/<id>', name='article')
443 - def article(id):
282 + @bottle.get('/', name='homepage')
283 + @bottle.get('/<page:path>', name='page')
284 + def article(page=''):
444 285 """
286 + Path for serving a "page".
445 287 """
446 288
447 - data = query(
448 - f'''
449 - PREFIX : <dokk:articles:>
450 -
451 - DESCRIBE <dokk:articles:{id}>
452 - ''',
453 - {
454 - '@context': {
455 - 'a': 'dokk:articles:'
456 - }
457 - })
458 -
459 - if '@graph' not in data or len(data['@graph']) < 1:
460 - bottle.abort(404, "Article doesn't exist.")
289 + page += '.html'
461 290
462 - return template('article.html', data=data['@graph'][0])
291 + return template(page)

+0/-0 D   dokk.png
index 126555a..0000000
old size: 3K - new size: 0B
deleted file mode: -rw-r--r--
Binary file

+1/-2 M   dokk.svg
index ccc56b4..c407dd0
old size: 10K - new size: 10K
@@ -306,8 +306,7 @@
306 306 y="-1.6478174"
307 307 mask="url(#mask7616)"
308 308 inkscape:export-xdpi="6.1399999"
309 - inkscape:export-ydpi="6.1399999"
310 - inkscape:export-filename="/home/zplus/zPlus/projects/dokk/dokk.org/website/dokk/static/dokk.png" />
309 + inkscape:export-ydpi="6.1399999" />
311 310 </g>
312 311 <g
313 312 inkscape:groupmode="layer"

+6/-6 R   templates/index.html -> pages/.html
index fad87a0..e749739
old size: 964B - new size: 912B
@@ -1,4 +1,4 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 3 {% block title %}{% endblock %}
4 4
@@ -7,11 +7,11 @@
7 7 <div class="index">
8 8 <p><i>DOKK</i></p>
9 9
10 - <p>- <a href="{{ url('articles') }}">Articles</a></p>
11 - <p>- <a href="{{ url('library') }}">Library</a></p>
12 - <p>- <a href="{{ url('licenses') }}">Licenses</a></p>
13 - <p>- <a href="{{ url('manpages') }}">Man pages</a></p>
14 - <p>- <a href="{{ url('mimi_and_eunice') }}">Mimi & Eunice comic strips</a></p>
10 + <p>- <a href="/articles">Articles</a></p>
11 + <p>- <a href="/library">Library</a></p>
12 + <p>- <a href="/license">Licenses</a></p>
13 + <p>- <a href="/manpages">Man pages</a></p>
14 + <p>- <a href="/mimi_and_eunice">Mimi & Eunice comic strips</a></p>
15 15
16 16 <br /><br /><br /><br />
17 17

+46/-0 A   pages/1984_ehf..html
index 0000000..7dbeb5c
old size: 0B - new size: 1K
new file mode: -rw-r--r--
@@ -0,0 +1,46 @@
1 + {% set title = "1984 ehf." %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>1984 ehf.</strong> is a web hosting company established in 2006 in Reykjavík, Iceland
10 + with the goal of offering hosting services that protect the civil and political
11 + rights of their customers, such as the freedom of expression and the right to
12 + anonymity and privacy<sup><a href="#cit1">[cit1]</a></sup>. The company uses exclusively renewable energy
13 + from geothermal and hydropower sources, and it is committed to using free
14 + software wherever possible.</p>
15 + </div>
16 + <div class="paragraph">
17 + <p>1984 offers shared hosting, VPS hosting, and domain registration services.</p>
18 + </div>
19 + </div>
20 + </div>
21 + <div class="sect1">
22 + <h2 id="_see_also">See also</h2>
23 + <div class="sectionbody">
24 + <div class="ulist">
25 + <ul>
26 + <li>
27 + <p><a href="Vikings_GmbH">Vikings GmbH</a></p>
28 + </li>
29 + </ul>
30 + </div>
31 + </div>
32 + </div>
33 + <div class="sect1">
34 + <h2 id="_references">References</h2>
35 + <div class="sectionbody">
36 + <div class="ulist bibliography">
37 + <ul class="bibliography">
38 + <li>
39 + <p><a id="cit1"></a>[cit1] <a href="https://1984.is/about/" class="bare">https://1984.is/about/</a></p>
40 + </li>
41 + </ul>
42 + </div>
43 + </div>
44 + </div>
45 +
46 + {% endblock %}

+56/-0 A   pages/Bottle_(web_framework).html
index 0000000..b4fd2ae
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,56 @@
1 + {% set title = "Bottle" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Bottle</strong> is a micro web-framework for Python released under the <a href="license/MIT">MIT</a>
10 + license. It is distributed as a single-file module compatible with Python 2.7
11 + and Python 3, and it has no dependencies other then the Python Standard
12 + Library<sup><a href="#cit1">[cit1]</a></sup>. The core functionalities of the framework can be extended by
13 + third-party plugins<sup><a href="#cit2">[cit2]</a></sup>. Bottle has support for both WSGI and CGI
14 + interfaces<sup><a href="#cit3">[cit3]</a></sup>. It was started in 2009 by Marcel Hellkamp<sup><a href="#cit4">[cit4]</a></sup>.</p>
15 + </div>
16 + </div>
17 + </div>
18 + <div class="sect1">
19 + <h2 id="_hello_world">"Hello World"</h2>
20 + <div class="sectionbody">
21 + <div class="listingblock">
22 + <div class="content">
23 + <pre class="highlight"><code class="language-python" data-lang="python">from bottle import get, run, template
24 +
25 + @get ('/hello/&lt;name&gt;')
26 + def index (name):
27 + return template ('&lt;b&gt;Hello {{name}}&lt;/b&gt;!', name=name)
28 +
29 + run (host='localhost', port=8080)</code></pre>
30 + </div>
31 + </div>
32 + </div>
33 + </div>
34 + <div class="sect1">
35 + <h2 id="_references">References</h2>
36 + <div class="sectionbody">
37 + <div class="ulist bibliography">
38 + <ul class="bibliography">
39 + <li>
40 + <p><a id="cit1"></a>[cit1] <a href="https://bottlepy.org/docs/dev/" class="bare">https://bottlepy.org/docs/dev/</a></p>
41 + </li>
42 + <li>
43 + <p><a id="cit2"></a>[cit2] <a href="https://bottlepy.org/docs/dev/plugins/index.html" class="bare">https://bottlepy.org/docs/dev/plugins/index.html</a></p>
44 + </li>
45 + <li>
46 + <p><a id="cit3"></a>[cit3] <a href="https://bottlepy.org/docs/dev/deployment.html" class="bare">https://bottlepy.org/docs/dev/deployment.html</a></p>
47 + </li>
48 + <li>
49 + <p><a id="cit4"></a>[cit4] <a href="https://github.com/bottlepy/bottle/commit/c78437f04bd9631a9d9fc37f59a05b3448c7dacb" class="bare">https://github.com/bottlepy/bottle/commit/c78437f04bd9631a9d9fc37f59a05b3448c7dacb</a></p>
50 + </li>
51 + </ul>
52 + </div>
53 + </div>
54 + </div>
55 +
56 + {% endblock %}

+33/-0 A   pages/DOKK.html
index 0000000..02e250d
old size: 0B - new size: 1K
new file mode: -rw-r--r--
@@ -0,0 +1,33 @@
1 + {% set title = "DOKK" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>DOKK</strong> is a collaborative, free database maintained by the
10 + <a href="The_Peers_Community">The Peers Community</a> <sup><a href="#cit1">[cit1]</a></sup>.
11 + The database uses a graph data model and is maintained as a collection of Turtle
12 + files<sup><a href="#cit2">[cit2]</a></sup>. It includes both user-submitted data as well as data imported from
13 + other sources.</p>
14 + </div>
15 + </div>
16 + </div>
17 + <div class="sect1">
18 + <h2 id="_references">References</h2>
19 + <div class="sectionbody">
20 + <div class="ulist bibliography">
21 + <ul class="bibliography">
22 + <li>
23 + <p><a id="cit1"></a>[cit1] <a href="https://dokk.org" class="bare">https://dokk.org</a></p>
24 + </li>
25 + <li>
26 + <p><a id="cit2"></a>[cit2] <a href="https://clif.peers.community/dokk/data.git/tree/HEAD/data" class="bare">https://clif.peers.community/dokk/data.git/tree/HEAD/data</a></p>
27 + </li>
28 + </ul>
29 + </div>
30 + </div>
31 + </div>
32 +
33 + {% endblock %}

+49/-0 A   pages/Dragora_(software).html
index 0000000..446f803
old size: 0B - new size: 1K
new file mode: -rw-r--r--
@@ -0,0 +1,49 @@
1 + {% set title = "Dragora" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Dragora</strong> is a free/libre, GNU/Linux distribution made from scratch.
10 + Dragora respects the freedom of the user with the values of free software and
11 + provides control to those who use it. Dragora is developed entirely by
12 + volunteers and it is published under the terms of the
13 + <a href="licenses/GPL-3.0-only">GNU General Public License</a> <sup><a href="#cit1">[cit1]</a></sup>.</p>
14 + </div>
15 + <div class="paragraph">
16 + <p>Dragora also has received official recognition by the GNU Project and the
17 + Free Software Foundation as a Free System Distribution<sup><a href="#cit2">[cit2]</a></sup>.</p>
18 + </div>
19 + </div>
20 + </div>
21 + <div class="sect1">
22 + <h2 id="_see_also">See also</h2>
23 + <div class="sectionbody">
24 + <div class="ulist">
25 + <ul>
26 + <li>
27 + <p><a href="The_Peers_Community">The Peers Community</a></p>
28 + </li>
29 + </ul>
30 + </div>
31 + </div>
32 + </div>
33 + <div class="sect1">
34 + <h2 id="_references">References</h2>
35 + <div class="sectionbody">
36 + <div class="ulist bibliography">
37 + <ul class="bibliography">
38 + <li>
39 + <p><a id="cit1"></a>[cit1] <a href="https://dragora.org/repo.fsl/doc/trunk/www/index.md" class="bare">https://dragora.org/repo.fsl/doc/trunk/www/index.md</a></p>
40 + </li>
41 + <li>
42 + <p><a id="cit2"></a>[cit2] <a href="https://www.gnu.org/distros/free-distros.html#for-pc" class="bare">https://www.gnu.org/distros/free-distros.html#for-pc</a></p>
43 + </li>
44 + </ul>
45 + </div>
46 + </div>
47 + </div>
48 +
49 + {% endblock %}

+44/-0 A   pages/ForgeFed.html
index 0000000..e8240a9
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,44 @@
1 + {% set title = "ForgeFed" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>ForgeFed</strong> is an extension to the ActivityPub protocol that is currently under
10 + development. The goal of the project is to provide a server-to-server API for
11 + enabling federation across code management systems such as Gitea, Pagure, and
12 + <a href="Vervis_(software)">Vervis</a> <sup><a href="#cit1">[cit1]</a></sup>. Development of ForgeFed is carried out
13 + on its mailing list<sup><a href="#cit2">[cit2]</a></sup>.</p>
14 + </div>
15 + <div class="paragraph">
16 + <p>ForgeFed was initially called <em>GitPub</em> but it was later renamed to reflect
17 + the broader scope of the project (which should embrace more than a single
18 + VCS), as well as to avoid any violation of the Git trademark<sup><a href="#cit3">[cit3]</a><a href="#cit4">[cit4]</a></sup>.</p>
19 + </div>
20 + </div>
21 + </div>
22 + <div class="sect1">
23 + <h2 id="_references">References</h2>
24 + <div class="sectionbody">
25 + <div class="ulist bibliography">
26 + <ul class="bibliography">
27 + <li>
28 + <p><a id="cit1"></a>[cit1] <a href="https://github.com/forgefed/forgefed" class="bare">https://github.com/forgefed/forgefed</a></p>
29 + </li>
30 + <li>
31 + <p><a id="cit2"></a>[cit2] <a href="https://framalistes.org/sympa/info/git-federation" class="bare">https://framalistes.org/sympa/info/git-federation</a></p>
32 + </li>
33 + <li>
34 + <p><a id="cit3"></a>[cit3] <a href="https://framalistes.org/sympa/arc/git-federation/2018-06/msg00117.html" class="bare">https://framalistes.org/sympa/arc/git-federation/2018-06/msg00117.html</a></p>
35 + </li>
36 + <li>
37 + <p><a id="cit4"></a>[cit4] <a href="https://framalistes.org/sympa/arc/git-federation/2018-07/msg00155.html" class="bare">https://framalistes.org/sympa/arc/git-federation/2018-07/msg00155.html</a></p>
38 + </li>
39 + </ul>
40 + </div>
41 + </div>
42 + </div>
43 +
44 + {% endblock %}

+39/-0 A   pages/GNU_Hackers_Meeting.html
index 0000000..e2e3ca7
old size: 0B - new size: 1K
new file mode: -rw-r--r--
@@ -0,0 +1,39 @@
1 + {% set title = "GNU Hackers' Meetings" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p>The <strong>GNU Hackers' Meetings</strong>, or <strong>GHM</strong>, is an annual conference for people
10 + interested in the GNU operating system. The conference promotes an informal
11 + environment for developers and users of GNU to share experiences and exchange
12 + opinions. It usually lasts for three days over which multiple presentations
13 + are scheduled. Presentations are allowed to cover a wide range of subjects,
14 + both technical and social, related to the GNU project or to the Free Software
15 + movement as a whole.
16 + Participation in the conference is subject to prior registration and to the
17 + payment of a fee. A limited budget is available to assist those who cannot
18 + otherwise afford to attend the conference.</p>
19 + </div>
20 + <div class="paragraph">
21 + <p>The first GHM took place in Orense, Spain in 2007 and every year it is held
22 + in a different location<sup><a href="#cit1">[cit1]</a></sup>.</p>
23 + </div>
24 + </div>
25 + </div>
26 + <div class="sect1">
27 + <h2 id="_references">References</h2>
28 + <div class="sectionbody">
29 + <div class="ulist bibliography">
30 + <ul class="bibliography">
31 + <li>
32 + <p><a id="cit1"></a>[cit1] <a href="https://www.gnu.org/ghm/previous.html" class="bare">https://www.gnu.org/ghm/previous.html</a></p>
33 + </li>
34 + </ul>
35 + </div>
36 + </div>
37 + </div>
38 +
39 + {% endblock %}

+66/-0 A   pages/Gitea_(software).html
index 0000000..9bc46e7
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,66 @@
1 + {% set title = "Gitea" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Gitea</strong> ("Git with a cup of tea") is a web-based source-code management system
10 + for Git repositories. It is written in Go and is released under the
11 + <a href="licenses/MIT">MIT</a> license. Gitea was started in 2015<sup><a href="#cit1">[cit1]</a></sup> as a
12 + community-managed fork of <a href="Gogs_(software)">Gogs</a> in response to the
13 + single-maintainer management model adopted by Gogs<sup><a href="#cit2">[cit2]</a></sup>.</p>
14 + </div>
15 + </div>
16 + </div>
17 + <div class="sect1">
18 + <h2 id="_history">History</h2>
19 + <div class="sectionbody">
20 + <div class="paragraph">
21 + <p>When the development of Gogs slowed down for a prolonged period of time in 2015
22 + driven by a lack of activity of the project administrator<sup><a href="#cit3">[cit3]</a></sup>, some of its
23 + contributors decided to fork the project to a new one called <code>go-gitea</code>.
24 + Eventually, go-gitea was merged into Gogs once the administrator was back, and
25 + further development of the fork stopped. One year later however, the situation
26 + repeated and for this reason some of the Gogs contributors decided to continue
27 + the work on <code>go-gitea</code> in order to promote a community approach with more than
28 + one maintainer<sup><a href="#cit2">[cit2]</a></sup>. The fork was later renamed "Gitea".</p>
29 + </div>
30 + </div>
31 + </div>
32 + <div class="sect1">
33 + <h2 id="_see_also">See also</h2>
34 + <div class="sectionbody">
35 + <div class="ulist">
36 + <ul>
37 + <li>
38 + <p><a href="Gogs_(software)">Gogs</a></p>
39 + </li>
40 + <li>
41 + <p><a href="NotABug.org">NotABug</a></p>
42 + </li>
43 + </ul>
44 + </div>
45 + </div>
46 + </div>
47 + <div class="sect1">
48 + <h2 id="_references">References</h2>
49 + <div class="sectionbody">
50 + <div class="ulist bibliography">
51 + <ul class="bibliography">
52 + <li>
53 + <p><a id="cit1"></a>[cit1] <a href="https://github.com/gogs/gogs/issues/1304" class="bare">https://github.com/gogs/gogs/issues/1304</a></p>
54 + </li>
55 + <li>
56 + <p><a id="cit2"></a>[cit2] <a href="https://blog.gitea.io/2016/12/welcome-to-gitea/" class="bare">https://blog.gitea.io/2016/12/welcome-to-gitea/</a></p>
57 + </li>
58 + <li>
59 + <p><a id="cit3"></a>[cit3] <a href="https://github.com/gogs/gogs/issues/1304" class="bare">https://github.com/gogs/gogs/issues/1304</a></p>
60 + </li>
61 + </ul>
62 + </div>
63 + </div>
64 + </div>
65 +
66 + {% endblock %}

+82/-0 A   pages/Gogs_(software).html
index 0000000..fde025d
old size: 0B - new size: 3K
new file mode: -rw-r--r--
@@ -0,0 +1,82 @@
1 + {% set title = "Gogs" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Gogs</strong> ("Go Git Service") is a web-based source-code management system for Git
10 + repositories. It was initiated in February, 2014<sup><a href="#cit1">[cit1]</a></sup> by Jiahua Chen (also
11 + known as <code>unknwon</code><sup><a href="#cit2">[cit2]</a></sup>) and Lunny Xiao (also known as <code>lunny</code><sup><a href="#cit3">[cit3]</a></sup>) with
12 + the goal of building a free, self-hostable clone of GitHub<sup><a href="#cit4">[cit4]</a></sup>.
13 + It is written in Go and is released under the <a href="licenses/MIT">MIT</a> license.</p>
14 + </div>
15 + </div>
16 + </div>
17 + <div class="sect1">
18 + <h2 id="_controversy_and_gitea_fork">Controversy and Gitea fork</h2>
19 + <div class="sectionbody">
20 + <div class="paragraph">
21 + <p>The development of Gogs slowed down in 2015 and Jiahua, the sole person with
22 + write access to the Gogs repository, stopped merging pull requests. This
23 + prolonged inactivity sparked doubts about the future of the project<sup><a href="#cit5">[cit5]</a><a href="#cit6">[cit6]</a></sup>
24 + and culminated with the creation of a fork called <code>go-gitea</code>. When Jiahua was
25 + back, however, <code>go-gitea</code> was merged to Gogs and the development of the fork
26 + stopped. One year later, in 2016, the situation repeated. For this reason some
27 + of the Gogs contributors who grew frustrated with the management of the project<sup><a href="#cit7">[cit7]</a></sup>
28 + decided to continue the work on <code>go-gitea</code><sup><a href="#cit8">[cit8]</a></sup>. The fork was later renamed
29 + <a href="Gitea_(software)">Gitea</a>.</p>
30 + </div>
31 + </div>
32 + </div>
33 + <div class="sect1">
34 + <h2 id="_see_also">See also</h2>
35 + <div class="sectionbody">
36 + <div class="ulist">
37 + <ul>
38 + <li>
39 + <p><a href="Gitea_(software)">Gitea</a>, a fork of Gogs</p>
40 + </li>
41 + <li>
42 + <p><a href="NotABug.org">NotABug</a></p>
43 + </li>
44 + </ul>
45 + </div>
46 + </div>
47 + </div>
48 + <div class="sect1">
49 + <h2 id="_references">References</h2>
50 + <div class="sectionbody">
51 + <div class="ulist bibliography">
52 + <ul class="bibliography">
53 + <li>
54 + <p><a id="cit1"></a>[cit1] <a href="https://github.com/gogs/gogs/commit/475e3471b4e8da8776fe7e66a3390c8a30c19f08" class="bare">https://github.com/gogs/gogs/commit/475e3471b4e8da8776fe7e66a3390c8a30c19f08</a></p>
55 + </li>
56 + <li>
57 + <p><a id="cit2"></a>[cit2] <a href="https://about.me/unknwon" class="bare">https://about.me/unknwon</a></p>
58 + </li>
59 + <li>
60 + <p><a id="cit3"></a>[cit3] <a href="http://lunny.info" class="bare">http://lunny.info</a></p>
61 + </li>
62 + <li>
63 + <p><a id="cit4"></a>[cit4] <a href="https://github.com/gogs/gogs/commit/4836fea8767c38f175f59f8f66579e76fe6354f5" class="bare">https://github.com/gogs/gogs/commit/4836fea8767c38f175f59f8f66579e76fe6354f5</a></p>
64 + </li>
65 + <li>
66 + <p><a id="cit5"></a>[cit5] <a href="https://github.com/gogs/gogs/issues/1304" class="bare">https://github.com/gogs/gogs/issues/1304</a></p>
67 + </li>
68 + <li>
69 + <p><a id="cit6"></a>[cit6] <a href="https://github.com/gogs/gogs/issues/1363" class="bare">https://github.com/gogs/gogs/issues/1363</a></p>
70 + </li>
71 + <li>
72 + <p><a id="cit7"></a>[cit7] <a href="https://github.com/go-gitea/gitea/issues/99" class="bare">https://github.com/go-gitea/gitea/issues/99</a></p>
73 + </li>
74 + <li>
75 + <p><a id="cit8"></a>[cit8] <a href="https://blog.gitea.io/2016/12/welcome-to-gitea/" class="bare">https://blog.gitea.io/2016/12/welcome-to-gitea/</a></p>
76 + </li>
77 + </ul>
78 + </div>
79 + </div>
80 + </div>
81 +
82 + {% endblock %}

+73/-0 A   pages/Header_Dictionary_Triples.html
index 0000000..8ffed5e
old size: 0B - new size: 3K
new file mode: -rw-r--r--
@@ -0,0 +1,73 @@
1 + {% set title = "Header Dictionary Triples" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Header Dictionary Triples</strong>, or <strong>HDT</strong>, is a binary serialization format for RDF
10 + datasets. It is capable of compressing RDF data while maintaining search and
11 + browse operations without prior decompression<sup><a href="#cit1">[cit1]</a></sup>. HDT is an open format in
12 + progress of standardization<sup><a href="#cit2">[cit2]</a></sup>.</p>
13 + </div>
14 + </div>
15 + </div>
16 + <div class="sect1">
17 + <h2 id="_hdt_tools">HDT tools</h2>
18 + <div class="sectionbody">
19 + <div class="ulist">
20 + <ul>
21 + <li>
22 + <p><code>hdt-cpp</code> is a library and command-line tool to create and search HDT files<sup><a href="#cit3">[cit3]</a></sup></p>
23 + </li>
24 + <li>
25 + <p><code>hdt-java</code> allows integration of HDT with Apache Jena and Fuseki<sup><a href="#cit4">[cit4]</a></sup></p>
26 + </li>
27 + <li>
28 + <p><code>HDT-it!</code> is a GUI application for browsing HDT files, which includes a 3D
29 + Visualization of the RDF adjacency matrix of the RDF Graph<sup><a href="#cit:5">[cit:5]</a></sup></p>
30 + </li>
31 + </ul>
32 + </div>
33 + </div>
34 + </div>
35 + <div class="sect1">
36 + <h2 id="_gallery">Gallery</h2>
37 + <div class="sectionbody">
38 + <div class="videoblock">
39 + <div class="content">
40 + <video src="https://archive.dokk.org/videos/hdt-it-rdf-demo.mp4" width="20%" controls>
41 + Your browser does not support the video tag.
42 + </video>
43 + </div>
44 + </div>
45 + <div class="paragraph">
46 + <p><span class="image"><img src="https://archive.dokk.org/images/hdt-it-screenshot-1.png" alt="HDT-it!" width="20%" title="HDT-it!"></span>
47 + <span class="image"><img src="https://archive.dokk.org/images/hdt-it-screenshot-2.png" alt="HDT-it!" width="20%" title="HDT-it!"></span></p>
48 + </div>
49 + </div>
50 + </div>
51 + <div class="sect1">
52 + <h2 id="_references">References</h2>
53 + <div class="sectionbody">
54 + <div class="ulist bibliography">
55 + <ul class="bibliography">
56 + <li>
57 + <p><a id="cit1"></a>[cit1] <a href="http://www.rdfhdt.org/what-is-hdt/" class="bare">http://www.rdfhdt.org/what-is-hdt/</a></p>
58 + </li>
59 + <li>
60 + <p><a id="cit2"></a>[cit2] <a href="https://www.w3.org/Submission/2011/03/" class="bare">https://www.w3.org/Submission/2011/03/</a></p>
61 + </li>
62 + <li>
63 + <p><a id="cit3"></a>[cit3] <a href="http://www.rdfhdt.org/manual-of-the-c-hdt-library/" class="bare">http://www.rdfhdt.org/manual-of-the-c-hdt-library/</a></p>
64 + </li>
65 + <li>
66 + <p><a id="cit4"></a>[cit4] <a href="http://www.rdfhdt.org/manual-of-hdt-integration-with-jena/" class="bare">http://www.rdfhdt.org/manual-of-hdt-integration-with-jena/</a></p>
67 + </li>
68 + </ul>
69 + </div>
70 + </div>
71 + </div>
72 +
73 + {% endblock %}

+60/-0 A   pages/Minifree_Ltd.html
index 0000000..f84032d
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,60 @@
1 + {% set title = "Minifree Ltd" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Minifree Ltd</strong> (formerly trading as Gluglug) is a supplier from Essex, UK that
10 + sells computers with only free software, including the Libreboot BIOS and
11 + GNU/Linux operating systems certified by the Free Software Foundation under the
12 + <em>Respects Your Freedom</em> certification program. The company was founded by Leah
13 + Rowe, who is also the founder of Libreboot. Profits from Minifree
14 + sales are used to fund the development of the Libreboot project<sup><a href="#cit2">[cit2]</a></sup>.</p>
15 + </div>
16 + <div class="paragraph">
17 + <p>The word "Minifree" is a pun based on the ministries in the George Orwell&#8217;s 1984
18 + novel<sup><a href="#cit1">[cit1]</a></sup>.</p>
19 + </div>
20 + </div>
21 + </div>
22 + <div class="sect1">
23 + <h2 id="_gallery">Gallery</h2>
24 + <div class="sectionbody">
25 + <div class="paragraph">
26 + <p><span class="image"><img src="https://archive.dokk.org/images/minifree-t400.png" alt="Libreboot T400" width="20%" title="Libreboot T400"></span>
27 + <span class="image"><img src="https://archive.dokk.org/images/minifree-x200.png" alt="Libreboot X200" width="20%" title="Libreboot X200"></span>
28 + <span class="image"><img src="https://archive.dokk.org/images/minifree-x200-tablet.png" alt="Libreboot X200 Tablet" width="20%" title="Libreboot X200 Tablet"></span></p>
29 + </div>
30 + </div>
31 + </div>
32 + <div class="sect1">
33 + <h2 id="_see_also">See also</h2>
34 + <div class="sectionbody">
35 + <div class="ulist">
36 + <ul>
37 + <li>
38 + <p><a href="The_Peers_Community">The Peers Community</a></p>
39 + </li>
40 + </ul>
41 + </div>
42 + </div>
43 + </div>
44 + <div class="sect1">
45 + <h2 id="_references">References</h2>
46 + <div class="sectionbody">
47 + <div class="ulist bibliography">
48 + <ul class="bibliography">
49 + <li>
50 + <p><a id="cit1"></a>[cit1] <a href="https://minifree.org/faq/" class="bare">https://minifree.org/faq/</a></p>
51 + </li>
52 + <li>
53 + <p><a id="cit2"></a>[cit2] <a href="https://minifree.org/about/" class="bare">https://minifree.org/about/</a></p>
54 + </li>
55 + </ul>
56 + </div>
57 + </div>
58 + </div>
59 +
60 + {% endblock %}

+49/-0 A   pages/NotABug.org.html
index 0000000..89db878
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,49 @@
1 + {% set title = "NotABug.org" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>NotABug.org</strong> is a web-based hosting service for version control using Git,
10 + based on the <a href="Gogs_(software)">Gogs</a> code collaboration platform. While
11 + registration is open to everyone, only those projects that meet the
12 + <em>Free Software</em> or the <em>Free Culture</em> definition are accepted on the
13 + website<sup><a href="#cit1">[cit1]</a></sup>. NotABug was started in 2015 by <a href="The_Peers_Community">The Peers Community</a> <sup><a href="#cit2">[cit2]</a></sup>
14 + and is administered by Hein-Pieter van Braam-Stewart<sup><a href="#cit3">[cit3]</a></sup>.</p>
15 + </div>
16 + </div>
17 + </div>
18 + <div class="sect1">
19 + <h2 id="_see_also">See also</h2>
20 + <div class="sectionbody">
21 + <div class="ulist">
22 + <ul>
23 + <li>
24 + <p><a href="The_Peers_Community">The Peers Community</a></p>
25 + </li>
26 + </ul>
27 + </div>
28 + </div>
29 + </div>
30 + <div class="sect1">
31 + <h2 id="_references">References</h2>
32 + <div class="sectionbody">
33 + <div class="ulist bibliography">
34 + <ul class="bibliography">
35 + <li>
36 + <p><a id="cit1"></a>[cit1] <a href="https://notabug.org/about#whatisnotabug" class="bare">https://notabug.org/about#whatisnotabug</a></p>
37 + </li>
38 + <li>
39 + <p><a id="cit2"></a>[cit2] <a href="https://web.archive.org/web/20180807121608/https://freepo.st/post/li8m93gf" class="bare">https://web.archive.org/web/20180807121608/https://freepo.st/post/li8m93gf</a></p>
40 + </li>
41 + <li>
42 + <p><a id="cit3"></a>[cit3] <a href="https://notabug.org/about#whoweare" class="bare">https://notabug.org/about#whoweare</a></p>
43 + </li>
44 + </ul>
45 + </div>
46 + </div>
47 + </div>
48 +
49 + {% endblock %}

+54/-0 A   pages/The_Peers_Community.html
index 0000000..2ee2793
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,54 @@
1 + {% set title = "The Peers Community" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>The Peers Community</strong> is a community of people that collaborate on supporting
10 + free culture and free software development<sup><a href="#cit2">[cit2]</a></sup>.</p>
11 + </div>
12 + </div>
13 + </div>
14 + <div class="sect1">
15 + <h2 id="_projects_jam">Projects Jam</h2>
16 + <div class="sectionbody">
17 + <div class="paragraph">
18 + <p>The <code>Jam</code> is a weekly meeting that takes place on the community IRC channel
19 + on Fridays at 19:00Z-21:00Z. Participants can ask for help on any issue related
20 + to free culture and free software projects, and the community works to fix them.
21 + The first session took place on March, 2nd 2018<sup><a href="#cit1">[cit1]</a></sup>, initiated by vaeringjar.</p>
22 + </div>
23 + </div>
24 + </div>
25 + <div class="sect1">
26 + <h2 id="_gallery">Gallery</h2>
27 + <div class="sectionbody">
28 + <div class="videoblock">
29 + <div class="title">Presentation by Jorge Maldonado Ventura at the <a href="GNU_Hackers_Meeting">GHM</a> 2017</div>
30 + <div class="content">
31 + <video src="https://archive.dokk.org/videos/2017-08--maldonadoventura--peers--ghm.mp4" width="20%" controls>
32 + Your browser does not support the video tag.
33 + </video>
34 + </div>
35 + </div>
36 + </div>
37 + </div>
38 + <div class="sect1">
39 + <h2 id="_references">References</h2>
40 + <div class="sectionbody">
41 + <div class="ulist bibliography">
42 + <ul class="bibliography">
43 + <li>
44 + <p><a id="cit1"></a>[cit1] <a href="https://peers.community/archive/20180302/projects-jam-20180302/" class="bare">https://peers.community/archive/20180302/projects-jam-20180302/</a></p>
45 + </li>
46 + <li>
47 + <p><a id="cit2"></a>[cit2] <a href="https://peers.community/why/" class="bare">https://peers.community/why/</a></p>
48 + </li>
49 + </ul>
50 + </div>
51 + </div>
52 + </div>
53 +
54 + {% endblock %}

+77/-0 A   pages/TuxFamily.html
index 0000000..5ea96d0
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,77 @@
1 + {% set title = "TuxFamily" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>TuxFamily</strong> is a French non-profit organization founded in 2004<sup><a href="#cit1">[cit1]</a></sup> that
10 + provides free hosting for projects adhering to the free software philosophy<sup><a href="#cit2">[cit2]</a></sup>.
11 + TuxFamily&#8217;s hosting facilities are controlled with
12 + <a href="virtual_hosting_platform_for_free_software">VHFFS</a>, a software developed
13 + by TuxFamily members that allows administrators to accept or refuse services
14 + requested by users via a web interface<sup><a href="#cit3">[cit3]</a></sup>. As of 2018 TuxFamily hosts more
15 + than 2700 projects<sup><a href="#cit2">[cit2]</a></sup>.</p>
16 + </div>
17 + </div>
18 + </div>
19 + <div class="sect1">
20 + <h2 id="_services">Services</h2>
21 + <div class="sectionbody">
22 + <div class="paragraph">
23 + <p>TuxFamily makes these services available to free projects:</p>
24 + </div>
25 + <div class="ulist">
26 + <ul>
27 + <li>
28 + <p>Web hosting (PHP5 or Python<sup><a href="#cit4">[cit4]</a></sup>)</p>
29 + </li>
30 + <li>
31 + <p>MySQL and PostgreSQL databases</p>
32 + </li>
33 + <li>
34 + <p>CVS, Subversion, Mercurial, and GIT repositories hosting</p>
35 + </li>
36 + <li>
37 + <p>Manage domain names (DNS hosting)</p>
38 + </li>
39 + <li>
40 + <p>Email accounts (reachable over POP, IMAP or webmails)</p>
41 + </li>
42 + <li>
43 + <p>Mailing lists</p>
44 + </li>
45 + <li>
46 + <p>Download area of 1GB</p>
47 + </li>
48 + <li>
49 + <p>200MB quota for all groups, not including the download area</p>
50 + </li>
51 + </ul>
52 + </div>
53 + </div>
54 + </div>
55 + <div class="sect1">
56 + <h2 id="_references">References</h2>
57 + <div class="sectionbody">
58 + <div class="ulist bibliography">
59 + <ul class="bibliography">
60 + <li>
61 + <p><a id="cit1"></a>[cit1] <a href="https://www.tuxfamily.org/en/organization" class="bare">https://www.tuxfamily.org/en/organization</a></p>
62 + </li>
63 + <li>
64 + <p><a id="cit2"></a>[cit2] <a href="https://www.tuxfamily.org/en/about" class="bare">https://www.tuxfamily.org/en/about</a></p>
65 + </li>
66 + <li>
67 + <p><a id="cit3"></a>[cit3] <a href="https://vhffs.org" class="bare">https://vhffs.org</a></p>
68 + </li>
69 + <li>
70 + <p><a id="cit4"></a>[cit4] <a href="https://faq.tuxfamily.org/WebArea/Compat/Python" class="bare">https://faq.tuxfamily.org/WebArea/Compat/Python</a></p>
71 + </li>
72 + </ul>
73 + </div>
74 + </div>
75 + </div>
76 +
77 + {% endblock %}

+42/-0 A   pages/Vervis_(software).html
index 0000000..9345f52
old size: 0B - new size: 1K
new file mode: -rw-r--r--
@@ -0,0 +1,42 @@
1 + {% set title = "Vervis" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Vervis</strong> is a web-based project management system that is still under
10 + development. It is written in Haskell with the Yesod web framework and is
11 + released under the <a href="licenses/AGPL-3.0-only">AGPLv3</a> license. It features
12 + support for Git and Darcs, and is expected to support <a href="ForgeFed">ForgeFed</a>
13 + <sup><a href="#cit1">[cit1]</a></sup>.</p>
14 + </div>
15 + </div>
16 + </div>
17 + <div class="sect1">
18 + <h2 id="_see_also">See also</h2>
19 + <div class="sectionbody">
20 + <div class="ulist">
21 + <ul>
22 + <li>
23 + <p><a href="The_Peers_Community">The Peers Community</a></p>
24 + </li>
25 + </ul>
26 + </div>
27 + </div>
28 + </div>
29 + <div class="sect1">
30 + <h2 id="_references">References</h2>
31 + <div class="sectionbody">
32 + <div class="ulist bibliography">
33 + <ul class="bibliography">
34 + <li>
35 + <p><a id="cit1"></a>[cit1] <a href="https://dev.angeley.es" class="bare">https://dev.angeley.es</a></p>
36 + </li>
37 + </ul>
38 + </div>
39 + </div>
40 + </div>
41 +
42 + {% endblock %}

+41/-0 A   pages/Vikings_GmbH.html
index 0000000..0a0b103
old size: 0B - new size: 1012B
new file mode: -rw-r--r--
@@ -0,0 +1,41 @@
1 + {% set title = "Vikings GmbH" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Vikings GmbH</strong> is a hosting provider located in Eschborn, Germany which
10 + specializes in free/libre hosting services. It offers Virtual Servers,
11 + Dedicated Servers, and Manged Server based exclusively on free software. The
12 + company was founded by Thomas Umbach<sup><a href="#cit1">[cit1]</a></sup>.</p>
13 + </div>
14 + </div>
15 + </div>
16 + <div class="sect1">
17 + <h2 id="_see_also">See also</h2>
18 + <div class="sectionbody">
19 + <div class="ulist">
20 + <ul>
21 + <li>
22 + <p><a href="1984_ehf.">1984 ehf.</a></p>
23 + </li>
24 + </ul>
25 + </div>
26 + </div>
27 + </div>
28 + <div class="sect1">
29 + <h2 id="_references">References</h2>
30 + <div class="sectionbody">
31 + <div class="ulist bibliography">
32 + <ul class="bibliography">
33 + <li>
34 + <p><a id="cit1"></a>[cit1] <a href="https://vikings.net/legalnotice.html" class="bare">https://vikings.net/legalnotice.html</a></p>
35 + </li>
36 + </ul>
37 + </div>
38 + </div>
39 + </div>
40 +
41 + {% endblock %}

+11/-0 A   pages/archive-webextension.html
index 0000000..7d5ab76
old size: 0B - new size: 336B
new file mode: -rw-r--r--
@@ -0,0 +1,11 @@
1 + {% set title = "archive-webextension" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div class="paragraph">
7 + <p><strong>archive-webextension</strong> is a WebExtension for saving web pages to the Internet
8 + Archive. It&#8217;s developed by <a href="The_Peers_Community">The Peers Community</a>.</p>
9 + </div>
10 +
11 + {% endblock %}

+56/-0 A   pages/freepost_(software).html
index 0000000..5d389b5
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,56 @@
1 + {% set title = "freepost" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>freepost</strong> is a web-based discussion board developed by
10 + <a href="The_Peers_Community">The Peers Community</a>, where users can submit links
11 + and text posts that other users can vote and discuss. An instance of freepost
12 + is hosted on <a href="TuxFamily">TuxFamily</a> and accessible at <code><a href="https://freepo.st" class="bare">https://freepo.st</a></code>.</p>
13 + </div>
14 + <div class="paragraph">
15 + <p>It is one of the early projects developed by the community<sup><a href="#cit1">[cit1]</a></sup>.</p>
16 + </div>
17 + </div>
18 + </div>
19 + <div class="sect1">
20 + <h2 id="_development">Development</h2>
21 + <div class="sectionbody">
22 + <div class="paragraph">
23 + <p>The software was initially developed with the Symfony PHP framework<sup><a href="#cit2">[cit2]</a><a href="#cit3">[cit3]</a></sup>,
24 + but it was later rewritten in plain PHP<sup><a href="#cit4">[cit4]</a><a href="#cit5">[cit5]</a></sup>. In 2018 it was rewritten
25 + again from scratch using the <a href="Bottle_(web_framework)">Bottle</a> web framework,
26 + thus changing the code base from PHP to Python^<em class="red yellow-background">Add
27 + references</em>^.</p>
28 + </div>
29 + </div>
30 + </div>
31 + <div class="sect1">
32 + <h2 id="_references">References</h2>
33 + <div class="sectionbody">
34 + <div class="ulist bibliography">
35 + <ul class="bibliography">
36 + <li>
37 + <p><a id="cit1"></a>[cit1] <a href="https://web.archive.org/web/20150310050551/http://peers.community:80/" class="bare">https://web.archive.org/web/20150310050551/http://peers.community:80/</a></p>
38 + </li>
39 + <li>
40 + <p><a id="cit2"></a>[cit2] <a href="https://notabug.org/zPlus/freepost/commit/5b034991ac1190f7149e3efa68d740220b0b8090" class="bare">https://notabug.org/zPlus/freepost/commit/5b034991ac1190f7149e3efa68d740220b0b8090</a></p>
41 + </li>
42 + <li>
43 + <p><a id="cit3"></a>[cit3] <a href="https://web.archive.org/web/20150129023118/https://symfony.com/projects" class="bare">https://web.archive.org/web/20150129023118/https://symfony.com/projects</a></p>
44 + </li>
45 + <li>
46 + <p><a id="cit4"></a>[cit4] <a href="https://freepost.peers.community/post/gcghb5oqf0" class="bare">https://freepost.peers.community/post/gcghb5oqf0</a></p>
47 + </li>
48 + <li>
49 + <p><a id="cit5"></a>[cit5] <a href="https://notabug.org/zPlus/freepost/commit/b6a047b015c0b17a8fe83a62996b09dca9eca7d6" class="bare">https://notabug.org/zPlus/freepost/commit/b6a047b015c0b17a8fe83a62996b09dca9eca7d6</a></p>
50 + </li>
51 + </ul>
52 + </div>
53 + </div>
54 + </div>
55 +
56 + {% endblock %}

+73/-0 A   pages/lib.reviews.html
index 0000000..e6f58bd
old size: 0B - new size: 2K
new file mode: -rw-r--r--
@@ -0,0 +1,73 @@
1 + {% set title = "lib.reviews" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>lib.reviews</strong> is a web-based platform for writing reviews about anything. It
10 + was started in 2016 by Erik Moeller with the goal of creating a free and open
11 + platform focusing on high quality, trustworthy reviews available under free
12 + licenses<sup><a href="#cit1">[cit1]</a></sup>. As of August 2018 the database contains more than 800
13 + reviews<sup><a href="#cit2">[cit2]</a></sup>. Registration to the website is not open, and requires an
14 + invitation from other users.</p>
15 + </div>
16 + </div>
17 + </div>
18 + <div class="sect1">
19 + <h2 id="_teams">Teams</h2>
20 + <div class="sectionbody">
21 + <div class="paragraph">
22 + <p>Users of the platform can organize their work by joining thematic groups called
23 + "teams"<sup><a href="#cit3">[cit3]</a></sup>. Each team focus on reviewing a particular category of things.
24 + Some examples are the "F-droid reviews" team for reviewing apps on the f-droid
25 + app store, the "Esperanto" team for writing reviews in the Esperanto language,
26 + and the "Gamebooks" team for reviewing anything related to gamebooks.</p>
27 + </div>
28 + </div>
29 + </div>
30 + <div class="sect1">
31 + <h2 id="_gallery">Gallery</h2>
32 + <div class="sectionbody">
33 + <div class="videoblock">
34 + <div class="content">
35 + <video src="https://archive.dokk.org/videos/lib.reviews_screencast.mp4" width="20%" controls>
36 + Your browser does not support the video tag.
37 + </video>
38 + </div>
39 + </div>
40 + </div>
41 + </div>
42 + <div class="sect1">
43 + <h2 id="_see_also">See Also</h2>
44 + <div class="sectionbody">
45 + <div class="ulist">
46 + <ul>
47 + <li>
48 + <p><a href="The_Peers_Community">The Peers Community</a></p>
49 + </li>
50 + </ul>
51 + </div>
52 + </div>
53 + </div>
54 + <div class="sect1">
55 + <h2 id="_references">References</h2>
56 + <div class="sectionbody">
57 + <div class="ulist bibliography">
58 + <ul class="bibliography">
59 + <li>
60 + <p><a id="cit1"></a>[cit1] <a href="https://lists.gnu.org/archive/html/libreplanet-discuss/2016-05/msg00093.html" class="bare">https://lists.gnu.org/archive/html/libreplanet-discuss/2016-05/msg00093.html</a></p>
61 + </li>
62 + <li>
63 + <p><a id="cit2"></a>[cit2] <a href="https://lib.reviews/static/downloads/dumps" class="bare">https://lib.reviews/static/downloads/dumps</a></p>
64 + </li>
65 + <li>
66 + <p><a id="cit3"></a>[cit3] <a href="https://lib.reviews/teams" class="bare">https://lib.reviews/teams</a></p>
67 + </li>
68 + </ul>
69 + </div>
70 + </div>
71 + </div>
72 +
73 + {% endblock %}

+38/-1 R   templates/library.html -> pages/library.html
index 5041e9e..716b803
old size: 725B - new size: 2K
@@ -1,7 +1,44 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 3 {% block title %}Library{% endblock %}
4 4
5 + {% set data = query("""
6 + PREFIX library: <dokk:library:>
7 + PREFIX license: <dokk:license:>
8 +
9 + CONSTRUCT {
10 + ?item library:title ?title;
11 + library:author ?author ;
12 + library:license ?license .
13 + ?license license:id ?license_id ;
14 + license:name ?license_name .
15 + }
16 + WHERE {
17 + ?item library:title ?title ;
18 + library:author ?author ;
19 + library:license ?license .
20 +
21 + OPTIONAL {
22 + ?license license:id ?license_id_optional ;
23 + license:name ?license_name_optional .
24 + }
25 +
26 + BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id)
27 + BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name)
28 + }
29 + ORDER BY UCASE(?title)
30 + """,
31 + {
32 + '@context': {
33 + 'library': 'dokk:library:',
34 + 'license': 'dokk:license:',
35 + 'library:author': { '@container': '@set' },
36 + 'library:license': { '@container': '@set' }
37 + },
38 + 'library:title': {}
39 + })
40 + %}
41 +
5 42 {% block body %}
6 43
7 44 <div class="library">

+13/-1 R   templates/licenses.html -> pages/license.html
index d0f8ec3..01bb8dc
old size: 327B - new size: 543B
@@ -1,4 +1,16 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 +
3 + {% set data = query("""
4 + PREFIX license: <dokk:license:>
5 +
6 + SELECT *
7 + WHERE {
8 + ?license license:id ?id ;
9 + license:name ?name.
10 + }
11 + ORDER BY ASC(UCASE(?name))
12 + """)
13 + %}
2 14
3 15 {% block title %}Licenses{% endblock %}
4 16

+16/-2 R   templates/manpages.html -> pages/manpages.html
index f5c5fe6..72c9b2a
old size: 637B - new size: 924B
@@ -1,4 +1,18 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 +
3 + {% set data = query("""
4 + PREFIX mp: <dokk:manpages:>
5 +
6 + SELECT DISTINCT ?distribution ?version
7 + WHERE {
8 + [] mp:source [
9 + mp:distribution_version ?version ;
10 + mp:distribution_name ?distribution ;
11 + ] .
12 + }
13 + ORDER BY ?distribution ?version
14 + """)
15 + %}
2 16
3 17 {% block title %}man pages{% endblock %}
4 18
@@ -7,7 +21,7 @@
7 21 <div class="manpages">
8 22
9 23 <div class="path">
10 - <a href="{{ url('homepage') }}">DOKK</a> /
24 + <a href="/">DOKK</a> /
11 25 manpages
12 26 </div>
13 27

+14/-1 R   templates/mimi_and_eunice.html -> pages/mimi_and_eunice.html
index 04144e8..d8c19b8
old size: 391B - new size: 689B
@@ -1,4 +1,17 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 +
3 + {% set data = query("""
4 + PREFIX mimi_eunice: <dokk:mimi_and_eunice:>
5 + PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
6 +
7 + SELECT ?number ?title
8 + WHERE {
9 + ?id mimi_eunice:title ?title .
10 + BIND (SUBSTR(STR(?id), 22) as ?number)
11 + }
12 + ORDER BY ?number
13 + """)
14 + %}
2 15
3 16 {% block title %}Mimi & Eunice{% endblock %}
4 17

+30/-0 A   pages/radio-browser.info.html
index 0000000..9876ecf
old size: 0B - new size: 908B
new file mode: -rw-r--r--
@@ -0,0 +1,30 @@
1 + {% set title = "radio-browser.info" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>radio-browser.info</strong> is a website that collects information about Internet
10 + radio stations. All the data is released in the public domain. As of August,
11 + 2018 the database contains more than 20,000 radio stations and is integrated
12 + into more than 20 projects, including RadioDroid, <a href="InternetRadio_(app)">InternetRadio</a>,
13 + and NextCloud<sup><a href="#cit1">[cit1]</a></sup>.</p>
14 + </div>
15 + </div>
16 + </div>
17 + <div class="sect1">
18 + <h2 id="_references">References</h2>
19 + <div class="sectionbody">
20 + <div class="ulist bibliography">
21 + <ul class="bibliography">
22 + <li>
23 + <p><a id="cit1"></a>[cit1] <a href="https://www.radio-browser.info" class="bare">https://www.radio-browser.info</a></p>
24 + </li>
25 + </ul>
26 + </div>
27 + </div>
28 + </div>
29 +
30 + {% endblock %}

+5/-7 R   templates/article.html -> pages/templates/article.tpl
index 220af04..cba9e2a
old size: 482B - new size: 372B
@@ -1,6 +1,6 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 - {% block title %}{{ data["a:title"] }}{% endblock %}
3 + {% block title %}{{ title }}{% endblock %}
4 4 {% block stylesheets %}
5 5 <link href="/static/css/asciidoctor.css" rel="stylesheet">
6 6 {% endblock %}
@@ -10,14 +10,12 @@
10 10 <div class="articles">
11 11
12 12 <div class="path">
13 - <a href="{{ url('homepage') }}">DOKK</a> /
14 - <a href="{{ url('articles') }}">articles</a> /
15 - {{ data["a:title"] }}
13 + <a href="/">DOKK</a>
16 14 </div>
17 15
18 - <h1>{{ data["a:title"] }}</h1>
16 + <h1>{{ title }}</h1>
19 17
20 - {{ data["a:html"]|safe }}
18 + {% block article %}{% endblock %}
21 19
22 20 </div>
23 21

+7/-3 R   templates/articles.html -> pages/templates/articles.tpl
index 7d2e94d..33ef12f
old size: 443B - new size: 452B
@@ -1,4 +1,8 @@
1 - {% extends "base.html" %}
1 + {# This is an old page that listed articles and should be removed
2 + because unused
3 + #}
4 +
5 + {% extends "templates/base.tpl" %}
2 6
3 7 {% block title %}Articles{% endblock %}
4 8
@@ -11,9 +15,9 @@
11 15 articles
12 16 </div>
13 17
14 - {% for article in data["results"]["bindings"] %}
18 + {% for page in pages %}
15 19 <p>
16 - <a href="{{ url('article', id=article['iri']['value'][14:]) }}">{{ article['title']['value'] }}</a>
20 + <a href="/{{ page }}">{{ page }}</a>
17 21 </p>
18 22 {% endfor %}
19 23 </div>

+4/-0 R   templates/base.html -> pages/templates/base.tpl
index 84dc0eb..fe0f782
old size: 390B - new size: 517B
@@ -1,3 +1,7 @@
1 + {# This is the "base" HTML that every other page is supposed to extend. It contains
2 + the basic HTML structure of a page.
3 + #}
4 +
1 5 <!DOCTYPE html>
2 6 <html lang="en">
3 7 <head>

+43/-2 R   templates/library_item.html -> pages/templates/library/item.tpl
index 6e83ed6..6fe7f13
old size: 936B - new size: 2K
@@ -1,4 +1,45 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 +
3 + {% set data = query("""
4 + PREFIX library: <dokk:library:>
5 + PREFIX license: <dokk:license:>
6 +
7 + CONSTRUCT {
8 + ?item library:title ?title ;
9 + library:author ?author ;
10 + library:license ?license .
11 +
12 + ?license license:id ?license_id ;
13 + license:name ?license_name .
14 + }
15 + WHERE {
16 + ?item
17 + library:title ?title ;
18 + library:author ?author ;
19 + library:license ?license .
20 +
21 + FILTER (?item = <dokk:library:""" + item_id + """>)
22 +
23 + OPTIONAL {
24 + ?license license:id ?license_id_optional ;
25 + license:name ?license_name_optional .
26 + }
27 +
28 + BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id)
29 + BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name)
30 + }
31 + """,
32 + {
33 + "@context": {
34 + "library": "dokk:library:",
35 + "license": "dokk:license:",
36 + "library:author": { "@container": "@set" },
37 + "library:license": { "@container": "@set" }
38 + },
39 + "library:title": {}
40 + }
41 + )["@graph"][0]
42 + %}
2 43
3 44 {% block title %}{{ data['library:title'] }}{% endblock %}
4 45
@@ -6,7 +47,7 @@
6 47
7 48 <div class="library_item">
8 49 <div class="header">
9 - <a href="{{ url('library') }}">DOKK Library</a>
50 + <a href="/library">DOKK Library</a>
10 51 </div>
11 52
12 53 <div>

+8/-1 R   templates/license.html -> pages/templates/license/license.tpl
index 915978d..228e9d2
old size: 361B - new size: 488B
@@ -1,4 +1,11 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 +
3 + {% set data = query("""
4 + PREFIX license: <dokk:license:>
5 +
6 + DESCRIBE license:""" + license_id + """
7 + """)
8 + %}
2 9
3 10 {% block title %}{{ data['license:name'] }}{% endblock %}
4 11

+4/-4 R   templates/manpage_disambiguation.html -> pages/templates/manpages/disambiguation.tpl
index 5dfde0b..5c046ff
old size: 964B - new size: 929B
@@ -1,4 +1,4 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 3 {% block title %}Man pages named {{ name }} in section {{ section }}{% endblock %}
4 4
@@ -7,8 +7,8 @@
7 7 <div class="manpages">
8 8
9 9 <div class="path">
10 - <a href="{{ url('homepage') }}">DOKK</a> /
11 - <a href="{{ url('manpages') }}">manpages</a>
10 + <a href="/">DOKK</a> /
11 + <a href="/manpages">manpages</a>
12 12 </div>
13 13
14 14 <p>
@@ -20,7 +20,7 @@
20 20 {% for page in data["@graph"] %}
21 21 <tr>
22 22 <td>
23 - <a href="{{ url('manpages') }}/{{ page['@id'][3:] }}">
23 + <a href="/manpages/{{ page['@id'][3:] }}">
24 24 {{ page['mp:source']['mp:filename'] }}
25 25 </a>
26 26 </td>

+3/-3 R   templates/manpages_distribution.html -> pages/templates/manpages/distribution.tpl
index 61bd30e..a5c36df
old size: 647B - new size: 624B
@@ -1,4 +1,4 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 3 {% block title %}{{ distribution }} {{ version }} man pages{% endblock %}
4 4
@@ -7,8 +7,8 @@
7 7 <div class="manpages">
8 8
9 9 <div class="path">
10 - <a href="{{ url('homepage') }}">DOKK</a> /
11 - <a href="{{ url('manpages') }}">manpages</a> /
10 + <a href="/">DOKK</a> /
11 + <a href="/manpages">manpages</a> /
12 12 {{ distribution }} {{ version }}
13 13 </div>
14 14

+3/-3 R   templates/manpage.html -> pages/templates/manpages/manpage.tpl
index 3545d06..cbbff47
old size: 777B - new size: 754B
@@ -1,4 +1,4 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 3 {% block title %}{{ data['mp:name'] }}({{ data['mp:section'] }}){% endblock %}
4 4 {% block stylesheets %}
@@ -10,8 +10,8 @@
10 10 <div class="manpages">
11 11
12 12 <div class="path">
13 - <a href="{{ url('homepage') }}">DOKK</a> /
14 - <a href="{{ url('manpages') }}">manpages</a> /
13 + <a href="/">DOKK</a> /
14 + <a href="/manpages">manpages</a> /
15 15 <a href="{{ url('manpages_distribution', distribution=distribution, version=version) }}">{{ distribution }} {{ version }}</a> /
16 16 <a href="{{ url('manpages_package', distribution=distribution, version=version, package=package) }}">{{ package }}</a> /
17 17 {{ data["mp:source"]["mp:filename"] }}

+3/-3 R   templates/manpages_package.html -> pages/templates/manpages/package.tpl
index 1dc761d..1988e36
old size: 711B - new size: 688B
@@ -1,4 +1,4 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 3 {% block title %}{{ package }} ({{ distribution }} {{ version }}) man pages{% endblock %}
4 4
@@ -7,8 +7,8 @@
7 7 <div class="manpages">
8 8
9 9 <div class="path">
10 - <a href="{{ url('homepage') }}">DOKK</a> /
11 - <a href="{{ url('manpages') }}">manpages</a> /
10 + <a href="/">DOKK</a> /
11 + <a href="/manpages">manpages</a> /
12 12 <a href="{{ url('manpages_distribution', distribution=distribution, version=version) }}">{{ distribution }} {{ version }}</a> /
13 13 {{ package }}
14 14 </div>

+1/-1 R   templates/mimi_and_eunice_strip.html -> pages/templates/mimi_and_eunice/strip.tpl
index 7aeccd0..ce8d9c9
old size: 1005B - new size: 1014B
@@ -1,4 +1,4 @@
1 - {% extends "base.html" %}
1 + {% extends "templates/base.tpl" %}
2 2
3 3 {% block title %}Mimi&Eunice {{ data['@id'][12:] }}: {{ data['mimi_eunice:title'] }}{% endblock %}
4 4

+31/-0 A   pages/virtual_hosting_platform_for_free_software.html
index 0000000..4acd30a
old size: 0B - new size: 1005B
new file mode: -rw-r--r--
@@ -0,0 +1,31 @@
1 + {% set title = "Virtual Hosting platform For Free Software" %}
2 + {% extends "templates/article.tpl" %}
3 +
4 + {% block article %}
5 +
6 + <div id="preamble">
7 + <div class="sectionbody">
8 + <div class="paragraph">
9 + <p><strong>Virtual Hosting platform For Free Software</strong>, or <strong>VHFFS</strong>, is a free software
10 + platform developed by <a href="TuxFamily">TuxFamily</a> for managing the organization&#8217;s
11 + servers and users services. It provides a web interface for users to request
12 + services, and a moderation system for administrators to accept or refuse
13 + services creation. The project was started in 1999 by the TuxFamily
14 + administrator team<sup><a href="#cit1">[cit1]</a></sup>.</p>
15 + </div>
16 + </div>
17 + </div>
18 + <div class="sect1">
19 + <h2 id="_references">References</h2>
20 + <div class="sectionbody">
21 + <div class="ulist bibliography">
22 + <ul class="bibliography">
23 + <li>
24 + <p><a id="cit1"></a>[cit1] <a href="https://vhffs.org/overview" class="bare">https://vhffs.org/overview</a></p>
25 + </li>
26 + </ul>
27 + </div>
28 + </div>
29 + </div>
30 +
31 + {% endblock %}