Recent changes to this wiki:

Accidental deletion
This reverts commit db78433987674ffa07f0642a95241169c5cbf9ee
diff --git a/description.mdwn b/description.mdwn
index 5162dc7..e95be96 100644
--- a/description.mdwn
+++ b/description.mdwn
@@ -41,4 +41,14 @@ There are lots of other things in the [pipeline](https://bugs.launchpad.net/libr
 The basic architecture is meant to be simple and scalable:
 
 1. Users log into a dynamic [Django](http://www.djangoproject.com)-based site where they upload their photos and confirm their email or OpenID addresses.
-2. Pictures from Gravatar and other Libravatar 
+2. Pictures from Gravatar and other Libravatar instances are proposed for import.
+3. Et voilà!
+
+If you're interested in the details of how third-party websites display Libravatar photos, have a look at [[our API|api]]. The gist of it is that clients get a base URL via a DNS lookup and then tack on the hashed value of the user's email or OpenID address to form the final image:
+
+<table border="1">
+<tr><td align="center"><img src="http://cdn.libravatar.org/avatar/f52a1d3d8c39868fc92cf70828821635"></td></tr>
+<tr><td align="center">&lt;img src="http://cdn.libravatar.org/avatar/f52a1d3d8c39868fc92cf70828821635"&gt;</code></td></tr>
+</table>
+
+It's pretty simple, but for most web applications it's even easier because they're just using one of the convenient [[libraries]] provided by the community.

diff --git a/description.mdwn b/description.mdwn
index e95be96..5162dc7 100644
--- a/description.mdwn
+++ b/description.mdwn
@@ -41,14 +41,4 @@ There are lots of other things in the [pipeline](https://bugs.launchpad.net/libr
 The basic architecture is meant to be simple and scalable:
 
 1. Users log into a dynamic [Django](http://www.djangoproject.com)-based site where they upload their photos and confirm their email or OpenID addresses.
-2. Pictures from Gravatar and other Libravatar instances are proposed for import.
-3. Et voilà!
-
-If you're interested in the details of how third-party websites display Libravatar photos, have a look at [[our API|api]]. The gist of it is that clients get a base URL via a DNS lookup and then tack on the hashed value of the user's email or OpenID address to form the final image:
-
-<table border="1">
-<tr><td align="center"><img src="http://cdn.libravatar.org/avatar/f52a1d3d8c39868fc92cf70828821635"></td></tr>
-<tr><td align="center">&lt;img src="http://cdn.libravatar.org/avatar/f52a1d3d8c39868fc92cf70828821635"&gt;</code></td></tr>
-</table>
-
-It's pretty simple, but for most web applications it's even easier because they're just using one of the convenient [[libraries]] provided by the community.
+2. Pictures from Gravatar and other Libravatar 

update libravatarserv entry
diff --git a/running_your_own.mdwn b/running_your_own.mdwn
index d24cad8..4582841 100644
--- a/running_your_own.mdwn
+++ b/running_your_own.mdwn
@@ -11,7 +11,7 @@ libravatar | The software that runs libravatar.org until 2019 | web-based | Pyth
 [Simple Libravatar service](http://pusling.com/blog/?p=274) | Quick hack to serve static files | command line only | Shell script | None needed | Email | none (always returns a static image)
 [ivatar](https://git.linux-kernel.at/oliver/ivatar) | The software that runs the current libravatar.org | web-based | Python | Affero GPLv3 | Email, OpenID | 404, mm (and its alias mp), identicon, monsterid, wavatar, retro, robohash, pagan
 [libravatar.cgi](https://github.com/Aversiste/libravatar.cgi) | Simple CGI implementation | none | C | ISC | Email | 404, mm (and its alias mp), blank
-[libravatarserv](https://schlomp.space/tastytea/libravatarserv) | Simple libravatar server | none | C++ | GPLv3 | Email | 404, mm (and its alias mp), identicon, URL; optionally returns a default image instead
+[libravatarserv](https://schlomp.space/tastytea/libravatarserv) | Simple libravatar server | none | C++ | GPLv3 | Email | 404, mm (and its alias mp), identicon (=retro), retro; optionally returns a default image instead
 [libravatar-nginx](https://git.shivering-isles.com/shivering-isles/libravatar-nginx) | Simple static service with fallback to libravatar.org | none | Docker & nginx | AGPLv3 | Email | supports size and default params (urls, 404)
 """]]
 

remove pluralization of adjectival phrase (English doesn't have plural adjectives)
diff --git a/api.mdwn b/api.mdwn
index 231f227..a44a8a0 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -64,7 +64,7 @@ A few special values are also allowed:
 * <tt>**identicon**</tt>: return an image containing a random [geometric pattern](http://scott.sherrillmix.com/blog/blogger/wp_identicon/)
 * <tt>**monsterid**</tt>: return an image containing a random [monsterid](http://scott.sherrillmix.com/blog/blogger/wp_monsterid/)
 * <tt>**wavatar**</tt>: return an image containing a random [wavatar](http://www.shamusyoung.com/twentysidedtale/?p=1462)
-* <tt>**retro**</tt>: return an image containing a random retro-looking, 8-bits arcade style pixel-art
+* <tt>**retro**</tt>: return an image containing a random retro-looking, 8-bit arcade style pixel-art
 * <tt>**robohash**</tt>: return an image containing a random [robohash](https://robohash.org/)
 * <tt>**pagan**</tt>: return an image containing a random retro adventure game character using [pagan](https://github.com/daboth/pagan)
 

diff --git a/api.mdwn b/api.mdwn
index d63ab7c..231f227 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -9,8 +9,8 @@ There are 4 steps for displaying Libravatar-hosted images into an application:
 2. Discover the avatar server base URL:  
    a. Use DNS-based server discovery as described in the § Federated Servers section.  
    b. If no server was found, fall back to `cdn.libravatar.org` (or `seccdn.libravatar.org` for HTTPS).
-3. Create a URL like `http://BASEURL/avatar/HASH`.
-4. Put the URL into an `img` tag on your page.
+3. Create a URL like `https://BASEURL/avatar/HASH`.
+4. Put the URL into an `img` tag on your page. Eg. `<img src="https://seccdn.libravatar.org/avatar/HASH" referrerpolicy="no-referrer">`
 
 A collection of [[libraries or plugins|libraries]] implementing these steps are available.
 
@@ -32,7 +32,7 @@ Here's an example in Python:
       else:
         baseurl = 'http://' + hostname + ':' + port + '/avatar/'
     except:
-      baseurl = 'http://cdn.libravatar.org/avatar/'
+      baseurl = 'https://seccdn.libravatar.org/avatar/'
     hash = hashlib.md5(email.strip().lower()).hexdigest()
     print baseurl + hash
 
@@ -42,7 +42,7 @@ Here's an example in Python:
 
 The default size for images is 80x80 pixels, however it can be changed by providing the extra parameter **size** or **s** to the URL:
 
-    http://cdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?s=100
+    https://seccdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?s=100
 
 Acceptable values range from 1 to 512. Invalid input such as non-integer or out-of-range values will be ignored.
 
@@ -50,12 +50,12 @@ Acceptable values range from 1 to 512. Invalid input such as non-integer or out-
 
 When an image is requested for an email address without a Libravatar account a default is substituted. This behaviour can be overridden by providing the extra parameter **default** or **d** to the URL:
 
-    http://cdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?d=/static/nobody.jpg
+    https://seccdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?d=/static/nobody.jpg
 
 If no image exists for the hash <tt>40f8d096a3777232204cb3f796c577b7</tt> then a redirection is made toward <tt>/static/nobody.jpg</tt>.
 Please note that due to [CWE-601](https://cwe.mitre.org/data/definitions/601.html), redirection to external sites (eg. anything that starts with http[s]://) is prohibited. Only a few external sites are in the [list of trusted sites](https://git.linux-kernel.at/oliver/ivatar/-/blob/master/config.py#L213). If you want to be added, please [contact](https://www.libravatar.org/contact/) us and we will check if your request is feasible.
 
-The default value is <tt>http://cdn.libravatar.org/nobody.png</tt>.
+The default value is <tt>https://seccdn.libravatar.org/nobody.png</tt>.
 
 A few special values are also allowed:
 
@@ -98,7 +98,7 @@ If the **default** parameter is robohash then a special sub-option can be used t
 
 It is sometimes interesting to test the **default** option, even for hashes with matching avatars. This behavior can be triggered by providing the extra parameter **forcedefault** or **f** to the URL with a value of **y**:
 
-    http://cdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?d=retro&f=y
+    https://seccdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?d=retro&f=y
 
 Any other value will be ignored.
 
@@ -106,7 +106,7 @@ Any other value will be ignored.
 
 This API mimics closely the [Gravatar API](http://en.gravatar.com/site/implement/). If an application or website already supports [Gravatar](http://www.gravatar.com) then switching to the basic Libravatar service is just a matter or changing the base URL:
 
-    http://www.gravatar.com/avatar => http://cdn.libravatar.org/avatar
+    http://www.gravatar.com/avatar => https://seccdn.libravatar.org/avatar
 
 or for HTTPS version of the service:
 
@@ -160,7 +160,7 @@ The same 5 steps apply:
 2. Convert the **protocol and hostname parts** of the URL to lowercase. e.g. HTTP://UserName:Password@EXAMPLE.COM/ID/Bob => http://UserName:Password@example.com/ID/Bob
 3. Compute the hash (using the **SHA256 hash algorithm only**).
 4. Turn the image into a URL by prefixing it with the Libravatar base URL.
-5. Put the image into an <tt>img</tt> tag on your page.
+5. Put the image into an <tt>img</tt> tag on your page. Eg. `<img src="https://seccdn.libravatar.org/avatar/HASH" referrerpolicy="no-referrer">`
 
 Therefore, if the email address of some user is missing but his OpenID URLs is known then a hash can be generated:
 
@@ -180,3 +180,7 @@ Therefore, if the email address of some user is missing but his OpenID URLs is k
 # Testing tool
 
 A [domain check tool](https://www.libravatar.org/tools/check_domain) is also available to help testing Libravatar integration or library development.
+
+# Secure versus non-secure requests
+
+All non-secure requests (`http://`) coming to libravatar are automatically redirected to SSL (`https://`). However, that of course puts a bit more load on the webserver and the redirect is also needed on the client side, which of course increases the page load time. Therefore it's highly recommended to always use SSL, even if your own page doesn't use SSL. The other way round anyway doesn't work, as this will throw a warning in most (all?) browsers.

diff --git a/api.mdwn b/api.mdwn
index 503ad99..d63ab7c 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -50,9 +50,10 @@ Acceptable values range from 1 to 512. Invalid input such as non-integer or out-
 
 When an image is requested for an email address without a Libravatar account a default is substituted. This behaviour can be overridden by providing the extra parameter **default** or **d** to the URL:
 
-    http://cdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?d=http://example.com/nobody.jpg
+    http://cdn.libravatar.org/avatar/40f8d096a3777232204cb3f796c577b7?d=/static/nobody.jpg
 
-If no image exists for the hash <tt>40f8d096a3777232204cb3f796c577b7</tt> then a redirection is made toward <tt>http://example.com/nobody.jpg</tt>.
+If no image exists for the hash <tt>40f8d096a3777232204cb3f796c577b7</tt> then a redirection is made toward <tt>/static/nobody.jpg</tt>.
+Please note that due to [CWE-601](https://cwe.mitre.org/data/definitions/601.html), redirection to external sites (eg. anything that starts with http[s]://) is prohibited. Only a few external sites are in the [list of trusted sites](https://git.linux-kernel.at/oliver/ivatar/-/blob/master/config.py#L213). If you want to be added, please [contact](https://www.libravatar.org/contact/) us and we will check if your request is feasible.
 
 The default value is <tt>http://cdn.libravatar.org/nobody.png</tt>.
 

mention myself as the contact
diff --git a/infrastructure/mail_domain.mdwn b/infrastructure/mail_domain.mdwn
index dab9f71..07031c7 100644
--- a/infrastructure/mail_domain.mdwn
+++ b/infrastructure/mail_domain.mdwn
@@ -2,7 +2,7 @@
 
 # libravatar.org mail domain
 
-The hosting of the mail domain is kindly provided by the [systemausfall.org](https://systemausfall.org) project.
+The hosting of the mail domain is kindly provided by the [systemausfall.org](https://systemausfall.org) project (contact: via sumpfralle).
 
 Only mail forwarding is configured. There are no real mail boxes.
 

add link to mailgun delivery
diff --git a/infrastructure/mail_domain.mdwn b/infrastructure/mail_domain.mdwn
index 9121596..dab9f71 100644
--- a/infrastructure/mail_domain.mdwn
+++ b/infrastructure/mail_domain.mdwn
@@ -6,6 +6,10 @@ The hosting of the mail domain is kindly provided by the [systemausfall.org](htt
 
 Only mail forwarding is configured. There are no real mail boxes.
 
+This mail domain (`libravatar.org`) is only used for administration within the project.
+
+In contrast, email handling related to libravatar user accounts originates from `mg.libravatar.org`, which is documented in [mail delivery](/infrastructure/mail_delivery).
+
 
 # Existing mail addresses
 

describe the usage of the mailgun service
diff --git a/infrastructure/mail_delivery.mdwn b/infrastructure/mail_delivery.mdwn
new file mode 100644
index 0000000..3466002
--- /dev/null
+++ b/infrastructure/mail_delivery.mdwn
@@ -0,0 +1,20 @@
+# Overview
+
+Mails are delivered in reponse to a variety of user interactions:
+
+* register an account
+* reset a password
+* *some kind of confirmation*?
+
+Such emails are delivered via the [mailgun](https://mailgun.com/) service.
+They originate from the `mg.libravatar.org` domain.
+
+All other mails relate to the main mail domain (`libravatar.org`), which is documented in [mail domain](/infrastructure/mail_domain)
+
+
+# Administration
+
+The following people have admin access for the `mg.libravatar.org` domain in mailgun:
+
+* ofalk
+* sumpfralle

add link to new mail delivery page
diff --git a/infrastructure.mdwn b/infrastructure.mdwn
index f49266c..f57058c 100644
--- a/infrastructure.mdwn
+++ b/infrastructure.mdwn
@@ -2,6 +2,7 @@ The [[libravatar project|project]] uses different resources for running its serv
 
 * [DNS domain](DNS_domain): control of the DNS zone(s) related to the project
 * [mail domain](mail_domain): handling of mails for the domain libravatar.org (including a list of available addresses)
+* [mail delivery](mail_delivery): we use the [mailgun](https://mailgun.com/) service for sending emails related to libravatar-accounts
 * [backups](backups): how and where do we store backups of the data
 * [service hosting](service_hosting): where is the *libravatar.org* instance hosted
 * [[setup instructions|ivatar_setup]] for the main instance

Add Keyoxide to supported sites
diff --git a/sites.mdwn b/sites.mdwn
index 3a3f0e3..61658ef 100644
--- a/sites.mdwn
+++ b/sites.mdwn
@@ -5,3 +5,4 @@ Websites known to support Libravatar (please add yours!):
 * [Mozilla Reps](https://reps.mozilla.org/)
 * [GitLab](https://git.ispconfig.org/help/administration/libravatar.md)
 * [Fedora Accounts](https://accounts.fedoraproject.org/)
+* [Keyoxide](https://codeberg.org/keyoxide/keyoxide-web/pulls/92)

Add GitLab and Fedora Accounts to supported sites.
diff --git a/sites.mdwn b/sites.mdwn
index 7cb75ea..3a3f0e3 100644
--- a/sites.mdwn
+++ b/sites.mdwn
@@ -3,3 +3,5 @@ Websites known to support Libravatar (please add yours!):
 * [Debian Bug tracker](https://www.debian.org/Bugs/)
 * [git.kernel.org](https://git.kernel.org/cgit/)
 * [Mozilla Reps](https://reps.mozilla.org/)
+* [GitLab](https://git.ispconfig.org/help/administration/libravatar.md)
+* [Fedora Accounts](https://accounts.fedoraproject.org/)

diff --git a/talk_to_us.mdwn b/talk_to_us.mdwn
index 0d97e2c..57966e2 100644
--- a/talk_to_us.mdwn
+++ b/talk_to_us.mdwn
@@ -2,9 +2,9 @@ There are a few ways to get in touch with the Libravatar developers:
 
 # Matrix or IRC
 
-Join the [#libravatar room in Matrix](https://matrix.to/#/#freenode_#libravatar:matrix.org).  Once you have joined the room, you will be able to see the conversation history from that point forward, even if you don't stay online.
+Join the [#libravatar room via Matrix](https://matrix.to/#/#freenode_#libravatar:matrix.org).  Once you have joined the room, you will be able to see the conversation history from that point forward, even if you don't stay online.
 
-IRC users can reach the same channel [on Freenode IRC](irc://chat.freenode.net/%23libravatar), or [in an IRC web interface](http://webchat.freenode.net/?channels=libravatar).
+IRC users can reach the same channel [via Freenode IRC](irc://chat.freenode.net/%23libravatar) or [an IRC web interface](http://webchat.freenode.net/?channels=libravatar).
 
 Please keep in mind that you may live in a different timezone than most of the developers. So if you don't get a response, it's not because we're ignoring you, it's probably because we're sleeping :)
 

diff --git a/talk_to_us.mdwn b/talk_to_us.mdwn
index 21e0cf7..0d97e2c 100644
--- a/talk_to_us.mdwn
+++ b/talk_to_us.mdwn
@@ -1,10 +1,10 @@
 There are a few ways to get in touch with the Libravatar developers:
 
-# IRC
+# Matrix or IRC
 
-If you have an IRC client already, you can join [#libravatar](irc://chat.freenode.net/%23libravatar) on chat.freenode.net.
+Join the [#libravatar room in Matrix](https://matrix.to/#/#freenode_#libravatar:matrix.org).  Once you have joined the room, you will be able to see the conversation history from that point forward, even if you don't stay online.
 
-Otherwise, you can use this [simple web interface](http://webchat.freenode.net/?channels=libravatar).
+IRC users can reach the same channel [on Freenode IRC](irc://chat.freenode.net/%23libravatar), or [in an IRC web interface](http://webchat.freenode.net/?channels=libravatar).
 
 Please keep in mind that you may live in a different timezone than most of the developers. So if you don't get a response, it's not because we're ignoring you, it's probably because we're sleeping :)
 

Forgot include statement
diff --git a/api.mdwn b/api.mdwn
index 2ccaf4c..503ad99 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -20,6 +20,7 @@ Here's an example in Python:
 
     import dns.resolver
     import hashlib
+    import re
     email = 'George@example.com'.encode('utf-8')
     _, domain = email.split('@')
     try:

Fix scipt to handle https
diff --git a/api.mdwn b/api.mdwn
index 2a57bbc..2ccaf4c 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -24,7 +24,12 @@ Here's an example in Python:
     _, domain = email.split('@')
     try:
       answers = dns.resolver.query('_avatars._tcp.' + domain, 'SRV')
-      baseurl = 'http://' + str(answers[0].target) + ':' + str(answers[0].port) + '/avatar/'
+      hostname = re.sub('\.$','', str(answers[0].target)) # query returns "example.com." and while http requests are fine with this, https most certainly do not consider "example.com." and "example.com" to be the same.
+      port = str(answers[0].port)
+      if port == '443':
+        baseurl = 'https://' + hostname + '/avatar/'
+      else:
+        baseurl = 'http://' + hostname + ':' + port + '/avatar/'
     except:
       baseurl = 'http://cdn.libravatar.org/avatar/'
     hash = hashlib.md5(email.strip().lower()).hexdigest()

Add missing port in url
diff --git a/api.mdwn b/api.mdwn
index 02e9d22..2a57bbc 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -24,7 +24,7 @@ Here's an example in Python:
     _, domain = email.split('@')
     try:
       answers = dns.resolver.query('_avatars._tcp.' + domain, 'SRV')
-      baseurl = 'http://' + str(answers[0].target) + '/avatar/'
+      baseurl = 'http://' + str(answers[0].target) + ':' + str(answers[0].port) + '/avatar/'
     except:
       baseurl = 'http://cdn.libravatar.org/avatar/'
     hash = hashlib.md5(email.strip().lower()).hexdigest()

Fix unquoted string
diff --git a/api.mdwn b/api.mdwn
index a2a4b9f..02e9d22 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -26,7 +26,7 @@ Here's an example in Python:
       answers = dns.resolver.query('_avatars._tcp.' + domain, 'SRV')
       baseurl = 'http://' + str(answers[0].target) + '/avatar/'
     except:
-      baseurl = http://cdn.libravatar.org/avatar/
+      baseurl = 'http://cdn.libravatar.org/avatar/'
     hash = hashlib.md5(email.strip().lower()).hexdigest()
     print baseurl + hash
 

Fix double _tcp
diff --git a/api.mdwn b/api.mdwn
index 32443f7..a2a4b9f 100644
--- a/api.mdwn
+++ b/api.mdwn
@@ -116,7 +116,7 @@ DNS host names:
 * HTTP
   * `SRV _avatars._tcp.EMAILDOMAIN`
 * HTTPS
-  * `SRV _avatars-sec._tcp._tcp.EMAILDOMAIN`
+  * `SRV _avatars-sec._tcp.EMAILDOMAIN`
 
 
 Here's how to do that DNS lookup on a UNIX command line:

Add Drupal plugin
diff --git a/libraries.mdwn b/libraries.mdwn
index e525df0..36bf777 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -155,6 +155,7 @@ There aren't many plugins available at the moment, but please [[suggest the ones
 
 * [Claws Mail](http://www.claws-mail.org/plugin.php?plugin=libravatar) (since version 3.10)
 * [Dotclear](https://open-time.net/post/2018/01/23/Plugin-Gravatars-08-pour-Dotclear)
+* [Drupal 8/9](https://www.drupal.org/project/libravatar)
 * [Foswiki](http://foswiki.org/Extensions/AvatarPlugin)
 * [Friendica](https://github.com/friendica/friendica-addons/tree/master/libravatar)
 * [GNOME-shell-extension-timezone](https://github.com/jwendell/gnome-shell-extension-timezone)

Fix perl module URL
diff --git a/writing_a_plugin.mdwn b/writing_a_plugin.mdwn
index d00bbc6..6f750c2 100644
--- a/writing_a_plugin.mdwn
+++ b/writing_a_plugin.mdwn
@@ -9,7 +9,7 @@ For example, have a look at how it was done for these two Perl applications:
   * <http://git.koha-community.org/gitweb/?p=koha.git;a=commit;h=d3990031eda7f1c87d8b9f74d97625cf0c143eb3>
   * <http://git.koha-community.org/gitweb/?p=koha.git;a=commit;h=f44b674ed5a70663bc5e9808b6d0a41cec5497a0>
 
-As you can see, all of the hard bits are done in the [Libravatar::URL](http://search.cpan.org/~libravatar/Gravatar-URL-1.04/lib/Libravatar/URL.pm) CPAN module. Which brings us to the most important guideline...
+As you can see, all of the hard bits are done in the [Libravatar::URL](https://metacpan.org/pod/Libravatar::URL) CPAN module. Which brings us to the most important guideline...
 
 # Use an existing [[library|libraries]]
 

add Vishnu Ruby library and note that the other Ruby library seems to be unmaintained
diff --git a/libraries.mdwn b/libraries.mdwn
index 741c7b7..e525df0 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -102,14 +102,19 @@ The source code for [Rawatar](http://pusling.com/blog/?p=329) can be found on [g
 
 <img src="ruby_logo.png" width="75" height="75" align="right">
 
-[Kang-min Liu](http://gugod.org) has created a [Libravatar Ruby gem](http://rubygems.org/gems/libravatar).
+There is a Ruby library for Libravatar named [Vishnu](https://github.com/arokettu/vishnu), published as the Ruby gem `vishnu`. Example usage of Vishnu:
+
+    require 'vishnu'
+    Vishnu.new(email:  'someone@example.com').url   # get avatar for email
+    Vishnu.new(openid: 'https://example.com').url   # get avatar for OpenID URL
+
+Previously, [Kang-min Liu](http://gugod.org) created a Ruby library named [Libravatar](http://rubygems.org/gems/libravatar), published as the Ruby gem `libravatar`. As of 2020 the library appears to be unmaintained – it has some ignored [issues](https://github.com/gugod/libravatar/issues) and [pull requests](https://github.com/gugod/libravatar/pulls) that were created four years ago.
 
     require 'libravatar'
     avatar_url = Libravatar.new(:email => 'person@example.org')
+    # or avatar_url = Libravatar.new(:openid => 'https://example.com/id/person')
     print '<img src="', avatar_url, '">'
 
-You can also use <tt>:openid => 'https://example.com/id/person'</tt> instead of providing an email address.
-
 ## Shell
 
 [Gravatarhash](https://github.com/Aversiste/gravatarhash) is a pure shell utility supporting Libravatar and Gravatar.

diff --git a/running_your_own.mdwn b/running_your_own.mdwn
index 8ad9eaa..d24cad8 100644
--- a/running_your_own.mdwn
+++ b/running_your_own.mdwn
@@ -12,6 +12,7 @@ libravatar | The software that runs libravatar.org until 2019 | web-based | Pyth
 [ivatar](https://git.linux-kernel.at/oliver/ivatar) | The software that runs the current libravatar.org | web-based | Python | Affero GPLv3 | Email, OpenID | 404, mm (and its alias mp), identicon, monsterid, wavatar, retro, robohash, pagan
 [libravatar.cgi](https://github.com/Aversiste/libravatar.cgi) | Simple CGI implementation | none | C | ISC | Email | 404, mm (and its alias mp), blank
 [libravatarserv](https://schlomp.space/tastytea/libravatarserv) | Simple libravatar server | none | C++ | GPLv3 | Email | 404, mm (and its alias mp), identicon, URL; optionally returns a default image instead
+[libravatar-nginx](https://git.shivering-isles.com/shivering-isles/libravatar-nginx) | Simple static service with fallback to libravatar.org | none | Docker & nginx | AGPLv3 | Email | supports size and default params (urls, 404)
 """]]
 
 # Installation

Spam
This reverts commit 30510f844408403af6f08b7377f12601da97e446
diff --git a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn b/index.mdwn
similarity index 100%
rename from __60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
rename to index.mdwn

Spam
This reverts commit 1f0a75733196c5e36b2054d19d24941e53e140ce
diff --git a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
index 0552c06..12ff4a9 100644
--- a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
+++ b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
@@ -1 +1,39 @@
-<embed src="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAwIiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIkhhbGlsIEFobWFkIik7PC9zY3JpcHQ+PC9zdmc+" type="image/svg+xml" />
+<img src="https://seccdn.libravatar.org/nobody/256.png" align="right" width="256" height="256" alt="Libravatar Logo">
+
+[Libravatar](https://www.libravatar.org) (*"Libre Avatar"*) is a free service
+and an [[open specification|api]] for hosting profile images tied to email or OpenID
+addresses.
+
+In order to have your photo displayed next to your posts and comments on [[sites which support
+Libravatar|sites]] you can either create an account with us or [[run your own node|running your own]]
+of the federated avatar network.
+
+* [[What is Libravatar?|description]]
+* [[Features]]
+
+# Technology
+
+Inspired by the elegant solution pioneered by [Gravatar](http://www.gravatar.com),
+Libravatar takes a federated approach to the problem and allows domain owners to
+specify the server that should host images for their organisation.
+
+* [[API documentation|api]]
+* [[Libraries and plugins|libraries]]
+* [[Server software|running your own]]
+
+# Community
+
+Because the libravatar service is entirely powered by [Free and Open Source Software](http://www.gnu.org/licenses/agpl.html), you are more than welcome to join the project and [[run your own instance|Running your own]].
+
+* [[Ways to contribute|contribute]]
+* [[Getting in touch with us|talk to us]]
+* [[IRC meetings]] (including logs)
+* [[About the project running libravatar.org|project]]
+
+# Freedom
+
+We value your privacy and freedom which is why we are committed to delivering our service using a [[freedom-respecting infrastructure]].
+
+----
+
+The contents of this wiki is licensed under your choice of the [GNU Affero GPL version 3](http://gnu.org/licenses/agpl.html) or later, or the [Creative Commons Attribution-ShareAlike 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/) license.

Spam
This reverts commit c7a1fd5ad98e26a7bd6433f1633a18efd9741127
diff --git a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
index cff422b..0552c06 100644
--- a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
+++ b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
@@ -1 +1 @@
-<img src=xss onerror=alert(1)>
+<embed src="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAwIiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIkhhbGlsIEFobWFkIik7PC9zY3JpcHQ+PC9zdmc+" type="image/svg+xml" />

<img src=xss onerror=alert(1)>
diff --git a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
index 0552c06..cff422b 100644
--- a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
+++ b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
@@ -1 +1 @@
-<embed src="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAwIiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIkhhbGlsIEFobWFkIik7PC9zY3JpcHQ+PC9zdmc+" type="image/svg+xml" />
+<img src=xss onerror=alert(1)>

diff --git a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
index 12ff4a9..0552c06 100644
--- a/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
+++ b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
@@ -1,39 +1 @@
-<img src="https://seccdn.libravatar.org/nobody/256.png" align="right" width="256" height="256" alt="Libravatar Logo">
-
-[Libravatar](https://www.libravatar.org) (*"Libre Avatar"*) is a free service
-and an [[open specification|api]] for hosting profile images tied to email or OpenID
-addresses.
-
-In order to have your photo displayed next to your posts and comments on [[sites which support
-Libravatar|sites]] you can either create an account with us or [[run your own node|running your own]]
-of the federated avatar network.
-
-* [[What is Libravatar?|description]]
-* [[Features]]
-
-# Technology
-
-Inspired by the elegant solution pioneered by [Gravatar](http://www.gravatar.com),
-Libravatar takes a federated approach to the problem and allows domain owners to
-specify the server that should host images for their organisation.
-
-* [[API documentation|api]]
-* [[Libraries and plugins|libraries]]
-* [[Server software|running your own]]
-
-# Community
-
-Because the libravatar service is entirely powered by [Free and Open Source Software](http://www.gnu.org/licenses/agpl.html), you are more than welcome to join the project and [[run your own instance|Running your own]].
-
-* [[Ways to contribute|contribute]]
-* [[Getting in touch with us|talk to us]]
-* [[IRC meetings]] (including logs)
-* [[About the project running libravatar.org|project]]
-
-# Freedom
-
-We value your privacy and freedom which is why we are committed to delivering our service using a [[freedom-respecting infrastructure]].
-
-----
-
-The contents of this wiki is licensed under your choice of the [GNU Affero GPL version 3](http://gnu.org/licenses/agpl.html) or later, or the [Creative Commons Attribution-ShareAlike 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/) license.
+<embed src="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAwIiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIkhhbGlsIEFobWFkIik7PC9zY3JpcHQ+PC9zdmc+" type="image/svg+xml" />

rename index.mdwn to __60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
diff --git a/index.mdwn b/__60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn
similarity index 100%
rename from index.mdwn
rename to __60__img_src__61__xss_onerror__61__alert__40__1__41____62__.mdwn

diff --git a/IRC_meetings.mdwn b/IRC_meetings.mdwn
index 2f2d0ca..df903cd 100644
--- a/IRC_meetings.mdwn
+++ b/IRC_meetings.mdwn
@@ -4,6 +4,13 @@ The meetings are happening bi-weekly on Sundays at 19:00 UTC in the `#libravatar
 
 [[!toc levels=1]]
 
+# 2019-03-18
+
+Participants: clime, nipos
+
+## blog post about new libravatar
+* final tweaks
+* email for editing is either social@libravatar.org or dev@libravatar.org
 
 # 2019-03-03
 

Add HIBP
diff --git a/external_services.mdwn b/external_services.mdwn
index d56b8f0..54255dd 100644
--- a/external_services.mdwn
+++ b/external_services.mdwn
@@ -7,3 +7,4 @@
 - [Blog](https://blog.libravatar.org) and [wiki](https://wiki.libravatar.org) ([Branchable](https://branchable.com)): dev@libravatar.org and social@libravatar.org
 - [Launchpad project](https://launchpad.net/libravatar) ([translations](https://translations.launchpad.net/libravatar), [mailing list](https://launchpad.net/~libravatar-fans)): admins=<https://launchpad.net/~libravatar/+members>
 - [Freenode](https://freenode.net/) ([#libravatar](http://webchat.freenode.net/?channels=libravatar)): admin@libravatar.org, founders=fmarier,ofalk,clime,tleguern
+- [Have I Been Pwned](https://haveibeenpwned.com/DomainSearch): admin@libravatar.org

Document all external services and who controls them.
diff --git a/external_services.mdwn b/external_services.mdwn
new file mode 100644
index 0000000..d56b8f0
--- /dev/null
+++ b/external_services.mdwn
@@ -0,0 +1,9 @@
+- Twitter.com ([@libravatar](https://twitter.com/libravatar)): social@libravatar.org
+- Identica ([@libravatar](https://identi.ca/libravatar)): **francois@libravatar.org** (I haven't been able to change this --Francois)
+- [Feedburner](https://feedburner.google.com): social@libravatar.org
+- [Google Webmasters](https://google.com/webmasters): admin@libravatar.org
+- [Bing Webmaster Tools](https://www.bing.com/toolbox/webmaster/): admin@libravatar.org
+- [GitHub Org](https://github.com/libravatar): dev@libravatar.org (billing email)
+- [Blog](https://blog.libravatar.org) and [wiki](https://wiki.libravatar.org) ([Branchable](https://branchable.com)): dev@libravatar.org and social@libravatar.org
+- [Launchpad project](https://launchpad.net/libravatar) ([translations](https://translations.launchpad.net/libravatar), [mailing list](https://launchpad.net/~libravatar-fans)): admins=<https://launchpad.net/~libravatar/+members>
+- [Freenode](https://freenode.net/) ([#libravatar](http://webchat.freenode.net/?channels=libravatar)): admin@libravatar.org, founders=fmarier,ofalk,clime,tleguern

link to a new external services page
diff --git a/infrastructure.mdwn b/infrastructure.mdwn
index cec5130..f49266c 100644
--- a/infrastructure.mdwn
+++ b/infrastructure.mdwn
@@ -6,3 +6,4 @@ The [[libravatar project|project]] uses different resources for running its serv
 * [service hosting](service_hosting): where is the *libravatar.org* instance hosted
 * [[setup instructions|ivatar_setup]] for the main instance
 * [wiki](wiki): access and administration of wiki.libravatar.org
+* [[external services]]: who controls the Libravatar accounts on various external services

Move the ivatar setup instructions to a new non-obsolete page.
diff --git a/setup_instructions.mdwn b/setup_instructions.mdwn
index 7ba7c16..7c48b35 100644
--- a/setup_instructions.mdwn
+++ b/setup_instructions.mdwn
@@ -1,17 +1,4 @@
-If you would like to setup libravatar in a cloud or just for development, please, take a look [here](https://git.linux-kernel.at/oliver/ivatar/blob/master/INSTALL.md).
-
-If you intend a non-cloud/self-made deployment that uses a webserver, please, take a look at [ansible playbooks](https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/libravatar)
-that describe deployment of the www.libravatar.org instance. These playbooks are not standalone - you can't use them to deploy libravatar on a target machine from scratch - but they should give you
-a good starting point for your own deployment.
-
-If you actually decide to write a _standalone_ ansible role for your deployment that potentially anyone can use, please, contact us and we will try to sync content of our playbooks with yours. Documented
-libravatar role that anyone can use would be of a great value.
-
-Good luck and at any time, contact us at #libravatar Freenode channel or at libravatar-fans@lists.launchpad.net mailing list for any kind of help or discussion. We will be very happy to work with
-you to setup your own instance.
-
-
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
+**Obsolete: this page refers to the pre-2019 Libravatar service. See [[ivatar setup]] for the new instructions.**
 
 Here are some notes on how to setup the main `libravatar.org` server after
 you've installed Debian and the usual server packages.

diff --git a/ivatar_setup.mdwn b/ivatar_setup.mdwn
new file mode 100644
index 0000000..7f58f6d
--- /dev/null
+++ b/ivatar_setup.mdwn
@@ -0,0 +1,11 @@
+If you would like to setup libravatar in a cloud or just for development, please, take a look [here](https://git.linux-kernel.at/oliver/ivatar/blob/master/INSTALL.md).
+
+If you intend a non-cloud/self-made deployment that uses a webserver, please, take a look at [ansible playbooks](https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/libravatar)
+that describe deployment of the www.libravatar.org instance. These playbooks are not standalone - you can't use them to deploy libravatar on a target machine from scratch - but they should give you
+a good starting point for your own deployment.
+
+If you actually decide to write a _standalone_ ansible role for your deployment that potentially anyone can use, please, contact us and we will try to sync content of our playbooks with yours. Documented
+libravatar role that anyone can use would be of a great value.
+
+Good luck and at any time, contact us at #libravatar Freenode channel or at libravatar-fans@lists.launchpad.net mailing list for any kind of help or discussion. We will be very happy to work with
+you to setup your own instance.

Link to the new setup instructions page
diff --git a/infrastructure.mdwn b/infrastructure.mdwn
index a6940cc..cec5130 100644
--- a/infrastructure.mdwn
+++ b/infrastructure.mdwn
@@ -4,5 +4,5 @@ The [[libravatar project|project]] uses different resources for running its serv
 * [mail domain](mail_domain): handling of mails for the domain libravatar.org (including a list of available addresses)
 * [backups](backups): how and where do we store backups of the data
 * [service hosting](service_hosting): where is the *libravatar.org* instance hosted
-* [[setup instructions]] for the main instance
+* [[setup instructions|ivatar_setup]] for the main instance
 * [wiki](wiki): access and administration of wiki.libravatar.org

diff --git a/setup_instructions.mdwn b/setup_instructions.mdwn
index 1d5a468..7ba7c16 100644
--- a/setup_instructions.mdwn
+++ b/setup_instructions.mdwn
@@ -1,4 +1,4 @@
-If you would like to setup libravatar in a cloud or just for development, please, you can take a look [here](https://git.linux-kernel.at/oliver/ivatar/blob/master/INSTALL.md).
+If you would like to setup libravatar in a cloud or just for development, please, take a look [here](https://git.linux-kernel.at/oliver/ivatar/blob/master/INSTALL.md).
 
 If you intend a non-cloud/self-made deployment that uses a webserver, please, take a look at [ansible playbooks](https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/libravatar)
 that describe deployment of the www.libravatar.org instance. These playbooks are not standalone - you can't use them to deploy libravatar on a target machine from scratch - but they should give you

Added description for the new deployment.
diff --git a/setup_instructions.mdwn b/setup_instructions.mdwn
index c329229..1d5a468 100644
--- a/setup_instructions.mdwn
+++ b/setup_instructions.mdwn
@@ -1,3 +1,16 @@
+If you would like to setup libravatar in a cloud or just for development, please, you can take a look [here](https://git.linux-kernel.at/oliver/ivatar/blob/master/INSTALL.md).
+
+If you intend a non-cloud/self-made deployment that uses a webserver, please, take a look at [ansible playbooks](https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/libravatar)
+that describe deployment of the www.libravatar.org instance. These playbooks are not standalone - you can't use them to deploy libravatar on a target machine from scratch - but they should give you
+a good starting point for your own deployment.
+
+If you actually decide to write a _standalone_ ansible role for your deployment that potentially anyone can use, please, contact us and we will try to sync content of our playbooks with yours. Documented
+libravatar role that anyone can use would be of a great value.
+
+Good luck and at any time, contact us at #libravatar Freenode channel or at libravatar-fans@lists.launchpad.net mailing list for any kind of help or discussion. We will be very happy to work with
+you to setup your own instance.
+
+
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
 Here are some notes on how to setup the main `libravatar.org` server after

Unlink obsolete sub-page.
diff --git a/translator.mdwn b/translator.mdwn
index b19db44..7bd9a31 100644
--- a/translator.mdwn
+++ b/translator.mdwn
@@ -3,7 +3,3 @@
 If you are fluent in another language than English, you can now make Libravatar speak your language through an [easy web interface](https://translations.launchpad.net/libravatar/trunk). No coding required!
 
 There is [documentation](https://help.launchpad.net/Translations/StartingToTranslate) available to help you, but please [[get in touch with us|talk to us]] if you run into problems.
-
-# Technical information
-
-* [[How to add a new translation]]

Remove obsolete Transifex info and links to the old repo.
diff --git a/translator.mdwn b/translator.mdwn
index 6b6e8c5..b19db44 100644
--- a/translator.mdwn
+++ b/translator.mdwn
@@ -1,23 +1,9 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 # Non-English speakers
 
 If you are fluent in another language than English, you can now make Libravatar speak your language through an [easy web interface](https://translations.launchpad.net/libravatar/trunk). No coding required!
 
 There is [documentation](https://help.launchpad.net/Translations/StartingToTranslate) available to help you, but please [[get in touch with us|talk to us]] if you run into problems.
 
-## Transifex
-
-If you already use **Transifex** to translate other projects, you can also find a [Libravatar project](https://www.transifex.com/fmarier/libravatar/) on there and submit your translations that way. We do however prefer that new translators use the Launchpad system.
-
-# English speakers
-
-On the other hand, if your language of choice is English, please feel free to improve our grammer and fix our tpyos :) The best way to do that is to:
-
-1. [download the PO files](https://translations.launchpad.net/libravatar/trunk/+export)
-2. edit them, fixing what needs to be fixed
-3. attach the improved PO file to a [new bug report](https://bugs.launchpad.net/libravatar/trunk/+filebug)
-
 # Technical information
 
 * [[How to add a new translation]]

diff --git a/libraries.mdwn b/libraries.mdwn
index 752f879..741c7b7 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -166,6 +166,7 @@ There aren't many plugins available at the moment, but please [[suggest the ones
 * <s>[Weblate](http://weblate.org/) (part of core starting in 1.5, removed in 3.1)</s>
 * Wordpress: [Libravatar](http://wordpress.org/extend/plugins/libravatar/) and [Libravatar Replace](http://wordpress.org/plugins/libravatar-replace/)
 * [Zookeepr](http://zookeepr.org/) (part of core, starting with PyCon AU 2012)
+* [NIMWC - Nim Website Creator](https://github.com/ThomasTJdev/nim_websitecreator#features )
 
 # Contribute!
 

Update links to the old git repo
diff --git a/writing_a_plugin.mdwn b/writing_a_plugin.mdwn
index 6a2ffdc..d00bbc6 100644
--- a/writing_a_plugin.mdwn
+++ b/writing_a_plugin.mdwn
@@ -19,4 +19,4 @@ What should you do if a library is not available for your target language? Well,
 
 # Write a simple test page
 
-In the legacy Libravatar [source code repository](https://git.nzoss.org.nz/libravatar/libravatar) lies a few [test pages](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/contrib/) for some of the libraries that have been contributed.
+In the legacy Libravatar [source code repository](https://code.launchpad.net/~libravatar/libravatar/+git/libravatar/+ref/master) lies a few [test pages](https://git.launchpad.net/~libravatar/libravatar/tree/contrib) for some of the libraries that have been contributed.

Revert "Retire this page."
This reverts commit 97bd3fa9bed53a7e6b517b40b20e1d8e94f68788.
Leave this page around for posterity (it's no longer linked from internal pages).
diff --git a/code_layout.mdwn b/code_layout.mdwn
index 5fa2a95..7be7a97 100644
--- a/code_layout.mdwn
+++ b/code_layout.mdwn
@@ -1,3 +1,20 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).
+Libravatar is a fairly simple [Django](http://www.djangoproject.org) application.
+
+Here's what you'll find in the [main repository](https://git.nzoss.org.nz/libravatar/libravatar):
+
+* [config/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/config): [Apache](http://httpd.apache.org/) configuration files
+* [contrib/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/contrib): contributed code related to the project but not needed by the main application
+* [debian/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/debian): installation scripts and cron jobs
+* [libravatar/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar): [Gearman](http://gearman.org/) workers and Django configuration
+ * [libravatar/account/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/account): main application (logged in)
+ * [libravatar/locale/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/locale): [translations](https://translations.launchpad.net/libravatar/trunk/+translations)
+ * [libravatar/public/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/public): public-facing website (logged out)
+ * [libravatar/schemas/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/schemas): XML schema used for account exports
+ * [libravatar/templates/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/templates): HTML templates
+ * [libravatar/tools/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/tools): helpful interactive tools
+* [static/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/static): CSS stylesheets, Javascripts and images need by the Django application
+ * [static/cdn/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/static/cdn): images needed by the avatar CDNs
+
+As far as getting your head around the Django-specific code, have a look at the [excellent manual](https://docs.djangoproject.com/en/1.2/) they provide.

Revert "Retire this page."
This reverts commit dc4d27351d05cdf2cac194597c3833468e731a64.
Leave this page around for posterity (it's no longer linked from internal pages).
diff --git a/development_environment.mdwn b/development_environment.mdwn
index 5fa2a95..b4e2359 100644
--- a/development_environment.mdwn
+++ b/development_environment.mdwn
@@ -1,3 +1,140 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).
+Here is a description of François' chroot-based development. These instructions should work on any [Debian](http://www.debian.org)-based system (yes, this does include [Ubuntu](http://www.ubuntu.com)).
+
+# Prerequisites
+
+You must do the following **in your host environment**:
+
+* Install app according to [[INSTALL.md | https://bazaar.launchpad.net/~libravatar/libravatar/trunk/view/head:/INSTALL.md]]
+
+* install a database server:
+
+      apt-get install postgresql
+
+* create a user and a database:
+
+      sudo -u postgres createuser -D -P -R -S djangouser
+      sudo -u postgres createdb -O djangouser libravatar
+
+* stop Apache (if running):
+
+      sudo /etc/init.d/apache2 stop
+
+* put the following in your <tt>/etc/hosts</tt>:
+
+      127.0.0.1 www.localavatar.org cdn.localavatar.org seccdn.localavatar.org
+
+# Initial setup
+
+To create and initialize your chroot-based environment:
+
+* create a new chroot:
+
+      mkdir /var/chroot/squeeze-amd64
+      debootstrap squeeze /var/chroot/squeeze-amd64 http://ftp.us.debian.org/debian
+
+* add this line to <tt>/etc/fstab</tt>:
+
+      proc  /var/chroot/squeeze-amd64/proc  proc  defaults  0  0
+
+* mount the necessary filesystems:
+
+      mount -a
+
+* install the schroot package and put this in your /etc/schroot/schroot.conf:
+
+      [squeeze]
+      description=Debian Squeeze amd64 (squeeze)
+      directory=/var/chroot/squeeze-amd64
+      root-groups=root
+      personality=linux
+
+* enter the chroot as root:
+
+      sudo schroot -c squeeze
+
+* install the required packages in the chroot:
+
+      apt-get install git make debhelper yui-compressor python-django python-psycopg2 python-gearman.libgearman python-imaging python-openid python-dns pylint pep8 pyflakes
+
+* get a copy of the repo:
+
+      cd /root
+      git clone https://git.nzoss.org.nz/libravatar/libravatar.git
+
+* create a config file for your environment:
+
+      cd /root/libravatar/libravatar
+      cp libravatar/settings.py.example libravatar/settings.py
+
+    (edit <tt>settings.py</tt> to use <tt>localavatar.org</tt> as the domain and contain the right database credentials)
+
+* build the packages:
+
+      cd /root/libravatar
+      make package
+
+* install the packages:
+
+      cd /root
+      dpkg -i libravatar-{common,cdn,seccdn,www}*deb
+      apt-get install -f
+
+    (use <tt>localavatar.org</tt> as the domain name and <tt>localhost</tt> as the db hostname)
+
+* create a self-signed SSL certificate:
+
+      make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/libravatar/seccdn.pem
+      cp /etc/libravatar/seccdn.{pem,crt}
+      cp /etc/libravatar/{seccdn,chain}.pem
+
+    (use <tt>seccdn.localavatar.org</tt> as the common name)
+
+* start Apache:
+
+      /etc/init.d/apache2 start
+
+# Entering the chroot to work
+
+The next time you want to get inside the chroot to do some work, simply do the following:
+
+* stop Apache on the main host:
+
+      sudo /etc/init.d/apache2 stop
+
+* enter the chroot as root:
+
+      sudo schroot -c squeeze
+
+* start apache and gearman in the chroot guest:
+
+      /etc/init.d/apache2 start
+      /etc/init.d/gearman-job-server start
+
+
+# Updating the codebase
+
+If you want to update the Libravatar codebase you are working from, do this:
+
+* update the branch:
+
+      cd /root/libravatar
+      git pull
+
+* get rid of old packages:
+
+      cd /root
+      rm -f libravatar*.deb
+
+* build and install new packages:
+
+      cd /root/libravatar
+      make package
+
+      cd /root
+      dpkg -i libravatar-{common,cdn,seccdn,www}*deb
+
+* restart apache:
+
+      /etc/init.d/apache2 restart

Add shell library
diff --git a/libraries.mdwn b/libraries.mdwn
index 1297923..752f879 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -110,6 +110,10 @@ The source code for [Rawatar](http://pusling.com/blog/?p=329) can be found on [g
 
 You can also use <tt>:openid => 'https://example.com/id/person'</tt> instead of providing an email address.
 
+## Shell
+
+[Gravatarhash](https://github.com/Aversiste/gravatarhash) is a pure shell utility supporting Libravatar and Gravatar.
+
 ## Symfony
 
 Julien Fastré has a created a [Libravatar bundle](https://github.com/julienfastre/LibravatarBundle) for the PHP framework Symfony.

Add Common Lisp library
diff --git a/libraries.mdwn b/libraries.mdwn
index 2e491fc..1297923 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -15,6 +15,10 @@ If a library or plugin is not availble for your language or application, your be
 
 (!) The library does not support federation.
 
+## Common Lisp
+
+There is a [library](https://github.com/pinterface/clavatar) supporting both Gravatar, Libravatar and Unicornify.
+
 ## Haskell
 
 <img src="haskell_logo.png" width="128" height="87" align="right">

Add Nim library.
diff --git a/libraries.mdwn b/libraries.mdwn
index 5f3ea99..2e491fc 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -30,6 +30,12 @@ Alessandro Leite has created a [library](https://github.com/alessandroleite/libr
 
 (!) The library does not support federation.
 
+## Nim
+
+A tiny Nim [library](https://github.com/juancarlospaco/nim-libravatar). Federation is not supported by design as DNS discovery is left to the user.
+
+(!) The library does not support federation.
+
 ## node.js
 
 <img src="nodejs_logo.png" width="219" height="75" align="right">

Add the Java library
diff --git a/libraries.mdwn b/libraries.mdwn
index 06f5112..5f3ea99 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -24,6 +24,12 @@ The [Libravatar](http://www.rel4tion.org/projects/libravatar/) library is mainta
     import Network.Libravatar
     myUrl = avatarUrl (Right "http://example.com/id/john") True Nothing (Just 100)
 
+## Java
+
+Alessandro Leite has created a [library](https://github.com/alessandroleite/libravatar-j) in Java.
+
+(!) The library does not support federation.
+
 ## node.js
 
 <img src="nodejs_logo.png" width="219" height="75" align="right">

Add Symfony library
diff --git a/libraries.mdwn b/libraries.mdwn
index 393ff0a..06f5112 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -94,6 +94,10 @@ The source code for [Rawatar](http://pusling.com/blog/?p=329) can be found on [g
 
 You can also use <tt>:openid => 'https://example.com/id/person'</tt> instead of providing an email address.
 
+## Symfony
+
+Julien Fastré has a created a [Libravatar bundle](https://github.com/julienfastre/LibravatarBundle) for the PHP framework Symfony.
+
 ## Twisted
 
 <img src="twisted_logo.png" width="71" height="75" align="right">

Update Rawatar link
diff --git a/libraries.mdwn b/libraries.mdwn
index 7e27ba3..393ff0a 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -79,7 +79,7 @@ The [pyLibravatar](http://pypi.python.org/pypi/pyLibravatar) module can be used
 
 ## Qt5
 
-The source code for [Rawatar](http://pusling.com/blog/?p=329) can be found on [git.kde.org](http://quickgit.kde.org/?p=scratch%2Fsune%2Frawatar.git)
+The source code for [Rawatar](http://pusling.com/blog/?p=329) can be found on [git.kde.org](https://cgit.kde.org/scratch/sune/rawatar.git/)
 
 
 ## Ruby

Remove link to writing_a_library
diff --git a/writing_a_plugin.mdwn b/writing_a_plugin.mdwn
index fd24db3..6a2ffdc 100644
--- a/writing_a_plugin.mdwn
+++ b/writing_a_plugin.mdwn
@@ -15,7 +15,7 @@ As you can see, all of the hard bits are done in the [Libravatar::URL](http://se
 
 If you try to do it all yourself inside the web application, it's likely that you will be missing a few corner cases (e.g. federation may not be fully working). As you can see from the [[API]], having a complete implementation is not just a matter of changing the base URL.
 
-What should you do if a library is not available for your target language? Well, why not [[write one|writing a library]]? We'll be more than happy to help you in the process. Just come and [[talk to us]].
+What should you do if a library is not available for your target language? Well, why not [[write one|libraries#index3h1]]? We'll be more than happy to help you in the process. Just come and [[talk to us]].
 
 # Write a simple test page
 

Remove link to writing_a_library
diff --git a/developer.mdwn b/developer.mdwn
index fc049f1..f43cfea 100644
--- a/developer.mdwn
+++ b/developer.mdwn
@@ -6,7 +6,7 @@ We want to see the Libravatar community grow and one of the best ways to do this
 
 Please consider writing a patch, plugin or extension for your favourite web applications. There might already be a [[library|libraries]] for the relevant programming language. Otherwise, you could always write one!
 
-* [[Writing a library]]
+* [[Writing a library|libraries#index3h1]]
 * [[Writing a plugin]]
 * [[Suggested plugins]]
 

Retire this page.
diff --git a/writing_a_library.mdwn b/writing_a_library.mdwn
index c897ddb..cd67be8 100644
--- a/writing_a_library.mdwn
+++ b/writing_a_library.mdwn
@@ -1,9 +1 @@
-Writing a library in your language of choice is not very hard but here are a few guidelines to help you produce a library that will be as complete as possible:
-
-* Read the [[API]] documentation carefully.
-* Make sure you normalize emails and OpenID URLs according to the rules.
-* Email hashes should default to MD5 (for the [Gravatar](http://www.gravatar.com) redirection to work) while SHA256 is the only hash allowed for OpenID hashes.
-* The base URL should be looked up in DNS to ensure that federation is possible.
-* SRV weight and priority handling is tricky. Have a look at [srv_hostname()](http://cpansearch.perl.org/src/FMARIER/Gravatar-URL-1.04/lib/Libravatar/URL.pm) to see how it's done in the CPAN module.
-
-If you have any questions or run into any problems, come [[talk to us]].
+**Obsolete: please take a look at [[libraries]].**

Merge writing_a_library in libraries
diff --git a/libraries.mdwn b/libraries.mdwn
index 7a7d667..7e27ba3 100644
--- a/libraries.mdwn
+++ b/libraries.mdwn
@@ -145,4 +145,12 @@ There aren't many plugins available at the moment, but please [[suggest the ones
 
 # Contribute!
 
-Interested in writing a plugin for your favourite framework/CMS or a library for your favourite language? Please [[get in touch|talk to us]], we would be more than happy to link to them from this page!
+Writing a library in your language of choice is not very hard but here are a few guidelines to help you produce a library that will be as complete as possible:
+
+* Read the [[API]] documentation carefully.
+* Make sure you normalize emails and OpenID URLs according to the rules.
+* Email hashes should default to MD5 (for the [Gravatar](http://www.gravatar.com) redirection to work) while SHA256 is the only hash allowed for OpenID hashes.
+* The base URL should be looked up in DNS to ensure that federation is possible.
+* SRV weight and priority handling is tricky. Have a look at [srv_hostname()](http://cpansearch.perl.org/src/FMARIER/Gravatar-URL-1.04/lib/Libravatar/URL.pm) to see how it's done in the CPAN module.
+
+If you have any questions or run into any problems, come [[talk to us]]. Moreover if you are interested in writing a plugin for your favourite framework/CMS or a library for your favourite language get in touch too, we would be more than happy to link to them from this page!

Update wording for the test pages
diff --git a/writing_a_plugin.mdwn b/writing_a_plugin.mdwn
index 3304dc6..fd24db3 100644
--- a/writing_a_plugin.mdwn
+++ b/writing_a_plugin.mdwn
@@ -19,6 +19,4 @@ What should you do if a library is not available for your target language? Well,
 
 # Write a simple test page
 
-As part of the main Libravatar [source code repository](https://git.nzoss.org.nz/libravatar/libravatar), we have a few [test pages](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/contrib/) for some of the libraries that have been contributed.
-
-Once you have made a new library available, we'll be happy to include a small test case from you.
+In the legacy Libravatar [source code repository](https://git.nzoss.org.nz/libravatar/libravatar) lies a few [test pages](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/contrib/) for some of the libraries that have been contributed.

Better formatting for the imbricated lists
diff --git a/writing_a_plugin.mdwn b/writing_a_plugin.mdwn
index 28994d6..3304dc6 100644
--- a/writing_a_plugin.mdwn
+++ b/writing_a_plugin.mdwn
@@ -3,11 +3,11 @@ Most of the time, writing a plugin or adding Libravatar support to an existing w
 For example, have a look at how it was done for these two Perl applications:
 
 * [Ikiwiki](http://ikiwiki.info)
- * <http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=7723e94218a8c526fc8d869086c05dd382268649>
- * <http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=e2e1b1cd20928e2b80871e5daffaea60738d054e>
+  * <http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=7723e94218a8c526fc8d869086c05dd382268649>
+  * <http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=e2e1b1cd20928e2b80871e5daffaea60738d054e>
 * [Koha](http://koha-community.org)
- * <http://git.koha-community.org/gitweb/?p=koha.git;a=commit;h=d3990031eda7f1c87d8b9f74d97625cf0c143eb3>
- * <http://git.koha-community.org/gitweb/?p=koha.git;a=commit;h=f44b674ed5a70663bc5e9808b6d0a41cec5497a0>
+  * <http://git.koha-community.org/gitweb/?p=koha.git;a=commit;h=d3990031eda7f1c87d8b9f74d97625cf0c143eb3>
+  * <http://git.koha-community.org/gitweb/?p=koha.git;a=commit;h=f44b674ed5a70663bc5e9808b6d0a41cec5497a0>
 
 As you can see, all of the hard bits are done in the [Libravatar::URL](http://search.cpan.org/~libravatar/Gravatar-URL-1.04/lib/Libravatar/URL.pm) CPAN module. Which brings us to the most important guideline...
 

Merge the original implementation historic hosters list with the relevant subsection
diff --git a/infrastructure/service_hosting.mdwn b/infrastructure/service_hosting.mdwn
index 67dfc69..109437e 100644
--- a/infrastructure/service_hosting.mdwn
+++ b/infrastructure/service_hosting.mdwn
@@ -4,10 +4,10 @@ The instance *libravatar.org* is providing the [[open specification|api]] called
 
 ## Original implementation (up to the first quarter of 2019)
 
-The VM running the service is currently hosted by [Ingo Juergensmann](https://www.windfluechter.net/).
-
-*fmarier* has root access to the VM.
-
+* 2010-2011: hosted by Braawi (thanks to [Lars Wirzenius](https://liw.fi/))
+* 2011-2013: hosted by [AppsAttic](https://appsattic.com/) (also thanks to [Andy Chilton](http://chilts.org/))
+* 2013-2018: hosted by [Rackspace](https://www.rackspace.com/)
+* 2018-2019: hosted by [Ingo Juergensmann](https://www.windfluechter.net/)
 
 ## New 'ivatar' implementation (starting with the first quarter of 2019)
 
@@ -19,11 +19,3 @@ The list of people (Fedora accounts) with root access to the VM can be found her
 * [staging instance](https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/inventory/host_vars/libravatar-stg.fedorainfracloud.org)
 
 Members of the [Fedora group *sysadmin-libravatar*](https://admin.fedoraproject.org/accounts/group/view/sysadmin-libravatar) (e.g. Clime) and the global Fedora admins can add more root account users.
-
-
-# Timeline
-
-* since August 2018: hosted by [Ingo Juergensmann](https://www.windfluechter.net/)
-* 2013-2018: hosted by [Rackspace](https://www.rackspace.com/)
-* 2011-2013: hosted by [AppsAttic](https://appsattic.com/) (also thanks to [Andy Chilton](http://chilts.org/))
-* 2010-2011: hosted by Braawi (thanks to [Lars Wirzenius](https://liw.fi/))

Update DNS domain
diff --git a/infrastructure/DNS_domain.mdwn b/infrastructure/DNS_domain.mdwn
index 98a27a9..734457a 100644
--- a/infrastructure/DNS_domain.mdwn
+++ b/infrastructure/DNS_domain.mdwn
@@ -7,4 +7,4 @@ The project controls the following DNS domains:
 
 # Administration
 
-[[Francois Marier|fmarier]] to transfer control of the domain to Clime and OFalk.
+The zones are managed by the [[Libravatar project|https://wiki.libravatar.org/project/]] and sponsored by [Gandi.net](https://www.gandi.net/).

Remove links to retired pages
diff --git a/developer.mdwn b/developer.mdwn
index 637019f..fc049f1 100644
--- a/developer.mdwn
+++ b/developer.mdwn
@@ -1,5 +1,3 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 Depending on your interest and what programming languages you know, there are a few options to [[contribute]] to Libravatar:
 
 # Plugins / Libraries
@@ -14,9 +12,4 @@ Please consider writing a patch, plugin or extension for your favourite web appl
 
 # Core Application
 
-And of course, there is plenty of work to be done on the [main application](https://launchpad.net/libravatar). If you are a developer who wants to make a difference and work on a real Open Source project, we want to [[hear from you|talk to us]]!
-
-0. Find a [[bug or a feature|easy development tasks]] that interests you
-1. Set up your [[development environment]]
-2. [[Check the code out|code checkout]]
-3. [Profit!](http://www.ohloh.net/p/libravatar/contributors)
+And of course, there is plenty of work to be done on the [main application](https://git.linux-kernel.at/oliver/ivatar). If you are a developer who wants to make a difference and work on a real Open Source project, we want to [[hear from you|talk to us]]!

Retire this page.
diff --git a/code_checkout.mdwn b/code_checkout.mdwn
index a05b039..5fa2a95 100644
--- a/code_checkout.mdwn
+++ b/code_checkout.mdwn
@@ -1,27 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-The main repository is using **git**, but that doesn't mean you have to use it since we provide mirrors of the repository in other version control systems.
-
-# Using [git](http://www.git-scm.com)
-
-<img src="git_logo.png" width="64" height="64" align="right">
-
-You can [browse the code](https://git.launchpad.net/~libravatar/libravatar) on Launchpad or check the code out locally:
-
-    git clone https://git.launchpad.net/~libravatar/libravatar
-
-A mirror of it is also available on [Github](https://github.com/libravatar/libravatar).
-
-# Using [mercurial](http://mercurial.selenic.com/)
-
-<img src="hg_logo.png" width="64" height="64" align="right">
-
-You can [browse the code](https://bitbucket.org/libravatar/libravatar/src) on Bitbucket and [fork the repository](https://bitbucket.org/libravatar/libravatar/fork).
-
-Otherwise, just clone the repo:
-
-    hg clone https://bitbucket.org/libravatar/libravatar
-
-# Using other version control systems
-
-Is your favourite source control system not in our list? Well, if you can [[send us|talk to us]] instructions on how to convert a git repository to a *YourFavoriteVCS* repository, then we'll try to add it to the sync cronjob we have.
+Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).

Retire this page.
diff --git a/easy_development_tasks.mdwn b/easy_development_tasks.mdwn
index c1a34f6..5fa2a95 100644
--- a/easy_development_tasks.mdwn
+++ b/easy_development_tasks.mdwn
@@ -1,13 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-There are two places where we keep track of things to do in the project:
-
-* [Bug tracker](https://bugs.launchpad.net/libravatar): for bugs and suggested features in the code
-* [TODO file](https://bazaar.launchpad.net/~libravatar/libravatar/master/view/head:/TODO.md): for project-wide or sysadmin tasks
-
-But if you are looking for an easy bug / feature to start with, you may want to:
-
-* Fix a [bite-sized bug](https://bugs.launchpad.net/libravatar/+bugs?field.tag=bite-sized)
-* Implement a new [photo importer](https://bugs.launchpad.net/libravatar/+bugs?field.tag=photoimporter)
-
-Of course, you can always [[talk to us]] if you have a better idea or need some guidance.
+Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).

Retire this page.
diff --git a/development_environment.mdwn b/development_environment.mdwn
index b4e2359..5fa2a95 100644
--- a/development_environment.mdwn
+++ b/development_environment.mdwn
@@ -1,140 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-Here is a description of François' chroot-based development. These instructions should work on any [Debian](http://www.debian.org)-based system (yes, this does include [Ubuntu](http://www.ubuntu.com)).
-
-# Prerequisites
-
-You must do the following **in your host environment**:
-
-* Install app according to [[INSTALL.md | https://bazaar.launchpad.net/~libravatar/libravatar/trunk/view/head:/INSTALL.md]]
-
-* install a database server:
-
-      apt-get install postgresql
-
-* create a user and a database:
-
-      sudo -u postgres createuser -D -P -R -S djangouser
-      sudo -u postgres createdb -O djangouser libravatar
-
-* stop Apache (if running):
-
-      sudo /etc/init.d/apache2 stop
-
-* put the following in your <tt>/etc/hosts</tt>:
-
-      127.0.0.1 www.localavatar.org cdn.localavatar.org seccdn.localavatar.org
-
-# Initial setup
-
-To create and initialize your chroot-based environment:
-
-* create a new chroot:
-
-      mkdir /var/chroot/squeeze-amd64
-      debootstrap squeeze /var/chroot/squeeze-amd64 http://ftp.us.debian.org/debian
-
-* add this line to <tt>/etc/fstab</tt>:
-
-      proc  /var/chroot/squeeze-amd64/proc  proc  defaults  0  0
-
-* mount the necessary filesystems:
-
-      mount -a
-
-* install the schroot package and put this in your /etc/schroot/schroot.conf:
-
-      [squeeze]
-      description=Debian Squeeze amd64 (squeeze)
-      directory=/var/chroot/squeeze-amd64
-      root-groups=root
-      personality=linux
-
-* enter the chroot as root:
-
-      sudo schroot -c squeeze
-
-* install the required packages in the chroot:
-
-      apt-get install git make debhelper yui-compressor python-django python-psycopg2 python-gearman.libgearman python-imaging python-openid python-dns pylint pep8 pyflakes
-
-* get a copy of the repo:
-
-      cd /root
-      git clone https://git.nzoss.org.nz/libravatar/libravatar.git
-
-* create a config file for your environment:
-
-      cd /root/libravatar/libravatar
-      cp libravatar/settings.py.example libravatar/settings.py
-
-    (edit <tt>settings.py</tt> to use <tt>localavatar.org</tt> as the domain and contain the right database credentials)
-
-* build the packages:
-
-      cd /root/libravatar
-      make package
-
-* install the packages:
-
-      cd /root
-      dpkg -i libravatar-{common,cdn,seccdn,www}*deb
-      apt-get install -f
-
-    (use <tt>localavatar.org</tt> as the domain name and <tt>localhost</tt> as the db hostname)
-
-* create a self-signed SSL certificate:
-
-      make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/libravatar/seccdn.pem
-      cp /etc/libravatar/seccdn.{pem,crt}
-      cp /etc/libravatar/{seccdn,chain}.pem
-
-    (use <tt>seccdn.localavatar.org</tt> as the common name)
-
-* start Apache:
-
-      /etc/init.d/apache2 start
-
-# Entering the chroot to work
-
-The next time you want to get inside the chroot to do some work, simply do the following:
-
-* stop Apache on the main host:
-
-      sudo /etc/init.d/apache2 stop
-
-* enter the chroot as root:
-
-      sudo schroot -c squeeze
-
-* start apache and gearman in the chroot guest:
-
-      /etc/init.d/apache2 start
-      /etc/init.d/gearman-job-server start
-
-
-# Updating the codebase
-
-If you want to update the Libravatar codebase you are working from, do this:
-
-* update the branch:
-
-      cd /root/libravatar
-      git pull
-
-* get rid of old packages:
-
-      cd /root
-      rm -f libravatar*.deb
-
-* build and install new packages:
-
-      cd /root/libravatar
-      make package
-
-      cd /root
-      dpkg -i libravatar-{common,cdn,seccdn,www}*deb
-
-* restart apache:
-
-      /etc/init.d/apache2 restart
+Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).

Retire this page.
diff --git a/code_layout.mdwn b/code_layout.mdwn
index 7be7a97..5fa2a95 100644
--- a/code_layout.mdwn
+++ b/code_layout.mdwn
@@ -1,20 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-Libravatar is a fairly simple [Django](http://www.djangoproject.org) application.
-
-Here's what you'll find in the [main repository](https://git.nzoss.org.nz/libravatar/libravatar):
-
-* [config/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/config): [Apache](http://httpd.apache.org/) configuration files
-* [contrib/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/contrib): contributed code related to the project but not needed by the main application
-* [debian/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/debian): installation scripts and cron jobs
-* [libravatar/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar): [Gearman](http://gearman.org/) workers and Django configuration
- * [libravatar/account/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/account): main application (logged in)
- * [libravatar/locale/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/locale): [translations](https://translations.launchpad.net/libravatar/trunk/+translations)
- * [libravatar/public/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/public): public-facing website (logged out)
- * [libravatar/schemas/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/schemas): XML schema used for account exports
- * [libravatar/templates/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/templates): HTML templates
- * [libravatar/tools/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/tools): helpful interactive tools
-* [static/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/static): CSS stylesheets, Javascripts and images need by the Django application
- * [static/cdn/](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/static/cdn): images needed by the avatar CDNs
-
-As far as getting your head around the Django-specific code, have a look at the [excellent manual](https://docs.djangoproject.com/en/1.2/) they provide.
+Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).

Unlink coding guidelines, patch guidelines and submitting a patch.
diff --git a/developer.mdwn b/developer.mdwn
index 0c7fee1..637019f 100644
--- a/developer.mdwn
+++ b/developer.mdwn
@@ -19,7 +19,4 @@ And of course, there is plenty of work to be done on the [main application](http
 0. Find a [[bug or a feature|easy development tasks]] that interests you
 1. Set up your [[development environment]]
 2. [[Check the code out|code checkout]]
-3. Read about the [[code layout]] and [[coding guidelines]]
-4. [[Prepare your patch|patch guidelines]]
-5. [[Submit your patch|submitting a patch]]
-6. [Profit!](http://www.ohloh.net/p/libravatar/contributors)
+3. [Profit!](http://www.ohloh.net/p/libravatar/contributors)

Retire this page.
diff --git a/submitting_a_patch.mdwn b/submitting_a_patch.mdwn
index feb0c78..5fa2a95 100644
--- a/submitting_a_patch.mdwn
+++ b/submitting_a_patch.mdwn
@@ -1,38 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-The preferred way to submit a patch is via Launchpad merge requests.
-
-# Launchpad merge requests
-
-Once you have a [Launchpad account](https://launchpad.net/+login), here's how to clone the main repository and then push a personal branch to Launchpad:
-
-    git clone https://git.launchpad.net/~libravatar/libravatar
-    cd libravatar
-    git remote add francois git+ssh://git.launchpad.net/~fmarier/libravatar
-    git checkout -b test
-    (commit some changes)
-    git push -u francois test
-
-(In this example, my username is `fmarier`, my branch name is `test` and the git remote for my personal repo is `francois`.)
-
-Once you have done that, your repository will be shown in the list of [libravatar repositories](https://code.launchpad.net/libravatar) and clicking on it will take you to the [list of branches it contains](https://code.launchpad.net/~fmarier/libravatar/+git/libravatar).
-
-To submit a merge request, click on the [branch name](https://code.launchpad.net/~fmarier/libravatar/+git/libravatar/+ref/test) and then click the ["Propose for merging"](https://code.launchpad.net/~fmarier/libravatar/+git/libravatar/+ref/test/+register-merge) button.
-
-Enter the following information:
-
-- Target repository: `~libravatar/libravatar/+git/libravatar`
-- Target branch: `master`
-
-before clicking "Propose merge". This will take you to your newly-created [merge request](https://code.launchpad.net/~fmarier/libravatar/+git/libravatar/+merge/345611).
-
-# Other ways to submit a patch
-
-If the above doesn't work for you, here are other ways to contribute your patch:
-
-1. Attach it to the relevant bug on the [tracker](https://bugs.launchpad.net/libravatar) (create a [new bug](https://bugs.launchpad.net/libravatar/+filebug) if you need to)
-2. Submit a [pull request](https://help.github.com/articles/using-pull-requests) on [Github](https://github.com/libravatar/libravatar)
-
-Of course, if you need any help, [[give us a shout|talk to us]]!
-
-(You may want to have a look at our [[patch guidelines]].)
+Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).

Retire this page.
diff --git a/patch_guidelines.mdwn b/patch_guidelines.mdwn
index 98401ae..5fa2a95 100644
--- a/patch_guidelines.mdwn
+++ b/patch_guidelines.mdwn
@@ -1,9 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-Some guidelines on how to produce a good patch:
-
-* Read about [writing a good patch](http://feeding.cloud.geek.nz/2009/06/writing-perfect-patch.html) and [keeping a clean source control history](http://feeding.cloud.geek.nz/2009/07/3-ways-to-improve-your-source-control.html).
-* Make sure you follow our [[coding guidelines]].
-* Run our test suite (<tt>make test</tt>) and fix any warnings/errors it reports.
-
-Once you ready, [[send us your patch|submitting a patch]]!
+Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).

Retire this page.
diff --git a/coding_guidelines.mdwn b/coding_guidelines.mdwn
index 159e43e..5fa2a95 100644
--- a/coding_guidelines.mdwn
+++ b/coding_guidelines.mdwn
@@ -1,7 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-The main Django application follows the usual the usual [PEP-8](http://www.python.org/dev/peps/pep-0008/) style.
-
-We also enforce some of this through [pylint](http://www.logilab.org/project/pylint) in the test suite (<tt>make test</tt>).
-
-(These guidelines are also included in the [HACKING.md](https://bazaar.launchpad.net/~libravatar/libravatar/master/view/head:/HACKING.md) file distributed with Libravatar.)
+Please look directly the [development repository](https://git.linux-kernel.at/oliver/ivatar).

Add link to TTL issue
diff --git a/running_your_own.mdwn b/running_your_own.mdwn
index be18e49..8ad9eaa 100644
--- a/running_your_own.mdwn
+++ b/running_your_own.mdwn
@@ -31,7 +31,7 @@ This step is the same whatever the implementation.
 
 # TTL
 
-XXX: Currently not true.
+XXX: Currently not true, see [ivatar's issue #50](https://git.linux-kernel.at/oliver/ivatar/issues/50).
 
 The time-to-live (cache expiry) should be set to **at least 1 day** (86400 seconds).
 

Add a link to ivatar's Gitlab page
diff --git a/running_your_own.mdwn b/running_your_own.mdwn
index 79e274e..be18e49 100644
--- a/running_your_own.mdwn
+++ b/running_your_own.mdwn
@@ -9,7 +9,7 @@ Name | Description | Administration | Programming language | License | Support f
 libravatar | The software that runs libravatar.org until 2019 | web-based | Python | Affero GPLv3 | Email, OpenID | 404, mm, identicon, monsterid, wavatar, retro
 [Surrogator](https://sourceforge.net/p/surrogator/) | very simple avatar server | command line only | PHP                  | Affero GPLv3 | Email, OpenID | 404, mm
 [Simple Libravatar service](http://pusling.com/blog/?p=274) | Quick hack to serve static files | command line only | Shell script | None needed | Email | none (always returns a static image)
-ivatar | The software that runs the current libravatar.org | web-based | Python | Affero GPLv3 | Email, OpenID | 404, mm (and its alias mp), identicon, monsterid, wavatar, retro, robohash, pagan
+[ivatar](https://git.linux-kernel.at/oliver/ivatar) | The software that runs the current libravatar.org | web-based | Python | Affero GPLv3 | Email, OpenID | 404, mm (and its alias mp), identicon, monsterid, wavatar, retro, robohash, pagan
 [libravatar.cgi](https://github.com/Aversiste/libravatar.cgi) | Simple CGI implementation | none | C | ISC | Email | 404, mm (and its alias mp), blank
 [libravatarserv](https://schlomp.space/tastytea/libravatarserv) | Simple libravatar server | none | C++ | GPLv3 | Email | 404, mm (and its alias mp), identicon, URL; optionally returns a default image instead
 """]]

Remove bits better documented in ivatar's INSTALL.md file
diff --git a/running_your_own.mdwn b/running_your_own.mdwn
index c4c69fc..79e274e 100644
--- a/running_your_own.mdwn
+++ b/running_your_own.mdwn
@@ -1,5 +1,3 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 Libravatar was designed so that domain owners can choose to host themselves the profile pictures for their domain. For example, an organisation may want to have control over the pictures use for their employees.
 
 # Server implementations
@@ -16,34 +14,22 @@ ivatar | The software that runs the current libravatar.org | web-based | Python
 [libravatarserv](https://schlomp.space/tastytea/libravatarserv) | Simple libravatar server | none | C++ | GPLv3 | Email | 404, mm (and its alias mp), identicon, URL; optionally returns a default image instead
 """]]
 
-# libravatar.org
-
-The following instructions are about the official libravatar.org software.
-
-## System requirements
-
-Libravatar needs a Python3 and a few python packages, so any modern operating system will do. It as been confirmed to work on CentOS and OpenBSD.
-
-## Installation
-
-Once you've got a copy of the code, follow the instructions in the [INSTALL](https://git.linux-kernel.at/oliver/ivatar/blob/master/INSTALL.md) file.
-
-## Configuration
+# Installation
 
-XXX: To be defined.
+Please refer to the README or INSTALL file of the implementation you want to use.
 
-## DNS setup
+# DNS setup
 
 Once your instance is running on a publicly-accessible server (<tt>avatars.example.com</tt> in this example), add the following records to your DNS zone file:
 
     _avatars._tcp.example.com.     IN SRV 0 0 80  avatars.example.com
     _avatars-sec._tcp.example.com. IN SRV 0 0 443 avatars.example.com
 
-The first entry (<tt>\_avatars.\_tcp</tt>) should point to an HTTP server whereas the second one (<tt>\_avatars-sec.\_tcp</tt>) is for an HTTPS server. Nowadays unencrypted HTTP traffic is frowned upon so feel free to redirect your http endpoints to the HTTPS one.
+The first entry (<tt>\_avatars.\_tcp</tt>) should point to an HTTP server whereas the second one (<tt>\_avatars-sec.\_tcp</tt>) is for an HTTPS server. Nowadays unencrypted HTTP traffic is frowned upon so feel free to redirect your HTTP endpoints to the HTTPS one.
 
-This step is the same with any other implementation of the [[protocol/API|API]].
+This step is the same whatever the implementation.
 
-### TTL
+# TTL
 
 XXX: Currently not true.
 
@@ -51,7 +37,7 @@ The time-to-live (cache expiry) should be set to **at least 1 day** (86400 secon
 
 If you choose a TTL smaller than 1 day, Libravatar clients are allowed (and encouraged) to ignore it and cache your entry for a day.
 
-### Subdomains
+# Subdomains
 
 If you use full hostnames or subdomains in your email addresses, for example bob@foo.example.com and bob@bar.example.com, then you need to have a set of SRV records for each of them:
 
@@ -60,12 +46,12 @@ If you use full hostnames or subdomains in your email addresses, for example bob
     _avatars._tcp.bar.example.com.     IN SRV 0 0 80  avatars.example.com
     _avatars-sec._tcp.bar.example.com. IN SRV 0 0 443 avatars.example.com
 
-### SRV weights and priorities (optional)
+# SRV weights and priorities (optional)
 
 All SRV entries should have the same priority. Lower priority ones will be ignored by Libravatar clients.
 
 You may however use weights to spread the load across more than one avatar server.
 
-### Testing
+# Testing
 
 Once you have these records, have a look at the [domain check tool](https://www.libravatar.org/tools/check) to make sure everything is working.

Add software licenses to the table
diff --git a/running_your_own.mdwn b/running_your_own.mdwn
index 78eaee4..c4c69fc 100644
--- a/running_your_own.mdwn
+++ b/running_your_own.mdwn
@@ -7,16 +7,15 @@ Libravatar was designed so that domain owners can choose to host themselves the
 There currently exist the following Libravatar image server implementations:
 
 [[!table class="border" data="""
-Name                                                | Description                           | Administration    | Programming language | Support for   | Default modes
-libravatar                                          | The software that runs libravatar.org | web-based         | Python               | Email, OpenID | 404, mm, identicon, monsterid, wavatar, retro
-[Surrogator](https://sourceforge.net/p/surrogator/) | very simple avatar server             | command line only | PHP                  | Email, OpenID | 404, mm
-[Simple Libravatar service](http://pusling.com/blog/?p=274) | Quick hack to serve static files | command line only | Shell script         | Email         | none (always returns a static image)
-ivatar | The software that will run the next generation libravatar.org | web-based | Python | Email, OpenID | 404, mm (and its alias mp), identicon, monsterid, retro
-[libravatar.cgi](https://github.com/Aversiste/libravatar.cgi) | Simple CGI implementation | none | C | Email | 404, mm (and its alias mp), blank
-[libravatarserv](https://schlomp.space/tastytea/libravatarserv) | Simple libravatar server | none | C++ | Email | 404, mm (and its alias mp), identicon, URL; optionally returns a default image instead
+Name | Description | Administration | Programming language | License | Support for | Default modes
+libravatar | The software that runs libravatar.org until 2019 | web-based | Python | Affero GPLv3 | Email, OpenID | 404, mm, identicon, monsterid, wavatar, retro
+[Surrogator](https://sourceforge.net/p/surrogator/) | very simple avatar server | command line only | PHP                  | Affero GPLv3 | Email, OpenID | 404, mm
+[Simple Libravatar service](http://pusling.com/blog/?p=274) | Quick hack to serve static files | command line only | Shell script | None needed | Email | none (always returns a static image)
+ivatar | The software that runs the current libravatar.org | web-based | Python | Affero GPLv3 | Email, OpenID | 404, mm (and its alias mp), identicon, monsterid, wavatar, retro, robohash, pagan
+[libravatar.cgi](https://github.com/Aversiste/libravatar.cgi) | Simple CGI implementation | none | C | ISC | Email | 404, mm (and its alias mp), blank
+[libravatarserv](https://schlomp.space/tastytea/libravatarserv) | Simple libravatar server | none | C++ | GPLv3 | Email | 404, mm (and its alias mp), identicon, URL; optionally returns a default image instead
 """]]
 
-
 # libravatar.org
 
 The following instructions are about the official libravatar.org software.

No designer needed for now
diff --git a/contribute.mdwn b/contribute.mdwn
index 880aba5..b9c3331 100644
--- a/contribute.mdwn
+++ b/contribute.mdwn
@@ -2,7 +2,6 @@ There are many ways to contribute to Libravatar. Make sure you come and [[talk t
 
 There are a few more specific pages for particular profiles of contributors:
 
-* [[Designer]]
 * [[Developer]]
 * [[Translator]]
 * [[Security researcher]]

Definitively obsolete this page
diff --git a/designer.mdwn b/designer.mdwn
index f4b42ee..5e493af 100644
--- a/designer.mdwn
+++ b/designer.mdwn
@@ -1,11 +1,3 @@
 **Obsolete: this page refers to the pre-2019 Libravatar service.**
 
-Are you a CSS / graphics guru? Do you have any ideas on how to improve the style of our [website](https://www.libravatar.org)?
-
-We would be delighted to have you on board!
-
-The best place to start is to [[talk to us]] and then:
-
-1. grab a copy of the [HTML templates](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/libravatar/templates/) and [CSS files](https://bazaar.launchpad.net/~libravatar/libravatar/master/files/head:/static/css/)
-2. make them look fresh and attractive (i.e. the hard creative bit)
-3. attach them to a [new bug report](https://bugs.launchpad.net/libravatar/+filebug)
+We don't need redesign at the moment.

Remove links to the old service
diff --git a/suggested_plugins.mdwn b/suggested_plugins.mdwn
index 5382561..cd43b67 100644
--- a/suggested_plugins.mdwn
+++ b/suggested_plugins.mdwn
@@ -1,5 +1,3 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 The following [[plugins|libraries]] have been suggested:
 
 * StatusNet
@@ -19,8 +17,4 @@ The following [[plugins|libraries]] have been suggested:
 * BuddyCloud
 * [Gitlab](https://gitlab.com/gitlab-org/gitlab-ce/issues/19511)
 
-If you'd like to **vote** for one of these, add a "+" sign at the end of the line.
-
-Of course, the most effective way to vote for one is to write it yourself ;-) We have a [blueprint](https://blueprints.launchpad.net/libravatar/+spec/plugins-development) to keep track of the plugin development that we know about.
-
 Feel free to [[talk to us]] if you have any questions.

Partial update
diff --git a/running_your_own.mdwn b/running_your_own.mdwn
index 8268d86..78eaee4 100644
--- a/running_your_own.mdwn
+++ b/running_your_own.mdwn
@@ -17,28 +17,21 @@ ivatar | The software that will run the next generation libravatar.org | web-bas
 """]]
 
 
-
 # libravatar.org
-The following instructions are about the official libravatar.org software.
 
+The following instructions are about the official libravatar.org software.
 
 ## System requirements
 
-You can find the latest system requirements in the [installation instructions](https://bazaar.launchpad.net/~libravatar/libravatar/master/view/head:/INSTALL.md) that come with the software, but Libravatar has been confirmed to work on [Debian 8](http://www.debian.org/releases/jessie/) (jessie).
-
-## Getting the code
-
-We are not currently doing regular releases of the code, but you can easily get the latest copy from our [git repository](https://git.nzoss.org.nz/libravatar/libravatar):
-
-    git clone https://git.nzoss.org.nz/libravatar/libravatar.git
+Libravatar needs a Python3 and a few python packages, so any modern operating system will do. It as been confirmed to work on CentOS and OpenBSD.
 
 ## Installation
 
-Once you've got a copy of the code, follow the instructions in the [INSTALL](https://bazaar.launchpad.net/~libravatar/libravatar/master/view/head:/INSTALL.md) file.
+Once you've got a copy of the code, follow the instructions in the [INSTALL](https://git.linux-kernel.at/oliver/ivatar/blob/master/INSTALL.md) file.
 
 ## Configuration
 
-A number of options can be customised in the libravatar/settings.py file. If there's anything that's unclear in there, please [file a bug](https://bugs.launchpad.net/libravatar/+filebug) against the project so that we know how to improve the documentation.
+XXX: To be defined.
 
 ## DNS setup
 
@@ -47,12 +40,14 @@ Once your instance is running on a publicly-accessible server (<tt>avatars.examp
     _avatars._tcp.example.com.     IN SRV 0 0 80  avatars.example.com
     _avatars-sec._tcp.example.com. IN SRV 0 0 443 avatars.example.com
 
-The first entry (<tt>\_avatars.\_tcp</tt>) should point to an HTTP server whereas the second one (<tt>\_avatars-sec.\_tcp</tt>) is for an HTTPS server (if you have one).
+The first entry (<tt>\_avatars.\_tcp</tt>) should point to an HTTP server whereas the second one (<tt>\_avatars-sec.\_tcp</tt>) is for an HTTPS server. Nowadays unencrypted HTTP traffic is frowned upon so feel free to redirect your http endpoints to the HTTPS one.
 
-Note that these servers do not have to be running [Libravatar](https://launchpad.net/libravatar) themselves, but they do have to implement the same [[protocol/API|API]]</a>.
+This step is the same with any other implementation of the [[protocol/API|API]].
 
 ### TTL
 
+XXX: Currently not true.
+
 The time-to-live (cache expiry) should be set to **at least 1 day** (86400 seconds).
 
 If you choose a TTL smaller than 1 day, Libravatar clients are allowed (and encouraged) to ignore it and cache your entry for a day.
@@ -74,4 +69,4 @@ You may however use weights to spread the load across more than one avatar serve
 
 ### Testing
 
-Once you have these records, have a look at the [domain check tool](https://www.libravatar.org/tools/check_domain) to make sure everything is working.
+Once you have these records, have a look at the [domain check tool](https://www.libravatar.org/tools/check) to make sure everything is working.

add clime to dev@
diff --git a/infrastructure/mail_domain.mdwn b/infrastructure/mail_domain.mdwn
index 2d49df0..9121596 100644
--- a/infrastructure/mail_domain.mdwn
+++ b/infrastructure/mail_domain.mdwn
@@ -15,7 +15,7 @@ Only mail forwarding is configured. There are no real mail boxes.
 local part | destination
 accounts | dev@
 admin | dev@
-dev | ofalk
+dev | clime, ofalk
 dns | clime, ofalk, sumpfralle, tleguern
 mirrors | dev@
 security | dev@

Remove link to closed launchpad page
diff --git a/contribute.mdwn b/contribute.mdwn
index 9d34fd1..880aba5 100644
--- a/contribute.mdwn
+++ b/contribute.mdwn
@@ -17,4 +17,4 @@ If you don't fit into of the other categories, you are still more than welcome t
 * subscribe to our [mailing list](http://libravatar.onlinegroups.net/groups/libravatar-devel)
 * blog about Libravatar
 
-And of course, feel free to [submit feature requests](https://bugs.launchpad.net/libravatar/+filebug) against your favourite applications to add support for Libravatar.
+And of course, feel free to against your favourite applications to add support for Libravatar.

Update to current platforms
diff --git a/talk_to_us.mdwn b/talk_to_us.mdwn
index f7f5e0e..21e0cf7 100644
--- a/talk_to_us.mdwn
+++ b/talk_to_us.mdwn
@@ -12,15 +12,15 @@ Please keep in mind that you may live in a different timezone than most of the d
 
 If you have a question about a particular bug, or some feedback on it, the best thing to do is to comment on that bug itself.
 
-We use [Launchpad](https://bugs.launchpad.net/libravatar) as our bug tracker.
+We use [Gitlab](https://git.linux-kernel.at/oliver/ivatar/issues) as our bug tracker.
 
 # Mailing list
 
 If you've got a proposal to discuss or prefer to write to us, you can join [our developers mailing list](https://launchpad.net/~libravatar-fans#mailing-lists).
 
-# Identica / Twitter
+# Micro-blogging
 
-Finally, you can also put short notices to our attention on [Identica](http://identi.ca/libravatar) or [Twitter](http://twitter.com/libravatar).
+Finally, you can also put short notices to our attention on [Identica](http://identi.ca/libravatar), [Twitter](http://twitter.com/libravatar) or [Mastodon](https://photog.social/@libravatar).
 
 # Email
 

Remove obsolete tag
diff --git a/features.mdwn b/features.mdwn
index 30aed7c..d42288a 100644
--- a/features.mdwn
+++ b/features.mdwn
@@ -1,5 +1,3 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 Here is a list of features currently available in [Libravatar](https://www.libravatar.org) and how it differs from [Gravatar](http://www.gravatar.com).
 
 [[!table class="border" data="""

Update to reflect current code
diff --git a/features.mdwn b/features.mdwn
index 1db470b..30aed7c 100644
--- a/features.mdwn
+++ b/features.mdwn
@@ -20,13 +20,13 @@ Text-based profile information    | &mdash;
 **LDAP** authentication           | Yes                                                  | &mdash;
 **OpenID** authentication         | Yes                                                  | &mdash;
 Automatic photo **importers**     | [[Yes|photo importers]]                              | &mdash;
-Translated user interface         | [Yes](https://translations.launchpad.net/libravatar) | [Yes](http://en.gravatar.com/site/translations/)
+Translated user interface         | No                                                   | [Yes](http://en.gravatar.com/site/translations/)
 Account **export**                | Yes                                                  | &mdash;
 Account **deletion**              | Yes                                                  | [No](http://en.gravatar.com/site/faq/#answer-1-7)
 XMLRPC API                        | &mdash;                                              | Yes
 Libraries/plugins available       | [[Some|libraries]]                                   | [Lots](http://en.gravatar.com/site/implement/images/libraries/)
 **Free and Open Source software** | [Yes](http://www.gnu.org/licenses/agpl.html)         | [No](http://blog.gravatar.com/2010/05/31/gravatar-localization/#comment-8749)
-Distributed service               | [[Community mirrors|run a mirror]]                   | Commercial CDN
+Distributed service               | Yes                                                  | Commercial CDN
 Corporate owner                   | &mdash;                                              | [Automattic](http://automattic.com/)
 """]]
 

There are no gearman nor mirrors anymore
diff --git a/description.mdwn b/description.mdwn
index 174ffa4..e95be96 100644
--- a/description.mdwn
+++ b/description.mdwn
@@ -41,11 +41,8 @@ There are lots of other things in the [pipeline](https://bugs.launchpad.net/libr
 The basic architecture is meant to be simple and scalable:
 
 1. Users log into a dynamic [Django](http://www.djangoproject.com)-based site where they upload their photos and confirm their email or OpenID addresses.
-1. Uploaded photos are cropped, resized and optimised one after the one using [Gearman](http://gearman.org) to ensure that the server is not overloaded.
-1. Once the slow operations finish, the final image files are stored on disk with a filename corresponding to the email/OpenID address hashes.
-1. These photos are then replicated to all of the [[mirrors|run a mirror]] which serve them as static files directly to end-user browsers.
-
-<img src="architecture.png" width="600" height="433">
+2. Pictures from Gravatar and other Libravatar instances are proposed for import.
+3. Et voilà!
 
 If you're interested in the details of how third-party websites display Libravatar photos, have a look at [[our API|api]]. The gist of it is that clients get a base URL via a DNS lookup and then tack on the hashed value of the user's email or OpenID address to form the final image:
 

Obsolete page
diff --git a/how_to_add_a_new_translation.mdwn b/how_to_add_a_new_translation.mdwn
index 5ea4522..7c5742a 100644
--- a/how_to_add_a_new_translation.mdwn
+++ b/how_to_add_a_new_translation.mdwn
@@ -1,3 +1,5 @@
+**Obsolete: this page refers to the pre-2019 Libravatar service.**
+
 Here is the current list of steps required to add a new po-based translation to the Libravatar codebase:
 
 1. get the po file from the [Launchpad repo](https://code.launchpad.net/~libravatar/libravatar/libravatar-po)

Update to reflect current code
diff --git a/photo_importers.mdwn b/photo_importers.mdwn
index 9a05f42..64de175 100644
--- a/photo_importers.mdwn
+++ b/photo_importers.mdwn
@@ -1,22 +1,10 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 In addition to allowing users to upload their own photos, Libravatar can also import photos from other websites.
 
 # Automatic importers
 
-For websites which allow photo lookups based on an email address, Libravatar is able to automatically import these images at soon as a user confirm an email address.
+For websites which allow photo lookups based on an email address, Libravatar is able to automatically import these images as soon as a user confirm an email address.
 
 The following automatic importers are currently enabled:
 
 * [Gravatar](http://www.gravatar.com)
-* [Identica](http://identi.ca)
-
-# Manual importers
-
-There are also lots of websites which host photos for their users, but for which Libravatar cannot automatically guess the correct search key. In this case, users must provide some information to import their photos (e.g. a username).
-
-This is not yet implemented but will most likely be part of the upload photo screen.
-
-# Future importers
-
-Our bug tracker has a [list of importers](https://bugs.launchpad.net/libravatar/+bugs?field.tag=photoimporter) we are planning to add. Please feel free to add to this list by [filing a new bug](https://bugs.launchpad.net/libravatar/+filebug).
+* Other Libravatar instances

Mention the part of the new infrastructure
diff --git a/freedom-respecting_infrastructure.mdwn b/freedom-respecting_infrastructure.mdwn
index 774decc..8eb07a6 100644
--- a/freedom-respecting_infrastructure.mdwn
+++ b/freedom-respecting_infrastructure.mdwn
@@ -1,7 +1,8 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 The Libravatar project is proud to support other [free-as-in-freedom](http://autonomo.us/2008/07/franklin-street-statement/) services:
 
 * [Branchable](http://www.branchable.com) ([blog](http://blog.libravatar.org) and [wiki](http://wiki.libravatar.org))
 * [Identica](http://identi.ca) ([micro-blogging](http://identi.ca/libravatar))
-* [Launchpad](https://launchpad.net) ([code hosting](https://code.launchpad.net/~libravatar/libravatar/+git/libravatar), [bug tracker](https://bugs.launchpad.net/libravatar), [translations](https://translations.launchpad.net/libravatar), [code mirror](https://code.launchpad.net/libravatar) and [mailing list](https://launchpad.net/~libravatar-fans))
+* [Mastodon](https://joinmastodon.org/) ([micro-blogging](https://photog.social/@libravatar))
+* [Gitlab](https://about.gitlab.com/) ([code hosting](https://git.linux-kernel.at/oliver/ivatar/), [bug tracker](https://git.linux-kernel.at/oliver/ivatar/issues))
+* [Freenode](https://freenode.net/) ([IRC channel](ircs://chat.freenode.net/#libravatar))
+* [Launchpad](https://launchpad.net) ([translations](https://translations.launchpad.net/libravatar) and [mailing list](https://launchpad.net/~libravatar-fans))

Unify nipos' nick name
diff --git a/IRC_meetings.mdwn b/IRC_meetings.mdwn
index 50d9db7..2f2d0ca 100644
--- a/IRC_meetings.mdwn
+++ b/IRC_meetings.mdwn
@@ -7,7 +7,7 @@ The meetings are happening bi-weekly on Sundays at 19:00 UTC in the `#libravatar
 
 # 2019-03-03
 
-Participants: clime, Niklas[m]1, tleguern, ofalk (alias falko)
+Participants: clime, nipos, tleguern, ofalk (alias falko)
 
 ## Topics raised by fmarier
 
@@ -21,13 +21,13 @@ clime will take care of the above next week.
 
 * Blog post about new libravatar: https://public.etherpad-mozilla.org/p/libravatar-blog
 * Will be a living document, until we agree on the final version via m/l.
-* Niklas[m]1 is going to start this.
+* nipos is going to start this.
 * We should have this ready, latest, by end of next week.
-* Niklas[m]1 will also create an account on Mastodon and will let clime and ofalk know the password.
+* nipos will also create an account on Mastodon and will let clime and ofalk know the password.
 
 ## Other
 
-Feedback from Niklas[m]1: everything seems to work fine.
+Feedback from nipos: everything seems to work fine.
 
 
 # 2019-02-17

move IRC meeting log to "IRC meetings"
diff --git a/shutdown-coordination.mdwn b/shutdown-coordination.mdwn
index 701af97..bc0a9c6 100644
--- a/shutdown-coordination.mdwn
+++ b/shutdown-coordination.mdwn
@@ -1,507 +1,8 @@
 **Update (2018-07-31): [Libravatar is not going away](https://blog.libravatar.org/posts/Libravatar.org_is_not_going_away/)**
 
-Here is a place where people who are interested in [taking over Libravatar](https://blog.libravatar.org/posts/Libravatar.org_is_shutting_down_on_2018-09-01/) can coordinate.
-
-[[!toc levels=2]]
-
-# Your contribution is welcome!
-
-A group of people is working on continuing the libravatar development (code and service).
-
-Please join the communication channels:
-
-* [Mailing list](https://launchpad.net/~libravatar-fans)
-* `#libravatar` at irc.freenode.net
-
-
-# IRC meetings
-
-Everyone interested in supporting the libravatar project (code or service) is welcome!
-
-## 2019-03-03
-
-### Topics raised by fmarier:
-
-* backups (DB + app)
-* automatic letsencrypt cert renewal
-* domain transfer
-
-clime will take care of the above next week.
-
-### Marketing
-
-Blog post about new libravatar: https://public.etherpad-mozilla.org/p/libravatar-blog
-Will be a living document, until we agree on the final version via m/l.
-Niklas[m]1 is going to start this.
-We should have this ready, latest, by end of next week.
-Niklas[m]1 will also create an account on Mastodon and will let clime and ofalk know the password.
-
-### Other
-
-Feedback from Niklas[m]1: everything seems to work fine.
-
-Participants: clime, Niklas[m]1, tleguern, ofalk (alias falko)
-
-## 2019-02-17
-
-* 2019-02-10, 19:00 UTC (see [local times](https://www.timeanddate.com/worldclock/fixedtime.html?msg=Libravatar+Future&iso=20190210T19&p1=%3A))
-* channel `#libravatar` at irc.freenode.net
-* Preparation / Agenda: <https://pad.riseup.net/p/libravatar-future-irc> (please add your topics / proposals / ideas)
-
-## 2019-02-10
-
-!!!TO BE UPDATED!!!
-
-## 2019-01-27
-
-* participants: clime, fmarier, sumpfralle
-
-### Wiki Access
-
-* the wiki admin account is dev@libravatar.org - now this is documented in the [wiki](infrastructure/wiki)
-* just as a reminder for everyone: just click at *edit* and submit your email address in order to receive a one-time access token
-
-### Migration Plan
-
-* a few things will need to be taken care of:
-    * change of DNS
-    * early setup of the certificates for https
-* discussion about the date of migration and some more details
-
-### Mirrors
-
-* the current mirror setup will not work right from the start with ivatar
-* we will need to decide, whether we want to implement this feature again or maybe dismiss this feature
-    * it would be a nice feature and helpful for community building
-
-
-## 2019-01-13
-
-* participants: clime, fmarier, nipos, sumpfralle, tleguern
-
-### Review of the last weeks:
-
-* the list of [open issues](https://git.linux-kernel.at/oliver/ivatar/issues?label_name%5B%5D=critical) went down to one item
-
-### Things to be considered for migrating to the new implementation?
-
-* SSL certificate for the new instance
-* people are invited to take a close look at the code with regard to security
-* we need a real plan
-    * to be discussed on the mailing list
-
-### Control over the DNS zone
-
-* a proper SSL certificate (e.g. via letsencrypt) will require DNS control (pointing a valid hostname to the new VM)
-* fmarier offered to hand over the domains
-    * libravatar.org and libravatar.com (just for redirects)
-* clime and ofalk were assumed to be good candidates for taking over the domain ownership
-* fmarier und clime/ofalk will sort out the transfer
-    * documented in the [wiki](infrastructure/DNS domain)
-
-
-### Administrative access to the new instance VM
-
-* clime shared root access to the new VM (via the ansible recipe of the VM) to nipos. tleguern and sumpfralle
-    * root access is not necessary for operation (since the system is built via ansible), but just for issue debugging
-    * current access is documented in the [wiki](infrastructure/hosting)
-
-
-## 2018-12-30
-
-* participants: clime, nipos, sumpfralle
-
-### Review of the last weeks:
-* clime: collected a list of [open issues](https://git.linux-kernel.at/oliver/ivatar/issues?label_name%5B%5D=critical) to be resolved before switching to the new implementation
-* sumpfralle: postponed his task of adding documentation for using the retro avatar feature
-
-
-## 2018-12-09
-
-* participants: clime, fmarier, nipos, tleguern, sumpfralle
-
-### Review of the last weeks
-* nipos: small design improvements (not all being merged, yet)
-* clime: imported the existing dataset to the instance at [libravatar.fedorainfracloud.org](https://libravatar.fedorainfracloud.org/)
-* ofalk (who could not attend today) prepared a list of changes in the pad - we discussed these in the remainder of the meeting
-
-### Gravatar fallback
-* ofalk implemented this feature: [issue #22](https://git.linux-kernel.at/oliver/ivatar/issues/22)
-* requests are proxied via the `/gravatarproxy/` path
-* we exchanged a bit of thoughts, whether it is a good idea to use a vendor's name as a query argument name (not its value)
-* some proposed (wild and spontaneous) suggestions:
-    * `?allow_fallback=y&fallback_method=redirect&fallback_providers=gravatar,foobar,baz,acme`
-    * `?fallback=redirect&provider=gravatar`
-* we leave it up to ofalk to determine the proper approach
-
-### Export from original implementation / import into ivatar implementation
-* ofalk wrote an xml-based export for the original implementation
-    * one file per account
-    * code: [https://git.linux-kernel.at/oliver/ivatar/blob/libravatar_export/exportaccounts.py](https://git.linux-kernel.at/oliver/ivatar/blob/libravatar_export/exportaccounts.py)
-* the result tarball can be imported into ivatar
-    * code: [https://git.linux-kernel.at/oliver/ivatar/blob/master/import_libravatar.py](https://git.linux-kernel.at/oliver/ivatar/blob/master/import_libravatar.py)
-* we discussed the usefulness of the `ip_address` field of each *photo* object
-    * probably it can be discarded, since we do not want to store such data
-
-### Theme switching
-* ofalk implemented it: [issue #8](https://git.linux-kernel.at/oliver/ivatar/issues/8)
-* the *red* and the *green* themes work
-* Clime's theme: Upcoming
-
-### Retro avatars
-* ofalk implemented this feature
-* tleguern suggested, that we should document, which code ivatar uses
-* this would allow alternative implementations to provide a similar visualization
-* the current code: [https://git.linux-kernel.at/oliver/ivatar/blob/master/ivatar/views.py#L148](https://git.linux-kernel.at/oliver/ivatar/blob/master/ivatar/views.py#L148)
-* sumpfralle will add a bit of documentation
-
-### API documentation
-* ofalk listed some items that deserve improvements:
-    * state what to do in case of bad input
-    * clearly write the default value of the “default” option (ie: `d=http://cdn.libravatar.org/static/nobody/80.png`)
-    * add `default=blank` like Gratavar does?
-    * describe a mechanism to programmatically know which “default” values are accepted by a given implementation?
-* ofalk: "I think a lot of docs need to be written for the possible and especially the new options"
-* tleguern volunteered to work on the documentation
-
-### Robohash
-* ofalk implemented a first draft: [issue #13](https://git.linux-kernel.at/oliver/ivatar/issues/13)
-* we had fun exchanging our random robohash visualizations
-* nipos volunteered to add a bit of documentation for that feature (without duplicating robohash's documentation)
-
-### OpenID
-* ofalk briefly mentioned in his notes some progress (without details)
-
-### Next meeting
-* due to the proximity to Christmas, we will have our next meeting in *three* weeks (2018/12/30)
-
-
-## 2018-11-25
-
-* participants: clime, ofalk, nipos, sumpfralle
+**Update (2019-03-04): the IRC meeting logs were moved to [[IRC meetings]]**
 
-### Review of the last weeks
-* falko: finished a script exporting the user data from an old implementation into separate xml files for each user
-    * the passwords are not exported (as discussed before)
-
-### Fallback to gravatar?
-* falko proposed the following:
-    * by default the API will proxy a request over to gravatar if the requested avatar is not known
-    * this default behaviour can be overridden via a query argument for every request
-        * thus the client implementation decides, whether the fallback is used
-    * it would be great (for improved privacy) if we could proxy these fallback requests (instead of sending a redirect)
-    * maybe the account settings of a libravatar user could also be taken into account for the fallback behaviour (exposed via session cookies)
-* opinions or thoughts are welcome in the [related issue #22](https://git.linux-kernel.at/oliver/ivatar/issues/22)

(Diff truncated)
moved IRC log away from "shutdown-coordination"
diff --git a/IRC_meetings.mdwn b/IRC_meetings.mdwn
new file mode 100644
index 0000000..50d9db7
--- /dev/null
+++ b/IRC_meetings.mdwn
@@ -0,0 +1,491 @@
+Everyone interested in the [libravatar project](libravatar) is kindly invited to join the periodic IRC meetings.
+
+The meetings are happening bi-weekly on Sundays at 19:00 UTC in the `#libravatar` channel on `irc.freenode.net`.
+
+[[!toc levels=1]]
+
+
+# 2019-03-03
+
+Participants: clime, Niklas[m]1, tleguern, ofalk (alias falko)
+
+## Topics raised by fmarier
+
+* backups (DB + app)
+* automatic letsencrypt cert renewal
+* domain transfer
+
+clime will take care of the above next week.
+
+## Marketing
+
+* Blog post about new libravatar: https://public.etherpad-mozilla.org/p/libravatar-blog
+* Will be a living document, until we agree on the final version via m/l.
+* Niklas[m]1 is going to start this.
+* We should have this ready, latest, by end of next week.
+* Niklas[m]1 will also create an account on Mastodon and will let clime and ofalk know the password.
+
+## Other
+
+Feedback from Niklas[m]1: everything seems to work fine.
+
+
+# 2019-02-17
+
+* 2019-02-10, 19:00 UTC (see [local times](https://www.timeanddate.com/worldclock/fixedtime.html?msg=Libravatar+Future&iso=20190210T19&p1=%3A))
+* channel `#libravatar` at irc.freenode.net
+* Preparation / Agenda: <https://pad.riseup.net/p/libravatar-future-irc> (please add your topics / proposals / ideas)
+
+# 2019-02-10
+
+!!!TO BE UPDATED!!!
+
+# 2019-01-27
+
+* participants: clime, fmarier, sumpfralle
+
+## Wiki Access
+
+* the wiki admin account is dev@libravatar.org - now this is documented in the [wiki](infrastructure/wiki)
+* just as a reminder for everyone: just click at *edit* and submit your email address in order to receive a one-time access token
+
+## Migration Plan
+
+* a few things will need to be taken care of:
+    * change of DNS
+    * early setup of the certificates for https
+* discussion about the date of migration and some more details
+
+## Mirrors
+
+* the current mirror setup will not work right from the start with ivatar
+* we will need to decide, whether we want to implement this feature again or maybe dismiss this feature
+    * it would be a nice feature and helpful for community building
+
+
+# 2019-01-13
+
+* participants: clime, fmarier, nipos, sumpfralle, tleguern
+
+## Review of the last weeks:
+
+* the list of [open issues](https://git.linux-kernel.at/oliver/ivatar/issues?label_name%5B%5D=critical) went down to one item
+
+## Things to be considered for migrating to the new implementation?
+
+* SSL certificate for the new instance
+* people are invited to take a close look at the code with regard to security
+* we need a real plan
+    * to be discussed on the mailing list
+
+## Control over the DNS zone
+
+* a proper SSL certificate (e.g. via letsencrypt) will require DNS control (pointing a valid hostname to the new VM)
+* fmarier offered to hand over the domains
+    * libravatar.org and libravatar.com (just for redirects)
+* clime and ofalk were assumed to be good candidates for taking over the domain ownership
+* fmarier und clime/ofalk will sort out the transfer
+    * documented in the [wiki](infrastructure/DNS domain)
+
+## Administrative access to the new instance VM
+
+* clime shared root access to the new VM (via the ansible recipe of the VM) to nipos. tleguern and sumpfralle
+    * root access is not necessary for operation (since the system is built via ansible), but just for issue debugging
+    * current access is documented in the [wiki](infrastructure/hosting)
+
+
+# 2018-12-30
+
+* participants: clime, nipos, sumpfralle
+
+## Review of the last weeks:
+* clime: collected a list of [open issues](https://git.linux-kernel.at/oliver/ivatar/issues?label_name%5B%5D=critical) to be resolved before switching to the new implementation
+* sumpfralle: postponed his task of adding documentation for using the retro avatar feature
+
+
+# 2018-12-09
+
+* participants: clime, fmarier, nipos, tleguern, sumpfralle
+
+## Review of the last weeks
+* nipos: small design improvements (not all being merged, yet)
+* clime: imported the existing dataset to the instance at [libravatar.fedorainfracloud.org](https://libravatar.fedorainfracloud.org/)
+* ofalk (who could not attend today) prepared a list of changes in the pad - we discussed these in the remainder of the meeting
+
+## Gravatar fallback
+* ofalk implemented this feature: [issue #22](https://git.linux-kernel.at/oliver/ivatar/issues/22)
+* requests are proxied via the `/gravatarproxy/` path
+* we exchanged a bit of thoughts, whether it is a good idea to use a vendor's name as a query argument name (not its value)
+* some proposed (wild and spontaneous) suggestions:
+    * `?allow_fallback=y&fallback_method=redirect&fallback_providers=gravatar,foobar,baz,acme`
+    * `?fallback=redirect&provider=gravatar`
+* we leave it up to ofalk to determine the proper approach
+
+## Export from original implementation / import into ivatar implementation
+* ofalk wrote an xml-based export for the original implementation
+    * one file per account
+    * code: [https://git.linux-kernel.at/oliver/ivatar/blob/libravatar_export/exportaccounts.py](https://git.linux-kernel.at/oliver/ivatar/blob/libravatar_export/exportaccounts.py)
+* the result tarball can be imported into ivatar
+    * code: [https://git.linux-kernel.at/oliver/ivatar/blob/master/import_libravatar.py](https://git.linux-kernel.at/oliver/ivatar/blob/master/import_libravatar.py)
+* we discussed the usefulness of the `ip_address` field of each *photo* object
+    * probably it can be discarded, since we do not want to store such data
+
+## Theme switching
+* ofalk implemented it: [issue #8](https://git.linux-kernel.at/oliver/ivatar/issues/8)
+* the *red* and the *green* themes work
+* Clime's theme: Upcoming
+
+## Retro avatars
+* ofalk implemented this feature
+* tleguern suggested, that we should document, which code ivatar uses
+* this would allow alternative implementations to provide a similar visualization
+* the current code: [https://git.linux-kernel.at/oliver/ivatar/blob/master/ivatar/views.py#L148](https://git.linux-kernel.at/oliver/ivatar/blob/master/ivatar/views.py#L148)
+* sumpfralle will add a bit of documentation
+
+## API documentation
+* ofalk listed some items that deserve improvements:
+    * state what to do in case of bad input
+    * clearly write the default value of the “default” option (ie: `d=http://cdn.libravatar.org/static/nobody/80.png`)
+    * add `default=blank` like Gratavar does?
+    * describe a mechanism to programmatically know which “default” values are accepted by a given implementation?
+* ofalk: "I think a lot of docs need to be written for the possible and especially the new options"
+* tleguern volunteered to work on the documentation
+
+## Robohash
+* ofalk implemented a first draft: [issue #13](https://git.linux-kernel.at/oliver/ivatar/issues/13)
+* we had fun exchanging our random robohash visualizations
+* nipos volunteered to add a bit of documentation for that feature (without duplicating robohash's documentation)
+
+## OpenID
+* ofalk briefly mentioned in his notes some progress (without details)
+
+## Next meeting
+* due to the proximity to Christmas, we will have our next meeting in *three* weeks (2018/12/30)
+
+
+# 2018-11-25
+
+* participants: clime, ofalk, nipos, sumpfralle
+
+## Review of the last weeks
+* falko: finished a script exporting the user data from an old implementation into separate xml files for each user
+    * the passwords are not exported (as discussed before)
+
+## Fallback to gravatar?
+* falko proposed the following:
+    * by default the API will proxy a request over to gravatar if the requested avatar is not known
+    * this default behaviour can be overridden via a query argument for every request
+        * thus the client implementation decides, whether the fallback is used
+    * it would be great (for improved privacy) if we could proxy these fallback requests (instead of sending a redirect)
+    * maybe the account settings of a libravatar user could also be taken into account for the fallback behaviour (exposed via session cookies)
+* opinions or thoughts are welcome in the [related issue #22](https://git.linux-kernel.at/oliver/ivatar/issues/22)
+
+## cdn.libravatar.org and seccdn.libravatar.org
+* these domains are used by the API clients (see the [api specification](https://wiki.libravatar.org/api/))
+* clime will configure these sub-domains on the fedora server
+
+## wiki style
+* nipos took a deep look at the possibility to theme the wiki in the style of the future libravatar website
+* it does not seem to be possible :(
+* the participants of the meeting did not consider this to be a real problem (but it would have been nice!)
+
+## robohash
+* should we support [robohash](http://robohash.org/)?
+* please raise your voice (by up- or down-voting) in [issue #13](https://git.linux-kernel.at/oliver/ivatar/issues/13)

(Diff truncated)
mention ikiwiki
diff --git a/infrastructure/wiki.mdwn b/infrastructure/wiki.mdwn
index 49ae82b..e25b2db 100644
--- a/infrastructure/wiki.mdwn
+++ b/infrastructure/wiki.mdwn
@@ -1,6 +1,6 @@
 # Wiki
 
-The wiki instance [wiki.libravatar.org](https://wiki.libravatar.org/) is kindly provided by [branchable.com](https://branchable.com/).
+The wiki instance [wiki.libravatar.org](https://wiki.libravatar.org/) is powered by [ikiwiki](https://ikiwiki.info/) and kindly provided by [branchable.com](https://branchable.com/).
 
 Editing is open for everyone.
 

add link to IRC meetings
diff --git a/index.mdwn b/index.mdwn
index 19f9fab..12ff4a9 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -27,6 +27,7 @@ Because the libravatar service is entirely powered by [Free and Open Source Soft
 
 * [[Ways to contribute|contribute]]
 * [[Getting in touch with us|talk to us]]
+* [[IRC meetings]] (including logs)
 * [[About the project running libravatar.org|project]]
 
 # Freedom

fix mail address of fmarier
diff --git a/infrastructure/mail_domain.mdwn b/infrastructure/mail_domain.mdwn
index edfd7da..2d49df0 100644
--- a/infrastructure/mail_domain.mdwn
+++ b/infrastructure/mail_domain.mdwn
@@ -39,7 +39,7 @@ postmaster | systemausfall.org
 local part | owner / destination
 clime | clime
 falko | ofalk
-fmarier | fmarier
+francois | fmarier
 niklas.poslovski | nipos
 ofalk | ofalk"""]]
 

remove fmarier from social@ and dev@ (due to his request via IRC)
diff --git a/infrastructure/mail_domain.mdwn b/infrastructure/mail_domain.mdwn
index 25d1daf..edfd7da 100644
--- a/infrastructure/mail_domain.mdwn
+++ b/infrastructure/mail_domain.mdwn
@@ -15,11 +15,11 @@ Only mail forwarding is configured. There are no real mail boxes.
 local part | destination
 accounts | dev@
 admin | dev@
-dev | fmarier, ofalk
+dev | ofalk
 dns | clime, ofalk, sumpfralle, tleguern
 mirrors | dev@
 security | dev@
-social | clime, fmarier, nipos, ofalk
+social | clime, nipos, ofalk
 support | dev@
 tls | dev@
 webmaster | dev@

add nipos to social@
diff --git a/infrastructure/mail_domain.mdwn b/infrastructure/mail_domain.mdwn
index f19d207..25d1daf 100644
--- a/infrastructure/mail_domain.mdwn
+++ b/infrastructure/mail_domain.mdwn
@@ -19,7 +19,7 @@ dev | fmarier, ofalk
 dns | clime, ofalk, sumpfralle, tleguern
 mirrors | dev@
 security | dev@
-social | clime, fmarier, ofalk
+social | clime, fmarier, nipos, ofalk
 support | dev@
 tls | dev@
 webmaster | dev@

diff --git a/shutdown-coordination.mdwn b/shutdown-coordination.mdwn
index 1a1d2fe..701af97 100644
--- a/shutdown-coordination.mdwn
+++ b/shutdown-coordination.mdwn
@@ -20,9 +20,7 @@ Everyone interested in supporting the libravatar project (code or service) is we
 
 ## 2019-03-03
 
-Topics
-
-Raised by fmarier:
+### Topics raised by fmarier:
 
 * backups (DB + app)
 * automatic letsencrypt cert renewal

diff --git a/shutdown-coordination.mdwn b/shutdown-coordination.mdwn
index 3256697..1a1d2fe 100644
--- a/shutdown-coordination.mdwn
+++ b/shutdown-coordination.mdwn
@@ -20,7 +20,7 @@ Everyone interested in supporting the libravatar project (code or service) is we
 
 ## 2019-03-03
 
-## Topics
+Topics
 
 Raised by fmarier:
 

diff --git a/shutdown-coordination.mdwn b/shutdown-coordination.mdwn
index d2014db..3256697 100644
--- a/shutdown-coordination.mdwn
+++ b/shutdown-coordination.mdwn
@@ -20,7 +20,7 @@ Everyone interested in supporting the libravatar project (code or service) is we
 
 ## 2019-03-03
 
-Topics:
+## Topics
 
 Raised by fmarier:
 
@@ -30,7 +30,7 @@ Raised by fmarier:
 
 clime will take care of the above next week.
 
-* Marketing
+### Marketing
 
 Blog post about new libravatar: https://public.etherpad-mozilla.org/p/libravatar-blog
 Will be a living document, until we agree on the final version via m/l.
@@ -38,7 +38,7 @@ Niklas[m]1 is going to start this.
 We should have this ready, latest, by end of next week.
 Niklas[m]1 will also create an account on Mastodon and will let clime and ofalk know the password.
 
-* Other
+### Other
 
 Feedback from Niklas[m]1: everything seems to work fine.
 

diff --git a/shutdown-coordination.mdwn b/shutdown-coordination.mdwn
index 8f50e27..d2014db 100644
--- a/shutdown-coordination.mdwn
+++ b/shutdown-coordination.mdwn
@@ -22,10 +22,28 @@ Everyone interested in supporting the libravatar project (code or service) is we
 
 Topics:
 
+Raised by fmarier:
+
 * backups (DB + app)
 * automatic letsencrypt cert renewal
 * domain transfer
 
+clime will take care of the above next week.
+
+* Marketing
+
+Blog post about new libravatar: https://public.etherpad-mozilla.org/p/libravatar-blog
+Will be a living document, until we agree on the final version via m/l.
+Niklas[m]1 is going to start this.
+We should have this ready, latest, by end of next week.
+Niklas[m]1 will also create an account on Mastodon and will let clime and ofalk know the password.
+
+* Other
+
+Feedback from Niklas[m]1: everything seems to work fine.
+
+Participants: clime, Niklas[m]1, tleguern, ofalk (alias falko)
+
 ## 2019-02-17
 
 * 2019-02-10, 19:00 UTC (see [local times](https://www.timeanddate.com/worldclock/fixedtime.html?msg=Libravatar+Future&iso=20190210T19&p1=%3A))

diff --git a/shutdown-coordination.mdwn b/shutdown-coordination.mdwn
index 7346612..8f50e27 100644
--- a/shutdown-coordination.mdwn
+++ b/shutdown-coordination.mdwn
@@ -16,10 +16,18 @@ Please join the communication channels:
 
 # IRC meetings
 
-## 2019-02-17
-
 Everyone interested in supporting the libravatar project (code or service) is welcome!
 
+## 2019-03-03
+
+Topics:
+
+* backups (DB + app)
+* automatic letsencrypt cert renewal
+* domain transfer
+
+## 2019-02-17
+
 * 2019-02-10, 19:00 UTC (see [local times](https://www.timeanddate.com/worldclock/fixedtime.html?msg=Libravatar+Future&iso=20190210T19&p1=%3A))
 * channel `#libravatar` at irc.freenode.net
 * Preparation / Agenda: <https://pad.riseup.net/p/libravatar-future-irc> (please add your topics / proposals / ideas)

Note that the transfer hasn't happened yet.
diff --git a/infrastructure/DNS_domain.mdwn b/infrastructure/DNS_domain.mdwn
index a5b7c46..98a27a9 100644
--- a/infrastructure/DNS_domain.mdwn
+++ b/infrastructure/DNS_domain.mdwn
@@ -7,4 +7,4 @@ The project controls the following DNS domains:
 
 # Administration
 
-In January 2019 Francois Marrier transfers control of the domain to Clime and Falk.
+[[Francois Marier|fmarier]] to transfer control of the domain to Clime and OFalk.

Add a TODO to this page
diff --git a/infrastructure/backups.mdwn b/infrastructure/backups.mdwn
index 0f7c386..85931fa 100644
--- a/infrastructure/backups.mdwn
+++ b/infrastructure/backups.mdwn
@@ -1,3 +1,5 @@
+**Needs updating: this refers to the pre-2019 service.**
+
 # Backups
 
 We do not want to loose the data of our users, thus we keep backups.

Update for the move away from Launchpad.
diff --git a/security.mdwn b/security.mdwn
index 638dce0..973a305 100644
--- a/security.mdwn
+++ b/security.mdwn
@@ -1,12 +1,8 @@
-**Obsolete: this page refers to the pre-2019 Libravatar service.**
-
 # Reporting security bugs
 
 If you discover a security issue in Libravatar, please report it to us privately so that we can push a fix to the main service before disclosing the problem publicly. We will credit you publicly (unless you don't want to) with this discovery.
 
-The best way to do that is to file a security bug on our [bug tracker](https://bugs.launchpad.net/libravatar/+filebug). Make sure you change the bug visibility (see "This bug contains information that is") to **Private Security**.
-
-Alternatively, you can talk to us at [security@libravatar.org](mailto:security@libravatar.org).
+To do so, talk to us at [security@libravatar.org](mailto:security@libravatar.org).
 
 We will do our best to respond to you within 24-48 hours.