Site web de duniter

Ce sujet fait suite aux sujets :

https://forum.duniter.org/t/refonte-site-web-en-francais-de-duniter/
https://forum.duniter.org/t/maintenance-du-site-web-de-duniter-nous-sommes-en-guerre-sur-le-depot-duniter-website-fr/

L’objectif est de suivre la refonte et la maintenance du site Duniter.
J’assurerai cette tâche pendant les trois prochaines années.

4 J'aimes

Checklist pour le site web

:ballot_box_with_check: fini
☐ à faire
☒ autre

général

:ballot_box_with_check: le design des pages principales est conservé
:ballot_box_with_check: les pages et articles sont migrés en conservant les métadonnées
:ballot_box_with_check: minimiser la casse de liens
:ballot_box_with_check: validité du code (à peu près)
:ballot_box_with_check: réorganisation basique du wiki
:ballot_box_with_check: documentation utilisateur
:ballot_box_with_check: redirections (rester vigilant aux 404)
☐ optimisation (besoin d’aide)
☐ bonne expérience de navigation (nécessite enquête)

fonctionnalités du thème

:ballot_box_with_check: table des matières
:ballot_box_with_check: breadcrumb
:ballot_box_with_check: SEO
☐ taxonomies
☒ flux rss/atom (à tester)
☒ multilingue (décision à prendre)
☒ recherche (http://elasticlunr.com/)
☒ compilation automatique UML

fonctionnalités third party

☐ wiki discourse ou wiki js
☐ calendrier discourse ou calendrier nextcloud

contenu

☒ présentation équipe (en cours)
☐ vulgarisation RFC


citation de plus bas :

Avant la mise en ligne :

  • faire une enquête auprès de la communauté monnaie libre pour savoir s’ils trouvent les infos qu’ils ont l’habitude de chercher sur ce site
  • essayer de contacter Boris pour qu’il me fasse part de ses observations
  • réaliser les redirections sur les pages les plus liées depuis d’autres sites web

Pour la suite, je prévois dans l’ordre chronologique :

  • intégrer la documentation depuis le git de duniter
  • compléter la documentation sur la partie protocoles
  • générer un flux rss/atom et dire comment s’y abonner
  • améliorer la gestion des tags
  • mettre en place le multilingue, au moins pour ce qui est déjà traduit dans la version anglaise du site actuel
  • réfléchir à l’intégration d’un wiki et d’un calendrier
  • améliorer la fonctionnalité de recherche

TODO list (suggérés dans la discussion ci-dessous) :

☐ s’inspirer du contenu de https://borispaing.fr/doc/!monnaie/faq-index
:ballot_box_with_check: logo page crédits déformé
:ballot_box_with_check: revoir footer
☒ MAJ page Qui-sommes-nous (à voir ensemble)
:ballot_box_with_check: revoir la mise en page de la Licence g1

2 J'aimes

Pour les diagrammes UML dont je suis friand :

  • Si tu peux ajouter à la génération du site la génération des codes en images via le simple jar de plantuml alors on est bon.

Plein de systèmes le gèrent, pourquoi pas Zola s’il peut lancer un jar à la génération…

1 J'aime

En fait ça me pose problème d’imposer à tout le monde de compiler tous les uml à chaque compilation. Mais je peux faire un script manuel indépendant qui compile un diagramme spécifique si tu en ressens la nécessité.

Autre option, chacun s’occupe de compiler ce qu’il veut avec l’autorisation de mettre son script dans les fichiers statiques à côté du fichier produit.

1 J'aime

Je sais que c’est pénible de recompiler les UML à chaque fois.

On en fait pas tous les jours (moi si mais pour d’autres projets :wink: ) donc ça ne me dérange pas de fournir le code ET l’image pré-générée ailleurs à chaque modification.

Par contre il faut absolument conserver dans le dépôt les codes des diagrammes pour les reprendre plus tard.

1 J'aime

C’est ce que j’ai fait :

image

Il y a un dossier statique spécial pour les uml avec le code et l’image générée.

Ah chouette, merci, du travail en moins :slight_smile:

2 J'aimes

@elois j’ai ajouté une breadcrumb interactive basique. Est-ce que tu peux me dire si ça te convient en explorant les pages du wiki ?

2 J'aimes

oui :slight_smile:

1 J'aime

Grâce à Zola et Elasticlunr j’ai pu mettre en place rapidement une fonctionnalité de recherche basique (vous pouvez la tester via la barre du footer). C’est provisoire car :

  • l’index trop lourd (2 Mo)
  • le code est archi dégueu (j’ai copié du code et ajouté de la colle, hardcodé des trucs, simulé des entrées clavier…)
  • je n’ai pas écrit les fonctions adaptées pour la recherche dans un texte français

Là, pour le coup, je suis en dehors de mon champ de compétences. J’aurais besoin d’un peu d’aide @ManUtopiK pour mettre un Elasticsearch par exemple. J’ai vu que le site de Vuepress utilise Algolia, je préfère éviter les third party, mais par contre, je ne suis pas contre un outil côté serveur avec une communication websocket.

C’est pour ces raisons que l’item « recherche » est encore à « ☒ » même si la recherche peut donner l’impression de fonctionner.

PS: je remarque au passage que l’outil de recherche de l’ancien site est cassé

Installer un Elastisearch pour un site web me paraît un peu overkill ! Mais si tu te sens de maintenir tout ça… :wink:

As tu vu lunr.js https://lunrjs.com/ ?

Oui, Elasticlunr est inspiré de Lunr et de Solr comme son nom l’indique :smiley:
Je trouve que la fonctionnalité de recherche est hyper importante et qu’on ne l’utilise que si elle est performante. Je ne connais pas tellement la question, je l’étudierai sûrement après. En attendant mieux, je me contente de ce brouillon qui « fait le job », mais ce n’est pas dans mes priorités.

En fait vuepress à un moteur de recherche par défaut, mais limité au titres et tags frontmatter.
Sur la doc de Silkaj en vuepress tu peux rechercher un mot dans tous les titres, mais il ne trouvera rien si tu cherches un mot dans le contenu.
Le site de Vuepress utilise Algolia pour pouvoir chercher dans tout le contenu et pas seulement les titres…
C’est sûr que ce n’est pas terrible d’utiliser un third party pour pouvoir faire ça. Mais c’est le problème des sites statiques, on ne peut pas faire une recherche comme sur une bdd.

Je peux regarder Elasticlunr, je ne connais pas mais ça à l’air bien ! Par contre installer Elasticsearch, il me semble aussi que c’est overkill comme le dit @vit !
Un outil serveur et du websocket ? Pour quoi faire ? Pour la recherche ???

L’index qui fait 2 Mo, c’est pas grave, il suffit de charger l’index au focus du champ de recherche et pas au chargement du site…

Sinon, j’ai trouvé ça qui génère un index avec lunr et frontmatter : https://gist.github.com/HugoDF/aac2e529f79cf90d2050d7183571684b

Il y a aussi cet article qui pourrait être adapté https://www.codementor.io/@rudolfolah/node-js-search-engine-github-s2gh0sfl8

2 J'aimes

J’ai mis en place le Elasticlunr, vous pouvez le tester via la barre de recherche dans le footer, ça fonctionne. C’est juste que j’ai un peu bricolé et que c’est pas très propre. Pour l’instant ça cherche dans le contenu des pages et le titre, avec un poids plus fort pour le titre.

En gros, ce que j’aimerais faire (c’est un petit side-project qui m’intéresserait peut être de faire plus tard), c’est un moteur de recherche côté serveur qui fonctionne sur n’importe quel site statique et qui est contactable par une API JSON ou websocket. C’est le genre de trucs que je pourrais faire en Rust.

Je charge l’index au focus du champ de recherche sur la page de recherche, c’est assez rapide. Et l’index est généré par Zola, donc pas de problème de ce côté !

1 J'aime

Oui, enfin ça devient aussi overkill :slight_smile:
Si tu as un serveur de recherche qui tourne pour un site statique, autant servir le site directement avec le serveur et plus se servir du site statique… Utiliser un vrai CMS quoi…

Je ne suis pas tout à fait d’accord. Un site statique, c’est juste un site compilé qui ne bouge pas et qui est servi comme un ensemble de fichiers par un serveur web standard comme nginx ou apache de manière très rapide parce que c’est une chose que ces programmes savent très bien faire.

Un moteur de recherche est un programme assez sophistiqué qui interprète des mots voire des phrases pour diriger un utilisateur qui n’a aucune connaissance du contenu disponible vers la page qui répondra à sa question.

Par exemple, le moteur Algolia utilisé pour le site de documentation de Vuejs et de Vuepress est très pratique et pas du tout overkill à mon avis car il permet à un utilisateur néophyte de trouver une information sans avoir aucune connaissance préalable sur la structure du site.

Un cas d’application pour le site de Duniter est une personne qui cherche comment installer un serveur Duniter mais a la flemme de parcourir le site (trois étapes : wiki > forger-des-blocs > installer ). Il va alors dans la barre de recherche et tombe sur ça :

image

Alors que s’il tape juste « install », il tombe sur plein de résultats :

Il y a clairement un problème, et c’est lié au fait qu’on n’utilise pas un outil assez sophistiqué pour l’analyse de la langue. Il faut donc un programme sophistiqué, et comme je ne veux pas que ce programme sophistiqué tourne sur la machine de l’utilisateur car je ne veux pas lui envoyer un index lourd de tout le site et un code lourd pour chercher quelque chose dedans, je veux qu’il puisse contacter un serveur qui réponde à cette question compliquée à sa place.

Par idéologie logiciel libre, je ne veux pas utiliser Algolia, je cherche donc un logiciel équivalent que je puisse faire tourner sur un serveur (même third party, mais sous mon contrôle). Par exemple, si je code un truc comme ça et que je connecte la fonctionnalité de recherche du site de Duniter à un service qui tourne sur mon serveur, c’est du third party, mais c’est du third party sous mon contrôle et en logiciel libre sous licence AGPL et qui respecte les RGPD.

Donc mon avis là dessus c’est que ce n’est pas overkill, c’est juste une réponse complexe à un problème complexe de la même manière qu’un site statique est une réponse simple à un problème simple. Par contre, ce n’est pas aussi urgent que le reste donc je me contente de l’existant pour l’instant.

@elois, je veux bien ton avis là dessus aussi si tu as le temps :wink:

3 J'aimes

J’ai pas d’avis je n’utilise pas de moteur de recherche interne a un site. Je pense que si le site est bien indexé par les moteurs de recherches alors utiliser son moteur de recherche favoris suffit

4 J'aimes

Ce soir j’ai passé pas mal de temps à migrer les liens internes du site. Tout aurait été plus simple en utilisant uniquement des liens absolus, mais ce n’était pas le cas. J’ai donc dû écrire une trentaine de lignes spécifiques pour la migration des très nombreux liens internes au site. Mais conclusion : il y a nettement moins de liens cassés à l’intérieur du site, la navigation devrait être presque sans faute.

J’ai aussi amélioré des fonctionnalités de base de SEO : titre des pages, balises meta (description et keywords), fichier robot, sitemap. Je considère ce point comme ok, même si un travail supplémentaire pourra être réalisé à l’avenir (plus de descriptions de page, plus de tags, description robot pour les images…).

Je vais enfin pouvoir commencer à modifier le contenu du site. J’ai retardé au maximum cette étape parce que les modifications auraient été écrasées par une nouvelle utilisation du script de migration (par exemple pour corriger une nouvelle erreur systématique), me forçant à résoudre les conflits à la main. J’espère que c’est le bon moment !

3 J'aimes

Sur la page https://duniter.org/fr/blog/evenements/rml7-liens-et-videos/, il y a un lien Architecture Réseau des Clients Duniter par Gaël G. vers un document stocké sur le forum. Ce lien est mort, mais le document m’intéresserait.

C’est @Inso, peut-être a t’il encore ce document sous le coude :wink:

1 J'aime

Effectivement, si tu as une forte exigence sur la fonction de recherche, alors un serveur dédié a du sens. Cela prend d’ailleurs encore plus de sens si tu utilises ce serveur pour plusieurs sites.

Pour ma part, il y a toujours une fonction recherche dans les thèmes que j’utilise sur mes sites statiques générés avec Sphinx. Mais je ne l’utilise jamais, alors je ne suis pas la bonne personne pour juger de la qualité d’un moteur de recherche. :laughing:

1 J'aime