Comme je le disais en annonçant la réouverture du blog, l’un des deux gros points noirs suite au choix de Jekyll et d’un site statique entièrement pré-généré c’était le problème des commentaires. En effet, habituellement c’est le moteur de blog qui propose un formulaire et traite côté serveur les soumissions de nouveaux commentaires. En passant au statique ce n’est plus possible directement puisque le serveur ne fait que… servir du statique justement. Aucune intelligence, donc pas non plus celle de gérer les commentaires.
Les solutions existantes
La solution la plus répandue dans ce cas est de passer par une plateforme externe telle que Discuss qui centralise les commentaires et les restitue via un widget JavaScript inclus dans la page. Cela ne me plaît pas tu tout d’une part parce que c’est une externalisation de la donnée alors qu’elle doit à mon sens rester groupée avec les articles et sûrement pas déléguée à un silo. D’autre part ça signifie charger un script externe systématiquement ce qui introduit d’une part de la lourdeur et d’autre part une fuite de données de navigation : Discuss ou son équivalent est mécaniquement au courant de qui regarde quelles pages chez moi et quand. Et non-seulement chez moi au aussi sur tous les autres sites utilisant leur plateforme. Et c’est généralement le cœur de leur modèle économique de monnayer d’une manière ou d’une autre ces données.
Bref la solution basée sur un silo centralisé était exclue.
Une autre solution aurait été de faire pareil mais en auto-hébergé. C’est-à-dire proposer quelques webservices exploités en JavaScript. Ça résout le problème de dépendance externe et de protection de la vie privée mais ça réintroduit le problème que je voulais résoudre en utilisant un générateur de site statique, à savoir ne plus avoir à m’inquiéter de la maintenance et de la sécurité. Certes ça aurait représenté un volume de code bien plus limité qu’une plateforme de blog complète, donc largement simplifié la maintenance mais quand même.
Donc cette solution là n’était pas valable non plus.
Et en faisant quelques recherches je n’ai rien trouvé comme proposition hors ces deux pistes. J’en ai conclus que j’allais devoir inventer une solution de toutes pièces et j’ai donc remis ça à plus tard pour ne pas bloquer la remise en ligne du blog. J’ai donc sorti le blog en laissant ça mûrir dans un coin de ma tête.
Mon idée
Mon cahier des charges était donc de trouver une solution n’impliquant pas de service tiers ni de service auto-hébergé à maintenir. C’était un peu mal parti : faire tout côté client mais avoir le résultat côté serveur sans introduire de faille potentielle semble assez insoluble.
J’ai fini par penser à une solution un peu bâtarde mais viable dans mon cas : passer par des mails. Puis traiter manuellement les soumissions de commentaires.
Forcément ça fait intervenir un service tiers : le fournisseur de messagerie (j’ai renoncé à vouloir auto-héberger du mail, c’est beaucoup trop compliqué et risqué) mais il ne fait que passe-plat et n’est pas chargé de conserver la donnée sur le long terme puisqu’une fois un commentaire réceptionné, je l’intègre à la page de l’article. J’ai donc regardé un peu ce qu’on pouvait faire pour envoyer du mail côté client. En JavaScript ça semble impossible (et pas très souhaitable pour des raisons assez évidentes en matière de spam) mais il reste toujours la bonne vieille méthode à base d’un formulaire en mode “mailto”. Ça donne un peut l’impression de revenir à l’Âge de Pierre mais l’essentiel c’est que ça marche.
Cette solution n’est pas exempte de défaut, à première vue au moins les suivants :
- l’adresse e-mail de destination du formulaire est en clair, ce qui fait qu’elle risque d’être cible de spams à terme
- les commentaires ne sont pas publiés instantanément, il faut que j’intervienne pour les intégrer
- c’est chronophage : je dois faire l’intégration à la main (problème de passage à l’échelle)
- on augmente dans l’absolu le risque juridique : comme c’est moi qui publie les commentaires, je passe automatiquement en mode de modération a priori, donc je ne peux pas prétendre ne pas avoir connaissance des contenus publiés, j’en suis donc responsable
- ce n’est pas super “user friendly” de passer par son client mail pour envoyer le commentaire même si le contenu est pré-rempli
Reste que ces défauts sont acceptables au moins dans mon cas. Reprenons-les point par point :
- publicité de l’adresse e-mail : c’est un défaut mineur, il suffit de faire une adresse dédiée et comme elle ne sert qu’à ça elle peut être remplacée du jour au lendemain si elle est la cible de spam
- délai de publication : là non plus ce n’est pas super grave, on n’a pas vraiment besoin d’instanténéité sur des commentaires, même s’il est vrai que ça a toutes les chances de réduire les discussions entres lecteurs (les discussions entre moi et un visiteur ne sont pas affectées puisqu’elles nécessitent de toute façons une action de ma part pour avancer), c’est un peu dommage mais pas primordial, surtout dans le cas de mon audience confidentielle
- chronophage : le problème évident de passage à l’échelle en cas de gros volume de contributions et cette solution n’est clairement pas généralisable à des sites ayant beaucoup de commentaires mais ce n’est pas un problème pour moi : je ne crois pas qu’un seul de mes articles ait dépassé les dix commentaires, donc ça reste totalement gérable
- risque juridique : ça m’obligera potentiellement à refuser certains commentaires mais je pense que le risque reste minime
- aspect “user friendly” : franchement ça demande juste de valider l’envoi du mail en acceptant qu’il contienne des donnés présentées de manière un peu technique… disons qu’on s’en fout, d’autant plus que mon blog traite entre autres de technique (et en passant je pense que je me débarrasse de la plupart des robots spammeurs qui ne doivent vraiment pas s’attendre à ça :D)
Voilà du coup ça me semble correct dans l’immédiat : pas parfait mais ça fait le boulot en rétablissant un système de commentaires. On va laisser ça tourner quelque temps puis on verra ^^