Les dépêches de LinuxFr

S'abonner à flux Les dépêches de LinuxFr
Mis à jour : il y a 3 min 49 sec

Clip & block : un kit pour du montage électronique

jeu, 23/04/2020 - 18:23

Clip & block est un kit de construction libre (CC By‑SA 4.0) qui permet de créer des structures solides avec une imprimante 3D pour les projets électroniques basés sur Arduino. Il se compose de pièces qu’il est possible d’assembler et de démonter facilement pour ajouter et retirer différents composants. Bien qu’il soit utilisable, c’est la première fois que je documente ce projet, il est donc en développement. Vous pouvez voir quelques exemples de réalisations à la fin de cette dépêche.

Sommaire Démarrer avec Clip & block en une heure Imprimer votre premier Clip & block

J’ai conçu Clip & block pour que ce soit simple à imprimer (pas de support, possibilité de l’imprimer dans tous les sens, pas trop de précision nécessaire, car les formes sont simples). Commencez par cloner le projet sur GitLab.

Première étape, vous allez imprimer vos deux premières pièces, un clip et un bloqueur.

Pour les pièces :
  • aller dans le répertoire basic ;
  • récupérer une pièce I-3.stl ;
  • récupérer une pièce I-4.stl.

I-3.stl → la lettre I désigne la forme de la pièce, le chiffre 3 indique le nombre de trous.

Pour le clip et le bloqueur :
  • aller dans le répertoire clips ;
  • récupérer un blocker-2.stl (de préférence, le mettre à plat, cela se fait très bien avec Cura) ;
  • récupérer un clip-2.stl (comme pour le bloqueur, le mettre à plat, en le tournant à 90°).

Le chiffre 2 indique la hauteur du clip (assemblage de deux pièces). Le blocker-2.stl va fonctionner avec le clip-2.stl.

Notez qu’il ne faut pas beaucoup de plastique pour ces pièces de base (2 g et 0,83 m avec mes réglages pour ces quatre pièces). Après plusieurs essais, cette taille (9,6 mm × 9,6 mm × 4,8 mm) m’a paru être un bon compromis. Plus petit, les manipulations deviennent difficiles (mais peut‑être qu’il faudrait que je teste à nouveau en 6,4 mm × 6,4 mm × 3,2 mm).

Vous pouvez maintenant assembler ces pièces ! Pour démonter, il faut pousser le bloqueur par l’autre côté à l’aide d’un petit outil pointu. Si vous imprimez un deuxième clip et un deuxième bloqueur, vous pourrez apprécier la solidité du montage !

Les différentes pièces Pièces existantes

Dans le répertoire basic, vous trouverez un grand nombre de pièces générées (75 à ce jour). Elles sont classées en fonction de leur forme et du nombre de trous qu’elles comportent (en une, deux ou trois dimensions). Pour s’y retrouver, voici quelques exemples :

Nom Image Description I-3 I : en long, 3 trous en longueur LF-3-2 LF : en L à plat, 3 en longueur, 2 de l’autre côté L-2-1-1 L : en L, 2 en longueur, 1 en hauteur, 1 en largeur L-2-1-1 L : en L, 2 en longueur, 2 en hauteur, 3 en largeur U-2-2-2 U : en U P-2-2 P : pièce à plat C-2-2-1 C : cube, 2 en longueur, 2 en hauteur, 1 en largeur IR-3 IR : en long, bouts arrondis, (pour des pièces en rotation) IH-3 IH : en long, demi‑hauteur IHR-3 IHR : en long, demi‑hauteur, bouts arrondis

Il y a certaines redondances (C et P, par exemple), il faudrait que je fasse le ménage…

Créer ses pièces sur mesure

Si vous ne trouvez pas votre bonheur dans ces fichiers STL, il est possible de créer, avec OpenSCAD, vos propres pièces assez simplement. Voici par exemple comment créer une pièce P‑2‑3 (pièce à plat en 2 × 3) :

  • ouvrez le fichier clip_and_block.scad
  • modifiez le paramètre model pour le type de pièce à P ;
  • modifiez le paramètre length1 pour la longueur à 2 ;
  • modifiez le paramètre length2 pour la largeur à 3 ;
  • vous pouvez ensuite faire un rendu avec la touche F6 ;
  • et exportez en STL depuis OpenSCAD.

Le fichier list-plates.txt et le script generate-plates.py

Pour automatiser la génération des fichiers STL, j’ai créé le fichier list-plates.txt qui liste toutes les pièces. Le script generate-plates.py lit ce fichier et lance les commandes OpenSCAD avec les paramètres qui vont bien.

Les pièces pour composants électroniques

C’est ici la partie intéressante du projet : pouvoir intégrer des composants électroniques dans vos montages.

Les composants pris en charge

J’ai créé un certain nombre de pièces qui permettent d’inclure des composants. Elles se trouvent dans le répertoire stl/electronic.

Voici par exemple les deux pièces qui permettent d’inclure un NodeMCU (j’utilise beaucoup cette carte) :

Il existe bien d’autres variantes de ces pièces, avec plus ou moins de trous, des trous d’un seul côté, etc. Voici la liste des composants pris en charge dans Clip & block, cette liste pourra (assez) facilement être étendue :

Nom Image Description 18650x2 Batterie holder Alimentation 7,4 V 18650 Batterie shield V3 Alimentation USB + 3,3 V + 5 V + recharge BME 280 Température + pression Breadboard 25 trous Connexion Bouton 14 × 20 Bouton D1 Mini Carte de développement DC Motor with gearbox Moteur à courant continu démultiplié L9110s Driver motor Driver moteur à courant continu NodeMCU Carte de développement OLED 128 × 64 Afficheur OLED SG90 (une seule variante, à améliorer) Servomoteur Simple switch Interrupteur Afficheur TM1637 Afficheur 4 × 7 segments

Il existe plusieurs variantes pour chaque composant, je vous laisse les découvrir.

Créer ses pièces pour ses composants

Vous pouvez créer des pièces pour vos composants. Pour cela, vous devez modéliser la pièce sans trous avec votre modeleur préféré. Ensuite, pour pouvoir ajouter des trous Clip & Block autour, il faut veiller à ce que longueur et largeur soient des multiples de 9,6 mm et que la hauteur soit de 4,8 mm.

Vous pouvez ensuite ajouter les trous grâce à OpenSCAD.

Créer le fichier STL de son composant

Voici par exemple comment j’ai procédé pour l’afficheur TM1637 :

  • j’ai créé une pièce pour le dessus et une pour le dessous pour prendre l’afficheur « en sandwich » ;
  • puis, j’ai créé des bords autour du composant pour obtenir un multiple de 9,6 (ici, 48 mm : 5 trous × 28,8 mm et 3 trous × 4,8 mm).

Dessous :

Dessus :

Ajouter les trous avec OpenSCAD

Ensuite, il est possible d’ajouter les trous autour de votre montage grâce à OpenSCAD :

  • ouvrez le fichier clip_and_block.scad ;
  • déposez votre fichier STL dans le dossier import ;
  • modifiez le paramètre model pour le type de pièce à F (Filename) — pour des trous de demi‐hauteur, choisissez FH ;
  • dans le tableau holeArray, entrez les coordonnées de vos trous (il faut tester pour trouver les bons) ;
  • dans le tableau finalRotate, vous pouvez tourner votre modèle final pour qu’il soit à plat ;
  • dans le tableau finalMirror, vous pouvez faire une rotation de votre modèle.

Utiliser le fichier list-elec.csv le script generate-elec.py

J’ai également automatisé la génération des fichiers STL. J’ai créé le fichier list-elec.csv qui liste toutes les pièces pour composants. Vous pouvez voir dans ce fichier que vous pouvez indiquer toutes les options OpenSCAD.

Le script generate-plates.py lit ce fichier et lance la commande OpenSCAD avec les paramètres. Je vais peut‑être fusionner les fichiers list-plates.txt et list-elec.csv prochainement.

Mes réalisations

Voici ce que j’ai réalisé avec les Clip & blocks — je pourrai, si vous me le demandez, détailler ces projets :

Ces projets fonctionnent plutôt bien, et je m’en sers régulièrement. Voici pour moi les qualités et les défauts de Clip & block :

  • qualités :
    • solidité,
    • facile de faire des modifications,
    • pas besoin de réimprimer l’ensemble pour les modifications ;
  • défauts :
    • manque de pièces « esthétiques » ou de finition, ou même de sécurité (caches, couvercles, etc.),
    • sécurisation des connecteurs Dupont par des pièces spéciales,
    • organisation des fils.
La suite ?

J’ai aujourd’hui un peu moins de temps pour m’occuper de ce projet. Cependant, je trouve dommage de le laisser à l’abandon, c’est pourquoi je vous demande de l’aide. Alors, de quoi ai‑je besoin ?

Tester

La première chose que j’aimerais savoir c’est si ce projet fonctionne chez vous, si cela peut répondre à un besoin (ou le créer ?). Donc, merci de tester en suivant la première partie de cet article !

Quelques idées d’évolutions
  • ajouter des composants (selon vos besoins) ;
  • sécuriser les connecteurs ou créer des passe‑fils ;
  • créer des pièces décoratives ou de finition pour que les produits finals soient plus esthétiques et/ou sécuritaire ;
  • ajouter des éléments de types roue (j’ai déjà travaillé dessus) et engrenage ;
  • faire des manuels avec LDCad ;
  • créer d’autres projets basés sur ce kit.
Créer une communauté

Jusqu’à maintenant, je n’ai que mon GitLab. Mais je viens de créer un compte Mastodon pour discuter et échanger, si l’on pouvait être deux ou trois, cela dynamiserait les choses. :)

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

SHA-mbles : une collision à préfixes choisis sur SHA-1

jeu, 23/04/2020 - 15:22

Au début de l’année 2020, alors que l’on commençait à entendre parler de quelques cas de pneumonie atypique dans la ville chinoise de Wuhan, deux chercheurs français, Gaëtan Leurent (Inria) et Thomas Peyrin (Nanyang Technological University, Singapour), publiaient la première collision à préfixes choisis sur l’algorithme de condensation cryptographique SHA-1, et démontraient la faisabilité d’une attaque contre la toile de confiance OpenPGP.

L’attaque, dénommée SHA-mbles (« chaos », « désordre »), est de toute beauté et son étude fournit une excellente occasion, en cette période de confinement, de se pencher sur diverses notions comme le format des certifications OpenPGP ou le fonctionnement des algorithmes de condensation.

Sommaire Description sommaire de l’attaque

Avant d’entrer dans les détails sur le fonctionnement de l’attaque, voyons au préalable ce qu’elle permet de faire exactement.

Mallory, l’attaquant, cherche à usurper l’identité d’Alice, en fabriquant une clef OpenPGP à son nom qu’il pourra utiliser par exemple pour signer des documents et convaincre une tierce personne que ces documents proviennent d’Alice.

Pour réaliser cette attaque, Mallory génère deux clefs : une clef A portant le nom d’Alice, et une clef B portant un autre nom. Il fait certifier la clef B par Charlie, puis copie la certification de Charlie sur la clef A au nom d’Alice. Le but de l’attaque est que quiconque faisant confiance à Charlie accepte la clef A comme étant réellement la clef d’Alice, alors qu’Alice est totalement étrangère à cette clef.

Normalement, la manipulation de Mallory, qui consiste à copier une certification d’une clef vers une autre, ne devrait pas être possible. Ou plutôt, elle est complètement possible (une certification n’est jamais qu’une suite d’octets après tout) mais le résultat ne devrait pas pouvoir être considéré comme légitime, de par le principe même de ce qu’est une certification. Quiconque vérifie les certifications portées par la fausse clef A devrait se rendre compte que la certification émise par Charlie n’est pas valable (puisque c’est la clef B que Charlie a certifiée). L’exploit de Leurent et Peyrin est de générer les clefs A et B de telle sorte qu’une certification sur la seconde est aussi une certification valable sur la première.

L’attaque vise l’algorithme de condensation SHA-1 et le format des clefs publiques OpenPGP. À ce titre, elle ne dépend pas d’une implémentation particulière du standard OpenPGP (GnuPG par exemple), c’est le standard lui-même qui est vulnérable.

Anatomie d’un certificat OpenPGP

Les briques de base du format OpenPGP, tel que défini dans le RFC 4880, sont les paquets. Chaque paquet a une structure de type TLV (Tag, Length, Value), composée d’un octet indiquant le type de paquet (le tag), un ou plusieurs octets indiquant la taille (en octets) du contenu du paquet, et le contenu (ou valeur) du paquet proprement dit. Une suite de plusieurs paquets constitue un message OpenPGP.

Un exemple de message OpenPGP est une clef publique transférable (Transferable Public Key ou TPK), parfois aussi appelé certificat OpenPGP, qui contient toutes les informations publiques nécessaires pour communiquer avec le détenteur d’une paire de clefs (c’est par exemple ce que produit la commande --export de GnuPG). Une clef publique transférable est composée des paquets suivants :

  • un paquet de clef publique (Public-Key Packet) contenant la partie publique de la clef maîtresse ;
  • pour chaque identité associée à la clef :
    • soit un paquet d’identifiant utilisateur (User ID Packet, contenant une chaîne au format Nom (Commentaire) <Adresse de courriel>), soit un paquet d’attribut utilisateur (User Attribute Packet, contenant une photo au format JPEG);
    • un paquet de signature (Signature Packet) contenant une auto-certification émise par la clef maîtresse ;
    • éventuellement, des paquets de signature contenant des certifications émises par des clefs tierces ;
  • pour chaque sous-clef associée à la clef maîtresse :
    • un paquet de sous-clef publique (Public-Subkey Packet) contenant la partie publique de la sous-clef ;
    • un paquet contenant une signature d’attachement (Binding Signature), émise par la clef maîtresse.

Les certifications mentionnées servent à attester (« certifier ») qu’une identité donnée est associée à la clef maîtresse située dans le premier paquet, c’est-à-dire que la clef appartient à l’utilisateur identifié. Une certification est une signature calculée comme suit :

  • on concatène le paquet de clef publique, le paquet contenant l’identité (User ID Packet ou User Attribute Packet), plus quelques métadonnées (par exemple la date de signature) ;
  • on condense le tout à travers une fonction de condensation choisie parmi celles supportées par le standard (typiquement de nos jours, SHA2-256 — mais SHA-1 peut aussi être utilisée) ;
  • on exécute l’algorithme de signature sur le condensat ainsi généré, avec sa clef maîtresse privée (dans le cas d’une auto-certification, il s’agit de la clef privée correspondant à la clef publique située dans le premier paquet du certificat) ;
  • on empaquette le résultat de la signature dans un Signature Packet.

Si une clef est associée à plusieurs identités (par exemples plusieurs adresses de courriel, ou une adresse de courriel et une photo), chaque identité est certifiée indépendamment, en répétant la procédure ci-dessus pour chaque User ID Packet et chaque User Attribute Packet.

De SHA-1 et des collisions

Brièvement, une fonction de condensation (hash function) cryptographique comme SHA-1 a pour objectif de produire une valeur unique de taille fixe (le condensat, ou l’image) à partir d’une entrée arbitraire (la pré-image), et doit avoir les propriétés suivantes : il doit être pratiquement infaisable de trouver deux pré-images produisant le même condensat (résistance aux collisions), et il doit être pratiquement infaisable de trouver une pré-image correspondant à un condensat donné (preimage resistance, qui n’a pas vraiment de traduction élégante à mon goût en français)1.

Dans le standard OpenPGP, la fonction SHA-1 a deux rôles distincts. Le premier est le calcul des empreintes des clefs au format v4 (le seul format courant aujourd’hui, le format v3 étant obsolète depuis des années), qui permettent d’identifier une clef de manière unique. L’utilisation de SHA-1 est ici obligatoire, le standard n’autorise pas l’emploi d’une autre fonction pour cet usage2, du moins pas sans changer le format des clefs (la prochaine version du standard OpenPGP introduira un format v5 où les empreintes seront calculées avec SHA2-256). Le deuxième rôle de SHA-1 est de participer aux opérations de signature, pour calculer le condensat des données à signer qui est ensuite passé à l’algorithme de signature. Pour cet usage, SHA-1 n’est qu’une des fonctions possibles, le standard autorise aussi toute la famille SHA2 (SHA2-224, -256, -384, et -512). Toutes les implémentations modernes utilisent SHA2-256 par défaut, mais il est toujours possible de choisir d’utiliser SHA-1.

Dans les (très) grandes lignes, SHA-1 fonctionne en découpant les données à condenser en blocs de 64 octets et en traitant chaque bloc les uns après les autres ; chaque nouveau bloc traité met à jour un état interne sur 160 bits, et le condensat final renvoyé par la fonction est cet état interne tel qu’il est une fois le dernier bloc traité.

Une collision est la production de deux documents (« documents » au sens large : dans ce contexte, toute suite d’octets est un document) au contenu différent mais pour lequel la fonction SHA-1 donne un condensat identique. Trouver une collision devrait normalement demander 280 opérations, ce qui en pratique est infaisable à l’heure actuelle. Néanmoins, des faiblesses de la fonction permettent de réduire ce nombre d’un facteur ~100 000 (à ~263), ce qui rend la recherche de collisions réalisable en pratique — comme démontré par l’attaque shattered de Marc Stevens et col. (2017).

Une conséquence du fonctionnement par bloc de la fonction SHA-1, importante pour l’attaque qui nous intéresse ici, est qu’une fois que vous avez trouvé deux documents produisant une collision, vous pouvez étendre ces documents avec des données arbitraires tout en préservant la collision, dès lors que vous ajoutez les mêmes données arbitraires à la fin de chaque document. Par exemple, si les chaînes ALICE et BOBBY sont une collision et ont le même condensat X, alors les chaînes ALICEAIMELESFRAISES et BOBBYAIMELESFRAISES sont aussi une collision et auront un même condensat Y.

Un type particulier de collision est la collision à préfixes choisis (chosen-prefix collision). Cela consiste à partir de deux documents (les préfixes) distincts — qui donnent donc chacun un condensat différent — et à ajouter des blocs à chacun d’eux de telle sorte que les condensats des documents résultant soient identiques, permettant ainsi « d’annuler » la différence de départ. C’est une collision de ce type que décrivent Leurent et Peyrin dans leur attaque. Je ne m’attarderai pas sur les détails mathématiques qui sous-tendent la recherche de la collision — j’en serais bien incapable —, mais soulignerai seulement qu’ils démontrent qu’il est possible de trouver une collision après avoir ajouté dix blocs (640 octets ou 5120 bits) à chaque préfixe, au prix de ~263.4 opérations nécessitant deux mois de calcul sur 900 processeurs graphiques Nvidia (pour un coût de $75 000).

L’attaque sur les certifications OpenPGP

Pouvoir générer une collision à préfixes choisis, c’est bien, mais encore faut-il exploiter cette possibilité pour monter une attaque crédible et pratique contre OpenPGP. Là, Leurent et Peyrin quittent le domaine de la cryptographie pour entrer dans celui du hack, et c’est un hack de toute beauté qu’ils proposent.

Rappelons leur objectif : il s’agit de générer deux clefs OpenPGP A et B de telle sorte qu’une signature de certification sur la clef B soit aussi valable sur la clef A.

La clef A sera une clef RSA de 8192 bits, et sera associée à l’identifiant utilisateur Alice <alice@example.com>. La clef B sera une clef RSA de 6144 bits (on reviendra dans un instant sur le choix de ces tailles), et sera associée à deux identités : un identifiant utilisateur Bob <bob@example.com> et un attribut utilisateur (une image JPEG). Quand Charlie signera la clef B que lui présentera Mallory, et conformément à la procédure de certification décrite plus haut, il générera deux certifications distinctes : une calculée sur la concaténation de la clef B et de l’identifiant Bob <bob@example.com> (cette certification ne jouera aucun rôle dans le reste de l’attaque ; en fait cet identifiant est seulement là pour rendre la clef conforme — le standard OpenPGP impose qu’une clef publique soit associée à au moins un identifiant utilisateur), et une calculée sur la concaténation de la clef B et de l’image JPEG — c’est cette certification que Mallory va ré-utiliser.

Le principe de l’attaque est de faire en sorte que la concaténation de la clef A et de l’identifiant Alice <alice@example.com> produise un condensat SHA-1 identique à celui produit par la concaténation de la clef B et de la photo. Comment ? D’une part en cachant une copie de l’identifiant Alice <alice@example.com> dans la photo de Bob (en exploitant le fait que les parseurs JPEG ignorent généralement tous les octets situés après le marqueur de fin d’image, 0xFFD9), et d’autre part en cachant le début de cette même photo à la fin de la clef A. Voilà pourquoi les deux clefs sont de tailles différentes (8192 bits pour la clef A contre 6144 bits pour la clef B) : il faut que la clef B et le début de le la photo de Bob (jusqu’à l’identifiant caché à la fin de celle-ci) fassent au total la même taille que la clef A.

Cette différence de taille pose un problème, toutefois : la taille de chaque clef figure au début de son paquet (on a vu plus haut qu’un paquet OpenPGP avait une structure de type étiquette, taille, valeur) ; puisque les deux clefs A et B ont des tailles différentes, leurs paquets respectifs commencent différemment et produisent donc un condensat SHA-1 différent. Il faut donc pouvoir réussir à « annuler » cette différence… c’est-à-dire générer une collision à partir de deux préfixes choisis — exactement ce que Leurent et Peyrin sont capables de faire !

La figure ci-dessus illustre le fonctionnement de l’attaque en résumant la composition des deux clefs A et B. Chaque clef commence par un préfixe différent (à cause de la différence de taille) ; puis viennent les blocs permettant d’établir la collision, c’est-à-dire de neutraliser la différence des préfixes. La collision est établie juste avant la fin du paquet contenant la clef publique B. Au-delà de la collision, le contenu des deux clefs est identique, ce qui permet de préserver la collision et de garantir que les deux clefs produiront toujours un même condensat. La présence de la photo de Bob « cachée » dans le paquet de clef publique de la clef A est ignorée, car les octets correspondants sont simplement considérés comme faisant partie du module RSA ; dans la clef B, la présence de l’identifiant d’Alice « caché » dans la photo de Bob est ignorée, car il est situé après le marqueur de fin d’image JPEG.

Quel impact ?

Est-ce qu’on va tous mourir ? Non. Enfin si, mais pas à cause d’une collision à préfixes choisis sur SHA-1.

Si l’attaque est sérieuse et prouve encore, si besoin en était, que SHA-1 ne devrait plus être utilisé, l’impact sur OpenPGP devrait rester assez limité, en raison de plusieurs contraintes :

  • Charlie, le signataire à qui Mallory demande de certifier la clef B, doit certifier avec l’algorithme de condensation SHA-1 obligatoirement. S’il certifie avec un quelconque autre algorithme (comme SHA2-256 qui est l’algorithme utilisé par défaut par les versions modernes de GnuPG), l’attaque est inopérante. Ce paramètre est a priori hors du contrôle de Mallory.
  • Les victimes de Mallory (celles à qui il présentera la fausse clef d’Alice) doivent accepter les certifications utilisant SHA-1. La version 2.2.18 de GnuPG refuse de telles certifications, précisément suite à la révélation de cette attaque (référence CVE-2019-14855) ; toutefois les versions plus anciennes les acceptent sans sourciller (message pas subliminal : mettez à jour).
  • Le plus important à mon sens : l’attaque suppose que les victimes se reposent exclusivement sur la toile de confiance, i.e. sur la certification de Charlie, pour valider la clef que Mallory leur présente comme la clef d’Alice. En pratique, la toile de confiance OpenPGP est rarement utilisée, même par les « vétérans » d’OpenPGP ; la plupart des utilisateurs ont recours à d’autres canaux pour s’assurer de la validité d’une clef.
  • L’attaque est par ailleurs assez facile à détecter pour qui sait à quoi s’attendre. Les clefs de taille inhabituelle (6144 et 8192 bits) et la présence d’un attribut utilisateur contenant une photo minuscule (262 octets) peuvent suffire à éveiller des soupçons, et dès lors un examen attentif révélera facilement la présence de la photo cachée dans le module RSA de la clef A.

La prochaine version du standard OpenPGP déconseillera formellement toute utilisation de SHA-1 dans les nouveaux messages, ce que toutes les implémentations modernes respectent déjà de toute façon.

  1. Formellement on distingue la preimage resistance de la second preimage resistance, mais cette distinction est inutile pour ce qui nous intéresse ici. 

  2. C’est le seul aspect du standard OpenPGP à ne pas offrir d’agilité cryptographique

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Chapril, Next INpact — émission « Libre à vous ! » du 14 avril 2020 — Podcasts et références

mar, 21/04/2020 - 14:58

Soixante‐deuxième émission « Libre à vous ! » de l’April. Podcast et programme :

  • interview d’Éric Fraudain à propos d’auboutdufil.com, un site dédié à la musique libre ;
  • des nouvelles du Chapril avec Christian‑Pierre Momon, administrateur de l’April ;
  • l’archivage des courriels, dans la chronique « Jouons collectif » de Vincent Calame, bénévole à l’April ;
  • interview de Marc Rees, journaliste et rédacteur en chef de Next INpact ;
  • diverses annonces.

Suite au confinement de la population, l’émission a été diffusée dans des conditions particulières. Toutes les personnes ont participé à l’émission depuis chez elles. D’un point de vue technique, nous avons utilisé Mumble.

Rendez‑vous en direct chaque mardi de 15 h 30 à 17 h sur 93,1 MHz en Île‑de‑France. L’émission est diffusée simultanément sur le site Web de la radio Cause Commune.

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Organiser des visioconférences de haute qualité (avec le logiciel libre Jitsi Meet)

mar, 21/04/2020 - 14:28

Cette dépêche est issue d’un journal. Parmi les réactions/retours d’expérience issus des commentaires : cela fonctionne sans désagrément dans la durée (les humains craquent avec le logiciel après des heures de conférence), un mot de passe peut être utilisé pour éviter d’être dérangé, vérifier la qualité du micro de son ordinateur portable si on l’utilise, éviter de taper au clavier à côté de son micro, couper la vidéo est un compromis entre l’information transmise en communication non-verbale et sa bande passante, plus on est nombreux plus il faut de discipline, les CHATONS propose un annuaire d’instances Jitsi, etc.

NdM : le sujet des visioconférences est assez présent depuis le début du confinement covid-19, avec par exemple de nombreux journaux et liens facilement accessibles via l’étiquette visioconférence, parlant de Jitsi, de Jitsi & Firefox, de BigBlueButton, d’OpenMeetings, de Nextcloud Talk, etc.

Sommaire Introduction

Avec le confinement tout le monde s’est mis à la visioconférence. De gré ou de force. Ce journal est une série de retours et bonnes pratiques sur la mise en place et le bon déroulement de visioconférences en utilisant Jitsi Meet, pour que vos visioconférences soient une réussite.

Cet article s’appuie sur notre propre expérience, les retours que nous avons eus à travers l’instance Jitsi Meet gratuite Suricate TV qu’Algoo met à la disposition du public ainsi que suite à différents échanges sur Twitter.

Quelles solutions libres pour faire de la visioconférence ?

Il existe différentes solutions pour faire de la visioconférence, et parmi celles-ci, plusieurs sont libres et de qualité. Nous n’aborderons pas les outils propriétaires ici, simplement des outils libres :

  • Nextcloud Talk : solution de visioconférence intégrée à Nextcloud ; fonctionne bien avec des petits groupes de personnes (pas eu de retour sur des nombres de participants plus conséquents) ;
  • Jitsi Meet : solution épurée de visioconférence, simple et performante. C’est ce que nous utilisons sur Suricate TV, c’est également ce qui motorise Framatalk ;
  • Big Blue Button : solution avancée de visioconférence, ciblant l’enseignement à distance et également adaptée à l’animation de webinaires professionnels (on a prévu de l’exploiter dans ce contexte, je reviendrai sur le sujet dans un futur article) ;
  • OpenMeetings : solution de la fondation Apache, je ne connaissais pas jusqu’à ce que Nÿco l’évoque sur Twitter, je ne connais toujours pas :-p
  • Multiparty Meeting que j’ai découvert récemment mais que je n’ai pas encore exploré.

Quelle est la meilleure solution ? Cette question n’a évidemment pas de réponse, car la réponse dépend de vos besoins et attentes.

Je vais vous expliquer ceci dit pourquoi à Algoo nous avons décidé de miser sur Jitsi Meet.

Pourquoi Jitsi Meet et pas un autre ?

Sur Suricate TV nous avons déployé Jitsi Meet pour les raisons suivantes :

  • simple à utiliser ;
  • ne nécessite pas de création de compte ;
  • ne nécessite pas d’installer un logiciel client ;
  • mais des applications dédiées sont aussi disponibles :
  • libre et documenté ;
  • fait pour être intégré dans des applications web - il est prévu de l’intégrer dans notre solution collaborative Tracim ;
  • passerelle téléphonique possible ;
  • il y a une entreprise qui porte Jitsi Meet ;
  • il y a une forte dimension communautaire ;
  • nous utilisons déjà de temps en temps le serveur officiel de démo/test ;
  • nous faisons déjà la promotion du logiciel ;
  • licence Apache v2 qui est dans l’esprit d’Algoo.
Nouvelles versions sorties en avril 2020

L'équipe de Jitsi Meet a été sur le pont ces dernières semaines ; probablement comme précédemment mais comme la notoriété du logiciel a explosé, c’est plus visible qu'avant.

Quoi qu’il en soit de nouvelles versions sont sorties :

Mais Jitsi Meet, c’est sécurisé ? Chiffré de bout-en-bout ?

Poser la question de la sécurité d’un logiciel est très pertinente, mais s’attendre à une réponse binaire ne l’est pas. La question n’est pas pertinente en soi car l’évaluation du niveau de sécurité dépend du contexte, mais elle dépend également du déploiement du logiciel, de la manière dont il est utilisé…

En ce qui concerne le chiffrement de bout-en-bout, je vais être encore plus nébuleux : le chiffrement de bout en bout, c’est éventuellement possible.

Derrière cette réponse de normand, il faut savoir que Jitsi Meet se comporte (potentiellement) de deux manières différentes selon que la visioconférence se déroule entre deux personnes ou entre plus de deux personnes.

Cas d’une visioconférence entre deux personnes

Jitsi Meet peut être configuré pour permettre la diffusion du flux vidéo en pair-à-pair, c’est d’ailleurs la configuration par défaut. Cette fonctionnalité permet une meilleure performance et évite de charger inutilement le serveur.

La diffusion directe pair-à-pair peut être désactivée par configuration du serveur. Toutefois, si la configuration permet la diffusion directe, cela ne garantit pas qu’elle est utilisée.

Quoi qu’il en soit, dans le cas d’une visioconférence à deux personnes seulement, si la diffusion se fait en pair-à-pair, alors on peut parler d’un chiffrement de bout-en-bout

Cas d’une visioconférence à trois personnes ou plus

Dans ce cas la diffusion passe nécessairement par le serveur (le point vidéo ou videobridge). Les flux vidéos sont chiffrés entre le client (votre PC ou téléphone mobile) et le serveur, mais ils transitent en clair sur le serveur.

Bon, au final, sécurisé ou pas sécurisé ?

Comme dirait l’autre, faites-vous votre propre idée. Plus sérieusement, si vous êtes vraiment intéressé par le sujet, je vous invite à lire l’article Jitsi Meet Security & Privacy paru le 3 avril 2020 sur le blog du projet.

Jitsi Meet et Firefox : je t’aime moi non plus

Un gros sujet très actuel est la perte de performance de Jitsi Meet lorsqu’un participant utilise Firefox. Cela avait poussé l’équipe de Jitsi Meet à dire que Firefox n’était pas compatible avec le logiciel.

Ce n’est pas totalement vrai. Nous réalisons des visioconférences à 11 personnes et il y a souvent un Firefox qui traîne dans l’assemblée. Et ça fonctionne. Mais ce n’est pas optimal.

Je ne vais pas rentrer dans les détails, mais il faut savoir que Firefox n’implémente pas toute la norme WebRTC - mais il faut aussi savoir que Jitsi a des bugs liés à Firefox également.

Dans les dernières versions de Jitsi, l’équipe de développement a mené un gros effort, en a informé la communauté et appelle l’équipe Firefox à faire aussi un pas dans leur direction.

Côté Fondation Mozilla, les curieux pourront suivre les tickets associés à Jitsi Meet

Note : aux dernières nouvelles la version nightly de Firefox propose une expérience de qualité avec Jitsi Meet.

Jitsi Meet vs WhatsApp vs Facebook Messenger

J’habite à la campagne. Ma connexion ne casse pas des briques :

2 à 4 Mbit/s de débit descendant et environ 0,7 Mbit/s de débit montant. Au début du confinement j’utilisais Jitsi Meet en audio exclusivement et j’avais un son saccadé, parfois une voix de robot, de l’écho…

Au début le mieux était Facebook Messenger

Personnellement, jusque-là, je trouvais Jitsi Meet bien - c’est un logiciel libre et il fait bien le job quand la bande passante est là. Mais j’étais réaliste : les appels étaient de meilleure qualité avec WhatsApp, et encore meilleurs avec Facebook Messenger (je n’utilise pas personnellement, mais j’ai eu l’occasion de tester depuis chez moi - donc dans les mêmes conditions). J’avoue que j’étais même bluffé par la fluidité de la visioconférence avec Facebook Messenger.

Je me suis fait une raison : les équipes de R&D chez Facebook sont monstrueuses, je n’ai aucun doute sur leur capacité à faire quelque chose de très très bon techniquement.

Et puis en fait non. En fait c’est Jitsi Meet le meilleur

Après ces #apérovisio partagés en toute fluidité avec des amis et de la famille à l’aide d’applications propriétaire (et encore pire : de données exploitées), je ne sais plus comment c’est venu mais bref j’ai installé l’application Jitsi Meet sur mon téléphone Android.

C’était une renaissance. Les conférences audio professionnelles au son haché et métallique sont redevenues des visioconférences fluides et agréables… l’impression de retard technologique s’était totalement effacée.

Sur les trois solutions, clairement la plus mauvaise est WhatsApp. Ensuite mon expérience est que Jitsi Meet et Facebook Messenger sont équivalents en termes d’expérience utilisateur, la différence étant évidemment que l’une des solutions est propriétaire, centralisée, exploite les données et impose la création d’un compte là où Jitsi Meet est auto-hébergeable, utilisable sans création de compte, sans exploitation de données personnelles…

Conclusion : privilégiez toujours Jitsi Meet ; sur de petites connexions, passez par l’application mobile.

Mais la visioconférence, ce n’est pas que du logiciel…

Je pense que nombre d’entre vous ont eu la même démarche expérimentale et d’analyse, entre leurs premières visioconférences et la manière de faire désormais.

Clairement le logiciel est important, mais tout l’écosystème gravitant autour est également fondamental.

Comme toute communication à distance, la visioconférence nécessite une certaine concentration pour être efficace. Et pour ce faire, il faut utiliser les bons outils, les bonnes pratiques.

Je vais reprendre ici un certain nombre de points qui peuvent sembler être de bon sens, mais ce n’est pas toujours évident, en particulier en confinement, avec des enfants…

Utiliser un micro et des écouteurs de qualité

Si vous faites de la visioconférence avec un ordinateur portable, il intègre probablement micro, hauts-parleurs et caméra. Très bien, c’est clé-en-main. Mais la qualité du matériel est généralement médiocre.

Privilégiez un kit mains-libres, un casque téléphonique micro/écouteurs ou encore un micro/haut-parleur de conférence

(publicité gratuite : nous avons au boulot des Sennheiser SP 20 ML qui valent 140€ HT avec connectique USB/Jack qui sont reconnus clé-en-main sur nos postes debian - et ils fonctionnent vraiment bien)

Un bon couple casque/micro ou hauts-parleurs/micro supprimeront le son haché, l’écho et parfois le la coloration « métallique » du son, bien souvent liés aux interférences entre son « entrant » et « sortant » ou interférence via le câble du kit main-libre qui fait antenne et « réceptionne » des signaux parasites…

Se placer dans un environnement calme

La visioconférence nécessite de la concentration et donc un environnement calme. Mais elle doit aussi rester une expérience agréable pour votre entourage. On a vite fait de parler fort voire de crier quand on est en visioconférence, et au final c’est l’escalade du plus bruyant.

Indiquer son indisponibilité à son entourage

Si vous avez un casque, dans les phases où vous ne parlez pas, votre entourage direct ne peut pas savoir s’il est possible de vous déranger ou si ce n’est pas possible. Vous pouvez tout à fait être en train d’écouter de la musique - dans ce cas ce n’est pas forcément grave si l’on vous dérange, mais vous pouvez aussi être en train d’écouter quelqu’un qui vous apporte des informations cruciales.

À l’ancienne : sur la porte avec une feuille et du scotch

N’hésitez pas à coller sur la porte de votre bureau une image exprimant clairement que vous êtes en visioconférence !

À la mode technologique : avec une LED de statut contrôlée via USB

La version moderne de la feuille A4 et du scotch, c’est à base d’électronique. Luxafor propose un Flag USB destiné à informer votre entourage de votre in/disponibilité.

Linux n’est pas officiellement supporté, mais quelqu’un sur internet propose une solution (qui s’appuie sur Python, ce qui n’est pas pour me déplaire)

Éviter le mode vibreur de son téléphone posé sur le bureau

Vous avez déjà été réveillé la nuit par un téléphone qui vibre sur une table de nuit ? C’est extrêmement désagréable.

Imaginez maintenant la même situation avec un téléphone dont la puissance du vibreur serait démultipliée… c’est ce que risquent d’éprouver vos interlocuteurs si votre téléphone vibre à proximité de votre micro.

À bannir.

Préciser les objectifs / ne pas faire durer outre mesure

Je ne vais pas entrer dans le détail, ce point est un grand classique de l’organisation et de l’animation de réunions ; c’est d’autant plus important dans le cas d’une visioconférence où la concentration nécessaire est plus importante. Préférer des conversations naturelles, type « travail en binôme ou trinôme » qui sont beaucoup plus productifs.

Pour prendre des décisions, privilégiez la visioconférence au chat

La messagerie instantanée est un autre outil massivement utilisé dans le contexte du travail à distance. Il est extrêmement pratique mais peu efficace. L’information est vite noyée dans le flux de messages, mais l’échange est aussi moins interactif qu’oralement.

Dès qu’une question commence à être débattue par messagerie instantanée, il semble assez naturel - et c’est extrêmement plus efficace - que la visioconférence prenne le relais.

De la même manière, le support ou l’entraide est rapidement beaucoup plus efficace oralement que par écrit.

Ne pas couper la parole, lever la main

Il est désagréable de se faire couper la parole dans des échanges en présentiel, c’est tout autant désagréable en visioconférence ; mais en plus, en visioconférence la situation devient vraiment inextricable, incompréhensible. Il faut de la discipline, de la patience.

Couper la vidéo si elle n’apporte rien

Lorsqu’on a une connexion de mauvaise qualité, on a en général le réflexe de couper le flux vidéo s’il n'est pas nécessaire : ainsi la bande passante est uniquement exploitée pour le son.

Ce réflexe doit aussi être celui des autres participants : si un interlocuteur a une connexion hasardeuse, il faut que chacun coupe sa vidéo si elle n’est pas nécessaire.

Cela rend la conférence plus fluide, cela laisse la bande passante à disposition du flux audio et des flux vidéo utiles (exemple : partage d’un écran) !

Couper le micro lorsque vous ne parlez pas

On n’a pas toujours le réflexe de couper le micro lorsqu’on ne parle pas. Cela peut engendrer des bruits parasites - par exemple si vous tapez sur votre clavier mécanique en pensant « gagner du temps l’air de rien » (à distance c’est vraiment agressif), mais il faut aussi bien avoir à l’esprit que nombre de micros n’ont pas de filtre pour le bruit de fond.

Les premières conférences que j’ai faites depuis chez moi, j’étais enfermé dans une pièce à l’étage et mes interlocuteurs croyaient que mes enfants me parlaient alors qu’ils discutaient entre eux, à volume normal, au rez-de-chaussée. OK, ma maison est peut-être bruyante, mais ce n’est pas la seule raison ;)

Une très bonne pratique est d’utiliser le comportement type « talkie walkie » : le « push-to-talk ». Appuyer pour parler est un bon moyen de ne pas polluer une visioconférence, car il n’y aura pas de bruit de fond imprévu. C’est un réflexe à prendre, ça peut ajouter un peu de latence dans les interactions mais c’est un confort collectif.

Dans Jitsi Meet c’est assez simple : vous appuyez sur la touche espace pour l’activer et ensuite c’est toujours cette touche qu’il vous faudra enfoncer pour parler. Enfin vous pourrez parler sans enfoncer la touche, mais personne ne vous entendra ;)

Un dernier conseil : utilisez le clavier !

Lorsqu’on n’utilise pas un outil régulièrement, on a tendance à ne pas chercher les raccourcis clavier. C’est dommage parce que c’est pratique, mais c’est aussi dommage parce que Jitsi Meet a fait un effort contrairement à de nombreux outils : les raccourcis sont facilement accessibles. Pour les curieux, je les reproduis ici :

Note : dans la dernière version, il y a également w qui permet de basculer sur le mode mosaïque et d’en revenir

Conclusion

Pas de conclusion particulière si ce n’est que j’espère ne pas avoir enfoncé trop de portes ouvertes. Merci à toutes les personnes qui ont partagé leur expérience avec nous, leurs connaissances, leur ressenti.

Les commentaires sont là pour réagir et partager toutes les bonnes pratiques, toutes les expériences. Le micro est à vous !

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Revue de presse de l'April pour la semaine 16 de l'année 2020

mar, 21/04/2020 - 10:17

Cette revue de presse sur Internet fait partie du travail de veille mené par l'April dans le cadre de son action de défense et de promotion du logiciel libre. Les positions exposées dans les articles sont celles de leurs auteurs et ne rejoignent pas forcément celles de l'April.

[francetv info] 'Internet peut redevenir un bien commun si nous nous emparons des outils alternatifs aux Gafam': entretien avec Maxime Guedj, co-auteur de 'Déclic'

✍ Laure Narlian, le samedi 18 avril 2020.

Les Gafam, ces géants d'Internet, n'ont jamais eu autant de pouvoir. Comment résister à leur emprise? Une profusion d'outils alternatifs et de solutions respectueuses existent. Le confinement est le bon moment pour les découvrir.

[Next INpact] StopCovid: Cédric O saisit le Conseil national du Numérique

✍ Marc Rees, le vendredi 17 avril 2020.

Cédric O a saisi ce 14 avril le Conseil national du numérique sur le projet StopCovid, l’application de suivi de contact. Next INpact diffuse la lettre de saisine.

Et aussi:

[Numerama] Pourquoi l'administration française a-t-elle autant de mal à remplacer Zoom?

✍ François Manens, le mardi 14 avril 2020.

Zoom a tellement de problèmes de sécurité que les institutions déconseillent son usage. Mais la qualité de son expérience utilisateur le rend très compliqué à remplacer.

[Decideo.fr] Open Data: Et si la donnée partagée révolutionnait l'administration française?

✍ Raphaël Allègre, le

Le partage collaboratif des données en temps réel a permis de comprendre avec plus de précision le monde dans lequel nous évoluons. À l’instar de nombreux acteurs du privé, les institutions françaises se sont elles aussi lancées dans le grand bain de la transformation digitale en utilisant notamment l’Open Data. Malgré son potentiel (accessibilité, utilisation, analyses etc.), ce mouvement soulève également des problématiques d’éthique, d’intégrité et de sécurité.

Et aussi:

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Trivabble continue à évoluer

lun, 20/04/2020 - 16:39

Trivabble est un jeu de Scrabble en ligne que j’ai commencé en 2016 pour que les membres éparpillés de ma famille puissent jouer ensemble.

Sommaire

Les critères :

  • le plus simple à utiliser qui soit, si possible sans inscription ;
  • fonctionnant au moins sur GNU/Linux, Windows et iPad ;
  • idéalement, c’est libre.

J’ai fini par écrire mon propre jeu, sous licence libre AGPL. Je l’ai mis en place sur mon serveur, et je l’ai plus ou moins laissé tourner et oublié. Puis, il y a environ trois semaines, j’ai commencé à recevoir des courriels de remerciements, et quelques rapports de bogues et demandes de fonctionnalités. Je me suis dit que c’était le moment idéal pour donner à ce jeu un peu d’amour et ces derniers week‑ends, j’ai travaillé sur le jeu. On pourrait voir cette dépêche comme la présentation d’une nouvelle version, mais je n’ai jamais réfléchi sérieusement à comment gérer les versions.

Principe du jeu

On lance le jeu, on donne son nom et c’est parti pour jouer. On peut rejoindre d’autres personnes en renseignant un code de partie affiché dans la page.

Il n’y a pas de règle implémentée. Le jeu fournit une zone de discussion en ligne, un sac de pièces et un plateau commun, un chevalet pour chaque joueur et les gens font ce qu’ils veulent avec. Ils pourront jouer au Scrabble, mais s’ils veulent se faire un Speed Trivabble où les joueurs jouent leurs pièces le plus vite possible, ou s’ils veulent faire des dessins avec leurs pièces sur le plateau, rien ne les en empêche — mais qu’est‑ce que le Speed Trivabble ? Un jeu dont les règles restent à inventer. :-P

Nouvelles fonctionnalités visibles
  • le jeu est maintenant centré sur la page ; c’est tout bête, pas indispensable, mais c’est probablement plus agréable ;
  • les joueurs peuvent maintenant montrer le contenu de leur chevalet aux autres joueurs ; c’est une fonctionnalité qu’on m’a demandée — comme ça, on peut plus facilement aider ses adversaires quand ils sont bloqués ;
  • il est maintenant possible d’indiquer à qui c’est de jouer ; tout bête, mais quand on est à trois ou quatre, ça peut devenir compliqué de savoir où on en est — c’est aussi une fonctionnalité qu’on m’a demandée ;
  • le jeu est plus facile à utiliser sur un téléphone ainsi que sur une tablette Android : le jeu ne défile plus quand on essaie de bouger une pièce.
Évolutions sous‑marines

Le travail de ces dernières semaines était surtout invisible.

Travail sur la rétro‐compatibilité

J’ai pu observer que les gens laissent leur page ouverte, ou que leur navigateur ne recharge pas systématiquement les fichiers du jeu (normal, il y a une gestion du cache).

Je fais mon possible pour qu’une version ancienne du jeu sur navigateur continue à tourner avec les dernière versions du serveur. Le jeu annonce maintenant sa version au serveur, et il existe maintenant un mécanisme avec lequel le serveur peut demander au client de se recharger.

Par ailleurs, tout est fait pour que le client soit silencieux en cas de panne brève de connexion ou du serveur, si le joueur ou la joueuse n’essaie pas d’interagir avec le jeu à ce moment‑là. Sinon, il bloquera l’utilisation de la page et affichera un message invitant le joueur à patienter un peu. Le client se reconnecte dès que le serveur est à nouveau en route ou que la connexion est à nouveau disponible. Ça rend les mises à jour du serveur plus faciles.

Dernière modification d’une partie

Le jeu sauvegarde en permanence son état. Ainsi, on peut le redémarrer ou il peut planter sans que les gens ne perdent leur partie. Pour le moment, on peut quitter une partie et la retrouver dans le même état plus tard et ce « plus tard » n’est pas borné. Si vous aviez commencé une partie en 2016, vous pouvez la retrouver telle quelle maintenant.

Cependant, je me suis rendu compte d’une utilisation de plus en plus grande du jeu ces derniers temps en voyant le fichier de sauvegarde grandir. On est passé de 100 Kio au début du mois de mars à 1,5 Mio aujourd’hui. Par conséquent, la question du ménage se pose : je vais peut‑être, devoir limiter ce temps à un moment donné. J’ai donc commencé à enregistrer, pour chaque partie, la date de la dernière modification. On verra plus tard comment j’utilise cet enregistrement : est‑ce que je nettoie toutes les parties qui ont plus d’un mois sans accès ? Pour l’instant, la question ne se pose pas, mais les outils sont là au cas où.

Communications

Un des bogues rapportés depuis quatre ans maintenant est que, parfois, une pièce disparaît ou se transforme. Source de fous‑rires ou de frustration, je n’ai malheureusement pas pu observer le problème moi‑même jusqu’à très récemment, et si le problème est avéré, il n’est pas encore reproductible. Ce bogue m’a conduit à me questionner sur la stabilité des communications entre le navigateur des joueurs et le serveur.

J’ai donc passé beaucoup de temps sur le code lié aux communications. Jusqu’à maintenant, les communications étaient gérées avec des requêtes courtes pour l’envoi (quand une pièce est déplacée par exemple), et du « long polling » pour la réception : des requêtes HTTP qui ne se finissent que quand elles plantent ou que le joueur quitte la partie. Tout un mécanisme était en place pour délimiter les messages, pour se reconnecter en cas d’erreur, etc. Plus particulièrement, les messages, des objets JSON, étaient préfixés par leur taille.

Je me suis penché sur les autres techniques de communications : les Server‑sent events et les WebSockets.

Les Server‑sent events (SSE)

Les SSE remplacent avantageusement ce mécanisme de long polling : chaque message est délimité par deux retours à la ligne. Le navigateur fournit un objet EventSource qui gère lui‑même les coupures de connexion et fournit un bel évènement message qui permet de récupérer chaque message sans difficulté.

Les WebSockets

Les WebSockets sont une autre bestiole. Comme me le disait une utilisatrice par courriel :

« J’oubliais : on s’est interrogés sur les webSockets, mais finalement mon compagnon me charge de vous dire qu’en cette saison, on ne devrait pas en avoir besoin. »

J’ai quand même étudié la question. Les WebSockets ont un gros avantage : ils permettent de n’utiliser qu’un canal de communication pour les envois et les réceptions. Côté navigateur, pas trop de problèmes : on utilise l’objet WebSocket qui va bien. Le serveur, lui, est écrit en JavaScript avec Node.js et, là, c’est une autre paire de manches. Je veux limiter au maximum les dépendances sur lesquelles mon code dépend, et les WebSockets ne sont pas pris en charge nativement. Pour l’instant, le serveur ne dépend de rien d’autre que de Node.js, et je ne souhaite pas rajouter une dépendance pour les raisons suivantes :

  • le déploiement sans dépendance est très simple : on copie les fichiers et ça marche ;
  • ajouter une dépendance, ça veut dire adopter un gestionnaire de paquets du style NPM ou Yarn, faire un package.json, gérer les mises à jour des dépendances, etc. ;
  • ajouter une dépendance NPM, c’est ouvrir une boîte de Pandore : on en installe une, qui dépend d’une centaine d’autres bibliothèques, et au bout de deux ou trois comme ça, on se lève un beau matin, et on réalise qu’on a un node_modules de 500 mégaoctets et qu’il faut prendre un serveur avec plus d’espace disque rien que pour jouer au Scrabble.

J’ai donc implémenté moi‑même la prise en charge des WebSockets au‑dessus du module HTTP fourni par Node.js, en lisant la documentation. Au final, c’était très intéressant de comprendre en profondeur comment ça fonctionne, et de se rendre compte que ce n’est pas si sorcier. Si cela vous intéresse, je pourrai essayer d’écrire un journal sur le fonctionnement des WebSockets.

Conclusion

Trois mécanismes sont maintenant en place et fonctionnent dans Trivabble : les WebSockets, les Server‑Sent events et le long polling traditionnel, avec un système de repli :

  • si les Websockets sont disponibles, on les utilise (et pour le moment, je les désactive en production, je n’ai pas encore assez de recul pour les laisser actives) ;
  • sinon, ou si l’on se rend compte qu’elles ne fonctionnent pas, on utilise les server‑sent events ;
  • si les server‑sent events ne sont pas disponibles (Edge et Internet Explorer, par exemple), on se rabat sur du long polling. Pour être honnête, le mécanisme de long polling n’est encore là que parce qu’il ne pose pas de problème de maintenance.

Une fois que la communication est établie, que ce soit côté serveur ou côté navigateur, la gestion est transparente et le type de communication est totalement abstrait. J’ai également découvert que Node.js, avant la version 13, par défaut, ferme automatiquement les connexions HTTP au bout de deux minutes. J’ai donc supprimé cette fermeture automatique. Le lendemain de la mise en place de cette correction, j’ai eu des plantages dus à une limitation du nombre de processus Apache maximal autorisé trop petite, j’ai donc modifié la configuration d’Apache pour autoriser un plus grand nombre de connexions simultanées.

Le bogue de la pièce qui disparaît ou qui se transforme est certainement toujours là et je ne connais pas encore la cause de ce dysfonctionnement. Il faudra probablement repenser la manière dont sont faites les communications pour fournir certaines garanties que la manière actuelle de faire ne fournit pas.

En attendant, le code est plus tolérant aux erreurs des deux côtés. J’ai testé les disparitions inopinées de connexion au serveur, et j’ai testé mon implémentation des WebSockets côté serveur avec des killall -s SIGKILL chromium (Firefox étant mon navigateur principal, je ne peux me permettre ce genre de fantaisies avec lui, pardi !).

Maintenance du code

Attention, cette section est technique, n’hésitez pas à la passer si JavaScript n’est pas familier pour vous.

Au tout début du projet, j’utilisais ESLint pour vérifier le code. Puis j’avais abandonné et maintenant c’est reparti, j’ai la vérification en temps réel dans l’éditeur de code. J’utilise à présent let et const pour déclarer les variables, et l’utilisation de var est dorénavant interdite dans le code. J’utilise également les for..of, bien pratiques pour itérer les éléments d’un tableau.

Malheureusement, let et const pètent la compatibilité avec Safari 9, la version de Safari de l’iPad 2. Alors, j’ai un bon vieux sed dans le code qui déploie le jeu pour remplacer let et const par var. Par ailleurs, for..of ne fonctionne pas sur les listes de nœuds renvoyées par les fonctions querySelectorAll() ou getElementsByClassName dans Safari 9 ; donc, les précautions suivantes s’imposent :

// Éviter, ça casse sur l’iPad 2 for (const node of parent.querySelectorAll()) { // ... } // ok for (const node of [].slice.call(parent.querySelectorAll())) { // ... }

Et par conséquent, pas de fonctions flêchées ou de paramètres par défaut. Je pourrais utiliser Babel, mais encore une fois, le gain apporté pour pouvoir utiliser toutes les dernières fonctionnalités de JavaScript est très largement perdu par l’obligation de rajouter une dépendance au projet, une étape de compilation, la configuration de Babel, et obtenir un code illisible en production.

Évolutions futures

Je prévois de séparer toute la logique spécifique au jeu de Scrabble du reste, pour pouvoir proposer des jeux différents sur le même modèle. J’ai un jeu de dames qui est l’adaptation d’une copie ancienne de Trivabble. Je prévois ainsi de récupérer ce travail et le rendre public, et de proposer, dans le même esprit, un plateau pour les échecs.

Je prévois également de continuer à réfléchir sur comment éviter les problèmes de cohérence qui sont peut‑être à l’origine de ce bogue de disparition occasionnelle de pièces.

Conclusion

Je n’ai pas les nombres exacts sur l’utilisation du jeu mais, a priori, depuis le 10 avril, on tourne entre trente et cent numéros de parties uniques par jour (un numéro de partie correspond à une partie, ou plusieurs si les gens enchaînent plusieurs parties avec le même numéro), avec un pic à trois cent soixante pour le lundi de Pâques.

N’hésitez pas à en parler autour de vous, c’est le bon moment. :-)

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Robert, un logiciel de stockage en mémoire vive

lun, 20/04/2020 - 14:04

Bonjour tout le monde,

J’ai le plaisir, pour ce premier message sur LinuxFr.org, de vous annoncer un nouveau projet de stockage clé‑valeur en mémoire vive.

« Encore un » vous direz‑vous ? Certes. Voyons si j’arrive à vous convaincre.

N. D. M. : à ne pas confondre avec le protocole ROBERT (ROBust and privacy‐presERving proximity Tracing) qui vient d’être publié par l’INRIA et la Fraunhofer AISEC pour le suivi de contacts dans le cadre de la pandémie de Covid‑19.

Sommaire Présentation de « Robert », votre nouvel ami

Le projet se nomme ainsi pour plusieurs raisons :

  • c’est un projet entièrement francophone (j’y reviendrai) ;
  • son fonctionnement s’apparente à celui d’un « Redis‑like » (stockage de valeurs, mécanique de souscription et publication, exportation et importation vers des fichiers, scripting sur la base) ;
  • il est écrit en Rust, ce qui lui garantit une qualité minimale (sans être exempt de bogues).

Le (pré)nom « Robert » me semblait donc tout indiqué…

Je suis à l’origine de ce projet, à la suite d’une thèse professionnelle sur le modèle RDF appliqué aux organisations et à l’information, soutenue en décembre dernier.

Robert se veut être un logiciel utilisable par le plus grand nombre (du moins via telnet), de qualité, fiable et léger mais surtout maintenable facilement, même avec peu de connaissances (je ne suis pas un développeur professionnel et j’ai toujours appris le développement seul).

Les professionnels ou personnes averties qui parcourront le code, trouveront probablement des imperfections (ouvert à tous les tickets / propositions).

J’invite à la clémence, c’est ma contribution à la communauté… :)

Documentation et informations techniques

Le dépôt contient la documentation produite à partir du code source, que j’ai laissé sur GitHub. Une fois le dépôt cloné, vous trouverez les informations dans ./target/doc/projet_robert/index.html. La documentation peut être mise à jour localement depuis la commande cargo doc à la racine.

Le projet ne dépend d’aucune « caisse » (module) externe, volontairement, afin d’éviter le serpent des dépendances, qui rend complexe la maintenance (car une dépendance peut en entraîner une autre…). Robert veut en faire moins, mais essayer de faire bien ce qu’il tente de faire ! À terme, il me semble tout de même difficile de faire sans les expressions rationnelles, notamment pour la gestion du texte (mais ce serait là une rare exception confirmant la règle).

Développement et licence

Ce projet est entièrement écrit en Rust (version 1.39.0), depuis Cargo. Lorsque vous avez cloné localement le dépôt, une simple commande cargo run --release à la racine compilera et lancera le programme (testé sous Windows 10 et Linux/Ubuntu). Celui‑ci est accessible par défaut sur le port 8080 en local.

La licence est naturellement ouverte et permissive (Apache 2). L’usage de Robert est donc gratuit (et je n’ai pas de structure pour le support actuellement).

Intérêts et fonctionnement

Les clients peuvent se connecter via un socket TCP et envoyer des commandes (précision utile : les accents sont pris en compte !). Chaque commande se termine par un saut de ligne (\n) et est composée d’une fonction à appeler, puis de zéro, un ou n arguments. Chaque argument est séparé par un espace. Si votre argument contient un espace, il doit être entre guillemets (").

Les fonctions sont découpées en modules (voir la documentation). Toutes les commandes, les messages renvoyés comme l’ensemble de la documentation et du développement sont en français.

La base est constituée de « canaux », qui autorisent à émettre et à souscrire aux messages émis. Dès le lancement, il y a toujours un canal, nommé « défaut », qui ne peut être supprimé et recueille les clients nouvellement arrivés. Les autres canaux peuvent être créés, édités et supprimés librement. Chaque client ne peut être connecté qu’à un canal à la fois, mais peut changer de canal au cours de la connexion.

Certaines opérations sont restreintes aux clients identifiés (il existe une fonction d’authentification, basée sur un fichier CSV ; par défaut "test" / "test").

Dans chaque canal, il existe une arborescence identique : à l’origine de chaque canal, vous pouvez définir des paires clé‑valeur. Une valeur peut être un texte, un entier positif ou négatif, un flottant, un booléen ou un objet qui lui‑même est un dictionnaire de paires clé‑valeur. Il est donc possible de faire des « chemins » amenant à une valeur particulière dans l’arbre du canal (appelé la "liste").

Concernant la diffusion de messages entre clients connectés à un même canal, il s’agit d’une suite binaire quelconque. Il est possible de « capturer » un canal pour soi‑même (avec aucune possibilité pour les autres d’y accéder) afin d’avoir son propre espace de stockage de valeurs, comme de restreindre un canal existant aux clients qui y sont (déréférencement).

Exemple de commandes (à exécuter dans l’ordre, avec entrée à chaque ligne) :

définir mavar 1 obtenir mavar altérer mavar relatif obtenir mavar numérique:incrémenter mavar 2 obtenir mavar définir obj ~ objet définir obj/mavar 5 flottant obtenir obj/mavar

(il y a quelques dizaines de commandes de disponibles au total, couvrant le spectre essentiel des opérations)

Les lignes en retour commencent toujours ainsi :

  • [+] : commande terminée et positive ;
  • [-] : commande terminée et négative ;
  • [@] : commande toujours en cours, message à destination du client ;
  • [!] : commande toujours en cours, une erreur est survenue.

Facile à analyser donc.

Travaux en cours

Le programme est opérationnel, fonctionnel, sauf pour la partie script (mais cela n’interfère pas avec le reste). J’ai commencé voilà plusieurs mois ce travail, et depuis quelques semaines le développement actif. Actuellement, j’intègre un outil de script qui ressemble beaucoup aux commandes fournies par les clients : Cerise (et l’implémentation s’appelle Tomate, parce que « tomate‐cerise »… #honte).

C’est un DSL je dirais « hybride », moitié API, moitié DSL classique. En somme, il y a un arbre à résoudre, mais ce dernier est très restreint (volontairement). Le but est de rapprocher l’outil de script dans l’esprit des filtres d’IndexedDB dans Firefox : un même script, rapide et qui n’échoue pas, qui sera exécuté pour chaque valeur dans une partie de l’arbre du canal.

Chaque ligne du script commence par un opérateur « + » (positif), « - » (négatif), « ø » (inconditionnel). Cet opérateur permet au moteur de se baser sur un état pour savoir si la ligne sera exécutée ou non. Cet état est à l’origine à « vrai » et si une ligne échoue ou modifie l’état, la suivante se basera sur celui‑ci pour sa propre exécution.

Il est possiblement de « diverger » un bloc d’instructions avec une condition d’état, puis de faire « converger » de manière conditionnelle ce bloc vers son parent immédiat qui continue alors son exécution. À terme, il sera possible d’avoir des scripts qui seront appelés durant l’exécution, ce qui permettrait des boucles ainsi que la définition de fonctions.

Rappel : un script dans ce contexte, ne gère que la valeur de la base qui lui est soumise, et ses enfants s’il y en a.

Cela ressemble à ça :

+ type:texte ø état:sauvegarder ø afficher ø état:recharger + afficher "c'est bien un texte" - afficher "c'est autre chose" - ràz ø diverger + afficher "je ne sers à rien" ø converger ø afficher "stop"

Sur la filiation de ce DSL, je dirais qu’il se situe entre plusieurs choses que j’aime bien : le café du matin, les bouquins sur (Common) LISP, le lambda‐calcul, ma douche… et TCL.

Les experts classeront mieux que moi. :)

Super, ravi(e) mais à quoi ça sert vraiment ?

Redis sert pour du stockage (très) rapide car en mémoire vive (VoltDB est son équivalent en SQL). Robert s’en inspire : stockage de sessions pour un site Web, de calculs provisoires, etc., peu importe. L’outil ne fait pas le métier (mais l’inverse si).

Ma finalité personnelle était de supporter la récursivité (pour avoir un classement pointu) et surtout l’aspect facile de l’interrogation, afin d’avoir constamment sous la main un petit outil pour injecter un peu de tout, qui communique avec d’autres personnes ou des applicatifs, et ne prenne ni place, ni ressources excessive.

La partie francophone me tient à cœur car beaucoup d’utilisateurs ne sont pas à l’aise avec la langue anglaise. C’est un frein à l’usage d’un outil et à l’informatique de manière générale. Ce n’est pas être particulièrement chauvin (même si je peux l’être parfois), mais apporter une petite pierre à la communauté du Libre qui m’a gâté jusque‑là (Firefox, Ubuntu, LibreOffice et tant d’autres qui sont mon lot quotidien).

Pour ceux qui ont tenu jusque‑là : félicitations ! J’espère qu’il vous servira. Si vous y trouvez votre intérêt, « forkez », partagez, commentez, utilisez !…

Julien.

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Publication d’images amorçables Debian-Facile pour débutants, en version Stable 10.3

lun, 20/04/2020 - 10:09

La communauté Debian‑Facile a le plaisir de nous annoncer la sortie d’une image amorçable (ISO live) Debian personnalisée pour grands débutants en informatique !

Ces images pour débutants, ainsi que leurs documentations jointes, sont dans la continuité des projets HandyLinux et DFlinux.
Il y a en réalité deux annonces en une, car Les cahiers du débutant pour Debian 10 Buster sont aussi de la partie. :)

Sommaire Publication d’images amorçables Debian-Facile pour débutants, en version Stable 10.3

Bonjour à tous !
La communauté Debian-Facile a le plaisir de nous annoncer la sortie d’une image ISO autonome (live) Debian personnalisée pour grands débutants en informatique ! :D

Ces images d’installation (i386 32 bits et amd64 64 bits) ont pour but de simplifier la découverte, l’installation et l’utilisation immédiate d’un ordinateur sous Debian GNU/Linux, pour les utilisateurs les plus débutants. Pour cela, ces images sont personnalisées avec de nombreux paquets préinstallés comme un bureau Xfce personnalisé esthétiquement, le navigateur Web Firefox avec Ublock Origin pour bloquer les publicités, la suite bureautique LibreOffice, la messagerie Thunderbird, le lecteur multimédia VLC, la logithèque GNOME Logiciels, et bien d’autres…

Debian-Facile 10.3 Buster, et son bureau Xfce

L’image comporte également une documentation jointe en PDF. Celle‑ci est un manuel d’utilisation permettant une prise en main immédiate de son ordinateur sans connaissances nécessaires. On y apprend par exemple à organiser ses fichiers dans Thunar, à surfer sur le Web avec Firefox, extraire la musique de ses CD audio avec Asunder, etc.

La documentation PDF jointe à l’image ISO Debian‑Facile

Enfin, vous y trouverez une autre documentation PDF : Les cahiers du débutant.
Celle‑ci est bien plus complète. Elle a pour but de faire découvrir l’informatique aux débutants via Debian. C’est donc un projet utile à tous les débutants, qu’ils installent Debian via l’image ISO Debian-Facile, via une image ISO officielle, ou via une distribution dérivée de Debian comme Emmabuntüs.

 Les cahiers du débutant, pour bien débuter sous Debian

Cette image pourra aussi permettre aux bénévoles d’install parties et autres parrains Linux d’installer un système Debian prêt à l’emploi et documenté en quelques minutes.

Mais… d’où ça sort tout ça ?

Un point historique sur ces projets s’impose :
  • Le projet d’une image ISO Debian personnalisée pour débutant est né sur le regretté forum Crunchbang-fr. Il donnera naissance à la distribution Handy Linux en octobre 2013, notamment connue pour son HandyMenu.

Handy Linux 2.5 (basée sur Debian 8 Jessie), son bureau Xfce, et son HandyMenu

  • Juin 2016 : arpinux et la communauté handylinux.org envisagent de migrer sur Debian-Facile, avec le projet d’y intégrer la distribution HandyLinux.
  • Été‐automne 2016 : la distribution HandyLinux devient le projet DFlinux, des images Debian personnalisées pour débutants, mais sans dépôts externes, et dont le support est possible sur Debian-Facile. Faute de consensus entre les deux communautés à l’époque, le projet reste indépendant de Debian-Facile. Des images DFlinux Jessie et Stretch seront distribuées.

DFlinux Stretch, l’ISO Debian facilitante issue de l’adhésion de la communauté HandyLinux à Debian-Facile

En parallèle, arpinux entreprend la rédaction des Cahiers du débutant, un manuel complet pour débuter avec Debian, dans le but de succéder à la documentation de HandyLinux. Les cahiers du débutant sortiront pour les versions 8 Jessie et 9 Stretch.

  • Juillet 2017 : arpinux passe le relais à la communauté et prend un repos bien mérité.

Puis les projets sont repris :

Chacun de son côté au départ, puis on se coordonne et d’autres volontaires rejoignent l’aventure pour dépoussiérer ces projets tant utiles aux débutants, et les mettre à jour pour Debian 10 Buster, la nouvelle version stable. Les images DFlinux, leur documentation et Les cahiers du débutant deviennent des projets Debian‑Facile ! :D

Par conséquent, pour plus de clarté, le nom DFlinux est remplacé par… Debian-Facile :).
Les utilisateurs ayant besoin d’aide sur les forums Debian peuvent désormais dire qu’ils utilisent tout simplement Debian stable Xfce, et pas DFlinux (nom qui n’était pas connu de tous les aidants).

Après plus d’un an de construction, les images Debian-Facile Buster sont enfin prêtes. La version 10.3 Stable peut enfin sortir !

Les principaux changements depuis DFlinux Stretch Changements organisationnels :
  • le développement s’est fait de manière 100 % communautaire, avec une équipe majoritairement néophyte, sans hiérarchie, mais soucieuse de fournir un produit final bien abouti et sans oublis, ce qui explique tout ce temps nécessaire (un oubli n’est pas impossible, l’erreur est humaine ;)) — les contributeurs actuels : Caribou22, Debian-Alain, Otyugh, Framend, french82, Switch, Gilles, Jibe, Fiche, jce76350, Zorzi, melissa6969, Bendia, arpinux (en cas d’oubli, n’hésitez pas à vous signaler !) ;
  • les images portent le nom Debian-Facile et le même numéro que la version Debian courante ;
  • la page officielle du projet est désormais intégrée au wiki Debian‑Facile ;
  • les sources du projet et l’hébergement des images ISO ont été migrés chez Debian-Facile.
Changement concernant l’image :
  • mise à jour Debian 10.3 Buster ;
  • ajout du programme d’installation Calamares, exécutable depuis une session autonome ;
  • bureau Xfce conservé, avec le thème Arc et les icônes Numix‑Circle (issus des dépôts Debian) ;
  • ajout de GNOME Logiciels pour la gestion des logiciels ;
  • désactivation de Light‑Locker, qui cause des écrans noirs sur certaines configurations ;
  • ajouts de jeux : Aisleriot, Crack Attack!, Quatre‐à‑la‑suite, 2048, GNOME Chess, GNOME Mines, Nibbles, GNOME Sudoku et Quadrapassel ;
  • refonte et simplification de la documentation fournie avec l’image, afin qu’elle permette une prise en main immédiate pour les débutants ;
  • comme pour DFlinux Stretch, le support est le même que n’importe quelle Debian Xfce, donc il est possible sur n’importe quel forum Debian.
Changements concernant les projets externes intégrés à l’image :
  • le HandyMenu, pour les très grands débutants et seniors, est conservé.
  • Les cahiers du débutant, une documentation Debian illustrée pour débutants, ont été mis à jour pour Debian 10 Buster ; son support retourne à arpinux, son auteur initial.

Nous espérons que ces projets vous rendront service ! Vos retours sont les bienvenus. ;)

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

simpleWeb, le plus petit gestionnaire de contenu (CMS) du monde

dim, 19/04/2020 - 22:03

… dans sa catégorie ! :)

En fait, un assemblage de quelques scripts shell et Web (un script Web c’est du JavaScript, non ?), qui permet de gérer des sites Web statiques.

Un nain posé sur les épaules de géants : Apache httpd, hugo (mais cela serait modifiable), cron et incron, git, tinymce et ace.

Une plate‐forme pour générer des sites et un éditeur Web minimaliste pour les modifier, afin de permettre à des non‑techniciens d’interagir avec des outils qui leur sont généralement inaccessibles.

Sommaire Au commencement

Il y avait du HTML, du CSS et du JavaScript, un assemblage de trois langages disparates, mais qui permettent :

  • performance ;
  • sécurité ;
  • facilité de maintenance.
Génération statique

Leur mise en place peut cependant se révéler compliquée, surtout parce que les pages d’un site Web comportent souvent des éléments communs ou répétitifs. Un en‑tête, un menu ou pied de page, par exemple. Il peut aussi y avoir des problématiques de traduction, si une même page existe en plusieurs langues.

Dans ce contexte, un générateur de site Web statique devient presque indispensable. Avec lui, on automatise les tâches qui permettent la mise en place du fond, de la forme et des comportements, ces fameux HTML, CSS et JavaScript. Cela fonctionne assez bien pour les techniciens, ceux qui vont directement éditer leur site Web avec vim ou emacs, par exemple, puis lancent manuellement la génération et le déploiement. Le générateur statique peut tourner en fond, en attendant un changement quelconque dans un des fichiers source. Et avec livereload le navigateur va même tout de suite afficher les changements !

Étapes
  1. éditer
  2. générer
  3. sauvegarder sous Git

Dans simpleWeb l’édition se fait avec l’éditeur WYSIWYG nommé tinymce, et aussi avec ace qui, lui, est plus orienté code. Le choix se fait en fonction du type de fichier édité.

incron détecte cette édition et lance le générateur statique en tâche de fond pendant trente minutes. Cela permet une génération presque instantanée tout en conservant la mémoire système en évitant qu’un générateur soit continuellement en fonctionnement pour chaque site Web.

La sauvegarde git se déclenche après chaque édition.

Minimaliste $ cloc --exclude-dir=test,build /var/simpleWeb/bin /var/simpleWeb/conf /var/simpleWeb/apps/editor 34 text files. 34 unique files. 12 files ignored. github.com/AlDanial/cloc v 1.82 T=0.02 s (1497.8 files/s, 101611.8 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Sass 4 93 2 476 CoffeeScript 7 63 40 388 Bourne Shell 7 90 32 275 Haml 2 6 5 85 HTML 2 6 0 51 Ruby 1 4 6 11 YAML 1 0 0 3 JavaScript 1 1 59 0 ------------------------------------------------------------------------------- SUM: 25 263 144 1289 ------------------------------------------------------------------------------- Magique

Il y a plusieurs « tours » (au sens étapes ou pas). En effet, comment modifier un site statique à l’aide d’un éditeur Web statique. Sans base de données, ni serveur applicatif ?!

Avec le module webdav d’Apache httpd !

C’est une extension du HTTP, qui permet d’interagir avec les fichiers d’un serveur (lire, créer, modifier, supprimer…). Le client peut être n’importe quel navigateur Web qui sait utiliser les verbes HTTP appropriés, à l’aide de JQuery (cela pourrait fonctionner avec d’autres bibliothèques JavaScript, bien sûr).

Un deuxième tour repose sur incron, qui surveille les fichiers journaux du serveur Web Apache. Ces journaux sont rattachés à chaque site Web, et sont configurés afin que les verbes HTTP de consultation et les verbes de modification aboutissent à des fichiers séparés. incron peut ensuite surveiller ces fichiers et lancer le générateur statique et la synchronisation Git. cron va ensuite arrêter le générateur au bout d’un certain temps d’inactivité (à l’aide d’un fichier contenant l’identifiant du processus correspondant).

Un troisième tour dépend d’Apache, qui permet facilement de modifier la page listant un répertoire. C’est ainsi que l’on peut y injecter un script qui organise la page et permet l’édition.

Utilisations

C’est un petit projet, mais il est utilisé sur des sites comportant des milliers de pages. Dans ce contexte, le lancement du générateur hugo (il a été choisi car c’est actuellement le plus rapide) prend une minute. Une fois lancé, il reflète une modification presque instantanément.

Les utilisateurs n’ont accès qu’au contenu « pur », c’est‐à‐dire l’un des sous‐répertoires nommé content, et pas les squelettes de pages ou la mise en forme.

Évolutions

L’édition des méta‐données disponibles en Markdown, sous la forme de clés‐valeurs dans un en‑tête YAML ou TOML, reste spartiate, et sera probablement améliorée dans le futur. Une remontée des erreurs possibles du générateur est aussi en place dans l’éditeur, mais reste cryptique, car ces erreurs sont souvent plutôt techniques et cryptiques. :) Il y a du travail à faire de ce côté‑là !

Cet éditeur statique est en fait généré avec un autre outil : middleman, qui n’est plus guère maintenu mais permet facilement d’écrire en utilisant les syntaxes alternatives : Haml, Sass et CoffeeScript. Il faudra sûrement revoir cela à un moment donné. Peut‑être tester un générateur statique fait en Rust (donc plus rapide ?), ou assembler un générateur en utilisant incron et d’autres outils système.

En théorie, on peut éditer l’éditeur avec l’éditeur, si si !!!

Le générateur hugo est vraiment très bien, et il a été utilisé comme base pour les scripts existants. Il faudrait faire un gros travail pour le rendre interchangeable aisément, surtout parce que les arborescences de fichiers ne sont pas les mêmes d’un générateur à un autre…

Intégration et sécurité

Eh oui, un éditeur de site Web se doit de limiter les accès à seulement ceux qui y sont autorisés. Pour cela, inutile de réinventer la roue, Apache httpd sait très bien gérer ce genre de choses, par exemple avec :

  • un fichier d’identifiants et mots de passe ;
  • les droits d’un projet Redmine ;
  • une authentification GitLab.

Autant de mécanismes déjà mis en place pour certains sites.

Le code source d’un projet GitLab peut déclencher une synchronisation Git et une régénération du site à chaque push. Là encore, avec les journaux d’Apache et incron, en surveillant une adresse HTTP prédéfinie, que l’on configure dans GitLab.

Cela offre un grand confort au technicien qui veut éditer et tester un site sur son propre ordinateur, avant de le pousser sur un autre environnement. En théorie, il serait ainsi possible de multiplier à l’infini les environnements d’édition : développement, recette, préproduction, production, etc., tout en gardant un historique plutôt fin (mais l’historique ne reflète pas les auteurs, c’est une limite technique qui cherche encore sa solution).

Bref, c’est un assemblage que l’on pourrait qualifier de bricolage système, mais basé sur des concepts et des outils tellement simples et efficaces, que je voulais vous en parler ! :)

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Agenda du Libre pour la semaine 17 de l'année 2020

dim, 19/04/2020 - 11:57

N. D. M. : vu le contexte de pandémie de Covid‑19 et les restrictions locales ou nationales (Belgique, France, Québec et Suisse) sur les rassemblements, beaucoup d’événements sont annulés (dès que les organisateurs ont pensé à mettre à jour l’Agenda du Libre ou non). Nous avons donc retiré tous les événements en présentiel. « Restez chez vous ! » (et profitez‑en pour contribuer à des logiciels libres).

Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 6 événements (France: 5, Québec: 1) est en seconde partie de dépêche.

Sommaire [FR Montpellier] Contribution Wikicheznous - Du jeudi 16 avril 2020 à 00h00 au mercredi 6 mai 2020 à 23h59.

Wikimédia France vous propose de participer en ligne, depuis chez vous, à notre opération de contribution à la connaissance libre #WikiChezNous.

Cabalhérault, Montpel'libre et API : Action of Public Interest vous accompagne dans cette contribution, en vous expliquant comment contribuer à des moments d’échanges en ligne.

Histoire, culture, science, société, linguistique, littérature, photographie… Dans chacun de ces domaines, le mouvement Wikimédia a mis en place de très nombreuses plateformes pour libérer la connaissance et la rendre accessible à toutes et tous.

Comme chacun est invité à rester chez soi pour éviter la propagation du virus, c’est l’occasion pour vous de découvrir ou redécouvrir l’ensemble des projets Wikimédia, ainsi que notre projet de bibliothèque d’enregistrements audio Lingua Libre.

Un concours de contribution multiplateforme

Pour la première fois, Wikimédia France organise un concours de contribution qui se déroule simultanément sur plusieurs projets Wikimédia en plus de Lingua Libre, notre projet d’enregistrements audio libres. Vous pourrez donc non seulement contribuer à Wikipédia, projet phare de l’univers Wikimedia mais aussi à 10 autres plateformes !

Le but :

  • Inciter les contributeurs de Wikipédia à s’investir dans les autres projets hébergés par la Wikimedia Foundation.
  • Valoriser les personnes impliquées dans les projets Wikimédia moins connus, mais indispensables à la mise à disposition libre de toutes les formes de connaissances.
  • Récompenser le travail des bénévoles les plus prolifiques mais aussi des personnes qui profitent de l’événement pour s’y mettre.

Les prix :
Sur chacun des sites Wikimédia nous récompenserons l’internaute qui aura effectué le plus de contributions. Une série de prix reposant sur ces mêmes critères sera dédiée aux nouveaux contributeurs. Ce sont ainsi 22 lauréats, débutants et confirmés que nous saluerons d’un chèque lire d’une valeur de 200 €.

Comment participer :
Rien de plus simple, il vous suffit de vous connecter à notre campagne #WikiChezNous et de partir à l’aventure sur les différentes plateformes de diffusion de la connaissance libre ! Astuce, pour les personnes qui n’ont encore jamais contribué aux projets Wikimédia, vous pouvez vous créer un compte directement via notre page de campagne.

Jeudi 16 avril 2020 à 0h00 au mercredi 6 mail 2020 à 24h00 toute la journée
France

[FR Paris] Émission « Libre à vous ! » - Le mardi 21 avril 2020 de 15h30 à 17h00.

L’émission Libre à vous ! de l’April est diffusée chaque mardi de 15 h 30 à 17 h sur radio Cause Commune sur la bande FM en région parisienne (93.1) et sur le site web de la radio.

Le podcast de l’émission, les podcasts par sujets traités et les références citées sont disponibles dès que possible sur le site consacré à l’émission, quelques jours après l’émission en général.

Les ambitions de l’émission Libre à vous !

La radio Cause commune a commencé à émettre fin 2017 sur la bande FM en région parisienne (93.1) et sur Internet.

Depuis mai 2018, l’April anime une émission d’explications et d’échanges sur la radio Cause Commune sur les thèmes des libertés informatiques.

Libre à vous ! se veut avant tout une émission d’explications et d’échanges sur les dossiers politiques et juridiques que traite l’April, et sur les actions qu’elle mène.

Pour les libertés informatiques en général, et pour le logiciel libre en particulier.

Libre à vous ! c’est aussi un point sur les actualités du Libre, des personnes invitées aux profils variés, de la musique sous licence libre, des actions de sensibilisation.

Donner à chacun et chacune, de manière simple et accessible, les clefs pour comprendre les enjeux mais aussi proposer des moyens d’action, tel est l’objectif de cette émission hebdomadaire, qui est diffusée en direct chaque mardi du mois de 15 h 30 à 17 h.

L’émission dispose d’un flux RSS compatible avec la baladodiffusion ainsi qu’un salon dédié sur le webchat de la radio (salon #libreavous).

[FR Lyon] Audio-conférence Monnaie Libre - Le mardi 21 avril 2020 de 19h00 à 22h00.

Bonjour !

Pour pouvoir discuter de façon informelle autour de la Monnaie Libre à Lyon et dans le Rhône, je vous invite à participer à l’audio-conférence du mardi 21/04 à 19h.

La monnaie que vous utilisez quotidiennement est créée par des banques privées, sans contrôle démocratique. La monnaie libre Ğ1 vise l’égalité dans la création monétaire : elle est créée à parts égales par tous les êtres humains qui le veulent, par un « dividende universel ». Contrairement à la monnaie-dette (euro), elle n’induit pas de course à la croissance. C’est une monnaie numérique décentralisée et une forme de revenu universel.

Cette audio-conférence aura lieu sur le serveur Mumble de Framasoft.

Mumble fonctionne en mode « talkie-walkie » : une seule personne peut parler en même temps. En règle générale, il faut appuyer sur la touche « espace » pour parler. De mon expérience, la conversation est tout à fait fluide.

Notez que cette réunion permettra de mieux expliquer la monnaie libre et son utilisation, mais ne pourra pas donner lieu à des certifications.

[FR Nantes] Visioconférence Monnaie Libre - Le mardi 21 avril 2020 de 19h30 à 22h00.

Dans le cadre de la transition écologique, la monnaie joue un rôle majeur.
La monnaie libre permet d’éviter l’accumulation, de garantir la valeur et
de privilégier l’humain.
Elle appartient à ses utilisateurs et non pas à une banque.
Elle est créée par les utilisateurs et non par la dette.
Elle participe pleinement à la phase de résilience qui va suivre les
bouleversements économiques majeurs qui s’annoncent.
Elle existe depuis 3 ans et ne nécessite aucun frais d’entrée ou de gestion.
Ce n’est pas une monnaie locale bien qu’elle puisse être utilisée localement.
Elle intègre un dividende universel attribué automatiquement chaque jour.

C’est une autre façon de voir le revenu universel et c’est opérationnel dès aujourd’hui.

À l’issue de la réunion vous aurez toutes les informations pour vous
lancer.

Pour rejoindre la réunion il faut suivre ce lien :Jitsi MonnaieLibreNantes
Pour toutes questions préalable voir forum.monnaie-libre.fr visio-conference-tout-les-mardi-soir

La réunion commence à 19h30, mais on teste les connexions à partir de 19h15. (privilégier le câble)
La présentation dure 20à 30mn et sera suivie de questions réponses.

Quelques vidéos de présentation sur youtube

[CA-QC Montréal] Réunion ordinaire du CA de FACIL - Le mardi 21 avril 2020 de 18h00 à 19h00.

Le conseil d’administration (CA) de FACiL se réunit pour traiter des affaires courantes de l’association.

Par souci de transparence, les réunions du CA sont ouvertes aux membres.

Pourquoi vouloir assister aux réunions

Vous pouvez assister aux réunions, par exemple, si vous souhaitez mieux connaître le fonctionnement de notre association, et/ou rencontrer les administrateurs et administratrices et/ou peut-être faire valoir votre point de vue en personne. Si vous désirez assister à la réunion, merci de nous avertir en écrivant à la personne ressource (Geneviève Bastien), dont l’adresse courriel est indiquée plus bas.

[FR FAImaison] Contribatelier en ligne : Confin'atelier - Le samedi 25 avril 2020 de 14h00 à 17h00.

Les Contribateliers vous proposent de participer au premier Contribatelier en ligne, sobrement nommé Confin'atelier ! Contribuez au Libre de chez vous et malgré le confinement !

Le principe reste le même que pour les Contribateliers physiques : tout le monde a sa place et est bienvenu·e, quel que soit son profil, ses compétences et ses envies pour venir contribuer au Libre.

Nous vous donnons donc rendez-vous le samedi 25 avril, de 14h à 17h sur l’instance Big Blue Button de FAImaison :

https://huit.re/confinatelier

Au menu: contribution à Framalibre, OpenStreetMap, Wiktionnaire, Common Voice, des ateliers sur PeerTube, la rencontre du design et du libre, la communication pour des projets libres…

Inscriptions: Les inscriptions sont facultatives, mais nous sont très utiles pour évaluer le nombre de participant·es, les envies de chacun·es et pour que les personnes souhaitant proposer d’animer un pôle puissent se signaler. C’est par ici :

Formulaire d’inscription

Pour plus d’information - dont la liste actualisée des pôles -, lisez notre article d’annonce sur contribateliers.org !

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Comparaison de deux outils de gestion de séminaires en ligne : BigBlueButton et OpenMeetings

ven, 17/04/2020 - 15:45

Dans le cadre du confinement, je me suis intéressé à la mise en place d’un séminaire en ligne pour un laboratoire de recherche. Au cours de cet article, nous allons comparer deux logiciels libres, BigBlueButton et OpenMeetings, qui permettent de gérer ce genre d’événements. Séminaire est à entendre ici comme un ensemble d’interventions audio‐visuelles géré par une même personne physique ou morale. Les versions présentées des deux logiciels sont la version 2.2 pour BigBlueButton, qui fonctionne de pair avec le client Greenlight 2.0 et la version 5.0.0-M3 pour OpenMeetings.

Sommaire Licences et Installation

Les deux logiciels sont libres : la licence de BigBlueButton est la LGPL, et celle d’OpenMeeting, la licence Apache 2. BigBlueButton s’installe sur un serveur Ubuntu, la procédure d’installation recommande d’avoir la version 16.04 64 bits et d’utiliser un serveur dédié à BigBlueButton. Du côté d’OpenMeeting, il existe des tutoriels pour le mettre en place sur Ubuntu, Arch Linux, CentOS, Fedora et openSUSE Leap. À noter également qu’il existe des extensions pour intégrer ces deux logiciels à des plateformes éducatives tels que Moodle.

Les interfaces client des deux logiciels utilisent désormais HTML 5 et WebRTC. OpenMeeting se base sur le serveur média Red5 (Java) et BigBlueButton est développé avec Grails/Groovy et Scala côté serveur et RubyOnRails pour Greenlight côté client.

Concernant la configuration matérielle d’un serveur de production, la documentation de BigBlueButton et celle d’OpenMeeting, ce type d’application étant assez exigeant, les équipes de développement recommandent des configurations similaires :

  • 4 Gio de mémoire vive, avec la partition d’échange (swap) activée ;
  • processeur quadricœur à 2,6 GHz ;
  • beaucoup d’espace disque libre pour gérer les enregistrements et les fichiers ;
  • 100 Mb/s de bande passante symétrique ;
  • un serveur dédié (pas de virtualisation ni d’autres logiciels fonctionnant en parallèle).
Les fonctionnalités partagées

Les deux logiciels ont pour objectif aussi bien d’aider l’organisation des séances d’un séminaire que la gestion de leur contenu. Ils proposent des fonctions pour gérer les salles de séminaire, les rendez‑vous (emploi du temps, envoi de liens ou d’invitations) et la consultation des enregistrements des séances précédentes.

En ce qui concerne les séances proprement dites, elles consistent en des communications audio‐visuelles gérées en WebRTC. La liste des fonctionnalités des deux outils semblent très similaires (voir cette liste détaillée pour OpenMeeting, et ce lien pour Greenlight, le client de BigBlueButton) :

  • importation d’une présentation ;
  • conférences audio-visuelles ;
  • système de discussions ;
  • système de vote ;
  • partage d’un tableau interactif avec les autres utilisateurs ;
  • partage d’une fenêtre ou de l’écran.

Nous allons maintenant rentrer dans le détail des deux applications.

Une séance avec les deux logiciels

Afin de mieux refléter l’utilisation réelle de ce type de logiciel, s’ils ont tous été testés avec un seul utilisateur, j’ai également convié d’autres personnes intéressées par ces logiciels à une séance dans un séminaire fictif grâce aux instances de démonstration de BigBlueButton et d’OpenMeeting.

BigBlueButton et Greenlight

Afin de créer une ou plusieurs salles de séminaires, il est nécessaire de créer un compte sur la plate‐forme hébergeant BigBlueButton. Une fois connectée, la personne qui organise la séance est conduite à cette interface d’accueil :

Cette interface permet de créer des salles virtuelles, qu’il est ensuite possible de nommer et configurer en fonction des besoins associés aux différents séminaires. Un lien unique est attribué à chaque salle. Lorsque l’utilisateur clique sur le lien que l’organisateur du séminaire lui a envoyé, il ou elle voit une page similaire à la page d’accueil, où il lui est indiqué le nom de la salle et son propriétaire. Il peut également accéder aux différents enregistrements qui ont été faits dans cette salle.

L’interface présentée dans la capture d’écran suivante est celle de la séance à proprement dite d’un séminaire :

Elle permet à la personne organisant ou modérant la séance, d’activer ou de désactiver l’audio ou la vidéo pour le public (les utilisateurs peuvent également régler leurs propres entrée et sortie). La personne qui présente son travail peut réaliser sa présentation à l’aide de son micro, de sa webcam, importer une présentation ou utiliser le tableau blanc. Ce dernier ne propose cependant pas beaucoup de fonctions, auxquelles ont accès auditoire et présentateur : annoter à travers le dessin sur le tableau ou la présentation, mais surtout un pointeur. L’importation d’une présentation ne conserve toutefois que le visuel du document, les effets, les liens, les transitions, la lecture de fichiers audio ou vidéo, ne sont pas conservés.

Il est également possible de créer des sous‑salles afin que les membres de l’auditoire discutent entre eux. Cette fonctionnalité est a priori pensée pour la gestion d’un cours et pour permettre aux élèves de discuter d’un problème en groupe. Elle peut être utilisée pour créer des espaces de conversation entre les membres du public. L’interface propose également un système de sondages, soit à partir des modèles proposés, soit en en créant un soi‑même. En plus de la fenêtre de discussion, il existe un système de notes partagées, particulièrement utile, par exemple, afin de produire un compte‑rendu collaboratif de la réunion. Il existe des raccourcis clavier pour gérer la présentation : passer à la page suivante ou précédente, afficher l’ensemble des pages et gérer les droits de conversation de l’auditoire. Enfin, il est possible d’enregistrer la séance.

Compatibilité avec les navigateurs

BigBlueButton recommande l’utilisation de FireFox ou de Chrome, mais devrait fonctionner avec Safari, IE et Edge, d’après la documentation en ligne. Les essais avec les navigateurs Falkon et Konqueror se sont révélés infructueux et ont renvoyé vers une page d’erreur.

OpenMeeting

À la connexion à l’application OpenMeeting, les différentes salles ouvertes sur le serveur sont présentées à l’utilisateur :

L’interface de démonstration proposée par Alteametasoft ne permet pas d’envoyer des invitations ou un lien vers les salles de conférence. Un des développeurs d’OpenMeeting m’a assuré cependant que cela était possible.

Si l’esthétique de l’interface d’OpenMeeting 4 pouvait rappeler celle de Windows XP, ce n’est plus le cas avec la version 5, tout en HTML 5 :

Une des fonctions de base d’une séance avec OpenMeeting est d’interagir avec le tableau blanc : dessiner, ajouter du texte, des équations mathématiques ou des formes géométriques. Il est également possible de travailler sur plusieurs tableaux via un système d’onglets. Ce tableau blanc est conçu pour être un support possible pour créer un cours. Il est possible d’y ajouter des fichiers musicaux (Ogg Vorbis, MP3, FLAC) ou des vidéos (enregistrement de l’écran via l’interface proposée par le logiciel ou importation de fichiers). S’il est possible d’avoir plusieurs tableaux blancs, il n’est pas possible d’ajouter des « pages » à ces tableaux blancs.

OpenMeeting permet d’importer des présentations aux formats PDF, OpenDocument ODP et MS Office PPTX. Mais, comme BigBlueButton, si la mise en page du fichier importé est respectée, les fonctionnalités plus avancées ne sont pas prises en charge.

Conclusion

Les deux logiciels sont conçus avec une optique légèrement différente : BigBlueButton permet de faire une présentation en ligne mais les interventions doivent être pensées autour de ces présentations. De son côté, OpenMeeting propose également d’élaborer directement les présentations sur des tableaux blancs. De plus, la fonctionnalité d’enregistrement peut être utilisée pour garder une trace du cours mais également pour participer à son contenu en intégrant un enregistrement dans le tableau blanc, et faire ainsi référence à un cours précédent ou autre.

De manière générale, BigBlueButton propose moins de fonctionnalités qu’OpenMeeting : il se concentre sur l’essentiel et le fait de manière plus fluide qu’OpenMeeting. De son côté, OpenMeeting propose davantage de fonctions, comme la gestion de fichiers, leur importation et une utilisation plus avancée du tableau. L’interface de BigBlueButton me semble plus claire et agréable à utiliser, les raccourcis clavier pour gérer la séance facilitent la présentation pour l’orateur et la prise de notes partagées est pratique pour être efficace lors d’une réunion ou pour la mise en commun d’idées.

Si BigBlueButton permet de créer des sous‑salles, ce n’est qu’un palliatif à l’impossibilité d’avoir des conversations privées sur ces deux plates‐formes. Permettre des conversations audio ou textuelles privées, que ce soit entre les personnes du public, avec l’intervenant ou un organisateur, sans qu’elles ne perturbent la séance serait un plus. Ces fonctions éviteraient certains des brouhahas qui peuvent arriver lors d’une présentation en facilitant les commentaires, suggestions techniques ou communications liées au réseautage (un des intérêts non négligeable d’un séminaire).

Enfin, bien que ces deux logiciels aident à la mise en place d’un séminaire en ligne, du point de vue de la personne qui présente, ce dernier doit élaborer sa communication en tenant compte qu’une telle intervention fera face à des contraintes matérielles (casque, micro), logicielles (outil de présentation limité) et une interprétation plus difficile de l’auditoire (les retours visuels et sonores via les webcams et microphones prêtent parfois à confusion et sont plus difficilement interprétables).

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Condorcet PHP — Gestion des élections alternatives

jeu, 16/04/2020 - 15:51

Condorcet PHP est une bibliothèque logicielle écrite libre (licence MIT) en PHP et/ou un programme en ligne de commande. Il permet de gérer une élection, de l’enregistrement des votes, jusqu’au calcul des résultats par des algorithmes de votes dits « alternatifs », la plupart d’entre eux étant liés aux critères de Condorcet.

Il dispose d’une API riche permettant une gestion intelligente et avancée des bulletins et des résultats, incluant des outils statistiques, de sécurité ainsi qu’une prise en compte des problématiques de cache et performances. Condorcet reste très simple à utiliser pour un besoin standard grâce à des méthodes et commandes explicites de haut niveau, ainsi qu’à de multiples formats utilisables.
Son architecture modulaire permet d’étendre ou de personnaliser ses usages et algorithmes. Condorcet peut aussi s’interfacer avec des bases de données, supprimant toutes limites tant au nombre de votes géré, promettant des performances linéaires en temps de calcul et stables en mémoire, parfaitement praticables avec un petit ordinateur domestique, même pour les plus improbables démesures.

Initialement conçu en 2014 comme un très simple et monolithique code répondant à un besoin unique ; puis en tant que petit projet étudiant à l’ambition croissante, et fut de nombreuses fois réécrit au fil des gains de compétence de son développeur principal et de la maturation du projet.

Sommaire Méthodes de votes classiques & alternatives Systèmes électoraux classiques

L’écrasante majorité des systèmes électoraux actuels, qu’ils soient de natures institutionnelles, publiques ou privées, sont fondés sur des systèmes majoritaires et uninominaux. Vous ne choisissez qu’un seul candidat, ne transmettez aucune information sur la conviction ou la contextualisation de votre choix, et éliminez les autres candidats de votre vote.
Ces systèmes ont le mérite de forcer à un certain engagement. Ils sont faciles à organiser et à expliquer, quoique le plus souvent structurés en deux tours.

Mais ils souffrent aussi de défauts importants :

  • ils encouragent des votes stratégiques, par regroupements tactiques (présumés), plutôt que des votes de convictions ; - ils éliminent de la décision des courants minoritaires, qui se retrouvent en marge, même dans un système à plusieurs tours ;
  • Ils ne favorisent de fait aucun consensus. La légitimité du vainqueur est donc souvent contestable car comble du scrutin majoritaire classique, celui remportant une élection dernier n’est que rarement en mesure de justifier d’une approbation majoritaire non-contrainte (sans même parler d’abstention). C’est donc plutôt l’élimination de son concurrent du second tour qui produit un gagnant.

Exemple :

Les systèmes électoraux classiques peuvent aussi aboutir à des décisions aberrantes, bien éloignées de l’intérêt commun.
Nous allons prendre un exemple simple, celui de la construction d’un hôpital, que nous considérerons comme unique sur une région. La population de chaque ville va soutenir unanimement l’implémentation de celui-ci sur son propre territoire, selon ses intérêts propres. Nous convoquons pour ce faire les cités de quelques animés célèbres.

Table des votes :
(pour des raisons de simplifications et de démonstration, nous supposons que chaque habitant vote selon ses intérêts logiques propres, tous les habitants d’une même ville votent donc pareillement)

New New York (42% des electeurs) Springfield (9% des électeurs) Lanwdale (27% des électeurs) South Park (22% des electeurs) 1. New New York 1. Springfield 1. Lanwdale 1. South Park 2. Springfield 2. New New York 2. South Park 2. Lawndale 3. Lawndale 3. Lawndale 3. Springfield 3. Springfield 4. South Park 4. South Park 4. New New York 4. New New York

Que se passe-t-il avec une élection majoritaire à deux tours ?

Dans une élection classique (on ne garde que les têtes de séries de chaque bulletin) : New New York affrontera Lawndale au second tour, soit deux intérêts diamétralement opposés, New New York gagnera l’élection, laissant 49% de la population à 200 km ou plus de l’hôpital.
Pourtant, si Springfield était choisie : 78% de la population vivrait à 130 km ou moins et jamais à plus de 170 km, 51% de la population y aurait accès dans un rayon de 100 km maximum.

Méthodes de Condorcet & autres systèmes électoraux

Il existe de nombreux autres systèmes électoraux possibles. Souvent plus complexes à appréhender au premier abord, car faisant intervenir des techniques mathématiques et des dépouillements plus complexes. Leurs pratiques, du point de vue d’un électeur restent toutefois très simples.
On va ici s’intéresser aux systèmes dits de Condorcet, car respectant le mode de vote et le critère de la méthode de Condorcet. Ces méthodes sont pour la plupart implémentées dans Condorcet PHP.

Toutes partagent la même méthode électorale : un seul tour, chaque électeur vote tout ou partie des candidats par ordre de préférence, avec égalités permises ou non selon les variantes.

Le critère de Condorcet

Ce critère doit bien son nom au Marquis de Condorcet, qui l’a établi ou du moins formalisé et popularisé en premier. Ce critère fonde la première méthode de Condorcet. Simplissime, elle ne peut prédire qu’un vainqueur et qu’un perdant absolu, sans classement intermédiaire (sauf à tenter de recalculer en supprimant les candidats élus).

Dans ce système de vote, est gagnant absolu le candidat qui, comparé à tous les autres, est systématiquement vainqueur. C’est ce que l’on appelle le duel de paires. À l’inverse, le perdant absolu est celui qui perd tous ses duels.

Concrètement, lors du dépouillement, on va simuler tous les duels de paires possibles. Et pour chaque bulletin, attribuer au sein de chaque duel un point au candidat vainqueur dans chacun d’entre eux. Si un candidat est vainqueur pour chaque duel, ou au contraire perdant pour chaque duel, il est alors le gagnant/perdant de Condorcet.

Si l’on reprend l’exemple géographique précédent, voici la somme des duels de paires :

New New York > adv. Springfield > adv. Lanwdale > adv. South Park > adv. New New York < adv. - 58 49 49 Springfield < adv. 42 - 49 49 Lanwdale < adv. 51 51 - 22 South Park < adv. 51 51 78 -

(Modalités et variantes : 100 votants, obligation de classer tous les candidats, classement exæquos interdits dans les bulletins. La majorité est donc forcément à 51 pour chaque duel de pair. Condorcet PHP gère d’autres variantes, cet exemple est donc très simple.)

Springfield gagne l’élection en tant que vainqueur de Condorcet car il gagne tous ses duels, alors même qu’il dispose du plus faible nombre de partisans de premier rang. Et peut alors enrichir sa centrale nucléaire d’un hôpital attenant. South Park finit logiquement perdant de Condorcet, ne remportant aucun duel. La méthode originelle de Condorcet ne propose pas de classements intermédiaires.

Paradoxe de Condorcet :

Cette méthode, quoique relativement simple, n’est pas parfaite, car elle échoue régulièrement à désigner un vainqueur. C’est ce que l’on appelle le paradoxe de Condorcet. En voici un exemple :

  • le candidat A est majoritairement préféré au candidat B
  • le candidat B est majoritairement préféré au candidat C
  • le candidat C est majoritairement préféré au candidat A

On observe qu’aucun candidat ne remporte l’ensemble de ses duels de paires, celle-ci forme des références circulaires : aucun n’est éligible au critère de Condorcet. L’élection n’a pas de solution. Ce paradoxe peut aussi concerner le perdant de Condorcet.

Les méthodes dites de Condorcet

De nombreux mathématiciens et théoriciens du vote ont proposé leurs propres méthodes étendant celle de Condorcet. Leurs objectifs furent de résoudre le paradoxe de Condorcet, fournir un classement complet (avec d’éventuels matchs nuls, quoique peu probables dans de grosses élections). Tout en prouvant une compatibilité totale ou partielle de leurs résultats avec celle du vénérable Marquis lorsque cette dernière ne rencontre pas de paradoxes.

Les façons de voter restent rigoureusement identiques et conservent le même processus de dépouillement pour la quasi-totalité d’entre elles (toujours former des comptes par duels de paires).
Ces méthodes sont cependant bien plus compliquées à calculer et seraient pour la plupart même illusoires sans un processus informatique. Les résultats pré compilés, sous forme de duels de paires résolus, sont encore réalisables à l’échelle humaine (quoique fastidieusement, avec un nombre de candidats restreints) ; mais les calculs finaux font alors appel à des techniques plus poussées, des analyses graphiques (Schulze, Tideman…), des permutations (Kemeny – Young, Dodgson…) ou encore des statistiques (Dodgson approximations, Minimax…).

L’avantage de ces méthodes avancées réside en ce qu’elles tendent à réduire le risque d’égalité sur tous les rangs (aussi bien au rang du vainqueur qu’aux rangs intermédiaires), d’autant plus quand le nombre d’électeurs augmente ; des égalités sur certains rangs peuvent survenir, ce que ne permet pas la méthode originelle de Condorcet ; et elles réduisent considérablement le risque d’absence de solution, le rendant hautement improbable (de façon exponentielle quand le nombre d’électeurs augmente).
Mais leurs particularismes divers sont aussi particulièrement intéressants pour contrebalancer tout risque de manipulation électorale, rendant inefficientes d’éventuelles consignes électorales qui auraient pour but d’influencer l’algorithme. Le fonctionnement originel de Condorcet étant déjà par nature propre à réduire ce problème (un candidat classé dernier dans un bulletin ne vaut pas moins qu’un candidat classé deuxième dans le contexte d’un duel de pair), mais ces méthodes y ajoutent de nombreuses techniques rendant en pratique peu plausible une stratégie électorale. (voir Critère de votes)

Les méthodes de vote les plus estimées, car robustes et abouties (mais pas les plus simples), aussi bien du point de vue des résultats que de la résistance aux manipulations, sont celles dites de Schulze ou de Tideman (aussi appelée Ranked Pairs).

Autres méthodes & Utilisations

Il existe d’autres méthodes ne respectant pas le critère de Condorcet. La plus connue étant le vote alternatif, utilisé dans certaines élections locales en Australie ou aux États-Unis ; la méthode Borda est elle utilisée comme système électoral principal dans les îles Nauru en Micronésie.
Elles sont aussi implémentées dans Condorcet PHP.

Étrangement, les méthodes de Condorcet, sont pour leurs parts plutôt cantonnées à la sphère privée et associative ; la cause en est peut-être la faible intelligibilité de leurs algorithmes pour le grand public (NdM: et la difficulté à dépouiller ces méthodes avec des bulletins papier, ce qui les limitent souvent à du vote électronique). On note leur utilisation par exemple chez la Wikimedia Fondation, chez Debian, par le Parti Pirate et bien d’autres structures.
On en a aussi trace sur certains forums musicaux.

Fonctionnalités principales de Condorcet PHP Gérer une élection

Condorcet PHP est conçu pour un usage haut niveau articulé autour de la gestion d’une élection. Il fournit ainsi de prime abord tout un ensemble de méthodes permettant de la paramétrer et de la contrôler. Il accepte de multiples formats en entrée, dont un format de vote explicite créé pour l’occasion.

Parmi les praticités notables : un système de filtres permet de taguer et de filtrer les votes que l’on veut appliquer à la génération d’un résultat. Ceci permet des simulations redondées ; toujours dans l’idée de faciliter les simulations, les performances et le nombre de manipulations.

Les objets Candidats, Votes et Résultats sont aussi soumis à des sommes de contrôle cryptographiques et versionnés, afin de garantir leurs intégrités et leurs historiques. Des contraintes peuvent être spécifiées à propos de l’admissibilité des votes.

Un système de benchmark simple et interne permet d’obtenir des informations sur les temps de traitement, limités à la génération des résultats, sans recours à des wrappers.

Générer les résultats Interactions

Condorcet PHP implémente de nombreuses méthodes de vote. Il fournit des statistiques appropriées pour chaque méthode en commençant par les gagnants/perdants respectant ou non les critères de Condorcet, la présence ou non d’un paradoxe, et les étapes de calcul propres à chacune.
Ou encore de l’impossibilité de trouver un résultat pour certaines d'entre elles dans certains cas (Kemeny–Young…) ; des protections contre les limites de performances possibles sur certaines méthodes lorsque le nombre de candidats devient trop important (Ranked-Pairs, Kemeny–Young…) ; ainsi que de nombreuses variantes et paramètres spécifiques à chacune d’elles.

Méthodes disponibles Gestion des grandes élections : des milliards de votes sur un matériel domestique modeste

Condorcet PHP permet de gérer efficacement des dizaines de milliers de votes, voire des centaines de milliers en augmentant simplement la mémoire vive PHP autorisée dans votre environnement d’exécution (pré configuré en illimité dans la distribution Docker). Ses performances sont conçues pour être linéaires.

Toutefois, la mémoire vive peut ne pas suffire. Si vous visez plusieurs millions de votes (ou quelques milliards), le recours à un stockage externe, transitoire, peut s’avérer nécessaire.
Condorcet permet de déléguer cette tâche à une base de données externe via le développement d’un pilote spécifique à enregistrer au sein de son architecture modulaire.

Il est fourni nativement un pilote PHP-PDO, permettant de configurer facilement cette tâche avec les bases de données les plus courantes comme PostgreSQL, Mysql ou encore SQLite. La documentation fournit par ailleurs des exemples d’usage pour SQLite, Condorcet s’occupant alors de tout, jusqu’à la création de la base elle-même. Toutefois, selon le moteur de base de données utilisé et sa bonne configuration (index…), les performances peuvent-être moins linéaires.
Toutefois, si 99% des usages n’ont pas besoin de cette configuration avancée, son utilisation devrait permettre de répondre aux derniers cas, faisant de Condorcet PHP un véritable outil généraliste.

Le développement de cette fonctionnalité ayant nécessité une importante complexification et abstraction du code global, il est plutôt conseiller d’en faire un usage simple, certains appels API avancés (et accessoires) pouvant écrouler les performances ou créer des bugs encore mal connus. À ce jour, le cas d’usage réel connu de gros collèges électoraux parmi nos utilisateurs est actuellement de 0.

Code & Architecture

Cette section peut comporter des explications plus subjectives, de la part du développeur principal aussi rédacteur du présent article. La première personne peut y être employée.

API (bibliothèque PHP)

L’objectif a toujours été de proposer une API simple, de haut niveau, permettant de gérer une élection et ses résultats de façon limpide.
Les méthodes d’API sont organisées en plusieurs phases :
1. Enregistrement des candidats
2. Enregistrement des votes
3. Exploitation des résultats.
Des aller-retour dynamiques et optimisés sont possibles entre les phases 3 et 2.

L’API est très riche, dépassant la centaine de méthodes publiques d’interaction ou de paramétrage. Même si quelques-unes suffisent en principe à gérer une élection simple couvrant 95% des usages. On trouve donc des méthodes haut niveau, qui côtoient optionnellement des choses plus spécifiques et fines.

Plusieurs approches sont possibles et peuvent-être utilisées de façon simultanée. Les entrées peuvent aussi bien être des objets que des chaînes des caractères normalisées (format Condorcet, Json…), ce qui rend très simple une interaction ponctuelle et non-industrielle avec la bibliothèque.
De fait, beaucoup de magie opère en arrière-plan afin de corriger et de traduire les entrées utilisateur (suppression des espaces avant/après, gestion des majuscules, conversions en objets ou d’objets à objets, absence d’erreurs en cas de validité partielle).
Cette souplesse pouvait cependant être problématique dans le cadre où la validité des données ingérées doit constituer un point d’attention particulier. Aussi les dernières évolutions d’API tendent à remettre de la rigueur en découpant certaines méthodes par usages plus explicites (notamment par types d’entrée / sortie), reposant moins sur des présomptions ou des paramétrages par défaut. Les erreurs sont aussi de plus en plus strictes, acceptant dans moins de cas une entrée partiellement valable. Bien sûr, de nombreuses fonctions de contrôles sont disponibles afin de valider les votes enregistrés et d’accéder aux détails des calculs.

Abstraction et programmation orientée objet

En interne, tout est objet ; l’API permettant d’interagir directement sous forme d’objet tout en proposant d’autres modes d’entrées / sorties.
L’usage pointu de références et d’appels inter-objets via une API interne font que les objets ont leur vie propre (un électeur peut changer d’avis en conservant le même objet), les objets peuvent ainsi exister dans l’espace utilisateur et agir directement sur les élections auxquelles ils participeraient.
Un objet Vote peut aussi participer à plusieurs élections en simultané, ce qui ouvre la voie à des applications intéressantes de simulation électorale avec un code utilisateur simple (et à un moindre usage mémoire).

La limite de l’exercice est alors de chatouiller les capacités du ramasse-miettes de PHP (Garbage Collector), qui a tendance à peu goûter aux références circulaires complexes, notamment lors de l’usage de destructeurs. Ce qui pour certains usages très particuliers et complexes, peut demander quelques précautions (appels manuels au collecteur de cycles par l’utilisateur) malgré tous les efforts pour prévenir ces cas rares résultants d’usages complexes et exigeants. Cela n’affecte cependant pas les résultats, et ça ne s’avère problématique que d’un point de vue usage mémoire dans le cadre de scripts parents longs.

Architecture modulaire

L’ensemble étant organisé de façon très modulaire, il est facile d’étendre la plupart des classes, ce qui est particulièrement utile pour les classes Élection, Candidat et Vote.

Mais Condorcet prévoit dans son API même l’inclusion de certains modules, basés sur des API plus bas niveau. C’est notamment ainsi que sont gérés les différents algorithmes correspondants à chaque méthode de vote, il est donc très facile de développer votre propre méthode de vote sous forme de module utilisant les API et interfaces bas niveau de Condorcet - sous votre propre espace de nom - et de demander dynamiquement son inclusion dans Condorcet.

Condorcet PHP dispose aussi d’un mécanisme d’injection de code pour des modules de contrôle de la validité des votes, permettant d’ignorer ceux ne respectant par certains critères ; un module est par exemple nativement fourni afin d’interdire les égalités dans les votes (désactivé par défaut) ; l’on peut imaginer d’autres contraintes permettant par exemple de valider que X candidats minimum soient évalués par le votant.

Performances

Les performances sont relativement optimisées, surtout de façon à être linéaires et malignes là où c’est possible, sans sacrifier à la logique du code, à ses fonctionnalités, fiabilités ou sécurités par de trop d’optimisations.
On retrouve donc un système de cache interne, de mise à jour itérative des résultats (par sur tout, mais à minima sur la table des duels de paires) lors des ajouts, suppressions ou mises à jour de votes. Certaines précautions ont dû être prises en termes d’usage mémoire, afin de gérer les énormes élections aussi bien que celles d’un comité de quartier, notamment l’usage d’itérateurs ou de couches d’abstraction de stockage des votes plutôt que de bêtes tableaux.

Langage PHP, qualité de code, documentation, envergure

Condorcet PHP est un projet personnel, ne connaissant qu’un seul développeur actif et un public utilisateur restreint et largement inconnu. Il y a donc peu de contraintes, la motivation de développement se portant volontiers sur l’usage des dernières fonctionnalités du langage. PHP s’étant par ailleurs largement métamorphosé ces dernières années. Ainsi, les versions successives de Condorcet n’ont toujours été compatibles qu’avec les versions les plus récentes, introduisant et testant les dernières avancées disponibles.

Actuellement, Condorcet dernière mouture, n’est disponible que pour PHP 7.4. Il use avidement des dernières évolutions, notamment en ce qui concerne le typage strict des méthodes et des propriétés. Cette introduction ayant aussi eu pour effet positif de repenser largement l’API, l’objectif étant de se servir de cette contrainte volontaire pour tout typer, permettant une très large revue de code et de nettes améliorations structurantes.
Un support sur demande (ainsi que quelques tests CI) est toutefois assuré pour les anciennes versions.
Le projet a longtemps été développé de façon improvisée et artisanale. Il fut radicalement réécrit plusieurs fois au fur et à mesure de sa prise d’ambition et de la montée en compétence de son développeur principal.

Il aura fallu se faire violence pour qu'une documentation des méthodes et un manuel complet finissent par sortir de terre. Ils sont assez exhaustifs, à minima sur l’API publique.

Les tests ont aussi fait leur apparition, et l’on atteint désormais un ratio de près de 50/50 entre code applicatif et code de test. Ils sont encore assez largement fonctionnels plus que strictement unitaires, mais très retors et disposant d’une couverture de code à 98%. Les tests s’attardent particulièrement sur la validité des résultats, et puisent allégrement dans les exemples simples et complexes fournis dans les papiers décrivant chaque méthode de vote.

Condorcet PHP c’est 340 ko de code brut (avant compilation), pour 6000 lignes maintenues hors tests et exemples, reparties en 42 classes (oui 42) et près de 500 fonctions. Rajoutons-y 220 ko de documentation en texte brut.

La philosophie de Condorcet PHP fut de s’affranchir de toutes dépendances, par défi personnel d’abord, mais aussi suivant la volonté de maîtriser parfaitement tout d’un code devant gérer des résultats électoraux. L’application en ligne de commande passe elle cependant par la Console Symfony. Et l’environnement de développement ne se prive pas de dépendances variées, bien évidemment.

Cela rend l’utilisation de Condorcet au travers de Composer tout à fait optionnelle, bien que recommandée. Son propre auto-loader (PSR-4) est disponible en option.

Continuation & développements

Cette section peut comporter des explications plus subjectives, de la part du développeur principal aussi rédacteur du présent article. La première personne peut y être employée.

Exécutable en ligne de commande

Depuis la version 2.1 parue en décembre 2019, Condorcet PHP propose une version utilisable en ligne de commande. Ce qui constitue possiblement un véritable changement dans l’usage, l’outil devenant beaucoup plus accessible aux utilisateurs finaux sans connaissances en PHP et/ou n’ayant pas la volonté d’implémenter son API malgré sa simplicité.

L’application en ligne de commande est plus limitée, mais couvre cependant bien l’ensemble des usages imaginables, y compris la gestion de très grosses élections via l’activation du stockage SQLite. Aucune fonctionnalité nouvelle n’y est donc anticipée… peut-être quelques raffinements, un peu plus de documentation, quelques tests supplémentaires.

Docker, exécutables, paquets, interface graphique Image Docker

Autre nouveauté récente, dans la continuité de l’idée de permettre un usage de Condorcet directement par l’utilisateur final et non un produit réservé aux développeurs : l’introduction d’une distribution Docker officielle. Cela permet d’interagir très facilement et rapidement en ligne de commande. Toutefois, même si cela va dans le bon sens, Docker n’est pas parfaitement accessible non plus auprès du premier venu.

Exécutable

Une idée intéressante serait de pouvoir produire pour Windows un exécutable binaire, lançant automatiquement l’interface en ligne de commande. Cela en est resté à l’étape de projet, et aucun test ou évaluation sérieuse n’a encore été mené quant aux solutions techniques qui pourraient aider à y parvenir.

Paquets de distributions Linux

Il serait assez facile d’entretenir des paquets permettant d’accéder à la version en ligne de commande auprès de distributions Linux. Toutefois, n’en ayant là encore pas la compétence actuellement, cette idée est encore en attente.

Interface graphique

La solution d’accessibilité reine serait bien évidement de fournir une interface graphique et une distribution prête à l’emploi.
Pour poste de travail traditionnel ou applications mobiles, je n’en ai pas la compétence et ne désire par l’acquérir aujourd’hui. Toutefois, tout projet en ce sens est le bienvenu, et bénéficierait de mon support chaleureux.

Une interface graphique existe toutefois déjà, elle est maintenue par moi-même : www.condorcet.vote
Toutefois, je n’ai que peu de motivation à l’entretenir. C’était plus un projet de démonstration qu’un véritable service viable ; il n’offre pas toutes les possibilités de la bibliothèque Condorcet PHP sous-jacente, ni une stabilité irréprochable en l’état.

Documentation et lisibilité du code

Des efforts constants sont portés sur la documentation. La priorité absolue résidant dans le manuel et le Readme, puis dans les méthodes de l’API publique. La documentation est générée suivant l’usage d’un projet séparé sur mesure et dédiée (mais un peu exotique). Malheureusement, les méthodes internes sont encore très mal documentées. Et le code interne lui-même dispose de bien peu, bien trop peu, de commentaires.

L’adoption des normes PSR-5 et PSR-19 pourraient constituer un axe de refonte et de migration. L’adoption de celles-ci semblant au point mort, elles motivent donc assez peu à rationaliser tout cela.
Le projet Condorcet PHP n’ayant jamais récolté le moindre don, le maintien de la rébarbative documentation et des tests qualités relève de l’héroïsme et de l’abnégation la plus pure.

Autres méthodes de votes

Condorcet PHP ne gère pour l’instant aucune méthode de vote à sortie proportionnelle, dites « STV » (Scrutin à vote unique transférable) qui sont parfois homonymes à celles ici présentées (de par le nom de leurs auteurs). Celles gérées aujourd’hui sont celles qui fournissant un classement sans scores par candidats (ou du moins, non destiné à un quelconque usage proportionnel).
C’est une évolution future possible, qui pourrait s’intégrer dans l’architecture actuelle sans difficultés majeures. Par contre, leur complexité algorithmique, et le peu d’exemple de pseudo-codes et de documentation disponibles rendent actuellement leurs implémentations compliquées vis-à-vis de mes propres compétences.

Cependant, la quasi-totalité des méthodes standards dites de Condorcet sont aujourd’hui d’ores et déjà implémentées, ainsi que quelques méthodes d’autres familles, les plus courantes, comme le vote alternatif.

Perspectives d’activités

Le support reste assuré avec plaisir, et je serai heureux d’apprendre tout cas d’utilisation.
Le reste est plus aléatoire, et soumis à d’éventuelles pulsions soudaines.

Merci de votre lecture, c’est une longue dépêche !

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Revue de presse de l’April pour la semaine 15 de l’année 2020

mar, 14/04/2020 - 10:57

Cette revue de presse sur Internet fait partie du travail de veille mené par l’April dans le cadre de son action de défense et de promotion du logiciel libre. Les positions exposées dans les articles sont celles de leurs auteurs et ne rejoignent pas forcément celles de l’April.

[InformatiqueNews.fr] ERP et Open Source une équation génératrice de valeur

✍ Mehdi Nagati, le jeudi 9 avril 2020.

« Longtemps l’apanage des PME, l’open source séduit de plus en plus les grands groupes. Plus flexible et paramétrable ? Moins coûteux ? La réponse n’est pas toujours évidente tant les situations diffèrent. Voici quelques questions qu’il est utile de se poser avant de choisir l’open source pour son projet ERP. »

[Usbek & Rica] Pourquoi le Covid‑19 va (aussi) propager le mouvement maker

✍ Bastien Marchand, le jeudi 9 avril 2020.

« Face à la crise sanitaire, nos dirigeants, même les plus libéraux, brandissent des solutions économiques qui dans “le monde d’avant” auraient été écartées d’un revers de main ou bien n’avaient pas tenu leurs promesses : open source, impressions 3D, revenu universel, relocalisation de la production… Passage en revue des solutions maker à qui la situation offre une seconde chance. »

Et aussi :

[Dalloz] Brevet : sale temps pour la juridiction unifiée du brevet

✍ Cédric Meiller et Vincent Chapuis, le mercredi 8 avril 2020.

« Après l’annulation, le 20 mars, par la Cour constitutionnelle fédérale allemande de la loi ratifiant l’Accord sur la juridiction unifiée du brevet (JUB), un retour sur la construction de cette juridiction ainsi qu’un point sur ses perspectives s’imposent. »

Voir aussi :

[L’Usine Nouvelle] Les premiers détails de « Stop Covid », le projet d’application de tracking du gouvernement

✍ Marion Garreau, le mercredi 8 avril 2020.

Le cabinet du secrétaire d’État en charge du Numérique Cédric O a dévoilé, mercredi 8 avril, les contours d’un projet baptisé Stop Covid. Piloté en France par l’Inria, il vise à développer une application mobile qui alerte les individus précédemment croisés par une personne infectée. »

Et aussi :

[La Tribune] Covid‑19 : le monde d’après sera innovant ou ne sera pas

✍ David Menga et Xavier Dalloz, le mardi 7 avril 2020.

« Alors que le COVID‑19 se propage dans le monde entier, elle oblige l’humanité à innover, c’est‑à‑dire à faire plus, mieux, à moindre coûts, de meilleure qualité avec les mêmes ressources. »

[France Bleu] Dans le Poitou‐Charentes, des bénévoles recensent les commerces ouverts sur une carte participative

Le lundi 6 avril 2020.

« Pour éviter les déplacements inutiles, des cartographes bénévoles ont créé “Ça reste ouvert”, une carte collaborative où tout le monde peut indiquer l’ouverture ou la fermeture d’un commerce, ainsi que ses horaires. Des passionnés dans le Poitou‐Charentes nous expliquent. »

[Le Point] Jitsi, le service né en France qui veut vous faire oublier Zoom et Houseparty

✍ Guillaume Grallet, le lundi 6 avril 2020.

« Confinement oblige, ce service de visioconférence gratuit et open source, lancé en 2013, rencontre un vif succès, avec la bénédiction d’Edward Snowden. »

Voir aussi :

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Agenda du Libre pour la semaine 16 de l'année 2020

dim, 12/04/2020 - 19:55

N. D. M. : vu le contexte de pandémie de Covid‑19 et les restrictions locales ou nationales (Belgique, France, Québec et Suisse) sur les rassemblements, beaucoup d’événements sont annulés (dès que les organisateurs ont pensé à mettre à jour l’Agenda du Libre ou non). Nous avons donc retiré tous les événements en présentiel. « Restez chez vous ! » (et profitez‑en pour contribuer à des logiciels libres).

Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 7 événements (France: 7) est en seconde partie de dépêche.

Sommaire [FR Chez soi] Création graphique pour jeu vidéo - Du lundi 13 avril 2020 à 15h00 au mercredi 15 avril 2020 à 16h30.

Activdesign propose cette fois-ci la création d’assets graphique avec Inkscape pour un jeu sur Godot Engine en mettant à disposition gratuitement son équipe de tuteurs dans le cadre d’ateliers ouverts aux collégiens et lycéens.

Le principe : apprendre à concevoir des assets graphiques en 2D pour l’insérer dans le jeu créé avec Godot.

Elisa et Cédric, membres de l’équipe d’Activdesign et ayant écris plusieurs documentations sur Inkscape se proposent de vous accompagner dans la prise en main et la création d’illustrations. Cet atelier aura lieu les 13, 14 et 15 avril de 15h00 à 16h30.

Comment faire pour participer ?
- faire connaître son intention de participer en s’inscrivant sur https://activdesign.eu/gameart en notant le code « PAQUES20 » ;
- avoir un ordinateur à disposition avec une connexion internet le temps de l’atelier ;
- avoir Inkscape installé (au moins 0.92), Godot Engine 3.2 et un client FTP comme Filezilla.

Pour l’inscription, une adresse de courriel est demandée pour pouvoir informer d’éventuels changements. Cette adresse peut être créée pour l’occasion, mais il est préférable qu’elle reste active toute la durée de l’atelier, par précaution.

Comment cela se passera ?
Pour faciliter les échanges, le suivi se fera sur une plateforme en ligne spécifique disposant d’outil intégrés :
- une messagerie asynchrone ;
- une messagerie instantanée Riot (inscrivez‑vous au préalable avec l’appli mobile) ou
utilisez un client IRC sans inscription compatible, par exemple https://webchat.freenode.net/, mais qui ne permettra pas de faire de téléversement d’images ; le nom du salon sera notifié le moment venu ;
- client FTP (par exemple FileZilla) pour s’envoyer des fichiers (Git n’est pas retenu pour des raisons de simplicité d’accès et d’uniformité de pratique) ; les identifiants seront aussi notifiés le moment venu ;
- et quelques informations qui pourront être mises à jour au fur et à mesure des séances.

Les identifiants fournis permettront d’accéder à la plateforme pour la durée de l’atelier.

Nous espérons que cette initiative permettra de mieux faire découvrir les logiciels de qualité d’autant plus merveilleux qu’ils sont libres, et contribuer à l’émergence de nouveaux contenus qui en découle.

[FR Nantes] Webinaire : Utiliser WAPT dans un contexte de télétravail - Le mardi 14 avril 2020 de 14h00 à 15h00.

En cette période particulière, nous avons décidé d’organiser un webinaire pour rompre avec la monotonie du confinement ! Le thème principal sera l’utilisation de WAPT dans un contexte de télétravail !

Pour ce webinaire, nous avons décidé d’être encore plus à votre écoute, ainsi vous pouvez :

  • Nous suggérer les thèmes que vous voulez voir aborder dans ce webinaire.
  • Nous poser les questions pour profiter d’une réponse en live.
  • Intervenir pendant le live afin de nous faire un retour d’expérience sur la mise en place du télétravail.

Profitez-en pour être créatif, rendez-vous le 14 avril à 14h00 !

[FR Paris] Émission « Libre à vous ! » - Le mardi 14 avril 2020 de 15h30 à 17h00.

L’émission Libre à vous ! de l’April est diffusée chaque mardi de 15 h 30 à 17 h sur radio Cause Commune sur la bande FM en région parisienne (93.1) et sur le site web de la radio.

Le podcast de l’émission, les podcasts par sujets traités et les références citées sont disponibles dès que possible sur le site consacré à l’émission, quelques jours après l’émission en général.

Les ambitions de l’émission Libre à vous !

La radio Cause commune a commencé à émettre fin 2017 sur la bande FM en région parisienne (93.1) et sur Internet.

Depuis mai 2018, l’April anime une émission d’explications et d’échanges sur la radio Cause Commune sur les thèmes des libertés informatiques.

Libre à vous ! se veut avant tout une émission d’explications et d’échanges sur les dossiers politiques et juridiques que traite l’April, et sur les actions qu’elle mène.

Pour les libertés informatiques en général, et pour le logiciel libre en particulier.

Libre à vous ! c’est aussi un point sur les actualités du Libre, des personnes invitées aux profils variés, de la musique sous licence libre, des actions de sensibilisation.

Donner à chacun et chacune, de manière simple et accessible, les clefs pour comprendre les enjeux mais aussi proposer des moyens d’action, tel est l’objectif de cette émission hebdomadaire, qui est diffusée en direct chaque mardi du mois de 15 h 30 à 17 h.

L’émission dispose d’un flux RSS compatible avec la baladodiffusion ainsi qu’un salon dédié sur le webchat de la radio (salon #libreavous).

[FR Nantes] Visioconférence Monnaie Libre - Le mardi 14 avril 2020 de 19h30 à 21h00.

Dans le cadre de la transition écologique, la monnaie joue un rôle majeur.
La monnaie libre permet d’éviter l’accumulation, de garantir la valeur et
de privilégier l’humain.
Elle appartient à ses utilisateurs et non pas à une banque.
Elle est créée par les utilisateurs et non par la dette.
Elle participe pleinement à la phase de résilience qui va suivre les
bouleversements économiques majeurs qui s’annoncent.
Elle existe depuis 3 ans et ne nécessite aucun frais d’entrée ou de gestion.
Ce n’est pas une monnaie locale bien qu’elle puisse être utilisée localement.
Elle intègre un dividende universel attribué automatiquement chaque jour.

C’est une autre façon de voir le revenu universel et c’est opérationnel dès aujourd’hui.

À l’issue de la réunion vous aurez toutes les informations pour vous
lancer.

Pour rejoindre la réunion il faut suivre ce lien :Jitsi MonnaieLibreNantes
Pour toutes questions préalable voir forum.monnaie-libre.fr visio-conference-tout-les-mardi-soir

La réunion commence à 19h30, mais on teste les connexions à partir de 19h15. (privilégier le câble)
La présentation dure 20à 30mn et sera suivie de questions réponses.

Quelques vidéos de présentation sur youtube

[FR Montpellier] Contribution Wikicheznous - Du jeudi 16 avril 2020 à 00h00 au mercredi 6 mai 2020 à 23h59.

Wikimédia France vous propose de participer en ligne, depuis chez vous, à notre opération de contribution à la connaissance libre #WikiChezNous.

Cabalhérault, Montpel'libre et API : Action of Public Interest vous accompagne dans cette contribution, en vous expliquant comment contribuer à des moments d’échanges en ligne.

Histoire, culture, science, société, linguistique, littérature, photographie… Dans chacun de ces domaines, le mouvement Wikimédia a mis en place de très nombreuses plateformes pour libérer la connaissance et la rendre accessible à toutes et tous.

Comme chacun est invité à rester chez soi pour éviter la propagation du virus, c’est l’occasion pour vous de découvrir ou redécouvrir l’ensemble des projets Wikimédia, ainsi que notre projet de bibliothèque d’enregistrements audio Lingua Libre.

Un concours de contribution multiplateforme

Pour la première fois, Wikimédia France organise un concours de contribution qui se déroule simultanément sur plusieurs projets Wikimédia en plus de Lingua Libre, notre projet d’enregistrements audio libres. Vous pourrez donc non seulement contribuer à Wikipédia, projet phare de l’univers Wikimedia mais aussi à 10 autres plateformes !

Le but :

  • Inciter les contributeurs de Wikipédia à s’investir dans les autres projets hébergés par la Wikimedia Foundation.
  • Valoriser les personnes impliquées dans les projets Wikimédia moins connus, mais indispensables à la mise à disposition libre de toutes les formes de connaissances.
  • Récompenser le travail des bénévoles les plus prolifiques mais aussi des personnes qui profitent de l’événement pour s’y mettre.

Les prix :
Sur chacun des sites Wikimédia nous récompenserons l’internaute qui aura effectué le plus de contributions. Une série de prix reposant sur ces mêmes critères sera dédiée aux nouveaux contributeurs. Ce sont ainsi 22 lauréats, débutants et confirmés que nous saluerons d’un chèque lire d’une valeur de 200 €.

Comment participer :
Rien de plus simple, il vous suffit de vous connecter à notre campagne #WikiChezNous et de partir à l’aventure sur les différentes plateformes de diffusion de la connaissance libre ! Astuce, pour les personnes qui n’ont encore jamais contribué aux projets Wikimédia, vous pouvez vous créer un compte directement via notre page de campagne.

Jeudi 16 avril 2020 à 0h00 au mercredi 6 mail 2020 à 24h00 toute la journée
France

[FR Courbevoie] Atelier mon nouveau site Web - Le samedi 18 avril 2020 de 14h00 à 18h30.

L’association StarinuX vous convie à l’atelier

MON PREMIER SITE WEB (en visioconférence)

QUAND: samedi 18 avril à 14h00 PRÉCISES !

LIEU: atelier internet en ligne en VISIO-CONFÉRENCE.

DATE: samedi 18 avril 2020, de 14h00 PRÉCISES à 18h30.

INFOS de CONNEXION : vous recevrez toutes les informations lors de votre inscription.

Cet atelier a déjà eu lieu en visioconférence et a obtenu un indice de satisfaction de TRÈS SATISFAISANT.

LE PROGRAMME:
Mon 1ᵉʳ site web, 3ᵉ partie : la personnalisation :
Chaque personne devra indiquer le(s) thème(s) qui les intéresse(nt) lors de l’inscription :
- Introduction au langage PHP : l’exemple de la création du site web,
- JavaScript : quelques effets amusants,
- HTML : le formulaire,
- Le requêteur : l’exemple du single-page website.

PRÉ-REQUIS: aucun, vous pourrez aborder un des sujets du programme ci-dessus.

NIVEAU & PRÉ-REQUIS:
Débutant, cet atelier est conseillé à tous celles et ceux qui ont le projet de créer leur propre site Web, et avant, d’en comprendre les principes.

OUTILS:
Pour plus de précisions un glossaire est à disposition : https://portfolio.doobee.fr/?glossaire (clic).
D’autres thèmes seront proposés ultérieurement : JavaScript, exercices…

TOUTES INFOS: sacapuss@doobee.fr

Au plaisir de votre inscription et votre présence le 18 avril, bien à vous,

Le chargé événements de StarinuX

[FR Paris] Introduction au développement web. - Le samedi 18 avril 2020 de 14h00 à 18h00.

En collaboration avec l’association https://www.starinux.org je propose un webinaire mensuel : Introduction au développement web.

Les thèmes proposés sont les suivants :

  • Mon premier site web, première partie : le moteur;
  • mon premier site web, seconde partie : la personnalisation;
  • introduction au langage Php : l’exemple de la création du site web;
  • JavaScript, exercices : quelques effets intéressants;
  • un élément ubiquitaire, le formulaire (Php, Html, Css, JavaScript);
  • un objet ubiquitaire, le requêteur;
  • introduction aux Cascading Style Sheets, le langage de style du web.

Si tu prévois de participer, le 18 avril 2020, vote pour ton thème préféré, à https://portfolio.doobee.fr

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

John Conway n’avait plus assez de cases noires dans son voisinage

dim, 12/04/2020 - 19:53

Le célèbre mathématicien créateur du jeu de la vie a été emporté par l’épidémie actuelle. On peut noter toute l’ironie pour l’auteur d’un jeu d’un tel nom, emporté par un contact avec un autre humain, ou peut-être trop de contacts ? Dans le jeu de la vie, une cellule passe de l’état « vivant » (noire) à l’état « mort » (blanc) si elle n’a soit pas assez, soit trop de contacts, avec des cellules vivantes de son voisinage.

On lui doit également la suite qui est parfois donné en énigme. Si vous ne la connaissez pas, saurez-vous en comprendre la logique ?

1
11
21
1211
111221
312211
13112221
1113213211

(suite de Conway pour le divulgâchage)

Dans le domaine des mathématiques, il était connu pour sa théorie des jeux combinatoires et pour avoir inventé l’automate cellulaire du jeu de la vie, mais aussi pour avoir créé ou analysé divers jeux. Il a également œuvré dans le domaine de la géométrie, notamment sur les polychores uniformes et a décrit la notation de Conway des polyèdres et le groupe de symétrie du réseau de Leech. Il a contribué à la théorie des groupes, formulant notamment le corpus de conjectures « monstrous moonshine », reliant le groupe Monstre aux fonctions modulaires elliptiques (avec un lien avec la théorie des cordes en physique). Et pas seulement, puisqu’il a aussi des travaux en théorie des nombres (problème de Waring), algèbre (quaternions) et physique théorique (théorème du libre arbitre).


(source Wikipedia, par Thane Plambeck, licence CC By 2.0)

« John Conway pense qu’un résultat est d’autant plus intéressant qu’il est 'scandaleux' (outrageous). » (source article Pour la science)

Tiré d’un journal LinuxFr.org de 2013 sur les applications du dépôt f-droid : « DroidLife (GPLv3) est le jeu de la vie de Conway. Je vous laisse retrouver le planeur, symbole de la communauté hacker, au cours de vos essais. »

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Meilleures contributions LinuxFr.org : les primées de mars 2020

dim, 12/04/2020 - 19:53

Nous continuons sur notre lancée de récompenser celles et ceux qui chaque mois contribuent au site LinuxFr.org (dépêches, commentaires, logo, journaux, correctifs, etc.). Vous n’êtes pas sans risquer de gagner un livre des éditions Eyrolles ou ENI. Et en cette période de confinement, c'est à la fois le bon moment pour contribuer et augmenter ses connaissances sur un sujet qui vous plaît avec un livre ! Voici les gagnants du mois de mars 2020 :

Les livres gagnés sont détaillés en seconde partie de la dépêche. N’oubliez pas de contribuer, LinuxFr.org vit pour vous et par vous ! Et comme on vous aime, #RestezChezVous.

Certaines personnes n’ont pas pu être jointes ou n’ont pas répondu. Les lots ont été réattribués automatiquement. N’oubliez pas de mettre une adresse de courriel valable dans votre compte ou lors de la proposition d’une dépêche. En effet, c’est notre seul moyen de vous contacter, que ce soit pour les lots ou des questions sur votre dépêche lors de sa modération. Tous nos remerciements aux contributeurs du site ainsi qu’aux éditions Eyrolles et ENI.

Les livres sélectionnés :

#RestezChezVous

             Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Shooting Pactris, petit jeu libre mélangeant Pacman, Tetris et shmup

dim, 12/04/2020 - 17:56

Tout récemment publié, Shooting Pactris est un petit jeu libre (AGPLv3), un peu fou, mélangeant les univers de Pacman, Tetris et ceux de type shoot’em up (shmup). Il se joue à deux en coopération locale, ou en solo si vous aimez vraiment le défi !

Gameplay

Il s’agit de déplacer le vaisseau et Pacman pour survivre, chacun faisant face à des dangers différents. Le vaisseau protège Pacman en éliminant les fantômes, Pacman protège le vaisseau en mangeant les balles ennemies ! Et les deux doivent se répartir la lourde tâche de placer correctement les pièces de Tetris.

Développement et futur du jeu

Le jeu a été publié en version 0.9.1 (bêta), ainsi tous les commentaires et idées sont bons à prendre ! Développé par une seule personne à l’aide du superbe moteur Godot, il ira à son propre rythme, accéléré si d’autres rejoignent l’aventure. :)

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Électronique sous GNU/Linux — 15 ans de Libre plus tard

sam, 11/04/2020 - 21:20

Ça fait plus de quinze ans que mon ordi tourne sous GNU/Linux, que je profite des dépêches de LinuxFr.org et puis, là, je me suis dit : bon sang, que de chemin parcouru par le Libre et les libristes. Je venais tout juste de terminer un projet complet, balayant toutes les étapes de conception à l’utilisation, alors ça y est, il fallait raconter, partager…

Premier petit aparté pour signaler que je suis électronicien de métier (matériel et logiciel embarqué), que j’utilise les mêmes logiciels au boulot et que cet article serait le même si je présentais un projet de ma boîte, mais mon patron serait moins partant pour un tel déballage !


La première version fonctionnelle.

Sommaire L’histoire

Il y a un moment déjà, je me suis mis au bandonéon, qui est l’accordéon du tango. C’est un instrument qui peut être très sonore : pendant quelques années j’ai possédé une cabine acoustique (une sorte de cabine téléphonique pour faire des prises de voix par exemple), et puis j’ai déménagé, je l’ai revendue et je me suis de nouveau senti coincé par la vie en appartement. Il fallait que je trouve une solution pour m’exercer chez moi sans gêner les voisins. Il existe des systèmes MIDI qui s’adaptent sur des accordéons mais je n’ai rien trouvé de spécifique au bandonéon. Je me suis donc lancé dans ce projet pour continuer à jouer discrètement l’hiver chez moi (l’été, je m’installe au soleil).

La réalisation

Il y a plusieurs façons de détecter le déclenchement d’une note : la plus chic, celle qui ne modifie pas l’instrument, est l’installation d’aimants sur les touches et de capteurs magnétiques en face. Le bandonéon est un instrument très compact et la conception de circuits imprimés ad hoc a été nécessaire. J’ai conçu un ensemble de cartes, main droite, main gauche, intégrant les capteurs à effet Hall, de quoi les alimenter et un composant « tampon » qui stocke l’état de chaque capteur, c’est‑à‑dire de chaque touche. À cela, j’ai ajouté une carte Arduino Micro qui lit l’état des boutons et génère les évènements MIDI correspondants.

  Schéma électronique sous KiCad

  Circuit imprimé sous KiCad

Les schémas sont en blanc (Eeschema) et les circuits imprimés en noir (Pcbnew). Sinon ça ne pourrait pas fonctionner…

  Vue 3D du circuit imprimé depuis KiCad.

Le bandonéon est l’un des rares instruments stéréophoniques : les sonorités de la main droite sont différentes de celles de la main gauche car ce côté‑ci possède une petite caisse de résonance. Pour cette raison, et aussi pour éviter de passer du câble à l’intérieur soufflet, j’ai donc installé un module Arduino de chaque côté, générant donc deux instruments MIDI.

  Les aimants sont installés à l’aide de Patafix.

Côté ordinateur, les modules Arduino sont détectés comme des instruments MIDI, fluidsynth (sans JACK) s’occupe de faire le lien entre ces appareils MIDI et une banque de sons. On a souvent dit (moi aussi…) du mal de la gestion du son sous GNU/Linux. Eh bien, j’ai été stupéfait de voir que la mise en œuvre a été très simple et que mes modules Arduino ont causé du premier coup ! J’ai simplement câblé mes périphériques MIDI sur MuseScore, un éditeur de partitions, avec lequel je fais des transcriptions (repique d’un morceau à l’oreille). Là encore, chapeau : utilisation simple, logiciel stable, résultat nickel, bravo le Libre !
Pour jouer simplement, de manière autonome, je me suis fait un synthétiseur portable dédié. Je fais tourner FluidSynth sur un Odroid C1+ avec une cape Hi‑Fi qui sort en connecteurs RCA direction l’ampli. Et ça fonctionne.

Je ne sais pas qui peut être intéressé par ce projet, qu’importe, j’ai tout mis en ligne sur GitLab.

Au taf

Les différences avec le boulot (petite structure d’environ 25 personnes, dont 8 développeurs) :

  • pour le système d’exploitation, aucune : j’utilise la dernière Ubuntu ;
  • pour le schéma et le routage, aucune : j’utilise KiCad, pour des circuits qui font jusqu’à quatre couches avec des microcontrôleurs et un peu de HF — que de progrès depuis la première version que j’ai utilisée où la fonction « annuler » n’existait pas (sic) ; c’est complet, efficace, la gestion de schémas et routages sur d’anciennes versions réserve malheureusement quelques surprises ;
  • pour la mécanique, aucune : j’utilise aussi FreeCAD, essentiellement pour de la visualisation, mais aussi pour concevoir de petites pièces de test, généralement de l’impression 3D ;
  • sur Arduino : le code est un peu sale pour moi qui ai l’habitude du C embarqué, avec des bibliothèques bien rangées, un programmateur/débogueur fiable, etc. ; mais pour ce genre de choses simples, c’est tout à fait suffisant — il m’arrive d’ailleurs d’utiliser des modules Arduino au boulot dans le cadre de tests : rapides à mettre en œuvre, si je veux tester un composant, un capteur, c’est vite câblé et j’ai rapidement des réponses à mes questions ;
  • pour le logiciel embarqué, j’utilise les outils de ST Micro ou de Silicon Labs, essentiellement TrueStudio, qui est un Eclipse adapté aux microcontrôleurs ST, et je couple ça à une sonde Segger ; c’est lourd, pas libre, mais ça tourne en natif sur mon poste Ubuntu. Même chose pour mon multimètre numérique de chez OTII : il y a un paquet Debian. Ça n’est pas libre, mais le simple fait que ça tourne sous GNU/Linux, c’est vraiment un changement incroyable par rapport à tous les outils (Microchip, WinAVR…) qui pompaient GCC pour ne le faire tourner que sur du proprio.
D’autres projets

Le projet s’est un peu étalé (comme au boulot, finalement !) et, entretemps, d’autres idées, par ailleurs libres, ont été publiées :

La suite

Aucune. Pour le moment, je joue ! Bien sûr, c’est améliorable, et comme c’est libre, avec un peu de chance, ce sera fait par d’autres.

De l’USB sur une mécanique des années 60.

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Jitsi, Framasoft et CHATONS — émission « Libre à vous ! » du 7 avril 2020 — Podcasts et références

sam, 11/04/2020 - 10:15

Soixante‐et‐unième émission « Libre à vous ! » de l’April. Podcast et programme :

  • chronique de Luc sur le confinement ;
  • des nouvelles de Framasoft et du collectif CHATONS (Collectif des Hébergeurs Alternatifs, Transparents, Ouverts, Neutres et Solidaires) avec Angie Gaudion ;
  • le confinement et l’école avec Laurent Joëts, professeur de technologie en collège, et référent numérique de l’établissement ;
  • présentation de Jitsi avec son créateur Emil Ivov.

Suite au confinement de la population, l’émission a été diffusée dans des conditions particulières. Toutes les personnes ont participé à l’émission depuis chez elles. D’un point de vue technique, nous avons utilisé Jitsi Meet.

Rendez‑vous en direct chaque mardi de 15 h 30 à 17 h sur 93,1 MHz en Île‑de‑France. L’émission est diffusée simultanément sur le site Web de la radio Cause Commune.

Le programme de la prochaine émission est en ligne. Si vous avez des questions ou remarques pour l’un des sujets abordés, n’hésitez pas à les mettre en commentaires de cette dépêche.

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus

Atelier virtuel « game art » et création d’assets graphiques pour jeu vidéo

jeu, 09/04/2020 - 11:03

Dans la continuité de l’atelier game design et création de jeu avec Godot anti‑confinement qui a eu lieu la semaine dernière, Activdesign propose cette fois‑ci la création d’assets graphiques avec Inkscape pour un jeu sur Godot Engine.

Nous mettons à disposition gratuitement notre équipe de tuteurs dans le cadre d’ateliers virtuels ouverts aux collégiens et lycéens. Le principe est identique : apprendre à concevoir des assets graphiques en 2D pour les insérer dans le jeu créé avec Godot.

Elisa, membre de l’équipe d’Activdesign ayant écrit plusieurs documentations sur Inkscape, et Cédric, contributeur à Inkscape et aussi auteur de livres sur le sujet, se proposent de vous accompagner dans la prise en main et la création d’illustrations.
Cet atelier virtuel aura lieu les 13, 14 et 15 avril de 15 h à 16 h 30.

Comment faire pour participer ?
  • faire connaître son intention de participer en s’inscrivant sur la page Web dédiée en notant le code « PAQUES20 » ;
  • avoir un ordinateur à disposition avec une connexion Internet le temps de l’atelier ;
  • avoir Inkscape installé (au moins 0.92), Godot Engine 3.2 et un client FTP comme Filezilla.

Pour l’inscription, une adresse de courriel est demandée pour pouvoir informer d’éventuels changements (annulation si pas assez d’inscrits). Cette adresse peut être créée pour l’occasion, mais il est préférable qu’elle reste active toute la durée de l’atelier, par précaution.

Comment cela se passera ?

Pour faciliter les échanges, le suivi se fera sur une plate‑forme en ligne spécifique disposant d’outils intégrés :

  • une messagerie asynchrone ;
  • une messagerie instantanée Riot (inscrivez‑vous au préalable avec l’appli mobile) ou utilisez un client IRC sans inscription compatible, par exemple le webchat de Freenode, mais qui ne permettra pas de faire de téléversement d’images, le nom du salon sera notifié le moment venu ;
  • un client FTP (p. ex. FileZilla) pour s’envoyer des fichiers (Git n’est pas retenu pour des raisons de simplicité d’accès et d’uniformité de pratique), les identifiants seront aussi notifiés le moment venu ;
  • et quelques informations qui pourront être mises à jour au fur et à mesure des séances.

Les identifiants fournis permettront d’accéder à la plate‑forme pour la durée de l’atelier.

Nous espérons que cette initiative permettra de mieux faire découvrir les logiciels de qualité d’autant plus merveilleux qu’ils sont libres, et contribuer à l’émergence de nouveaux contenus qui en découle.

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Catégories: Les actus