Les logiciels libres que nous utilisons

Depuis la fin du mois de septembre dernier, les outils numériques de la France insoumise sont intégralement basés sur des logiciels libres, et l’intégralité des données personnelles est hébergée en France.

Un logiciel libre est un logiciel dont l’utilisation, l’étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, ceci afin de garantir certaines libertés induites, dont le contrôle du programme par l’utilisateur et la possibilité de partage entre individus.

Wikipedia (29 novembre 2017)

Le logiciel libre est un des éléments clés de l’histoire de l’informatique moderne. C’est un ensemble d’outils techniques (des logiciels libres eux-mêmes) et légaux (les licences qui fournissent l’assurance qu’un logiciel reste libre). Aujourd’hui, l’internet repose sur une infrastructure de serveurs qui tournent très majoritairement grâce au système GNU/Linux. WordPress est utilisé par environ 30% (les sources varient) des 10 millions plus gros sites du monde.

Mais le logiciel libre est aussi un mouvement social. Des individus et des entreprises y participent, parce qu’elles estiment que dans ce domaine, le partage et la collaboration sont plus efficaces que la propriété privée des productions intellectuelles.

On voulait du coup produire cette liste des logiciels libres que nous utilisons à la France insoumise. D’abord par pur intérêt technique, mais aussi pour remercier et faire découvrir des projets collaboratifs qui existent parfois depuis plusieurs dizaines d’années. Forcément, cela fait un peu catalogue, mais ça permet aussi de mieux comprendre comment sont articulées les briques de la plateforme de la FI.

Ubuntu

C’est probablement un de ceux dont le nom est le plus connu du grand public. C’est une version du système d’exploitation GNU/Linux. Elle fait tourner les ordinateurs personnels d’Arthur et Guillaume, ainsi que les serveurs sur lesquels sont hébergés nos sites internets.

Elle est basée sur une autre version, existante depuis bien plus longtemps : Debian. Debian est un projet démocratique et collaboratif créé en 1993, doté d’une constitution, réunissant plusieurs milliers de volontaires à travers le monde.

WordPress

WordPress est un Système de gestion de contenu. En gros, un logiciel qui sert à faire des sites internets où l’on peut publier des pages et des articles. Il fait tourner au43.fr, lafranceinsoumise.fr ainsi que des dizaines de millions de sites internet.

Nous en avons besoin, car il faut que la publication de contenu et d’articles ne soit pas accessible aux seuls développeurs. Or, créer une interface de gestion de contenu aussi riche que celle de WordPress demanderait des années de travail.

Lorsque vous êtes sur https://lafranceinsoumise.fr, sans sous domaine particulier, vous êtes donc sur un site qui fonctionne grâce à WordPress.

Adjoint à Woocommerce, il permet de créer des boutiques en ligne. C’est ce qui est utilisé pour le site materiel.lafranceinsoumise.fr et dons.lafranceinsoumise.fr.

Pour faciliter l’utilisation de WordPress et de Woocommerce, nous utilisons quelques outils qui nous facilitent la tâche :

  • la stack roots.io nous permet de bénéficier des avantages des méthodes de développement moderne avec WordPress, et en particulier du versioning
  • Le plugin Elementor permet aux personnes qui publient du contenu de construire des pages graphiquement complexes avec un simple éditeur visuel.

Django

NationBuilder a été remplacé par une application entièrement écrite pour les besoins de la France insoumise, développée au quotidien par les auteurs de ce blog, composée de plus de 10 000 lignes de code.

Cette application est libre, écrite dans le langage de programmation Python. Vous pouvez trouver son code source en ligne.

Cette application n’est pas basée sur rien. Elle utilise ce qu’on appelle un framework : une sorte de boîte à outils logiciels qui permettent d’effectuer des tâches courantes plus facilement lorsque l’on écrit du code. Ce framework s’appelle Django. Il a été développé initialement par des journalistes américains au début des années 2000, et s’est depuis fortement complexifié pour devenir une référence majeure dans le monde du développement web. Il est associé à Django Rest Framework pour la gestion des API REST.

C’est probablement sur cette application que nous passons l’essentiel de notre temps de développement 🙂

Git

On aurait tendance à l’oublier, mais sans Git, notre travail serait complètement différent. Sans rentrer dans les détails techniques, c’est un logiciel qui permet le travail collaboratif. Lorsque que chacun fait à son poste des modifications sur un projet, Git se charge automatiquement de fusionner ces modifications. C’est comme si vous pouviez modifier chacun de votre côté un document texte, et que les corrections de tout le monde étaient automatiquement prises en compte une fois qu’elles étaient terminées.

Mailtrain

C’est un logiciel d’envoi d’emails en masse. C’est avec cet outil que nous envoyons les emails à tout⋅e⋅s les insoumis⋅es.

Mosaico

C’est un éditeur visuel d’emails, qui sert à la rédaction des messages envoyés avec Mailtrain. Cela permet à des utilisateurs non techniques de créer facilement des jolis emails par glisser/déplacer.


à partir de là, ça devient vraiment très technique

Ansible

C’est un logiciel d’automatisation de gestion de serveurs. On décrit dans des fichiers texte la configuration souhaitée d’un serveur, et celle-ci est automatiquement déployée sur nos machines.

Il est utilisé aussi pour le déploiement des applications : lorsque nous écrivons du code, nous publions les nouvelles version sur des dépôts publics (sur le compte GitHub de la France insoumise). Puis nous utilisons Ansible pour mettre à jour les serveurs depuis ces dépôts.

Ansible est aussi responsable de la gestion de nos sauvegardes automatiques. En cas de destruction totale de nos serveurs (ce qui est déjà hautement improbable), il nous faudrait quelques minutes pour déployer de nouveaux serveurs avec une configuration identique, et rétablir les données à partir de nos sauvegardes.

Côté langages

Si agir.lafranceinsoumise.fr est écrit sous Python (ainsi que l’application de billets électroniques de la convention), la plupart de nos petits projets (l’application procurations, le module d’authentification) sont écrits sous Node et Express.

Côté base de données

Redis, PostGres, SQLite.

Bref, un key-value store généraliste, et deux bases de données relationnelles selon la taille des projets.

La crypto ça sert à tout

Cet article se veut vulgarisateur. On va vous expliquer comment on a utilisé des technologies de cryptographie pour envoyer des autocollants, tracts et affiches  gratuites aux groupes d’action certifiés de la France insoumise.

Un peu de contexte :

Les groupes d’action certifiés ont droit chaque mois à une certaine quantité de tracts et d’affiches qui leurs sont livrés gratuitement dans toute la France par les volontaires du local. Ceci se fait au moyen d’un code utilisé au moment de la commande sur le site matériel.

Auparavant, ces codes était générés chaque mois et envoyés par e-mail aux groupes d’action. Cela occasionnait beaucoup de travail pour l’équipe opérationnelle, et de nombreux désagréments : ainsi un groupe qui était certifié au cours du mois devait attendre le mois suivant pour obtenir un code.

Dorénavant, les codes seront affichés directement sur la page de gestion de chacun des groupes d’action. Ils sont renouvelés chaque 1er du mois.

En gros, il s’agit d’afficher sur la page de chaque groupe un code, qui pourra être utilisé sur le site matériel pour ne pas payer les tracts et les affiches.

Les contraintes sont les suivantes :

  1. On ne veut pas avoir à créer les codes manuellement à chaque fois.
  2. Les animatrices et animateurs de groupes d’action doivent pouvoir trouver leur code sur leur page de gestion.
  3. Le site matériel fonctionne avec un système qui possède déjà une fonctionnalité de « codes promo » : autant s’y intégrer afin d’éviter du travail supplémentaire.
  4. Le site qui gère les groupes d’action et le site matériel sont deux systèmes différents, donc pas d’accès aux mêmes disques durs (donc pas de possibilité de partager une base de données).
  5. On veut éviter au maximum le « couplage », c’est à dire le fait que si un des deux sites (matériel ou groupe d’action) tombe en rade, l’autre soit entraîné avec lui.

La méthode qui vient le plus naturellement à l’esprit pour quelqu’un qui fait de l’informatique est la suivante. Elle consisterait à créer automatiquement des codes (1) pour chaque groupe d’action, et les enregistrer dans la base de données à côté des groupes. On peut ainsi les afficher (2) sur la page de chaque groupe. Ensuite, lors de l’achat sur le site matériel, si l’utilisateur rentre un code (3), on interroge le site de groupes d’action via une communication inter-serveurs (4). Problème, si le site de groupes d’action ne répond pas (à cause d’un problème réseau, parce qu’il est planté), alors le site matériel ne fonctionnera pas. Du coup, le point (5) n’est pas respecté.

C’est là que la cryptographie vient à la rescousse : elle va permettre que le site matériel puisse vérifier la validité d’un code sans contacter le système de groupe d’appui.

Voici comment est composé un code :

ThXRdZhJ9TzaI4

Th : les deux premiers caractères représentent la date de validité du code

XRdZhJ : les six caractères suivants identifient le groupe d’appui

9TzaI4 : ces six derniers caractères sont une signature

Tout le système repose dans cette signature. Lorsque le site de groupe d’action crée un code, il génère la partie rouge et la partie verte à partir de la date et d’un numéro unique associé à chaque groupe d’appui.

Puis, il utilise une clé secrète pour générer la partie bleue. Nous n’allons pas détailler l’algorithme ici, mais c’est comme si l’on multipliait la partie rouge et verte par la clé secrète pour obtenir la partie rouge. Si on ne connaît pas la clé secrète, impossible de générer cette signature.

Le site matériel connaît aussi la clé secrète. Lorsque que quelqu’un entre un code, l’opération est simple. Le site matériel commence par séparer le code en ses trois parties. Il reprend la partie de gauche, et recalcule la signature avec la clé.

Si la signature calculée par le site matériel correspond à la partie de droite du code fourni par l’utilisateur, c’est bon ! C’est forcément que le code provient bien du site de gestion des groupes d’action, puisque c’est le seul à connaître la clé secrète qui permet de générer cette signature.

En clair, si vous êtes un peu maligne ou malin (ou que vous allez directement voir comment ça marche) vous pouvez deviner les huit premiers caractères d’un code. Mais vous ne pourrez jamais deviner les suivants si vous n’avez pas la clé 😉

Deux aller-retours pour Athènes

Juste avant notre sortie de NationBuilder, en septembre, nous sommes allés en Grèce aider le mouvement Πλεύση Ελευθερίας (Plefsi Eleftherias) à créer sa plateforme numérique. C’est le mouvement fondé par Zoé Konstanpopoulou, ancienne présidente du parlement Grec.

Tout a commencé par une rencontre à Marseille entre Guillaume et Zoé, où ont été présentés les différents outils qu’avait mis en place la France insoumise au cours de la campagne, et comment étaient organisés les groupes d’appui sur la plateforme. Nous sommes tombés d’accord sur le fait que l’utilisation de NationBuilder était la solution la plus rapide – si ce n’est la seule accessible à ce stade – pour construire et animer une plateforme d’inspiration identique à la notre1.

Décision fut prise de se rendre en Grèce quelques jours pour travailler ensemble. Puis décision fut à nouveau prise que nous y allions séparément, à quelques jours d’intervalle, pour pouvoir être présents à deux points d’étapes du développement de la plateforme.

Nous avons été extrêmement bien accueillis. On a bien ri, bien mangé, bien dormi, et bien travaillé. L’équipe que nous avons rencontré était extrêmement sympathique.

Arthur a travaillé sur la page d’inscription, et a présenté plus en détail la manière dont les groupes d’appui se constituaient sur notre plateforme. Pas de modération à priori, pas de validation des inscriptions. Qui veut participer participe. Guillaume a travaillé sur le code nécessaire au fonctionnement des groupes d’appui et des événements locaux.

Le résultat est là. Comme pour la France insoumise, la constitution d’un mouvement à partir de sa plateforme passera par l’inclusion dans les équipes de développeu⋅r⋅s⋅es dont ce sera la tâche principale, et qui n’en seront pas moins des militant⋅e⋅s politiques.

Bon, sinon, on a mangé de délicieuses Moussaka, le meilleur souflaki d’Athènes, et prolongé l’été en profitant d’une chaleur de 40°C pendant qu’il en faisait quinze à Paris. Avant d’aller travailler dans les locaux de Πλεύση Ελευθερίας, on a même eu le temps d’aller faire chacun une petite visite. (NdG : Arthur est bien plus doué que moi pour prendre des selfies, mais un œil averti pourra remarquer que j’avais clairement plus de soleil dans la face. NdA : photo prise deux semaines plus tard à la même heure, à une période où le jour se raccourcit, je vous laisse seuls juges de cette affirmation).

Selfie d’Arthur devant l’Érechthéion.
Selfie de Guillaume au Parthenon.
Selfie de Guillaume devant le même Érechthéion, une dizaine de jours plus tard.

[1]: Cela pourrait surprendre, compte tenu du fait que nous venons nous-mêmes de quitter NationBuilder. Mais pour cela, nous avons du peu à peu développer nos propres outils, et ça nous a pris presqu’un an au total. Nous n’aurions pas été en mesure de sortir la plateforme avec l’ensemble de ses fonctionnalités dès le début si nous ne nous étions pas reposés sur une solution comme NationBuilder.