Paul Ezvan : Let's Encrypt et Drupal 7

Le vieux certificat SSL fournit par Gandi pour www.ezvan.fr a expiré sans crier gare ! Je n’ai pas accès au compte qui gère le domaine, me voilà donc en train d’essayer de créer un certificat avec Let's Encrypt.
Let's Encrypt est une autorité de certification qui fournit des certificats SSL gratuits, donc plus aucune excuse pour ne pas utiliser SSL correctement !
La validation du certificat est faite automatiquement, à l’aide d’un outil nommé cerbot. Il génère un fichier “ACME challenge” qui doit être accessible via le domaine validé.
Dans mon cas j’utilise la commande suivante. Je spécifie le chemin d’installation de Drupal (qui fait tourner ce site) et demande à cerbot de configurer Apache pour utiliser le nouveau certificat.

% sudo certbot --authenticator webroot --installer apache --webroot -w /usr/share/drupal7 -d www.ezvan.fr

Malheureusement tout ne se passe pas comme prévu !

 - The following errors were reported by the server:

   Domain: www.ezvan.fr
   Type:   unauthorized
   Detail: Invalid response from
   http://www.ezvan.fr/.well-known/acme-challenge/UWXvHv0ueIHLLooJIcIfdD2OiuNipVF5TuSc0dXnXd0:
   "
   
   403 Forbidden
   
   Forbidden"

Que se passe-t-il ? Drupal interdit l’accès direct aux fichiers placés dans son arborescence pour des raisons de sécurité. L’emplacement du fichier acme-challenge est standard (RFC 5785 mais la version 7 de Drupal ne la prend pas en compte, et donc interdit l’accès.
Heureusement je ne suis pas le seul à avoir eu ce problème, et il existe déjà un patch pour autoriser l’accès à ce répertoire. Après avoir appliqué ce patch au fichier .htaccess situé à la racine du répertoire Drupal, je peux relancer la commande avec succès.

 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.ezvan.fr/fullchain.pem. Your cert will
   expire on 2018-11-16. To obtain a new or tweaked version of this
   certificate in the future, simply run certbot again with the
   "certonly" option. To non-interactively renew *all* of your
   certificates, run "certbot renew"

Et voilà mon certificat est configuré ! Je peux maintenant vérifier que j’obtiens un score correct sur le site SSL Labs.

Articles: 
Thème: 

Gravatar de Paul Ezvan
Original post of Paul Ezvan.Votez pour ce billet sur Planet Libre.

DVDStyler v3.0.4

Catégorie : Multimédia - Tags : DVD, video

DVDStyler intègre tous les outils nécessaires pour créer des menus personnalisés pour les DVD vidéo. Plusieurs maquettes prédéfinies y sont proposées, et l'utilisateur pourra concevoir ses propres modèles. Plusieurs éléments des menus peuvent être personnalisés. L'utilisateur pourra choisir une photo dans sa bibliothèque et l'utiliser comme image de fond. La police des titres est aussi personnalisable. Les menus offrent un accès rapide aux différents chapitres d'un film. Le logiciel permet d'afficher un aperçu de chacun d'eux à l'aide d'extraits des vidéos contenues dans le disque. Les menus créés avec DVDStyler peuvent être agrémentés de divers éléments qui rendent la navigation plus aisée. Il est par exemple possible d'ajouter des boutons de déplacement entre les différents chapitres.

Lien officiel

Les fourberies du Dark UX

L’expérience utilisateur (abrégée en UX pour les professionnels anglophones) est une notion difficile à définir de façon consensuelle, mais qui vise essentiellement à rendre agréable à l’internaute son parcours sur le Web dans un objectif le plus souvent commercial, ce qui explique l’intérêt particulier que lui vouent les entreprises qui affichent une vitrine numérique sur le Web.

Sans surprise, il s’agit de monétiser l’attention et les clics des utilisateurs. L’article ci-dessous que Framalang a traduit pour vous évoque les Dark UX, c’est-à-dire les techniques insidieuses pour manipuler les utilisateurs et utilisatrices. Il s’agit moins alors de procurer une expérience agréable que d’inciter par toutes sortes de moyens à une série d’actions qui en fin de compte vont conduire au profit des entreprises, aux dépens des internautes.

Comment les artifices trompeurs du Dark UX visent les plus vulnérables

article original How Dark UX Patterns Target The Most Vulnerable

par Ben Bate, Product Designer

Traduction Framalang : jums, maryna, goofy, sonj, wyatt, bullcheat + 1 anonyme

Les pièges du Dark UX permettent aux entreprises d’optimiser leurs profits, mais au détriment des plus vulnérables, et en dégradant le Web pour tout le monde.

Il faut voir l’expérience utilisateur basée sur ces astuces comme un moyen d’orienter les utilisateurs et utilisatrices vers un certain comportement. Leurs actions ainsi prédéfinies servent les intérêts des entreprises à la manœuvre, et les utilisateurs en sont pour leurs frais d’une manière ou d’une autre. Quelquefois sur le plan financier, d’autres fois au prix des données personnelles ou même au détriment de leurs droits.

Les astuces les plus connues incluent de la publicité déguisée, un ajout insidieux de nouveaux objets dans le panier de l’utilisateur, une annulation de souscription particulièrement difficile, ou encore une incitation à dévoiler des informations personnelles que les utilisateurs n’avaient pas l’intention de dévoiler. La liste s’allonge de jour en jour et devient un problème de plus en plus préoccupant.

À l’instar des mastodontes du Web tel qu’Amazon et Facebook, la concurrence suit. Faisant peu à peu passer ces astuces dans la norme. Il existe une différence entre marketing bien conçu et tromperie. Ces pratiques s’inscrivent dans cette dernière, et se concentrent uniquement sur l’exploitation des utilisateurs et utilisatrices par des moyens peu respectables.

Pour bien mesurer l’étendue de l’application de ces techniques, en voici quelques exemples.
Tout d’abord, Amazon. Voici l’exemple d’un rendu d’affichage pour tous les utilisateurs qui ne sont pas des membres premium (Amazon Prime). La première incitation au clic est frontale en plein milieu de l’écran. Alors que l’on pourrait s’attendre à un bouton « Suivant » ou « Continuer », ce bouton débite directement 7,99 £ de votre carte bleue. L’option pour continuer sans être débité est située à côté du bouton. Elle est présentée sous la forme d’un simple lien hypertexte peu visible au premier coup d’œil, celui se confondant avec le reste de la page.

Pour les moins avertis, comme les personnes âgées, les personnes peu habituées à la langue, ou celles qui souffrent d’un handicap, ce type de pratiques peut provoquer beaucoup de perplexité et de confusion.

Même pour un concepteur habitué à ce genre de pratiques, il est extrêmement facile de tomber dans le panneau. Sans parler des désagréments que cela entraîne et qui peuvent rompre la confiance établie entre l’entreprise et le consommateur.

Dans un monde idéal, Amazon tirerait avantage d’un format simple à lire avec un appel à l’action élémentaire qui permettrait aux utilisateurs de passer outre et continuer. Mais en réalité, les détails sont cachés en tout petits caractères, trop petits à lire pour un peu plus de 5 % de la population mondiale. Les informations sont présentées dans un format bizarrement structuré avec un mélange perturbant de textes en gras de divers poids, de couleurs différentes et une telle quantité de texte qu’on est dissuadé de tout lire.
Tant que de telles pratiques seront légales et ne cesseront de connaître un taux de conversion élevé, les entreprises continueront à les employer.

Pendant qu’Amazon s’attaque aux portefeuilles des consommateurs les plus fragiles, Facebook préfère se concentrer sur ses utilisateurs en leur faisant partager un maximum d’informations les concernant, même si ceux et celles qui partagent le font à leur insu. Même si Facebook a fait des progrès sur les questions de confidentialité par rapport à des versions précédentes, l’entreprise continue d’utiliser des techniques de conception subtiles mais insidieuses et déroutantes, comme on peut le voir dans l’exemple ci-dessous.
On a beau passer en revue chaque paramètre de confidentialité et sélectionner « Seulement moi », les sections qui contiennent des informations très personnelles et détaillées sont toujours partagées publiquement par défaut. Il ne s’agit pas seulement d’un problème de confidentialité, mais aussi de sécurité. La facilité avec laquelle les pirates peuvent ensuite obtenir des informations pour répondre à des questions de sécurité est stupéfiante. La liste déroulante est subtile et ne demande pas autant d’attention que l’appel à l’action principale. Des fenêtres modales utilisent des mini-instructions pour tromper les utilisateurs. Voyez par exemple :

À première vue, rien ne semble trop bizarre, mais en y regardant de plus près, il devient clair que Facebook incite fortement ses utilisateurs à partager leur bio sur le Fil d’Actualités. Pour cela, il est suggéré qu’en cliquant sur Cancel (Annuler), vous annulez les modifications que vous avez faites à votre bio. En réalité, Cancel signifie Non. Là encore, c’est un genre de pratique qui peut induire en erreur même les personnes les plus vigilantes sur leur confidentialité. Pour les autres cela démontre jusqu’où Facebook est prêt à aller pour que les utilisateurs partagent et interagissent toujours plus. Menant ainsi à des profits publicitaires de plus en plus conséquents.

Dans l’industrie des produits et de la conception de sites Web, l’esthétique, les techniques de vente et les profits passent souvent bien avant l’accessibilité et le bien-être des utilisateurs. Shopify, LinkedIn, Instagram, CloudFlare, et GoDaddy sont seulement quelques noms parmi ceux qui ont de telles pratiques pour avoir un impact sur leur profit.
Ça peut être simplement de faire un lien de désabonnement de mail écrit en tout petits caractères. Ou de rendre impossible la fermeture de votre compte. Ou quelque chose de plus subtil encore, comme de vous obliger à donner votre identité et votre adresse complète avant de fournir une estimation des frais d’expédition d’un achat. Mais ce sont bien de telles pratiques trompeuses pour l’expérience utilisateur qui dégradent de façon sévère l’accessibilité et l’utilisabilité du Web.

Pour la plupart d’entre nous, c’est simplement une nuisance. Pour les personnes les moins averties, cela peut rendre les sites presque impossibles à utiliser ou à comprendre. Il se peut qu’elles ne puissent pas trouver ce lien de désabonnement caché. Il se peut qu’elles ne remarquent pas que quelque chose a été ajouté à leur panier au moment de passer à la caisse. Et elles peuvent être plongées dans la plus totale confusion entre les paramètres de confidentialité, les publicités déguisées et les spams d’apparence amicale.

Le Web est devenu un endroit où vous devez être extrêmement conscient et informé dans des domaines comme la sécurité, la vie privée et les trucs et tromperies, même venant des grandes entreprises les plus réputées au monde. Ce n’est tout simplement pas possible pour tout le monde. Et ici on parle de tromperies, on n’aborde même pas les questions bien plus vastes d’accessibilité comme la lisibilité et les choix de couleurs.

Les concepteurs et les équipes doivent être conscients de leur responsabilité non seulement envers les clients, les employeurs et les actionnaires, mais aussi envers les utilisateurs au quotidien. Les problèmes d’accessibilité et les astuces trompeuses impactent le plus durement les plus vulnérables, et il en va de la responsabilité de chacun au sein des équipes de produits et de marketing de veiller à ce qu’il existe des garde-fous.

Tant que de meilleures réglementations et lois ne seront pas mises en place pour nous en protéger, il est du devoir des équipes de concevoir des pages de façon responsable et de maintenir un équilibre entre le désir de maximiser le profit et la nécessité de fournir une accessibilité optimale à tous ceux et celles qui utilisent le Web.

* * *

D’autres lectures en anglais sur le même sujet

… et cet autre article en français, repéré par Khrys dans son Expresso :

Haiku a 17 ans

Les années passent, et Haiku est toujours là !

Le projet, inspiré du système d'exploitation BeOS, a démarré le 18 août 2001, avec le fameux message « So, let’s start » (« Bon, allons‐y ») sur sa liste de discussion. Alors nommé OpenBeOS, le projet avait été créé peu après l’annonce du retrait de Be du marché des ordinateurs de bureau.

Cet anniversaire est l’occasion de faire le point sur les progrès de Haiku cette année (en l’absence de nouvelle version publiée depuis la version alpha 4 en 2012, il faut bien trouver un prétexte pour donner des nouvelles de temps en temps).

Sommaire

Présentation de Haiku

Pour ceux qui n’auraient jamais entendu parler de Haiku, il s’agit d’un système d’exploitation pour les ordinateurs personnels (par opposition, d’une part aux serveurs, d’autre part aux smartphones, tablettes, et autres systèmes embarqués). Il est une réécriture de BeOS, un système propriétaire abandonné en 2001.

D’un point de vue technique, ses particularités sont une base de code presque intégralement en C++ (oui, même le noyau) et généralement reconnue pour sa clarté et sa lisibilité (oui, même si c’est du C++), son approche de la programmation très multi‐thread (chaque fenêtre ouverte par une application a son propre fil d’exécution, par exemple), et la présence d’une API complète et cohérente pour faciliter le travail des développeurs d’applications.

D’un point de vue utilisateur, l’objectif est d’avoir un système facile à utiliser et à appréhender (pas de surprise ou de comportements inattendus), réactif, tout en restant flexible et capable de faire ce qu’on attend de lui.

Pourquoi un clone de BeOS ?

À l’origine, Haiku est pensé pour fournir une continuité aux utilisateurs de BeOS et aux développeurs d’applications qui ne souhaitaient pas migrer vers un autre système.

Cependant, 17 ans plus tard, BeOS est mort et enterré, et Haiku n’a pas réussi à fournir une version stable dans les temps. La plupart des développeurs d’applications sont passés à autre chose depuis. Cet objectif initial n’a donc pas été atteint en temps utile.

Cependant, Haiku reste un projet pertinent aujourd’hui, car aucun système libre n’a vraiment pris la place que BeOS a libéré (dit autrement, non, ce n’est toujours pas l’année de GNU/Linux sur le Desktop).

Le maintien de la compatibilité avec BeOS garde également un intérêt, pas pour les utilisateurs mais pour l’organisation du projet :

  • elle permet de garder un objectif à peu près raisonnable en vue, c’est‐à‐dire qu’on peut rejeter les propositions de nouvelles fonctionnalités en disant « ce n’était pas dans BeOS » ;
  • elle permet de comparer l’implémentation des API avec celle de BeOS, pour décider si un problème vient d’une application ou d’un problème d’implémentation côté Haiku ;
  • elle permet enfin d’expérimenter les difficultés à maintenir pendant plus de 15 ans la compatibilité de l’ABI, et à réfléchir à la meilleure façon de procéder pour assurer la compatibilité entre les futures versions de Haiku.

Cependant les désavantages (utilisation de GCC 2, impossibilité d’implémenter certaines choses ou de résoudre certains problèmes de sécurité qui nécessiteraient de changer l’API) se font de plus en plus pressants, c’est pourquoi il existe maintenant une version 64 bits de Haiku qui peut s’affranchir de certaines de ces contraintes.

Toujours pas de version bêta

La dernière version publiée par Haiku est la version R1 alpha 4.1, qui date de novembre 2012. De très nombreux progrès ont été faits depuis, et en particulier un gros chantier sur l’infrastructure d’hébergement du projet permettant de mettre en place un dépôt de paquets pour tous les utilisateurs (ce sera l’une des grosses nouveautés de la prochaine version R1 bêta 1).

Si on avait su que cela prendrait autant de temps, on se serait probablement organisé autrement, afin de pouvoir publier quelques versions alphas supplémentaires et faire patienter les gens. Pour l’instant, il vaut vraiment mieux télécharger un « nightly build » pour essayer Haiku.

Nouveautés de l’année

Corrections de bogues

Il y en a beaucoup trop pour les détailler. Haiku est de plus en plus stable. Le portage d’applications venues d’autres systèmes, et la mise en place de machines fonctionnant sous Haiku pour la compilation des paquets présents dans les dépôts a permis (même si ce n’était pas le but initial) de tester le système de façon beaucoup plus intense. De nombreux problèmes difficiles à reproduire ont ainsi pu être plus facilement identifiés, puis résolus.

La compatibilité POSIX s’améliore, le noyau fait de plus en plus de vérifications pour éviter les « panics » lors d’appels systèmes avec des paramètres invalides.

Un bogue mérite une mention spéciale, la méthode Split() permettant de découper une chaîne de caractères à l’endroit où elle contient un séparateur ne fonctionnait pas correctement. Il est surprenant que ce problème n’ait jamais été détecté auparavant.

Nous avons également corrigé plusieurs problèmes d’alignement de la pile (dans le fil d’exécution principal, les handlers de signaux, et dans le noyau) qui empêchaient l’utilisation fiable d’instructions SSE2. Le problème a été mis en évidence au départ dans le navigateur web, il a donc fallu creuser assez loin dans le système pour le corriger !

Infrastructure

Le vénérable serveur baron, qui hébergeait l’ensemble des services de Haiku (système de suivi, dépôts Git, site Web…) depuis fin 2009 est en train d’être mis à la retraite.

Il est remplacé par maui, un serveur plus récent, qui utilise des conteneurs docker plutôt que des machines virtuelles pour isoler les différents services.

C’est une opportunité pour revoir entièrement la façon de gérer le serveur. Baron était administré principalement par une personne qui faisait les changements directement. Mais avec le temps, de plus en plus de services ont été mis en place et il devenait trop difficile pour une seule personne de tout suivre. Le nouveau serveur est configuré à partir de dockerfiles qui peuvent donc être relus et modifiés par plusieurs personnes.

D’autre part, un gros changement est le déploiement de Gerrit pour la revue de code. Précédemment, les contributeurs attachaient des correctifs dans leurs rapports de bugs et la revue était faite à partir de ces fichiers, ce qui est assez peu pratique. Gerrit permet de faire une revue plus facilement, et il est donc également utilisé par les développeurs (qui pourraient directement envoyer leurs changements sur la branche principale du dépôt Git) pour obtenir une relecture de leurs changements.

En ce qui concerne l’hébergement des dépôts de logiciels, nous avons enfin tout mis en place pour compiler automatiquement les logiciels à partir de recettes fournies par le projet haikuports. Un système de miroirs est en train de se mettre en place, avec pour l’instant deux serveurs situés aux États‐Unis et en Nouvelle‐Zélande (en plus du serveur principal situé en Allemagne).

Les paquets binaires sont donc rapidement disponibles dans HaikuDepot (le gestionnaire de paquets de Haiku) dès la publication des recettes permettant de les construire.

Pilotes de périphériques

Comme pour n’importe quel système d’exploitation, un point délicat est de pouvoir fonctionner correctement sur le plus d’ordinateurs possibles. Cela passe par l’écriture de pilotes pour tous les périphériques.

C’est donc une partie de Haiku qui est assez active et il serait difficile de recenser précisément tous les changements intervenus dans l’année. Mentionnons quand même le support des boutons « étendus » pour les pavés tactiles Synaptics et un début de support de leur « clickpad » ; la possibilité d’utiliser une imprimante connectée sur un port série; des évolutions sur les pilotes graphiques Intel et Radeon pour prendre en charge plus de versions du matériel; et de petites améliorations sur le pilote de cartes son hda (qui est utilisé sur tous les ordinateurs à base de chipset Intel).

Mise à jour des pilotes réseau

Pour gagner du temps, Haiku réutilise les pilotes développés pour FreeBSD via une couche de compatibilité.

Jusqu’à l’année dernière, les pilotes de FreeBSD 9 étaient utilisés, mais aujourd’hui nous utilisons ceux de FreeBSD 11. Cela augmente le nombre de cartes réseau prises en charge et corrige de nombreux problèmes d’instabilité de la connexion.

D’autre part, un gros travail a été fait sur la pile TCP pour compléter l’implémentation de diverses RFC permettant d’obtenir de meilleures performances.

Prise en charge de l’USB 3

Le pilote xHCI est maintenant fonctionnel sur la plupart des machines, même s’il ne fonctionne pas encore parfaitement. Cela devenait nécessaire, car de plus en plus d’ordinateurs ne proposent plus du tout de ports USB 2.

Pilotes VirtIO

Les pilotes VirtIO sont maintenant pleinement fonctionnels. VirtIO est un bus utilisé par des machines virtuelles pour remplacer certains périphériques et éviter d’émuler un matériel réel. En utilisant une interface simplifiée, l’écriture des pilotes est facilitée et les performances sont meilleures.

Haiku peut maintenant utiliser les cartes réseau, le « ballonnement » de la mémoire (mémoire vive qui peut être redimensionnée en fonction des besoins de l’hôte et des machines émulées), et le stockage de masse sur VirtIO.

Mise à jour du navigateur Web

Le navigateur fourni avec Haiku est basé sur un portage de WebKit. Nous avions l’an dernier un an et demi de retard sur la version de WebKit en amont. Nous avons rattrapé une partie de ce retard puisque nous utilisons aujourd’hui une version datant de janvier 2018.

Ceci permet d’accéder à des sites Web modernes, même si de nombreux problèmes subsistent au niveau du rendu ainsi que de l’implémentation du protocole HTTP (moins simple qu’il n’y paraît à mettre en œuvre correctement).

En attendant, les navigateurs Qupzilla et Otter browser, en Qt, permettent de visiter certains sites que WebPositive, le navigateur natif, ne parvient pas encore à traiter.

Media Kit

Le Media Kit prend en charge tous les aspects multimédia (audio et vidéo, principalement) dans Haiku. Il permet aux applications d’exposer des nœuds qui sont connectés dans un graphe, un peu à la façon de Jack ou GStreamer sous GNU/Linux.

Ajout du BMediaClient

L’écriture de nœuds média demande beaucoup de travail répétitif et inutilement complexe. Une nouvelle classe BMediaClient a donc été introduite qui propose de prendre en charge la plupart de cet effort et donc de proposer une interface plus simple à aborder aux développeurs.

Passage à FFmpeg 4

Haiku utilisait encore pour sa version GCC 2 une version 0.10 de FFmpeg, car il était impossible de compiler des versions plus récentes. Cela empêchait l’utilisation des API modernes de FFmpeg et commençait à poser problème pour la prise en charge de formats de fichiers récents.

La solution mise en place consiste à compiler ffmpeg avec GCC 7, mais à faire l’édition de lien de façon compatible avec GCC 2. Pour l’instant, cela semble fonctionner dans ce cas précis. Nous allons donc pouvoir moderniser le greffon de décodage audio et vidéo basé sur FFmpeg, qui traite dans Haiku la plupart des formats de fichiers.

Gestion du mode hybride 32/64 bits

La version 64 bits de Haiku ne peut actuellement pas exécuter d’applications 32 bits. Il est probable que la version 32 bits soit un jour complètement abandonnée, mais pour cela il faudra proposer une solution pour que les utilisateurs puissent migrer vers la version 64 bits en conservant leurs applications.

La gestion de l’exécution des applications 32 bits sur un noyau 64 bits est donc un des chantiers en cours. Cela pose un certain nombre de problèmes au niveau de l’interface entre le noyau et l’espace utilisateur, les appels systèmes devant traiter les données dans le bon format selon l’application utilisée.

La première étape déjà franchie est l’intégration de SMAP et SMEP, qui permettent de s’assurer que le noyau n’accède pas par erreur aux données en espace utilisateur (la protection dans l’autre sens étant déjà assurée par la MMU). On a pu grâce à cette vérification clairement identifier tous les endroits ou de tels accès sont effectués, ce qui permettra de repérer facilement s’il est nécessaire ou pas de faire une conversion 32 <=> 64 bits. De plus, on gagne en sécurité puisqu’il sera plus compliqué pour une application d’utiliser un appel système de façon détournée pour lire ou écrire dans la mémoire du noyau.

Passage à GCC 7

Haiku dans sa version 32 bits est fourni avec deux compilateurs, une version 2.95.3 de GCC qui permet d’assurer la compatibilité binaire avec BeOS, et un GCC plus récent permettant de compiler les applications modernes (la version 64 bits de Haiku n’assure pas pour l’instant de compatibilité, et donc fournit uniquement une version moderne de GCC).

L’année dernière, la version « moderne » utilisée était GCC 5.4. Nous utilisons maintenant la version 7.3. La migration a été l’occasion de corriger quelques bogues dans Haiku qui l’empêchaient de démarrer avec les nouvelles optimisations proposées par GCC.

Le travail est déjà en cours pour le passage à GCC 8, qui lève de nouveaux warnings (une grande partie de Haiku est bien entendu compilée avec le drapeau -Werror, donc les warnings ne sont pas admis).

Le retour de Cosmoe

Cosmoe est un projet consistant à porter l’espace utilisateur de Haiku sur un noyau Linux ou BSD. Il n’a jamais abouti à quelque chose de fonctionnel, mais plusieurs développeurs (impliqués dans Haiku ou pas) ont repris le projet de temps en temps pour y faire quelques mises à jour.

Cette fois, le projet a été repris par Dario Casuolinovo alias Barrett, qui a travaillé sur Caya (notre client de messagerie instantanée) et sur le Media Kit de Haiku. Son travail sur le Media Kit l’a convaincu que le noyau utilisé dans Haiku n’était plus pertinent aujourd’hui et qu’il valait mieux l’abandonner pour quelque chose d’autre. Nous verrons si Cosmoe arrive à percer cette fois‐ci.

Les membres du projet Haiku pensent que leur noyau reste pertinent (pour diverses raisons, en particulier le fait qu’il est écrit en C++ et qu’il offre une ABI stable pour les pilotes de périphériques) mais sont heureux de voir émerger d’autres projets inspirés par BeOS.

LibreOffice pour Haiku

Ça y est ! après plusieurs tentatives (quand on a commencé, le projet s’appelait encore OpenOffice…), nous avons enfin une version de LibreOffice pour Haiku.

Cela a été rendu possible par le gros travail chez LibreOffice pour simplifier leur système de compilation, et également par le système de paquets de Haiku qui a permis de capitaliser et de mutualiser le portage des dépendances de LibreOffice.

Bien qu’une grande partie des efforts a été faite pour avoir une version native, c’est finalement l’apparition d’un back‐end Qt dans LibreOffice qui a permis d’avoir une version fonctionnelle le plus rapidement.

La disponibilité d’une suite bureautique moderne est un point important, d’une part parce qu’on peut maintenant présenter Haiku sérieusement comme un système utilisable pour faire un peu de bureautique et de navigation Web, et d’autre part parce que LibreOffice remplace GoBe Productive, l’une des dernières applications BeOS non libres et encore utilisées (la prochaine sur la liste est Sync Modular — avis aux volontaires). On peut donc commencer à envisager plus sereinement l’abandon de la compatibilité binaire avec BeOS.

D’autres langages de programmation

Le langage Rust est à la mode, il était donc indispensable d’avoir une version pour Haiku et c’est maintenant chose faite. Rust 1.28 contient tous les correctifs nécessaires pour compiler directement sur Haiku, sans modifications.

Mentionnons aussi une version de Swift qui est arrivée cette année, la prise en charge de Fortran disponible par défaut dans GCC, et des progrès pour avoir une version de Free Pascal complètement opérationnelle. Ceci, bien sûr, en plus de tous les langages qui fonctionnaient déjà très bien auparavant : Python 2 et 3, Lua, Perl, C, C++ et de nombreux autres.

Java et Go ont été disponibles quelque temps, mais ont disparu des dépôts lors de l’automatisation des builds. L’ancien paquet pour Java 7 fonctionne, la version de Java 8 disponible plante au démarrage, et il n’y a pas encore eu de tentative pour les versions suivantes. Du côté de Go, une version assez ancienne était fonctionnelle, mais il est maintenant impossible de la compiler, car les sources référencent des dépôts hébergés par code.google.com, maintenant fermé. Avis aux volontaires pour remettre tout ça en route.

Enfin, il semble utile de présenter yab, une divergence de yabasic qui permet de développer des applications graphiques pour Haiku. Il n’était plus vraiment maintenu, mais quelques développeurs l’utilisant se sont un peu mis au C++ pour faire les évolutions nécessaires. Il est maintenant disponible dans les dépôts, l’interpréteur étant distribué sous forme d’une bibliothèque partagée qui peut être utilisée par tous les programmes écrits en yab.

Prise en charge de l’UEFI

Il est maintenant possible d’installer Haiku sur une machine UEFI. Actuellement ce n’est pas intégré dans les « nightly builds » générés par nos buildbots, il s’agit d’une image séparée contenant uniquement un chargeur de démarrage UEFI. Plus tard, ce sera intégré aux images « anyboot » (qui disposent également d’un MBR pour démarrer depuis une clé USB, et d’un chargeur « el torrito » pour démarrer quand elles sont gravées sur un CD).

Améliorations de l’interface utilisateur

Là encore, beaucoup trop de changements pour tous les lister, mais les applications fournies avec Haiku ont vu de nombreux petits changements. Cela va du comportement des menus ouverts trop près du bord de l’écran, à une meilleure prise en charge des écrans haute résolution (il suffit de choisir une taille de police de caractères appropriée, le reste de l’interface doit s’adapter en fonction).

Launch Daemon

Le Launch Daemon est chargé de l’exécution des services, et du séquençage du démarrage et de l’arrêt du système.

Les évolutions cette année portent sur la gestion des logs, une réécriture de la procédure d’arrêt pour éviter d’éteindre la machine avant que l’utilisateur ait pu enregistrer tous les changements dans des applications ouvertes (dans certains cas tordus). Il reste néanmoins bien plus léger que systemd.

Évènements et conférences

Comme chaque année, Haiku était présent au FOSDEM, au Capitole du Libre, aux JDLL et aux RMLL. L’occasion de donner plusieurs conférences, de rencontrer les développeurs d’autres projets et d’en profiter pour porter quelques logiciels vers Haiku avec l’aide des contributeurs principaux (mentionnons cette année Poezio, Dead Ascend, ou encore le Godot Engine, qui avait déjà un portage mais non maintenu). Nous avons également pu constater lNincompatibilité de Haiku avec les machines Purism Librem, sans avoir le temps de se pencher de plus près sur la question, malheureusement.

La conférence BeGeistert, qui regroupe depuis très longtemps les utilisateurs et développeurs de Haiku (et de BeOS et Zeta), a pris une pause cette année, l’équipe organisatrice n’ayant plus la motivation pour s’en occuper étant donné le peu de personnes présentes.

Le projet Haiku mettait à profit cette conférence pour organiser un « coding sprint », qui consiste à mettre le plus grand nombre possible de développeurs dans une salle de réunion pendant cinq jours avec un stock approprié de sodas, et une cantine et des lits à disposition. Le coding sprint étant un moyen étonnamment efficace de faire avancer les choses, nous avons décidé de le maintenir, et de l’organiser cette année juste après le Capitole du Libre, à Toulouse. Le changement de lieu a été plutôt apprécié par les développeurs présents, qui ont pu en particulier travailler sur le portage de LibreOffice, des corrections de bugs dans le navigateur web, l’amélioration de l’application HaikuDepot (le gestionnaire de paquets graphique) pour régler divers problèmes de performance et faire quelques améliorations cosmétiques, ou encore ajouter le réglage de la luminosité de l’écran sur les PC portables utilisant un chipset vidéo Intel.

Bonne nouvelle, après cette année sans BeGeistert, l’évènement sera de retour en octobre prochain. Nous retournerons en Allemagne mais nous quitterons Düsseldorf, dont l’auberge de jeunesse qui nous a souvent accueilli n’offre plus des tarifs accessibles pour le budget de HSA (l’association qui finance l’évènement). Le format retenu est un évènement sur quatre jours, le détail sera décidé par la suite, sans doute un intermédiaire entre une conférence (avec quelques présentations) et un coding sprint.

GCI et GSoC

Haiku candidate tous les ans au Google Code‐In et au Google Summer of code.

Google Summer of Code

Il s’agit d’un programme organisé par Google dont le principe est de payer des étudiants pour qu’ils puissent travailler à plein temps sur des projets libres. Les membres de chaque projet s’occupent de l’encadrement, et ont toute liberté dans les sujets proposés.

Haiku a accueilli trois étudiants cette année, travaillant sur le système de fichiers XFS (mais cela n’a pas donné grand‐chose), un pilote pour les périphériques SDHCI (lecteurs de cartes SD sur de nombreuses plates‐formes ARM et certains portables x86), et un client graphique pour Git intégré dans le système de suivi (largement inspiré de TortoiseGit sous Windows). Les deux derniers projets sont en bonne voie.

Google Code‐In

Code‐In, quant à lui, cible les enfants de 13 à 17 ans, le but étant de leur faire découvrir le logiciel libre et plus généralement le développement de logiciels.

Il s’agit d’un concours où les participants doivent compléter différentes tâches assez simples proposées par un projet libre. Chaque projet choisit ensuite deux gagnants qui pourront passer une semaine à San Francisco, assister à des conférences de personnes travaillant chez Google, et obtenir de nombreux auto‐collants, T‐shirts, et autres goodies.

Haiku participe tous les ans depuis la création du Google Code-In en 2010. Cela nécessite un investissement important de toute la communauté autour du projet, en effet il n’est pas facile de gérer l’arrivée massive des participants sur les canaux IRC et listes de diffusion du projet. Cependant, l’habitude est prise et l’organisation est un peu meilleure chaque année.

Les tâches proposées sont diverses, on trouve des choses techniques (par exemple porter et packager un logiciel pour Haiku), graphiques (concevoir un autocollant à distribuer lors des conférences ou un poster présentant Haiku), de la documentation, ou encore du test (trouver des bugs dans un logiciel, écrire un plan de test, vérifier si des bugs reportés dans le passé sont toujours présents), et enfin une catégorie « outreach » (par exemple, préparer une présentation sur Haiku et la présenter à d’autres élèves, ou encore faire une vidéo présentant une fonctionnalité particulière).

L’intérêt principal de ces deux programmes est l’accueil de nouveaux contributeurs et l’amélioration de la diversité de notre équipe, en effet la communication de Google et des différents projets participants permet de faire découvrir Haiku à des personnes qui ne seraient pas autrement venues contribuer.

On ne compte plus vraiment sur ces projets pour faire avancer les choses directement : le temps nécessaire pour l’encadrement dépasse largement le temps qu’un développeur expérimenté aurait utilisé pour faire le travail directement. Cependant l’expérience est intéressante et nous permet aussi d’améliorer notre documentation et notre façon de travailler pour être plus accueillants aux nouveaux contributeurs.

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

Mutopia

Catégorie : Musique - Tags : musique, partition de musique, partition, piano, score, chopin, instrument

Ce site est un recueil de plus de 2000 partitions de musique, savante ou autre, de morceaux tombés dans le domaine public ou bien sous licence Creative Common, aux formats .pdf, .mid ou en .ly (Lilypond).

Lien officiel

Dark Moon : une distribution GNU/Cygwin portable pour Windows

Dark Moon est un émulateur de terminal open source développé par Mehdi Boutayeb Ferkatou et édité par MBK logiciel dans sa version UWP sur le Microsoft Store.

Dark-Moon

Dark Moon est à ce jour la seule distribution GNU/Cygwin disponible sur le Microsoft Store et sur le site de l’éditeur.

Sommaire

Présentation

Dark Moon est un ensemble de logiciels libres basé sur Cygwin rendu portable permettant l’exécution de commandes POSIX dans le but d’émuler un environnement UNIX sur plate‐forme Windows x64. Dark Moon permet de créer des scripts et des programmes utilisant les commandes grâce à une grande collection d’outils GNU et open source intégrée dans le terminal.

Embarquer une collection d’API POSIX sous la forme d’un exécutable nous permet d’envisager une informatique hyper‐transportable pour les émulateurs et distributions GNU/Cygwin, il suffit alors de trouver du courant et un processeur hôte pour exécuter l’application, ce qui aurait été auparavant impossible avant la naissance de Dark Moon. L’objectif technique recherché est de fournir un environnement de développement ainsi qu’un émulateur UNIX cloisonnés dans un exécutable apportant une mobilité au logiciel, permettant d’exécuter l’application sur n’importe quel système Windows.

Idée générale

Dark Moon est autonome, ce qui le distingue d’autres distributions équivalentes. Il est possible d’exécuter des commandes Shell et Bash ainsi que de créer et exécuter des scripts sur la console. L’application est également un outil de développement, notamment en offrant aux utilisateurs un environnement de développement libre tel que GCC.

Cette distribution est également un outil UNIX complet, personnalisable et offrant une mobilité ne demandant pas d’installation préalable. Elle est née en vue de fournir aux utilisateurs des possibilités étendues en complément de l’interpréteur de commande Windows. Il est possible de manipuler des fichiers ainsi que la ruche de registre sans déposer aucune empreinte sur l’ordinateur hôte, afin d’éviter d’apporter des modifications durables à un poste utilisé temporairement.

L’émulateur a fait l’objet d’une ouverture au public du code source, le logiciel libre est sous licence GNU GPL, il n’y a donc pas de restriction d’utilisation et de modification du logiciel tant que les conditions de la licence sont respectées.

En comparaison d’autres distributions Cygwin et GNU/Linux, l’application ne requiert aucun composant externe, les fichiers étant cloisonnés dans l’exécutable même, permettant un emploi à partir d’un stockage amovible comme une clé USB.

Différentes bibliothèques ont été incluses, notamment MinGW qui travaille avec des composants Windows comme la bibliothèque MSVCRT liée à Microsoft Visual C++. Busybox est intégré pour l’implémentation d’un grand nombre des commandes. Par ailleurs, il est également possible d’utiliser un agent d’authentification OpenSSH.

Le code source ainsi que les fichiers compilés ont été emballés dans l’exécutable pour respecter le concept de portabilité (il suffit de l’extraire avec 7zip pour avoir accès aux fichiers sources).

Liste des commandes actuellement disponibles

Voi job_spec [&]                            history [-c] [-d offset] [n] or hist>
 (( expression ))                        if COMMANDS; then COMMANDS; [ elif C>
 . filename [arguments]                  jobs [-lnprs] [jobspec ...] or jobs >
 :                                       kill [-s sigspec | -n signum | -sigs>
 [ arg... ]                              let arg [arg ...]
 [[ expression ]]                        local [option] name[=value] ...
 alias [-p] [name[=value] ... ]          logout [n]
 bg [job_spec ...]                       mapfile [-d delim] [-n count] [-O or>
 bind [-lpsvPSVX] [-m keymap] [-f file>  popd [-n] [+N | -N]
 break [n]                               printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]       pushd [-n] [+N | -N | dir]
 caller [expr]                           pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...)>  read [-ers] [-a array] [-d delim] [->
 cd [-L|[-P [-e]] [-@]] [dir]            readarray [-n count] [-O origin] [-s>
 command [-pVv] command [arg ...]        readonly [-aAf] [name[=value] ...] o>
 compgen [-abcdefgjksuv] [-o option] [>  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] >  select NAME [in WORDS ... ;] do COMM>
 compopt [-o|+o option] [-DE] [name ..>  set [-abefhkmnptuvxBCHP] [-o option->
 continue [n]                            shift [n]
 coproc [NAME] command [redirections]    shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgilnrtux] [-p] [name[=v>  source filename [arguments]
 dirs [-clpv] [+N] [-N]                  suspend [-f]
 disown [-h] [-ar] [jobspec ... | pid >  test [expr]
 echo [-neE] [arg ...]                   time [-p] pipeline
 enable [-a] [-dnps] [-f filename] [na>  times
 eval [arg ...]                          trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [argume>  true
 exit [n]                                type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or ex>  typeset [-aAfFgilnrtux] [-p] name[=v>
 false                                   ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
 fc [-e ename] [-lnr] [first] [last] o>  umask [-p] [-S] [mode]
 fg [job_spec]                           unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMAND>  unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMAN>  until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name >  variables - Names and meanings of so>
 getopts optstring name [arg]            wait [-n] [id ...]
 hash [-lr] [-p pathname] [-dt] [name >  while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]               { COMMANDS ; }
Voi job_spec [&]                            history [-c] [-d offset] [n] or hist>
 (( expression ))                        if COMMANDS; then COMMANDS; [ elif C>
 . filename [arguments]                  jobs [-lnprs] [jobspec ...] or jobs >
 :                                       kill [-s sigspec | -n signum | -sigs>
 [ arg... ]                              let arg [arg ...]
 [[ expression ]]                        local [option] name[=value] ...
 alias [-p] [name[=value] ... ]          logout [n]
 bg [job_spec ...]                       mapfile [-d delim] [-n count] [-O or>
 bind [-lpsvPSVX] [-m keymap] [-f file>  popd [-n] [+N | -N]
 break [n]                               printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]       pushd [-n] [+N | -N | dir]
 caller [expr]                           pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...)>  read [-ers] [-a array] [-d delim] [->
 cd [-L|[-P [-e]] [-@]] [dir]            readarray [-n count] [-O origin] [-s>
 command [-pVv] command [arg ...]        readonly [-aAf] [name[=value] ...] o>
 compgen [-abcdefgjksuv] [-o option] [>  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] >  select NAME [in WORDS ... ;] do COMM>
 compopt [-o|+o option] [-DE] [name ..>  set [-abefhkmnptuvxBCHP] [-o option->
 continue [n]                            shift [n]
 coproc [NAME] command [redirections]    shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgilnrtux] [-p] [name[=v>  source filename [arguments]
 dirs [-clpv] [+N] [-N]                  suspend [-f]
 disown [-h] [-ar] [jobspec ... | pid >  test [expr]
 echo [-neE] [arg ...]                   time [-p] pipeline
 enable [-a] [-dnps] [-f filename] [na>  times
 eval [arg ...]                          trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [argume>  true
 exit [n]                                type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or ex>  typeset [-aAfFgilnrtux] [-p] name[=v>
 false                                   ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
 fc [-e ename] [-lnr] [first] [last] o>  umask [-p] [-S] [mode]
 fg [job_spec]                           unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMAND>  unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMAN>  until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name >  variables - Names and meanings of so>
 getopts optstring name [arg]            wait [-n] [id ...]
 hash [-lr] [-p pathname] [-dt] [name >  while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]               { COMMANDS ; }
Voi job_spec [&]                            history [-c] [-d offset] [n] or hist>
 (( expression ))                        if COMMANDS; then COMMANDS; [ elif C>
 . filename [arguments]                  jobs [-lnprs] [jobspec ...] or jobs >
 :                                       kill [-s sigspec | -n signum | -sigs>
 [ arg... ]                              let arg [arg ...]
 [[ expression ]]                        local [option] name[=value] ...
 alias [-p] [name[=value] ... ]          logout [n]
 bg [job_spec ...]                       mapfile [-d delim] [-n count] [-O or>
 bind [-lpsvPSVX] [-m keymap] [-f file>  popd [-n] [+N | -N]
 break [n]                               printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]       pushd [-n] [+N | -N | dir]
 caller [expr]                           pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...)>  read [-ers] [-a array] [-d delim] [->
 cd [-L|[-P [-e]] [-@]] [dir]            readarray [-n count] [-O origin] [-s>
 command [-pVv] command [arg ...]        readonly [-aAf] [name[=value] ...] o>
 compgen [-abcdefgjksuv] [-o option] [>  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] >  select NAME [in WORDS ... ;] do COMM>
 compopt [-o|+o option] [-DE] [name ..>  set [-abefhkmnptuvxBCHP] [-o option->
 continue [n]                            shift [n]
 coproc [NAME] command [redirections]    shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgilnrtux] [-p] [name[=v>  source filename [arguments]
 dirs [-clpv] [+N] [-N]                  suspend [-f]
 disown [-h] [-ar] [jobspec ... | pid >  test [expr]
 echo [-neE] [arg ...]                   time [-p] pipeline
 enable [-a] [-dnps] [-f filename] [na>  times
 eval [arg ...]                          trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [argume>  true
 exit [n]                                type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or ex>  typeset [-aAfFgilnrtux] [-p] name[=v>
 false                                   ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
 fc [-e ename] [-lnr] [first] [last] o>  umask [-p] [-S] [mode]
 fg [job_spec]                           unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMAND>  unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMAN>  until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name >  variables - Names and meanings of so>
 getopts optstring name [arg]            wait [-n] [id ...]
 hash [-lr] [-p pathname] [-dt] [name >  while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]               { COMMANDS ; }

Syntaxe

Avec les appliquettes de commande mises à disposition, il est possible de créer des scripts aisément, comme présenté ci‐dessous :

#Mon premier script
function() 
{
  local variableLocal="function 1"
  echo "$variableLocal"
  echo "Nombres de paramètres : $#"
  echo $1
  echo $2
}

function "Hello" "World"

Pour lancer le script, placez‐vous dans le dossier contenant le script (obligatoire) :

cd C:\Users\[Userprofile]\Documents\script-Shell

Faites un chmod :

chmod 700 MonPremierScript

Et exécutez‐le :

Nombres de paramètres : 2
Hello 
World
Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur

blog-libre : Résoudre les lenteurs au démarrage de Ubuntu-Mint

J’appelle problème bloquant, un problème m’empêchant d’utiliser un outil. Cela ne signifie pas obligatoirement “l’outil ne fonctionne pas” mais plus globalement “l’outil n’est pas utilisable pour moi en l’état“. C’est le cas ici, je teste Mint XFCE et j’ai un démarrage en 46 secondes. Le démarrage fonctionne mais le temps de démarrage est bloquant pour moi, hors de question de rester sur une distrib qui met autant de temps à démarrer. Je suis en dual-boot, Xubuntu démarre en 7s.

Identifier

Il est nécessaire de connaître deux commandes pour identifier les lenteurs au démarrage des systèmes d’exploitation utilisant systemd : systemd-analyze et systemd-analyze blame. Vous en croiserez parfois une troisième permettant de présenter les résultats de manière graphique : systemd-analyze plot (à utiliser ainsi systemd-analyze plot > boot.svg). Un man systemd-analyze vous renseignera sur la fonction de chacune.

Voici le résultat de systemd-analyze sur ma Mint XFCE. Le noyau Linux (kernel) met donc 35s au démarrage et l’espace utilisateur (userspace) 11s. C’est ce résultat que je désigne par “démarrage” dans cet article et pour être précis tiré du man : “the time spent in the kernel before userspace has been reached, the time spent in the initial RAM disk (initrd) before normal system userspace has been reached, and the time normal system userspace took to initialize”. On vient d’identifier deux problèmes, lenteur au niveau kernel et lenteur au niveau userspace.

Startup finished in 35.072s (kernel) + 11.461s (userspace) = 46.533sgraphical.target reached after 1.380s in userspace

Un systemd-analyze blame affiche le temps d’initialisation de chaque service et donne le résultat suivant (tronqué aux 5 premiers résultats). On identifie de suite la raison de la lenteur au démarrage de l’userspace : ntp.service. Ce service met 10s à s’initialiser à lui tout seul.

10.153s ntp.service408ms dev-nvme0n1p3.device292ms NetworkManager.service252ms systemd-cryptsetup@cryptswap1.service245ms systemd-resolved.service

Je vous invite à tester en live ces commandes sur votre pc. L’immense majorité des services systemd démarrent en moins d’une seconde si vous avez un SSD. Évidemment certains services sont lourds/longs à démarrer : virtualisation, bases de données… Je simplifie mais tout service qui démarre en plus de 2-3 secondes mérite votre attention : Est-il nécessaire ? À quoi sert-il ? Pourquoi ce délai ?

Diagnostiquer

On commence à mettre les mains dedans : Qu’est-ce qui provoque ce délai et est-ce qu’une action change ce délai ? Commençons par le service ntp.

La bonne manière de procéder : 1/ Favoriser des tests aux résultats visibles et compréhensibles, ça oriente et confirme nos soupçons. On doit être sûr que c’est notre action qui a changé quelque chose, pouvoir constater un changement, comprendre ce qu’on a fait et ce qui s’est passé 2/ Effectuer des tests qui impactent le moins possible le système d’exploitation afin de pouvoir revenir en arrière (rollback) et reproduire la situation d’origine 3/ Pour rechercher et isoler la cause d’un problème, on va du grossier au précis. Plutôt que faire 100 tests sur des choses précises (plus long et difficile), il vaut mieux faire un test général pour savoir dans quelle direction poursuivre (disque, kernel, réseau, etc.) 4/ Créer des tests de sorte que problème/résultat soient reproductibles ainsi on teste et valide facilement/rapidement une action

Ici nous allons donc simplement désactiver le service ntp sudo systemctl disable ntp.service (pour rollback : sudo systemctl enable ntp.service), redémarrer sudo reboot puis afficher de nouveau le résultat systemd-analyze blame. Il est évident mais ça confirme qu’il n’y a pas d’effets indésirables dans l’immédiat : L’userspace démarre en moins de 2 secondes. On gagne près de 10s à chaque démarrage.

Repassons sur notre lenteur kernel. Lorsqu’on arrive sur Grub, on choisit Advanced options for Linux Mint 19 Xfce puis Linux Mint 19 XFCE (recovery mode) et on regarde ce qui se passe. Dans mon cas c’est simple, ça reste longtemps sur un message : Scanning for btrfs file systems. On va orienter nos recherches de ce côté-là.

Réparer

Le service ntp permet de fournir l’heure exacte au système d’exploitation, on ne peut pas se contenter de le laisser désactivé mais on peut probablement lui trouver un remplaçant. Je vous recommande chaudement chrony, vous pouvez aussi passer à systemd-timesyncd. Chrony est méconnu pourtant c’est la nouvelle référence, il est déjà utilisé de base sur les systèmes Fedora, CentOS, Red Hat. Sa configuration par défaut est sécurisée, correcte, il n’écoute qu’en local et n’agit qu’en client NTP. Il faut donc juste l’installer : sudo apt install chrony. On redémarre sudo reboot puis on affiche de nouveau le résultat systemd-analyze blame : La lenteur constatée niveau userspace a disparu, on a définitivement gagné 10s à chaque démarrage, le service chrony s’initialise en 54ms. On aurait pu creuser le problème du service NTP, ça aurait pris sûrement beaucoup plus de temps. Nous avons là une solution simple, rapide, satisfaisante.

En effectuant quelques recherches sur la lenteur niveau kernel, on apprend qu’il y a des problèmes avec le noyau 4.15.0-20. On vérifie notre noyau (uname -r), pas le même. Le plus évident lorsqu’on a un problème avec un noyau, c’est d’en tester un autre.

On se rend sur http://kernel.ubuntu.com/~kernel-ppa/mainline/ puis on cherche la dernière branche. Le plus simple étant de cliquer sur Last modified, actuellement le noyau le plus récent est le 4.18. Je n’aime pas prendre la dernière version, je lui préfère une version antérieure (par exemple la 4.17.12) : 1/ Les bugs commencent à être connus et identifiés, on peut retrouver leurs traces 2/ Trop récent, peu fiable.

On télécharge, on installe, on redémarre, on vérifie le noyau et systemd-analyze.

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-headers-4.17.12-041712-generic_4.17.12-041712.201808030231_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-headers-4.17.12-041712_4.17.12-041712.201808030231_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-image-unsigned-4.17.12-041712-generic_4.17.12-041712.201808030231_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-modules-4.17.12-041712-generic_4.17.12-041712.201808030231_amd64.debsudo dpkg -i linux*4.17.12*.debsudo rebootuname -rsystemd-analyze

Pas de bol, pas mieux ! On a encore un démarrage kernel de plus de 30 secondes. À noter que sur Grub, on peut toujours choisir de booter sur l’ancien noyau. On va faire des recherches sur Scanning for btrfs file systems, je précise que je n’utilise pas btrfs sur mon pc.

Le premier lien est la solution qui a marché pour moi.

sudo blkid # On affiche les identifiants (UUID) des périphériques bloc (systèmes de fichiers)sudo cat /etc/initramfs-tools/conf.d/resume # On compare les UUID de la commande blkid avec le contenu du fichier resume, dans mon cas aucune correspondance. L'UUID ne correspond à aucun périphérique bloc, c'est incohérentsudo cp /etc/initramfs-tools/conf.d/resume ~/resume.bak # On fait une sauvegarde du fichier pour pouvoir rollbacksudo nano /etc/initramfs-tools/conf.d/resume # Remplacer RESUME=UUID=xxx par RESUME=nonesudo update-initramfs -u

Je pense qu’une bonne explication est ici. Je recommande également ces liens connexes : 1, 2, 3, 4. Pour résumer il y a des problèmes si vous chiffrez votre /home notamment autour de la swap. Dans la release notes de Mint 19 XFCE, Known issues : There is an issue with home directory encryption that causes swap to be misconfigured during installation. To correct this…”

Conclusion

Au début de l’aventure.

Startup finished in 35.072s (kernel) + 11.461s (userspace) = 46.533sgraphical.target reached after 1.380s in userspace

Après la résolution du problème dans l’userspace (ntp.service).

Startup finished in 35.071s (kernel) + 1.371s (userspace) = 36.442sgraphical.target reached after 1.363s in userspace

À la fin de l’aventure (après la résolution du problème niveau kernel).

Startup finished in 3.786s (kernel) + 1.380s (userspace) = 5.167sgraphical.target reached after 1.373s in userspace

Je démarre à présent en moins de 6s, 40s gagnées à chaque démarrage, un confort indéniable. Soulignons le fait qu’une version LTS (Long Term Support) n’est pas exempte de soucis/bugs, que le démarrage est aussi concerné par des problèmes/optimisations.

J’ai essayé de vous fournir une méthodologie et quelques bases pour vous débrouiller avec des lenteurs au démarrage, l’article Danse avec les reboots est un bon complément. Les commentaires sont ouverts, je réponds aux questions.

Tcho !

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

Yannic Arnoux : Spam des commentaires

Pour lutter contre le spam dans les commentaires du blog, j’ai opté pour la simplicité dès le début parce que l’audience est restreinte, que je ne veux pas compliquer la vie des lecteurs avec des systèmes de captchas (de plus en plus illisibles d’ailleurs) et que je veux préserver l’accès au blog sans JavaScript pour les durs, les vrais, les tatoués ;-)

Ma naïve défense est basée sur un pot de miel : un champ caché dans le formulaire de saisie de commentaire, invisible pour l’humain normalement constitué, qui ne peut donc être rempli que par un bot qui analyse les pages HTML. Ces commentaires sont jetés directement par mon gestionnaire de commentaires Stacosys. Pendant longtemps, ce fut une défense suffisante ; de rares fois un facheux postait un commentaire pour me vanter un site de vente de pilules : je refusais le commentaire et voilà.

Mais depuis quelques temps, je reçois des rafales de spams : soit les robots sont plus efficaces et analysent aussi la CSS de la page, soit quelqu’un a embauché une armée de zombies pour poster manuellement sur tous les sites à moins de 100 visiteurs / jour. J’ai donc mis en place une 2ème ligne de défense. Quand j’étiquète spam le commentaire, Stacosys écrit une ligne de log avec l’adresse IP du spammeur, et fail2ban ajoute une règle iptables pour le bannir. La méthode n’est pas révolutionnaire, ça a demandé quelques lignes de code dans Stacosys ; ce qui est plus intéressant, c’est sa mise en oeuvre dans une architecture Docker avec un reverse proxy.

Architecture Docker blog

Nginx joue le rôle de reverse proxy, il balance les requêtes du blog vers Hugo et le post du formulaire vers Stacosys. Pour ne pas perdre l’adresse IP réelle du visiteur, on la propage jusqu’à Stacosys dans l’attribut HTTP X-Forwarded-For.

On a une configuration NginX de ce genre :

location /newcomment {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://stacosys:8100/newcomment;
}

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://nginx-blog;
}

Stacosys est un container Docker donc l’application (PID 1) écrit ses logs dans la sortie standard (STDOUT) ; c’est le comportement par défaut. Mais, afin d’ajouter des règles iptables, le container fail2ban a besoin de lire ces logs. On va donc exporter les logs de stacosys vers le container logger en rajoutant une section logging dans le fichier docker-compose qui décrit le lancement du service stacosys :

logging:
  driver: syslog
  options:
    syslog-address: "tcp://127.0.0.1:514"
    tag: "stacosys"

et le container logger, qui n’est rien d’autre qu’un serveur syslog, écrit ses logs dans un volume Docker :

logger:
    image: bobrik/syslog-ng
volumes:
    - syslog:/var/log/syslog-ng
ports:
    - "514:514"

Le volume de données syslog est partagé avec le container fail2ban qui peut ainsi lire les logs de stacosys, appliquer ses règles de filtrage et définir dynamiquement des règles iptables pour bannir les vilains.

Gravatar de Yannic Arnoux
Original post of Yannic Arnoux.Votez pour ce billet sur Planet Libre.

Movim - Vincent Lambert - PSES2013


Vincent Lambert
Titre : Movim
Intervenant : Vincent Lambert
Lieu : Pas Sage En Seine - La Cantine
Date : juin 2013
Durée : 50 min 44
Visualiser la vidéo
Licence de la transcription : Verbatim
Illustration : logo Movim sur une des diapositives du diaporama support de la présentation
NB : transcription réalisée par nos soins.
Les positions exprimées sont celles des personnes qui interviennent et ne rejoignent pas forcément celles de l'April.

Transcription

Je vais vous présenter le projet de réseau social Movim. Je laisse les gens s'asseoir. Donc c'est parti. Je vais vous présenter le réseau social Movim qui est un logiciel qui se base sur XMPP1. Je vais vous présenter d'abord globalement l'architecture du réseau, son fonctionnement et j’essaierai de présenter ensuite les atouts du logiciel en lui-même, puis on fera une petite démonstration par la suite.

D'abord qu'est-ce qu'on entend par le terme réseau social ? On va le définir deux fois.
On va le définir une première fois pour le grand public. Ce qu'on entend par réseau social ce sera une liste d'amis. On a un moyen ensuite de partager des informations aux gens avec qui ont est en contact. Donc des moyens de communiquer en microblogging, des technologies de chat, etc., des fonctionnalités de ce genre-là.
Et puis le deuxième moyen de voir un réseau social c'est de s'attarder sur l'aspect technique et de se dire qu'aujourd'hui un réseau social c'est avant tout un logiciel dans lequel on stocke ses données.

Donc un réseau social, au final, c'est un serveur. Si par exemple on regarde les réseaux sociaux qui sont en place et qui sont très connus tels que Faceboook, Google Plus ou Twitter, vous avez un logiciel qui fonctionne chez l'hébergeur, qui fait fonctionner ce réseau social et une interface ; et en général ce que l'utilisateur appellera le réseau social c'est ce qu'il voit sur l'interface. On ne sait pas vraiment ce qui est derrière Twitter, on ne sait pas vraiment ce qui est derrière Google Plus ou ce qui est derrière Facebook, mais c'est ce qu'on appellera un réseau social.

Movim est un petit projet qui se voit comme une alternative qui permet de contrôler ses données — pas de reprendre le contrôle —, qui permet de contrôler les données qui sont produites via ce logiciel-là. Donc si vous avez des données par exemple chez Twitter ou Facebook ou Google Plus, n'espérez pas pouvoir reprendre le contrôle, de toute manière ce sont eux qui les ont. Donc contrôler ses données produites, ça sous-entend que quelque part le logiciel que vous allez utiliser vous avez un peu plus confiance que dans les autres logiciels. Donc à cela vous allez pouvoir faire deux choses.
La première chose, vous allez pouvoir utiliser le logiciel tel quel c'est-à-dire comme si vous utilisiez par exemple Twitter: vous allez sur un site, vous aller sur une URL, et vous pouvez commencer à utiliser le réseau. Donc là dans cet onglet-là Movim vous propose une chose : pas de conditions d’utilisation, comme ça elles ne changent pas et comme ça on n'a pas la surprise de se dire un jour que ce qu'on a posté a changé de conditions d'utilisation ou de paramètres ou autre. Comme ça c'est simple.
Et la deuxième chose ce sera de respecter les paramètres des utilisateurs et de pouvoir ensuite héberger vos données chez vous, éventuellement, ou chez un tiers de confiance et donc de posséder ses données. C’est-à-dire que si un jour les données que vous avez mises en ligne vous ne souhaitez plus les voir mises à disposition de tout le monde, vous aurez la possibilité d'éteindre le serveur qui contient vos données et vous n'aurez ni à les réclamer, ni à faire des demandes de suppression, c'est vous qui contrôlez directement ce que deviennent vos données.

Donc le projet a un but principal c'est de permettre aux gens de contrôler leurs communications. C'est le but premier qui est déjà fourni quelque part par le logiciel XMPP. On verra un petit peu plus tard ce que c'est dans le détail. Mais quelque part, contrôler ses communications, c'est être indépendant. Si vous pouvez ennoyer vos e-mails et que personne ne vous interdit de parler d'un sujet dans vos e-mails, vous pouvez parler de ce dont vous voulez à votre correspondant. Si, sur votre réseau social, on vous interdit d’envoyer certains contenus, certains types de contenus, c'est-à-dire s’il y a du filtrage ou de la censure, vous allez être handicapé dans vos communications et vous serez obligé de passer ailleurs.
Et c'est ce que propose Movim, c'est d'avoir une alternative aux communications que vous utilisez en ligne.

Je prends un exemple : la dernière fois où j'ai utilisé Facebook, c'était il y a quand même pas mal de temps, mais à ma connaissance les liens de The Pirate Bay sont bloqués sur ce site. Ça veut dire que si je veux envoyer un lien The Pirate Bay à quelqu'un, je vais devoir lui téléphoner et lui dicter l'URL. Ce qui est quand même moins pratique que de lui copier-coller.

Donc Movim est un réseau qui est décentralisé. Alors je vais commencer par vous expliquer d'abord techniquement ce que c'est que la centralisation et la décentralisation et on verra juste après en quoi ce logiciel repose sur des fondements décentralisés.

La centralisation a quand même des atouts. On va commencer par ça.

  • D’abord vous avez un seul site sur lequel vous connecter. Si vous demandez à quelqu'un d'aller sur Twitter ou d'aller sur Facebook, il connaît déjà l'URL, il sait déjà que c'est sur http://facebook.com.
  • Le deuxième intérêt que vous avez à avoir un site centralisé c'est qu'en général la personne qui va utiliser votre site n'a rien à installer. Dans le cadre du site web qui est au milieu, dans le modèle centralisé, le client se connecte directement dessus et il peut directement consommer le service que vous avez mis à disposition sur Internet.
  • Et le troisième avantage, c’est que, puisque le système est centralisé, eh bien toutes les données sont au centre. Ça a un avantage dans le sens où le serveur connaît tout le monde. Si vous avez besoin de contacter quelqu'un ou de reprendre contact avec quelqu'un que vous connaissiez il y a longtemps et que le réseau est très populaire, alors vous savez qu'en tapant son nom dans le moteur de recherche du site, vous allez pouvoir retrouver la personne très facilement.

La centralisation a quand même des limites. Moi j'ai noté quatre limites principales qui sont :

  • le problème de confiance. Tout d'abord le problème de confiance c'est qui possède mes données au final, qui fait quoi de ce je mets sur ce site. Par exemple aujourd'hui, les réseaux sociaux, les trois grands réseaux sociaux sont hébergés aux États-Unis et donc ils ne sont pas sous nos lois, ils ne sont protégés ni par la CNIL, ni par quelque autre convention. Il y a notamment une loi qui s'appelle le PATRIOT Act que tout le monde connaît au moins dans la salle je pense, qui donne à peu près accès à toutes vos données à à peu près tout le monde aux États-Unis ;
  • deuxième problème c'est le modèle économique. Le modèle économique de la centralisation est gênant parce qu'il sous-entend que plus il y a d'utilisateurs sur votre infrastructure plus vous allez devoir payer, puisisque tout simplement les consommations de ressources sont exponentielles. On imagine bien que si on a 500 millions d'utilisateurs on ne pas tous les mettre au même endroit. Donc on va falloir payer des data centers, des infrastructures et tout cela il faut le rentabiliser parce que, malheureusement, ce n'est pas bénévole. Donc à partir du moment où une infrastructure coûte de l'argent, il faut trouver des acheteurs, il faut trouver des vendeurs, il faut trouver un produit.
    Le vendeur on sait qui sait et il a déjà des coûts, donc on n'a pas besoin de chercher bien plus loin ; l'acheteur vous le rencontrez lorsque vous allez sur le site et que vous voyez des petites bannières de publicité affichées sur les côtés et donc, au final, il reste la marchandise qui est échangée entre les deux à savoir eh bien la personne qui renseigne sur ce site des informations qui va expliquer que voilà, il aime les groupes de rock, il en aime beaucoup ; il aime les groupes de musique jeunes, il aime lire aussi, il aime ce genre de choses et toutes ces informations-là servent tout simplement à cibler la publicité qui est revendue sur les côtés. Donc le problème du modèle économique c'est de savoir tout simplement ce qui va être fait de vos données ; est-ce qu'elles sont manipulées ? Est-ce que les services qui s'étendent au-delà du réseau social, les e-mails, les conversations vocales, est-ce que ces moyens de communication sont également utilisés à ces fins-là ?
  • le troisième point c'est la fiabilité. Alors il y a petit cadre qui entoure le serveur central ici, ce sont deux problèmes en un. Le premier problème ce sont les défaillances techniques. Je sais que Twitter a eu énormément de problèmes il y a quelques années avec des problèmes de surcharge qui était vraiment répétitive et qui était vraiment très courante sur le réseau. Ça le fait moins mais ça le fait encore. Ce qui est gênant c'est que lorsque le site principal de Twitter est paralysé, admettons que dans une salle on soit trente personnes, plus personne ne peut communiquer. Le centre est étouffé donc les utilisateurs sont bloqués.
    Le deuxième problème qui se pose au-delà des problèmes techniques c'est tout simplement la censure. C'est-à-dire que si le site qui est au centre a une quelconque raison de bloquer quoi que ce soit, il peut l'appliquer et il l'appliquera à l'ensemble des utilisateurs. Imaginons que je possède un grand site de réseau social qui est au centre du schéma et que quelqu'un vient me voir en disant « tiens, si tu bloquais par exemple tous les liens de The Pirate Bay sur mon site et je te reverserai un petit quelque chose ou en tout cas tu participeras fortement à mon action ». Donc le site principal va se dire « tiens, c'est une bonne idée, je vais le bloquer » et malheureusement les gens qui sont au milieu ne peuvent plus échanger sur le terme qui a été bloqué ;
  • et le dernier problème qui a été identifié sur les modèles centralisés, c'est la sécurité, tout simplement, parce que le centre du réseau social qui est représenté à l'écran, que vous pouvez appliquer à tous les réseaux sociaux populaires que vous connaissez, malheureusement il contient les données de tous les utilisateurs qui sont inscrits dessus. On va prendre un exemple de modèle de centralisation qui a fait parler de lui il y a un peu moins de cinq ans, c'est le PlayStation Network qui a été malheureusement pris d’assaut par des gens qui voulaient absolument les numéros de carte bancaire qui étaient à l'intérieur. Et comme ils ont réussi à ouvrir le seul point d'attaque qu'ils avaient à passer, ils ont obtenu dans le coffre-fort du Pirate avec tous les petits trésors à l'intérieur, les numéros de carte bancaire et je pense qu'ils en ont fait bon usage.

Les travers de la centralisation, alors ça c'est même au-delà des limites de la centralisation. On a des cas de censure qui sont apparus dans des pays récemment, on va dire il y a un ou deux ans, en Syrie, en Égypte, je ne vais pas faire la liste, qui se sont vu bloquer une partie d'accès au site. C'est-à-dire que le site lui-même n'était pas hébergé dans le pays en question, mais une partie des utilisateurs a été empêchée d'accéder au réseau. Et dans le modèle centralisé vous n'avez qu'une seule porte d'entrée pour votre réseau, donc si vous voulez rejoindre et communiquer avec les autres personnes, si vous voulez rejoindre ce réseau-là, eh bien vous êtes bloqué parce que le seul nœud qui était disponible a été rendu inopérant.

La décentralisation c'est un autre mode de fonctionnement. C'est un mode de fonctionnement qui a des avantages.
D'abord c'est difficile de compromettre ce réseau. Vous pouvez essayer de l'attaquer de toutes les manières que vous voulez, plus vous allez obtenir de serveurs au milieu du schéma plus votre réseau sera résistant. Si vous voulez faire par exemple une attaque distribuée, une attaque DDOS, par déni de service, vous ferez tomber peut-être un ou deux sites. Mais si votre réseau est bien construit, normalement la plupart des autres serveurs seront « secure », entre guillemets, seront séparés du réseau et donc vous pourrez continuer à communiquer avec vos contacts. Imaginons que vous ayez 30 contacts, vous avez 5 contacts sur le serveur qui est en haut à gauche qui est attaqué, mais vous pouvez quand même parler avec le reste de vos amis, c'est de manière complètement fluide et transparente, vous n'allez pas vous en rendre compte.

Le deuxième problème c'est l'infection du site. Au-delà du piratage qu'on a vu tout à l'heure avec un serveur central, ce qui pourrait arriver par exemple c'est que quelqu’un accède au code du site et rajoute, je ne sais pas, de la publicité ou des codes malicieux, des choses comme ça, qui peuvent faire fonctionner différents mécanismes sur votre ordinateur, que vous ne souhaitez pas. Dans le cas d'un site centralisé, tous les utilisateurs vont être touchés d'un coup. Ce ne sera pas le cas sur un système décentralisé.

Et puis tout simplement la dernière chose, lorsque les différentes données ne sont pas dans les mains d'un seul acteur, bien sûr pas de censure directe, pas de possibilité de bloquer des mots-clefs ou de bloquer des URL, des paragraphes, des images ou du contenu sur l’ensemble du réseau. Seuls les gens qui sont sur l'un des sites qui pose problème se verront bloquer du contenu.

Les avantages c'est, comme vous voyez sur le slide juste avant, vous avez plusieurs points d'entrée sur votre réseau. Imaginons que vous êtes dans un pays qui va vous interdire l'accès parce que ça a été dit dans la loi de bloquer l'accès au nom de domaines monsite.fr, vous avez juste à prendre celui d'à côté.

La décentralisation a aussi des limites, mais elles sont quand même moins nombreuses et elles sont contournables.
La première limite c'est de trouver un hébergeur qui est fiable. C'est simple, si je peux créer autant de nœuds sur le réseau que je veux, quelqu'un qui serait mal intentionné ou qui aurait envie également de récupérer mes données, peut créer le sien et si je ne suis malheureusement pas assez vigilant et que je me rends sur ce site en me disant c'est le bon site que je voulais utiliser, si par exemple une lettre a changé dans l'URL et qu'ils se servent de ça pour faire leur propre site, je peux me retrouver sur un nœud malheureusement compromis et qui manipulera aussi bien mes données que les réseaux précédents.

Et le deuxième problème, la deuxième limite qui est posée par la décentralisation c'est le problème de ce que j'ai appelé les super nœuds. Je ne sais pas si dans la salle des gens connaissent le réseau StatusNet, mais il y a un site qui a émergé qui s’appelle Identi.ca, qui est propulsé par les gens qui ont fait StatusNet et malheureusement Identi.ca rassemble aujourd'hui une grosse majorité des utilisateurs. Alors certaines personnes courageuses ont fait leurs propres nœuds sur le réseau. Malheureusement aujourd'hui si Identi.ca s’arrête de fonctionner, je pense qu'une grosse partie du réseau StatusNet sera handicapée.

Public : Inaudible

Vincent Lambert : Sur StatusNet ? Ah oui ! Ah oui ! J'ai un autre truc là-dessus.

Modérateur : On verra à la fin.

Vincent Lambert : Pour la période des questions. Mais j'ai un autre truc sur Identi.ca.

Du coup on est arrivé à la question de savoir, c'était il y a peu près 5 ans, ce n'est pas moi qui ait pris la décision, de savoir est-ce qu'il y avait besoin de créer un nouveau réseau social ? Alors « nouveau », au final on va voir qu'il n'est pas si nouveau que ça.
D'abord le constat de l'époque c'est qu'il y avait assez peu d'alternatives. Diaspora commençait à être lancé, StatusNet a dû être lancé un petit peu après ou presque en même temps, je ne sais plus exactement, mais par contre sur des protocoles qui ont été recréés à chaque fois. StatusNet a créé son propre protocole, Diaspora a créé le sien et on s'est demandé simplement comment est-ce que ces gens-là, qui avaient des réseaux différents, allaient pouvoir un jour s'unir sur un même réseau et dire on ne va pas demander à chacun de se réinscrire x fois sur les sites, c'est dommage d'avoir plusieurs listes d'amis qui sont partagées et puis de se dire à un moment je n'ai que 5 amis d'un côté, 5 amis de l'autre. Bon !

Il y avait déjà à un réseau existant à cette époque-là qui s'appelle XMPP, un protocole XMPPP, qui propulse un réseau qui est utilisé par beaucoup de gens qui s'appelle Jabber qui est de la messagerie instantanée et ce protocole est extensible, à savoir qu'il y a d'autres extensions, d'autres fonctionnalités qui ont été ajoutées depuis à ce réseau et qui permettent de faire du microblogging, qui permettent de faire un simili de forum — le concept est un petit peu différent — qui permettent de faire tout un tas de choses, de gérer par exemple les présences — est-ce que je suis en ligne, est-ce que je suis hors ligne, est-ce que je suis occupé — les humeurs, tout un tas de choses qui sont gérées directement en standard dans XMPP. Donc tout simplement, la conclusion qui est venue à se faire c’est plutôt que de recréer à la fois le client et à la fois le serveur, on va simplement faire un nouveau client, compatible, qui implémente tout ce qui est déjà fait dans le réseau XMPP.

Donc le projet a été fondé en 2008. Le code a été publié la première fois en 2009. Personnellement j'ai rejoint le projet en 2010 et Guillaume Pasquet, qui est le second plus gros développeur du projet, a rejoint également en novembre 2010. Le fondateur du projet est Timothée Jaussoin ; j'ai simplement oublié de donner son nom au début !

Alors maintenant on va voir qu'est-ce que Movim ? Tout à l'heure je vous parlais de réutilisation d'un protocole qui s’appelle XMPP. Movim est un client. C'est simplement un client au même titre que Gajim, Pidgin ou Adium pour les gens qui utilisent Mac, qui sais-je. C'est l'un des clients possibles pour se connecter au réseau XMPP. Ça veut dire que dans ce modèle-là les données sont réparties quelque part sur l'un des trois serveurs sur la droite, donc des serveurs qui communiquent entre eux et les données sont simplement extraites du serveur pour être affichées. Elles peuvent être affichées dans d'autres clients. Movim n'est pas la seule interface disponible pour présenter les données.

Le client est écrit en PHP, en HTML5 également donc vous allez pouvoir l'exécuter dans n'importe quel navigateur récent. Le choix du PHP a été fait tout simplement parce que c'est une technologie où on a énormément de serveurs mutualisés sur Internet et donc une possibilité de répandre le logiciel au moins autant que Wordpress, donc du logiciel grand public qui s'installe très facilement même pour les gens qui sont un petit peu néophytes et qui se diraient j'aimerais bien essayer.

Deuxième avantage c'est que ça résiste au rafraîchissement de page, qui sera très utile, à mon avis, en mobilité si vous changez de réseau : vous passez de 3G à WIFI, vous voulez fermer votre navigateur, le rouvrir, vous n'allez pas être déconnecté, votre session va vous permettre de rester connecté sur votre page de réseau social et donc de pouvoir continuer à discuter avec les gens.

Maintenant plus spécifiquement, comment est-ce que les données sont transmises ? Le modèle ressemble beaucoup au modèle de l'e-mail. Admettons que je sois la personne qui est en haut et je veux écrire à la personne qui est en bas. On envoie notre message au premier serveur comme on enverrait un e-mail — mon destinataire arobase son fournisseur de service.fr — et donc le message va transiter de serveur en serveur jusqu'au prochain client.
Movim, quelque part, ne fait qu'enrichir les fonctionnalités qui sont déjà présentes dans XMPP. Ça veut dire que si vous voulez par exemple utiliser un autre client, je vous l'ai déjà dit tout à l'heure, vous allez pouvoir ré-afficher vos données.
Il y a d'autres clients, à l'heure actuelle, qui présentent ces informations, mais ils ne sont pas très nombreux. Il y a Jappix et, je ne serais pas sûr, mais je dirais peut-être Salut à Toi qui est un deuxième projet que vous connaissez peut-être, qui présentera les données, à mon avis, plus ou moins de la même manière.

Ce dont a besoin Movim c'est simplement d'un serveur web. Vous allez pouvoir éventuellement le faire tourner chez vous puisque de toute manière les besoins en bande passante ne seront pas très élevés, contrairement à un blog où vous allez avoir 300 visites par jour, là c'est destiné principalement aux gens qui sont dans votre liste de contacts, donc des photos, des vidéos, du contenu qui est éventuellement un petit peu lourd mettra du temps à transférer sachant que dans les mois qui viennent ou les années qui viennent la technologie ADSL va légèrement changer chez certains opérateurs pour le VDSL2 qui commence à arriver chez Free, OVH et d'autres personnes avec des débits montants plus intéressants selon l'endroit où vous êtes.

Vous avez également besoin d'un compte sur un serveur — si vous avez une adresse Jabber vous avez déjà, en fait, un pied dans le réseau ; vous déjà toute votre liste d'amis et vous avez juste à vous connecter sur le site de votre choix — et un navigateur pour afficher votre page.

Les 3 fonctionnalités à venir qui sont attendues dans Movim ce sera donc la gestion des salons, une version mobile éventuellement, je crois qu'elle est déjà plus ou moins prête, et la possibilité de faire des conversations via WebRTC je pense que ce sera implémenté dans quelques temps et donc d'avoir quelque chose qui est équivalent à ce qui se fait aujourd'hui. Je vais vous faire une rapide démonstration du projet.

Si vous voulez essayer le projet tout simplement à titre de démonstration, vous pouvez vous rendre sur pod.mov.im, l'accès est libre vous avez juste à arriver sur la page d'accueil, vous allez faire défiler le petit bloc qui est ici, vous avez un compte de démonstration qui est à votre disposition, vous cliquez dessus, vous cliquez sur entrée et donc là vous allez arriver sur le compte Jabber qui a été utilisé pour la démonstration.
L'interface n'a pas mal changé depuis la dernière fois, on est passé en plate design, design plat, donc vous allez pouvoir ici taper votre message. Ça c'est le flux de microblogging, vous êtes sur la page principale du réseau social, vous pouvez faire des choses équivalentes à Twitter. On va mettre un petit message. je les fait après les questions. Je ne suis pas sûr que le message soit bien parti. Le message était censé être passé. C'est toujours en conférence que ça se produit ! Pardon ?

Public : Refresh.

Vincent Lambert : Je ne sais pas trop. Le réseau est un petit peu lent, j'ai peur de rafraîchir. J'ai vu tout à l'heure que ça mettait du temps à charger.
Je vais présenter rapidement l'interface, pendant que je fais la présentation.
Vous avez un endroit où vous pouvez mettre un message. Les messages des utilisateurs s’affichent les uns en-dessous des autres. Vous avez la possibilité de mettre des commentaires évidemment.
Sur le côté vous avez un petit macaron, qui est ici en couleur orange, qui définit le niveau de visibilité du message. Le niveau de visibilité du message on peut le changer juste ici en-dessous, c'est marqué share with, partagé avec, tout le monde ou seulement vos contacts. Par défaut, les messages qui sont postés seront partagés uniquement avec vos contacts et si vous cliquez sur everyone, tout le monde, ils seront publiés sur Internet donc via une petite interface de microblogging. Je ne sais pas si j'ai rafraîchi ; si, c'est bon ! On va essayer de le passer en public.
Quand j'ai cliqué sur everyone ici, l’icône est passé au violet, donc cet icône, normalement, stipule que le message est censé être passé en public. Si on va sur l'interface de blog on devrait le voir. Il me semblait que c'était bon. Ouais. Voila. Ça c'est la liste des messages publics qui ont été marqués comme visibles par tous. Alors au final, on va se demander « mais si je mets un message sur le réseau comment est-ce que je peux savoir quel est son degré de confidentialité ? » Ça vous allez le trouver juste à côté, je suis désolé que le site mette un petit peu de temps à charger, ce n'est pas très fluide.

Public : C'est le réseau de La Cantine.

Vincent Lambert : Je crois, oui. Il continue à rebaisser. Oui. Pardon ?

Public : Inaudible.

Vincent Lambert : Je vais essayer. Dans le cas présent l'interface du site n'est qu'un client comme si vous vous connectiez dans Gajim. Donc vous pouvez vous connecter avec votre adresse personnelle, vous pouvez vous connecter avec une autre adresse. Et vous l'installez chez vous, en général il y a des petits détails techniques que vous verrez lorsque vous ferez l'installation, mais selon le serveur XMPP que vous allez utiliser, surtout selon la passerelle entre ce site et votre serveur XMPP que vous utilisez, vous pourrez autoriser les gens à se connecter soit à votre instance, soit que toute personne puisse se connecter soit seulement les gens de votre serveur.

Vous avez un deuxième onglet, je vais faire une présentation rapide parce que, malheureusement, le réseau est vraiment lent, chaque connexion prend vraiment du temps.
L'adresse est de toute façon publique, elle est utilisée depuis des mois en démonstration. Donc en théorie, les messages qui ont été postés jusque-là devraient être visibles dans Jappix.
On va se connecter sur un autre compte qui existe dans Jappix également.
Jappix est un autre réseau social qui existe, qui est également français, qui se base sur la même technologie. Donc la seule chose que j'avais faite préalablement à cette conférence est de relier les 2 comptes, le compte de démonstration qui est hébergé sur le site Movim et le compte de démonstration qui est basé sur Jappix ; les messages qui sont postés dans Movim s’affichent bien ici et, en théorie, les messages qui sont postés dans Jappix devraient s'afficher sur le site principal, mais ça rame un petit peu.

Le deuxième onglet qui s’appelle « explore », l'interface en anglais normalement est traduite lorsque vous créez votre compte, vous montre le deuxième aspect, la deuxième fonctionnalité du réseau, en plus du microblogging, je vous en parlais tout à l'heure, qui est une sorte de gestion de topics. C'est un petit peu comme un forum, vous allez pouvoir rentrer dans le serveur qui gère la fonctionnalité, créer un nouveau sujet et les gens vont pouvoir dialoguer et poster des messages, même s'ils ne sont pas dans votre liste de contacts. Ce sera le deuxième niveau de visibilité de vos messages : soit vos messages sont visibles par votre liste d'amis, soit, si vous les postez dans l'un de ces serveurs de discussion, ils seront visibles par toute personne ayant une adresse Jabber ; en quelque sorte ils sont publics.

Le troisième niveau qu'on a vu tout à l'heure tout en haut c'est violet, le niveau qui est visible par tout le monde sur Internet, c'est simplement que les messages vont être enregistrés sur une page web et donc les messages qui étaient visibles par tous sur le réseau XMPP seront republiés sur le Web. Donc n'importe quelle personne, même n'ayant pas une adresse d'accès au serveur XMPP, pourra voir un affichage de vos messages.

Je ne sais pas si je vais pouvoir tout montrer malheureusement. Un autre niveau de confidentialité qui n'est pas encore beaucoup utilisé c'est celui de personne à personne. Ça c'est la galerie de photos, qui vient d’apparaître un peu plus vite que d'habitude.
Il y a un moyen, qui va bien bientôt se mettre en place, de messages internes et l'idée c'est d'essayer de faire un système de communication qui soit un petit peu dans le concept de la Webmail, peut-être plus simpliste, mais qui reste un système de messagerie plutôt lent. C'est-à-dire que la messagerie instantanée qui est sur le côté — oui c'est vrai que je ne l'ai pas présentée —, vous avez ici une colonne noire sur le côté qui est censée être remplie avec vos contacts. Il y en a peut-être même en ligne. Non ! C'est le nombre de contacts qui est juste à côté, malheureusement sur les comptes de démonstration, il n'y a pas beaucoup de gens qui utilisent. Donc là, la colonne qui apparaît sur le côté normalement vous présente un certain nombre de personnes avec qui discuter, et vous avez ici en bas des petits onglets qui vont s'ajouter pour chaque personne avec qui vous allez vouloir échanger des messages. On va mettre un petit message test. Je ne sais pas s'il est passé ; je ne l'ai pas vu. Bon ! En théorie il était censé apparaître dans Jappix. Il est apparemment arrivé, demande de notification ; les 2 messages sont normalement arrivés dans Jappix.
Donc on peut communiquer à la fois en microblogging, en messagerie instantanée et prochainement en messages privés entre deux réseaux et entre deux personnes. Je vais arrêter les démonstrations parce que c'est un petit lent et je vais finir par vous présenter, je ne sais pas si on peut faire ça.

Les fonctionnalités qui sont attendues c'est la gestion des salons en plus de la possibilité de discuter en direct avec une personne qui est sur le réseau XMPP. La démonstration qu'on a vue tout à l'heure, les personnes qui discutent en messagerie instantanée peuvent le faire entre Movim et Jappix, entre Movim et Gajim, entre Movim et n'importe quel client, finalement, de messagerie instantanée.

Ce qui est pratique c'est que le site que je vous ai présenté fonctionne en version mobile, on l'a vu juste avant, mais elle n'est pas tout à fait prête, donc je ne la montrerai pas à l'écran, mais le site peut fonctionner très bien sur votre smartphone et, dès lors, vous avez moyen de communiquer avec les gens qui sont à leur bureau via ce réseau-là.

Et la dernière fonctionnalité dont je parlais qui n'est pas encore prévue parce que, malheureusement, il y a un seul développeur sur le projet donc ça demande du temps, ce serait éventuellement d'utiliser et en complément les web API de Mozilla pour permettre de faire plus de choses, par exemple éventuellement accéder aux données du téléphone, pouvoir poster facilement une photo depuis l'interface, depuis un téléphone, ce genre de choses. Et la deuxième chose ce serait, comme je disais, WebRTC ; il y a une technologie qui est apparue dans HTML5, qui est vraiment encore en brouillon, qui est censée être apparue dans les dernières versions de Firefox, il me semble en high quality, des choses comme ça, et qui permet de faire de la communication vidéo et orale, audio, via directement un navigateur. Donc on pourrait utiliser tout simplement le réseau Movim pour faire le point de relais entre les deux et mettre en contact votre navigateur avec celui de votre correspondant.

Je vais parler simplement de la pérennité du projet. C'est une question qui revient souvent.

D'abord la masse critique. La masse critique c'est quelque chose, à mon avis, qui est un petit peu à redéfinir. La masse critique c'est le nombre de personnes, d'après Wikipédia, qui est nécessaire pour lancer un mouvement. Lancer un mouvement ça veut dire simplement, dans notre cas, est-ce que vous avez moyen de communiquer avec les gens avec qui vous souhaitez entrer en contact ? Alors certes, vous n'allez pas trouver 500 millions de personnes sur ce réseau, parce que le réseau XMPP est plutôt technophile, on ne va pas parler du réseau étendu on va dire jusqu'à Gmail, parce que le réseau est un petit peu instable de ce côté-là, mais disons que les gens qui utilisent des serveurs XMPP de manière standard, qui ont un protocole standard et qui implémentent complètement ce protocole. Par exemple un chiffre a été donné par Jappix en 2012 de 20 000 utilisateurs sur le site, mais on n'a aucune idée de combien de personnes utilisent déjà le réseau, que ce soit déjà à l'étranger, que ce soit sur d'autres serveurs qui sont très massivement utilisés, ou que ce soit tout simplement les particuliers qui utilisent leur propre serveur.
Je pense tout simplement que la masse critique sera atteinte lorsque les gens qui souhaitent utiliser le réseau pourront entrer en contact avec tous leurs amis. Ça sera ça. Et si les gens qui ont déjà une adresse Jabber arrivent à convaincre éventuellement les gens qui sont dans leurs contacts de les rejoindre sur le réseau et de pouvoir partager des informations, que ce soit des photos de vacances ou que ce soit des informations plus techniques comme sur Twitter, on fait des partages d'actualité, des partages d'informations.
Personnellement, j'estime que la masse critique sera atteinte lorsque les gens avec lesquels je veux entrer en discussion seront là.

Le financement, à comparer par exemple avec Diaspora qui a à peu près fait la même chose que ce projet-là jusqu'à aujourd'hui, eh bien on a un budget qui est très limité. On n'a pas reçu reçu 200 000 dollars et, de toutes façons, je ne pense pas que ça aurait vraiment servi à quoi que soit. La motivation ici c'est le bénévolat. C'est de réussir à faire quelque chose qui fonctionne, de ne pas être dépendant d'un quelconque acteur, de ne pas devoir quoi que ce soit à qui que ce soit. Les seules dépenses qu'il y a ce seront le nom de domaine du site principal et le serveur sur lequel est hébergé le site qu'on a vu tout à l'heure, de démonstration, qui, à mon avis, restent des coûts qui sont tout à fait raisonnables. On n'a pas de problème d’infrastructure, comme je parlais du modèle centralisé, à savoir que comme chacun va devoir installer son propre réseau, en théorie les coûts d'infrastructure seront vraiment très faibles.

Pour avoir une transparence sur les dons que vous allez éventuellement effectuer sur le projet ou les financements qui ont été reçus, il y a un onglet Funds en haut du site principal movim.eu où vous allez voir tout simplement une ardoise, un petit tableau avec les dépenses du projet, les entrées d'argent et un total en bas.

Ce qui ralentit le projet je dirais que ce sont les contributions ; à l'heure actuelle elles sont vraiment peu nombreuses. Au niveau du développement on a des contributions ponctuelles. On a eu un gros développeur, une grosse contribution qui a duré deux ans mais qui s'est arrêtée malheureusement l'été dernier et, à l'heure actuelle, le projet est géré simplement par la personne qui a fondé le projet. Donc si vous avez envie de contribuer sur quoi que ce soit, c'est vraiment le moment.

Je termine cette conférence en vous indiquant comment contacter le projet. Vous avez un moyen d'aller sur le site principal movim.eu2 ; vous avez un moyen de tester comme vous avez vu tout à l'heure sur pod.mov.im ; si vous avez déjà une adresse Jabber vous pouvez également aller dessus ; vous avez un salon Jabber movim@conference.movim.eu, c'est un petit peu long et une mailing-list, plutôt anglophone si possible, que vous pouvez rejoindre en saisissant ce qui est écrit à l'écran.

Voilà. Si vous avez des questions je vous écoute.

Public : Pourquoi prendre deux noms de domaine movim.eu et mov.im ?

Vincent Lambert : Aucune idée !

Public : OK ! Pour ce qui est de MySQL, est-ce que ça gère aussi quelque chose de plus petit comme, je ne sais pas, LightSQL ou encore MariaDB ?

Vincent Lambert : Il me semble qu'au début du projet, je ne sais pas si je vais dire une bêtise, il me semble que c’était stocké dans du SQL light et il me semble, mais c'était vraiment au début, que ça a été abandonné pour des questions de perf [performances, NdT]. Depuis que je connais le projet, c'est du MySQL. Après je pense que s'il y avait des contributions….

Public : Est-ce que ça peut gérer MariaDB ? On peut faire marcher ça avec MariaDB ?

Vincent Lambert : MySQL, MariaDB, c'est la même chose, c'est compatible. Après PostgreSQL, pourquoi pas mais il faudrait des contributions. C'est du travail en plus !

Public : Merci pour la conf, c'est vachement intéressant. En fait, je suis loin d’être fan d'un modèle centralisé. Mais comment dire, si tout le monde installe son propre serveur avec ses données dedans, etc., c'est bien, sauf que derrière ça engage la responsabilité de chacun de faire ses backups, de garder un truc connecté, etc. Parce que si c'est nous le serveur, après je dis une connerie énorme, n’empêche que si quelqu'un veut aller sur nos infos, etc., bien si le serveur est éteint ou s'il n'a pas de serveur dédié…

Vincent Lambert : Il y a 2 réponses à cette question.
La première réponse que je vais donner c'est qu'il me semblait qu'il y avait une question de sécurité. Si quelqu'un veut accéder à nos données, de toute manière, si on part du principe que le réseau est décentralisé, il n'y aura pas un seul point d'accès comme je disais tout à l'heure, mais des milliers de sites différents, des milliers de centres de données, donc si quelqu'un veut voler les données à un endroit, il ira les prendre par exemple dans le cas de StatusNet chez Identi.ca, mais il n'ira pas les prendre chez celui qui a installé ça pour sa famille, pour dix personnes ; ça n'a aucun intérêt.

La deuxième réponse c'est que sauvegarder ses données, ce n'est pas encore faisable aujourd’hui, ça devrait être faisable plus tard, via un système d'export des données, je pense plutôt côté client pour le coup ; à moins que les gens ne veuillent le faire côte serveur mais, dans ce cas-là, ils mettront en place des scripts et on verra plus tard selon les contributions. Par contre, de base dans le réseau social, il y aura à terme une fonction d'export pour récupérer d'une part les données qui sont stockées côté client, parce que malheureusement les données type photos, vidéos ne peuvent pas être enregistrées sur le serveur XMPP, donc il y aura un premier moyen de récupérer toutes ses données via une archive ; et le deuxième moyen ce sera de récupérer ses données textuelles, tout ce qui a été posté en tant que microblog, toutes ces données-là seront exportables dans un autre format et, bien sûr, je pense que le but ce sera par exemple, en changeant d'adresse, on ait un moyen de réinjecter d'un coup tous ses contacts, tous les messages qu'on a déjà postés un jour et après les gens auront juste à nous accepter dans leur liste de contacts.

Public : Moi j'avais une question pour anticiper sur la conférence de Stéphane Bortzmeyer de demain soir, à laquelle je vous invite vraiment à assister. Je crois qu'il l'a baptisée « Si vous voulez sauver le monde, faites-le bien », et la question qu'il pose c'est celle de la fédération. Et je veux dire que si on prend l'exemple de pourquoi StatusNet n'a jamais décollé et que les gens s'installent des pods, c'est entre autres parce que la question de comment tu peux t'adresser à une personne qui est sur un autre serveur eh bien c'est chiant. Du coup comment c'est réglé dans Movim ce truc d'envoyer un message à une personne qui n'est pas sur le même pod que toi ? Ou je ne sais pas comment ça s'appelle.

Vincent Lambert : Alors dans le cadre de Movim en fait le serveur qui contient les données n'est pas géré par notre projet. Movim ne fait qu'implémenter un standard et donc, si la personne qui est en face a un serveur Jabber, ça ne posera aucun problème. Par contre, les passerelles doivent se faire au niveau du serveur Jabber. C'est-à-dire que si, par exemple, on veut communiquer avec quelqu'un qui est sur un réseau complètement différent dans sa structure, que ce soit sur Diaspora ou que ce soit sur StatusNet, il faudra faire des passerelles au niveau du serveur XMPP.

Public : Ce n'était pas ça ma question. Ma question c'est comment faire si toi tu as installé ton serveur, moi j'ai installé mon serveur, comment je fais pour envoyer des messages à une personne qui est sur ton serveur ?

Vincent Lambert : Il suffit juste de l'ajouter. C'est comme une adresse e-mail en fait.

Public : Mais du coup dans le formulaire, il faut que j'entre l'adresse e-mail complète, enfin l'adresse Jabber.

Vincent Lambert : C'est ça. Si vous avez par exemple votreserveur.fr, j'ai monserveur.fr, si vous voulez parler à mon frère, il faudra envoyer monfrere@monserveur.fr et il sera ajouté dans votre liste.

Public : Le fait qu'on ait aussi des gros acteurs, qu'il y ait des gros acteurs qui englobent beaucoup de personnes, etc. Pourquoi Facebook ça cartonne ? Parce qu'il y a beaucoup de monde. Bon, bref ! C'est autre chose. En gros, si tout le monde doit faire son propre son serveur on ne va pas aller loin. Il y a vraiment des gros acteurs qui vont accaparer du monde, etc. C'est très bien parce que ça donne accès au réseau mais le problème c'est qu'on a une conséquence, on arrive au problème du début, c'est l’argent. C'est qu'en soi, si on beaucoup de personnes, à la fin ça coûte une blinde.

Vincent Lambert : Je suis désolé j'ai oublié de répondre à votre question tout à l'heure. Sur la question de la sécurité des données, en termes de sauvegarde de données, Facebook, par exemple, peut garantir que vos données ne seront jamais perdues, si vous mettez vos photos dessus. Dans le cadre de Movim, si j'ai une coupure d'électricité, mes photos ne sont plus disponibles. Dans le cadre de Facebook, s'il y a une coupure d'électricité, il y a 30 serveurs qui reprennent derrière, avec des machines. Donc, en théorie, les données sont mieux en sécurité chez Facebook, je dirais en termes de disponibilité, plutôt.

[Rires]

Pour la disponibilité on peut s'arranger à terme avec d'autres personnes en faisant de la « répartition » entre guillemets de charge ; je n'ai pas encore étudié le sujet, mais c'est largement faisable. C'est-à-dire de faire de la réplication de vos données chez quelqu'un qui héberge également son serveur et de pouvoir, via un système simple à mettre en place, qui se base sur les noms de domaine, rebasculer entre un serveur et l'autre.

Public : Si les données doivent être partout, après je ne sais pas…..

Vincent Lambert : Chez des tiers de confiance.

Public : Oui.

Vincent Lambert : Pour répondre à la deuxième question que vous avez posée sur la répartition des serveurs, je vais les lister tout à l'heure.
Dans le problème du modèle décentralisé, le deuxième problème c'est le problème des super nœuds et je pense qu'il est inévitable, malheureusement. C’est-à-dire que si on lance un réseau décentralisé, les gens qui ont la motivation d'installer leur propre réseau l’installeront chez eux, pour eux, pour leurs proches, pour leur famille, mais il y a forcément des gens qui vont un jour se retrouver sans proches technophiles et qui vont devoir avoir un moyen de rejoindre ce réseau ; donc le modèle qui s'est passé avec StatusNet, notamment identi.ca, va obligatoirement se reproduire. C'est obligé !
Le but, par contre, ce serait d'avoir plusieurs identi.ca et pas un seul ; d'avoir plusieurs instances du réseau StatusNet réparties, qui soient chacune d'un certain poids. Par exemple le serveur Jabber, il me semble, ou Chat, je ne sais plus exactement le nom, est un gros serveur XMPP, mais n'est pas le seul. C'est le plus connu en France il me semble. Jappix est également un endroit où on peut créer un compte sur le réseau. Donc Jappix et Jabber sont deux gros points de centralisation de données sur un réseau décentralisé. Ça n’empêche pas les gens qui sont autour de pouvoir utiliser le réseau, mais ça, ça dépend du bon vouloir des gens de mettre en place.

Public : Est-ce que s'il y a vraiment un problème de ressources en termes de réseau et que c'est ça qui crée, contrairement à la vie courante, un élément de fiabilité sur le réseau ? Est-ce qu'on ne pas faire des réseaux qu'on a, un élément quasi monétaire, c'est-à-dire un peu comme dans le peer to peer où plus on a de contacts et d'échanges plus il y a un intérêt puisqu’on est à la fois serveur et client et donc on facilite les échanges ? Est-ce que ce n'est pas une méthode pour, un peu, forcer le fait que les gens aient des réseaux à eux ?

Vincent Lambert : Je pense que c'est un petit peu complexe de répondre comme ça, pour aider les réseaux entre guillemets « à devenir résistants », si c'est bien l'idée de la question, pour faire en sorte que les gens qui ont besoin de mettre en place des serveurs aient des ressources. Je ne sais pas si des gens ici dans la salle connaissent le modèle du site legtux.org3. C'est un site qui est gratuit, sur lequel vous pouvez créer votre site web. Vous allez ouvrir un compte, vous mettez votre site web. C'est gratuit la première fois, la deuxième fois aussi d'ailleurs. Si vous avez envie un jour de contribuer, vous pouvez faire un don et, jusque-là, le site de LegTux vit très bien avec le modèle de ce qu'il appelle de prix libre. C'est-à-dire qu'à l'inscription on va simplement vous demander de faire un don, mais vous pouvez faire un don de zéro euro, comme Wikipédia, exactement. C'est le même principe. Alors ce sera peut-être plus du sponsoring pour Wikipédia, mais effectivement le modèle du prix libre me paraît une des solutions possibles. Il suffit d'avoir suffisamment de gens motivés pour mettre en place un certain nombre d'hébergements pour que le serveur fonctionne, enfin pour que le réseau fonctionne.

Public : Ce n'est pas en termes de valeur monétaire, c'est en termes de valeur d'échange ; ce n'est pas forcément le fait qu'il y ait un vrai prix décidé à l'avance.

Vincent Lambert : La valeur d'échange, je ne suis pas sûr qu'il y ait cette notion dans XMPP. C’est-à-dire que si vous avez votre serveur, vous pouvez simplement héberger des comptes, proposer à des gens de s'inscrire sur votre site, mais malheureusement plus on a d’utilisateurs sur son serveur, plus il consommera. On n'a pas de possibilité de, entre guillemets, « renvoyer l'ascenseur » aux gens qui vont se connecter ou de faire grossir le réseau de cette manière-là. Le modèle du peer to peer est assez différent.

Public : Deux questions ; enfin plutôt une question et une remarque. Première question est-ce vous avez pensé à utiliser Friend of a friend côté sémantique ?

Vincent Lambert : Pardon ?

Public : La possibilité d'enrichir sémantiquement les pages de profils pour qu'ensuite d'autres réseaux utilisant Friend of a friend puissent réutiliser ces données.

Vincent Lambert : Je ne connais pas du tout, mais ça serait une super bonne idée de le proposer sur le salon ou sur la mailing-list. Je vais le noter à la fin de la conférence, je ne connais pas trop.

Public : Et deuxième point plus marketing. En marketing, en fait, on n'aime pas qu'il y ait différents noms pour un truc. C’est-à-dire qu'il y a un phénomène, en tout cas moi j'aime bien comparer ça à l’agrégation des planètes, le phénomène d'accrétion. C'est-à-dire qu'il faut qu'il y ait un gros objet qui attire tout à lui, et identi.ca c’est un peu ça, il y a un gros objet et les autres ils avaient beau exister, personne ne les voyait parce qu'on parlait tout le temps du même.
Et au fond, est-ce qu'il n'y a pas une forme de consensus à faire, en se disant on décentralise, ou en tout cas on a un réseau a-centré de serveurs mais qui sont derrière un même nom de domaine et, en gros, en trichant un peu ; c'est-à-dire qu'on dit qu'on peut avoir son domaine avec ses données, mais qu'on a tous le même nom de domaine commun, qui est malheureusement géré de manière centrée mais c'est un compromis et qui permettrait de faire des adresses simples c’est-à-dire que c'est @toto, et pas @toto.machin.machin.

Vincent Lambert : Je voulais vous montrer un truc sur le site, mais je n'arrive pas à ré-accéder à mon navigateur.
Je suis conscient qu'il y a un problème « marque ». Les gens se disent je vais sur Facebook, je sais que c'est que c'est par là. Si on se dit je vais sur un réseau décentralisé, je ne sais pas trop où est le site, je ne sais pas trop où est l’adresse, effectivement ça pose un problème. Ce problème est, pour le moment, je ne vais pas dire résolu, mais on propose une solution. C'est-à-dire que si vous allez sur le site principal du projet, vous allez trouver un onglet qui s'appelle « pod », il me semble, dans lequel on liste les différents endroits où vous pouvez vous inscrire. Si vous voulez créer un nouveau réseau et que vous voulez ouvrir l'accès à « votre nœud » entre guillemets sur le réseau à tous, si vous voulez permettre à n'importe qui de s'y inscrire, vous allez pouvoir définir un quota, dire je veux maximum 1000 utilisateurs, ou j'ai maximum tant de gigas à partager. Votre site sera ajouté dans une liste et les gens qui voudront se créer un nœud sur le réseau iront sur cette page et choisiront un petit peu au hasard les serveurs qui sont encore disponibles, qui ont encore de la place.

Le problème de faire un nom de domaine, une extension de nom de domaine ou un sous-domaine, de distribuer des sous-domaines aux gens qui veulent créer des sous-sites ou des nœuds sur le réseau, pour moi il est vraiment très simple, ça veut dire qu'on donne une cible et on dit « si on arrive à faire tomber ce nom de domaine-là, on a réussi à tous les avoir ». Donc malheureusement ce ne sera pas possible. Les gens pourront créer s'ils le veulent monreseausocial.fr, malanterne.com s'ils en ont envie ou lacantine.net, mais malheureusement le nom ne sera pas contenu dans l'URL et le seul point entre guillemets « de cohérence » entre tous les sites qui seront ouverts, ça restera au choix le nom du site tout simplement. Mais je pense qu'il changera bientôt, enfin ce qu'on peut mettre dans la recherche, donc aller dans Google et taper le nom du site. On trouvera très facilement comme on peut trouver très facilement identi.ca dans Google ou alors se rendre directement sur la page du projet et choisir au hasard dans la liste l'une des instances possibles, mais ça permettra aux gens de se dire Movim c'est là-bas.

Public : Si on voulait utiliser votre système pour faire un réseau social privé, quelles seraient les mesures de sécurité qu'il y aurait dessus ?

Vincent Lambert : Un réseau social privé, je pense que ce serait limité à de l'intranet. J'espère que c'est la question. Privé dans quel sens ?

Public : Thématique, organisationnel, ce n'est pas forcément uniquement national.

Vincent Lambert : Je ne sais pas comment répondre à cette question, honnêtement. Vous pouvez faire des sites sur lesquels vous allez empêcher les gens de s'inscrire et vous allez mettre en place en interne, si vous avez une entreprise par exemple, un moyen d’automatiser les inscriptions pour chaque personne et donc de contrôler les gens qui s'inscrivent sur votre site. Mais au final, la thématique du site c'est aux gens de la définir ; c'est un réseau social, ce n'est pas au sens d'un forum, donc c'est selon les gens qui posteront sur le site.

Public : Si par exemple on le crée pour une communauté, que ce soit une entreprise, une association ou n’importe quoi, si on veut effectivement utiliser le bénéfice des outils de réseau social mais sans donner ses données à Facebook est-ce qu'il y a des mesures de sécurité qui sont mises en place ?

Vincent Lambert : Mais vos données qui sont enregistrées ici ne sont pas données à Facebook. Je vous rassure ! Si vous « hébergez », entre guillemets hébergez, vous mettez en place une installation de Movim chez vous avec le serveur XMPP pour stocker des données également chez vous, vous allez posséder les données qui sont écrites dans le serveur par les gens à qui vous voulez le mettre à disposition et après, quelque part, c'est aux gens d'en faire ce qu'ils veulent. Mais il n'y aura pas de fuite de données. Chaque message qui est posté est, de toute manière, réservé aux inscrits du site, par défaut, donc il ne sera pas publié. Et si vous voulez tout simplement éviter les fuites de données en dehors du réseau, vous avez un moyen c'est de mettre ce site-là en intranet si c'est dans un bâtiment. Et si c'est sur le Web, de toute manière les gens auront un compte. Voilà. Par contre, il faut bien garder à l'esprit que toute information publiée sur Internet est, de toutes façons, copiable : un simple copier-coller permet de faire ressortir l'information d'un forum privé, d'un site privé, même que ce soit bloqué par des mots de passe, toute information est de toute façon duplicable.
On me tend des panneaux rouges en me disant que c'est la fin. Mais j'y réponds dans deux minutes.

Public : Question technique. Vu que tu utilises XMPP etc., etc., est-ce que le protocole que tu utilises pour Movim, enfin l’extension XMPP que tu utilises pour Movim est standard ? Est-ce qu'avec un client Movim on peut utiliser n’importe quel nœud XMPP ou il faut que les deux soient reliés d'une manière ou d'une autre ?

Vincent Lambert : Je réponds très rapidement à la question. Tout ce qui est écrit, tout ce qui est affiché dans Movim, provient directement d'un serveur XMPP donc c'est standard et ça se base sur les extensions qui ont été écrites ensuite. Donc c'est implémenté aujourd’hui dans Prosodie, pas très bien, ejabberd, TGaS, Openfire, etc. C'est déjà implémenté dans plein de serveurs.

Public : je fais très vite. Par rapport à la marque marketing du nom unique, etc., il y a une solution, ça peut être dur, c’est que dès que quelqu'un fait un compte sur un réseau, le login est redondé partout ; en fait on a un login unique qui redirige vers toutes les possibilités. Alors je ne sais pas si c'est faisable techniquement, mais au moins là on aurait une image, l’image c'est virtuel, il n'y a peut-être pas de serveur, etc., mais mondavid@jappix sera redirigé vers tous les autres et au moins…

Vincent Lambert : Je ne suis pas bien sûr d'avoir compris la question. Je reprends derrière.

FlOpEDT : un nouveau logiciel libre de gestion des emplois du temps !

FlOpEDT

Toutes celles et ceux qui ont travaillé dans un lycée ou une université savent à quel point la gestion des emplois du temps est un sac de nœuds. La personne responsable s’arrache les cheveux pour tenter de fabriquer quelque chose qui satisfasse tout le monde… et ne réussit jamais !

Alors, avec quelques enseignants de l’IUT de Blagnac, on a développé FlOpEDT. C’est un logiciel libre qui génère les emplois du temps tout seul et permet aux utilisateurs de saisir leurs disponibilités et d’apporter des modifications en ligne et en toute autonomie.
Toutes les briques de FlOpEDT sont libres, et lui‐même est en licence AGPL v3.

Facile à utiliser et plein de liberté !

Les utilisateurs se connectent et saisissent leurs préférences à l’aide d’une interface intuitive : un « sens interdit » pour les indisponibilités, une couleur explicite pour les préférences.
Saisie des préférences

Ensuite, l’emploi du temps est généré automatiquement en quelques minutes en respectant contraintes et préférences. L’emploi du temps est alors accessible à tous, et il est possible pour tout utilisateur de le modifier.
Interface de modification

Cette partie est celle qui étonne : on nous dit souvent que si tout le monde peut faire des modifications ce sera la pagaille. Notre expérience confirme l’inverse : cela génère du confort pour tout le monde, et tout le monde a à cœur de prendre soin de cette liberté nouvelle (pas de coups de fils à passer, pas de courriels gênés…). Évidemment, l’application empêche toute modification qui ne respecterait pas les règles fixées collectivement.

FlOpEDT est aussi doté d’un outil de synchronisation avec iCal (pour les agendas en ligne), ainsi que d’un outil de synchronisation avec des bases de données extérieures.

Plus précisément, FlOpEDT se divise en deux parties essentielles :

  • une application web, développée dans le cadriciel Django (Python 3), s’appuyant sur une base de données PostgreSQL ;
  • un outil de création de l’emploi du temps, qui passe par la définition d’un système d’équations linéaires (à l’aide de PuLP) et sa résolution.

FlOpEDT n’en est qu’à sa version 0, et il n’est pour l’instant pas extrêmement générique : l’adaptation aux contours précis de votre établissement demanderait pour l’instant du travail. Mais ce temps investi permettrait d’en gagner ensuite beaucoup, et vous participeriez au développement d’un logiciel à terme utile à toutes et tous. Alors n’hésitez pas à nous contacter si vous voulez le tenter, votre proposition ne fera pas flop

Télécharger ce contenu au format Epub

Commentaires : voir le flux atom ouvrir dans le navigateur