Journal Mes activités open-sources / libres récentes

42
3
mar.
2018

Sommaire

Cher journal,

Je vais essayer de faire un petit retour sur mes activités libres ces derniers mois, afin de faire parler un peu des projets qui m'intéressent et essayer de motiver d'autres personnes à faire de même.

Actuellement, je travaille sur du code Transact SQL dans un environnement Windows. Cet environnement me motive à contribuer au projet ExchangeCalendar et l'expérience SQL me permet de proposer sereinement des correctifs sur des projets open-source.

ExchangeCalendar

ExchangeCalendar est une extension pour Thunderbird qui permet d'ajouter des interfaces avec les serveurs Exchange de Microsoft. Cette extension modifie beaucoup de composants de Thunderbird pour proposer la synchronisation des calendriers Exchange, la lecture des carnets d'adresse, la gestion des invitations de rendez-vous/réunions reçues par email et quelques spécificités à Exchange.

C'est un projet qui contient énormément de code (en XUL, JavaScript, XML, CSS…) qui a failli partir dans les limbes des logiciels non-maintenus et qui ne fonctionnent plus suite aux mises à jour d'autres logiciels.

En 2016, j'avais touché un peu au projet pour pouvoir bien recevoir tous mes contacts dans le carnet d'adresse (il y avait un petit bug sur la synchronisation des contacts). Début 2017, Thunderbird 52 est apparu et le logiciel est resté inutilisable pendant quelque temps, car le développeur d'alors ne répondait plus sur Github.

Comme j'ai besoin de cette extension pour m'éviter d'utiliser Outlook et que, quelques personnes m'ont contactée, j'ai essayé de contribuer à mon tour au projet. Seulement, je savais très bien que je ne pourrai pas tenir le projet seul et que mon temps serai limité. Heureusement, au même moment, advancingu est apparu sur Github et a proposé de créer un fork communautaire de l'extension.

Ce fût très intéressant de travailler sur le projet (même si Exchange ne m'intéresse pas plus que ça), car j'ai pu découvrir de manière concrète JavaScript et XUL (une technologie de Netscape/Mozilla qui permet de développer rapidement des applications). J'ai aussi pu découvrir comment utiliser javascript-beautifier et tidy pour donner un style cohérent à tout ce code (au début, je perdais beaucoup de temps à comprendre la structure, car le style était très mélangé et peu cohérent).

Nous avons donc profité de nettoyer le code avec ces outils automatiques, nous avons restructuré l'arbre des sources et nous avons décidé d'utiliser des outils un peu plus commun pour créer les release et synchroniser les fichiers de traductions. Grâce à ces points j'ai appris un peu comment fonctionnent les Makefile et Transifex. Transifex n'est pas un logiciel libre (à l'inverse de son concurrent Weblate), mais il soutient les communautés libres en hébergeant les projets open-source gratuitement et ça été le choix retenu par la communauté. C'est le pendant de Github en somme, mais pour les communautés de traduction.

Malheureusement, le code d'ExchangeCalendar fait trop de chose à mon goût (comme gérer son propre cache de mots de passe) et il y a trop de configurations à tester (beaucoup de versions d'Exchange existent et beaucoup de configurations peuvent être différent, entre autre pour l'authentification). Il n'y a donc aucune garantie que le logiciel fonctionne pour vous…

Le challenge de 2018 pour ce projet, sera de mettre à jour tout le code pour pouvoir tourner sur Thunderbird 60: beaucoup de code sera déprécié depuis la version 52.0. J'espérais ne plus avoir besoin de faire de mises à jour massives, comme nous l'avions fait pour le style de code et la hiérarchie des sources, mais ce sera nécessaire, car des structures JavaScript comme for each in seront complètement retirées du moteur de Thunderbird.

acme-dns-tiny

Depuis 2016, j'utilise sur mon serveur mon script Python acme-dns-tiny pour recevoir mes certificats TLS de Let's Encrypt. Ce projet est un fork du célèbre client ACME acme-tiny, j'en avais parlé ici même lors de la sortie de la version 1.0. En résumé, le but est de répondre aux challenges d'un serveur ACME via des ressources enregistrées sur un serveur DNS au lieu de fichiers posés sur un serveur Web. L'intérêt des ressources DNS est qu'il n'y a pas d'impacts sur vos services: les modifications DNS sont faites de manière transparente et sans impacts, grâce à la mise à jour automatique des ressources via des clés TSIG.

En 2017, j'ai suivi les nombreux brouillons de la RFC liée à la technologie ACME que Let's Encrypt développe de manière communautaire (ils en sont à la version 9 !). Je n'ai pas développé tout de suite de nouvelle version de mon client, car il n'y avait aucun serveur ACME avec lequel je pouvais tester mes développements.

Début 2018, Let's Encrypt a annoncé la disponibilité d'un serveur de test pour leur API v2 (qui implémente donc la version 9 du brouillon) et j'ai donc pu préparer la version 2.0 de acme-dns-inty, qui n'attend plus que l'installation sur mon serveur et les nouveaux services de Let's Encrypt pour être officiellement publié.

Pour ceux qui ont la chance de pouvoir gérer leurs ressources DNS via des clés TSIG, vous serez intéressés de savoir qu'avec cette nouvelle version et avec les challenges DNS, Let's Encrypt autorisera la création de certificat TLS wildcard.

xmpp-pane

xmpp-pane est un projet personnel en plein développement qui fait suite à mes intérêts à propos de XMPP (via Movim, salut-à-toi et ejabberd), de Firefox (via EcmaScript, les WebExtensions et leur panneau latéral, et les WebSocket). L'idée de ce projet, qui n'en est vraiment à ses débuts et qui n'est qu'une expérimentation, est de me fournir un client XMPP qui sera capable de lire les articles du réseau XMPP diffusés via PubSub. Je ne veux pas en faire un client de chat, je voudrais que ce soit juste un lecteur de flux qui serait à ma disposition dans mon navigateur via le panneau latéral.

Le nom du projet n'est pas définitif, mais je manque d'inspiration. La peinture est très fraîche, mais je suis déjà fier de pouvoir me connecter à mon serveur et de lui demander des informations sur les services dont il dispose (via la XEP Discover).

XMPP via WebSocket est vraiment très facile à manipuler, entre autre parce que XMPP via Websocket demande d'envoyer des messages XML complets et aussi grâce aux outils de Firefox qui permettent de manipuler très facilement les fichiers XML via l'API DOM.

J'espère trouver un nom en 2018 et fournir une première version publique. Il me faudra trouver encore un moyen de traduire les pages HTML de l'extension Web et commencer à implémenter la partie client PubSub.

LinuxFR

L'année dernière, j'ai tenté un peu l'aventure Ruby on Rails, grâce au hack de LinuxFR pour pouvoir afficher des résumés des pages Wiki dans la page d'accueil, au lieu de l'article complet. J'ai aussi réussi à proposer un correctif pour rétablir le fonctionnement des norloges dans la tribune de rédaction (tribune qui utilise un nouveau design un peu plus chaleureux). Merci à l'équipe de LinuxFR qui est réactive et qui a intégré mes modifications. J'espère contribuer encore un peu cette année !

Comme un journal récent le disait, on ne contribue pas qu'avec du code et j'ai pu donner un peu de mon temps pour collaborer aux dépêches à propos des différentes versions de Firefox (c'est très intéressant de traduire les release notes; ça permet de découvrir de nouveaux concepts) et les traductions des articles de Lin Clark.

Autres projets

En attendant que xmpp-pane progresse, j'utilise le lecteur de flux RSS FreshRSS sur mon serveur. L'année dernière j'ai pu leur proposer un correctif SQL pour un problème qui survenait régulièrement avec les bases de donnée Postgresql.

Pour Debian, j'ai pu ouvrir un bug pour ejabberd dans Debian Stretch qui n'arrivait pas à utiliser correctement les clés ECDSA pour les certificats TLS. Le correctif que j'ai proposé est une compilation des différents correctifs du projet ejabberd lui-même qui n'avaient pas étés intégrés dans les paquets Debian.

En 2017, j'avais également fait ma première WebExtension pour Firefox, avoid-google-search-redirects, mais le projet est quasiment mort-né: il ne fonctionne pas avec les APIs de Firefox Quantum. Le but était de désactiver le code de Google Search qui remplace les liens des résultats des recherches sur Google par des redirections par Google. Ce qui me gênait avec ce comportement, c'est que, non seulement, je vois en direct le pistage de Google, mais en plus l'historique de mon navigateur ne contient quasiment que ces liens de redirections plutôt que le lien final des sites.

Voilà, c'est tout pour mon retour sur 2017, début 2018. Pour la suite, j'espère pouvoir continuer à partager un peu de mon temps avec la communauté, découvrir encore d'autres technologies et vous faire des retours sur des projets open-source/libre, si ça vous intéresse.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.