Une histoire de 'Magie'

J'ai découvert il y a peu cette histoire que j'ai trouvé excellente et donc il me fallait vous la partager.

C'est une histoire parue dans le Jargon File de Eric S. Raymond où il raconte une mésaventure qu'il a vécue il y a quelques années.

L'original - cache local

L'article est en anglais, mais je me risque à vous le traduire ;-)


Une histoire de “Magie”

Il y a quelques années, j'étais en train d'observer les baies contenant le PDP-10 du labo MIT AI et remarqua un petit interrupteur collé sur l'une des parois de l'armoire. C'était évidemment un bricolage maison, ajouté par l'un des hackers (bidouilleurs) du labo (personne n'a su qui).

Biensûr, on ne touche pas un bouton d'un ordinateur sans savoir ce qu'il fait, cela pourrait crasher l'ordinateur. L'étiquettage du bouton n'aidait pas vraiment à connaître sa fonction. Il avait deux positions qui étaient marquées au crayon sur le corps en métal du bouton avec “magie” et “plus de magie”. Le bouton était sur “plus de magie”.

J'ai appelé un autre hacker pour venir voir. Il n'avait jamais remarqué ce bouton auparavant. Après plus d'observation il s'est avéré que le bouton n'avait qu'un seul fil ! Le bout du fil disparaissait dans les entrailles de l'ordinateur, mais c'est un fait connu de tous les électriciens et électroniciens qu'un bouton ne peut fonctionner que s'il y a deux fils connectés. Ce bouton avait un fil connecté d'un côté et rien de l'autre.

Il était évident que ce bouton était une blague stupide. Convaincu que ce bouton ne servait à rien, on l'a actionné. L'ordinateur crasha instantanément.

Imaginez notre surprise totale. Nous pensions à une pure coincidence mais quoi qu'il en soit nous avons remis le bouton sur “plus de magie” avant de redémarrer la machine.

Un an plus tard, j'ai raconté cette histoire à un autre hacker, David Moon si je me souviens bien. Il semblait clairement pas convaincu par les vertues magiques de ce bouton. Pour lui prouver, je lui montrai le fameu interrupteur, toujours collé sur l'armoire avec un seul fil, toujours sur la position “plus de magie”. On reluqua encore plus l'appareil pour se rendre compte que l'unique fil était raccordé à un plot de masse de l'ordinateur. Cet indice supplémentaire rendait le bouton doublement inutile : non seulement électriquement il ne peut pas fonctionner, mais il est raccordé à un endroit qui ne pourrait pas avoir d'incidence sur le fonctionnement de l'ordinateur. On a donc actionné le bouton.

L'ordinateur planta instantanément.

Ce coup-ci nous avons appelé Richard Greenblatt à la rescousse, un éminent hacker du MIT qui était non loin de là. Il n'avait jamais remarqué ce bouton auparavant, lui non plus. Il l'inspecta avant de juger qu'il ne servait à rien et choisi de le retirer complètement. Nous avons ensuite relancé l'ordinateur et il a toujours fonctionné parfaitement depuis.

On ne sait toujours pas pourquoi ce bouton fait planter l'ordinateur. On a émis une hypothèse comme quoi il s'agirait d'une microfuite de courant pendant un millionième de seconde qui modifierait une capacité électrique suffisante pour perturber la machine. Mais nous ne saurons jamais la vérité. Tout ce qu'on peut dire c'est que le bouton était magique.

J'ai toujours ce bouton dans mon grenier. C'est peut-être idiot, mais je le garde toujours sur “plus de magie”.

1994 : une autre explication m'a été apportée. Il faut préciser que le corps du bouton est en métal. Supposons que le côté non branché de l'interrupteur était reliée au corps du bouton (habituellement le corps est connecté à un connecteur de terre, bien qu'il existe des exceptions). Le corps du bouton est connecté à la carcasse de l'ordinateur, qui est en théorie à la masse. Maintenant la masse de l'ordinateur n'est pas nécessairement au même potentiel que la masse de la carcasse. Donc en actionnant le bouton, la masse de l'ordinateur se retrouve connectée à la masse de la carcasse causant un chute/hausse de tension ce qui redémarre la machine. Cela a très probablement été découvert douloureusement cet écart de potentiel entre les deux masses qui a ensuite décideé de rajouter ce bouton pour faire une blague.

Sway la suite spirituelle de i3

J'utilise i3 depuis bientôt dix ans maintenant et ça fait maintenant près d'un mois que j'ai migré sur Sway.

Attends attends c'est quoi déjà tout d'abord ?

i3 est un gestionnaire de fenêtres pour le serveur Xorg. Son rôle est donc de placer les fenêtre à tel endroit, les organiser, les afficher ou non. Il permet également de gérer les raccourcis globaux pour lancer un programme ou une action lorsqu'il détecte une combinaison de touche. Tout ça est possible, car la gestion de l'affichage sous Linux est basé sur le protocole X11 qui défini tout un tas de règles et propriétés… Bref on s'en fout un peu de tout ce blabla…

X11 est donc un vieux protocole qui remonte à la moitié des années 80 et qui a subit des changements certes mais rien de bien folichon non plus. Depuis le temps, vous vous doutez que le matériel et le logiciel a radicalement changé. Maintenant certains concepts du protocole sont désuets et plus du tout adapté au matériel d'aujourd'hui. Du coup, un ensemble de nouveaux protocoles ont été développés pour remplacer X11 : Wayland.

Beaucoup de devs de Xorg ont donc décidé de participer à cette nouvelle initiative depuis dix ans et depuis ça mûrit doucement mais surement. Les plus gros environnements graphiques ont déjà (au moins partiellement) adopté Wayland (notamment GNOME et KDE). Mais tous les gestionnaires de fenêtre X11 n'ont pas encore commencé la transition.

Une capture d'écran prise lors de la rédaction de cet article.

Un petit aperçu de la bête.

Il faut dire que contrairement à X11, Wayland a une architecture complètement différente. Alors que sous X11, il suffit de peu de code pour implémenter un gestionnaire de fenêtre, sous Wayland, le concept même de gestionnaire de fenêtre n'existe plus. En plus de gérer les fenêtres, il faut gérer les entrés utilisateurs (claviers/souris/_), gérer les sorties (écrans), gérer la composition d'affichage, gérer les fenêtres… Bref il faut faire implémenter tout le protocole Wayland et non juste apprendre à manipuler les fenêtre de X11.

À cause de cela, le foisonnant écosystème de gestionnaires de fenêtres pour X11 ne migrera pas vers Wayland. Alors qu'avant c'était un ptit exercice de code pour un projet le temps d'un week-end pour les développeurs, implémenter l'équivalent pour Wayland est amplement plus compliqué et chronophage. Mais heureusement certains projets existent pour faciliter la tâche aux autres devs.

Bon ok mais du coup sur Wayland, il y a quoi ?

WLC a été dans les premiers frameworks pour aider les devs à créer de simples gestionnaires de fenêtres. Il est arrivé assez tôt mais au fil du temps a été abandonné car le code a été bidouillé un peu dans tous les sens sans vision globale (pas étonnant pour un projet qui défriche une nouvelle techno).

Wlroots est le nouveau porte étendard et a donc la lourde tâche de simplifier l'écriture de "WM" pour Wayland. Il est tout nouveau, tout beau pour le moment. Il est développé par une communauté de devs issus de différents projets ayant monté un crowdfunding pour accélerer le projet. Il sert de base à plusieurs projets comme Sway (un simili-i3) mais aussi Way-cooler (un simili-awesome), pour ceux qui suivent régulièrement mon blog, Purism s'en sert de base pour leur Phosh (interface pour téléphone portable sous Linux)… Le projet a donc déjà beaucoup plus de recul grâce à l'expértise acquise via WLC, on peut donc espérer qu'il saura se montrer robuste dans le temps.

Sway est donc la suite spirituelle de i3 au point où même le fichier de conf de i3 est compatible avec Sway (enfin partiellement, on vera plus loin). On peut donc avoir un comportement identique entre Sway et i3. La migration de l'un à l'autre est donc transparente et sans douleur. Ou presque.

Au départ, Sway était basé sur WLC mais cette lib a vite montré ses faiblesses. Maintenant (tout du moins les dernières beta) s'appuient sur wlroots et le projet atteint parfaitement son but d'être compatible avec i3.

Du coup pour migrer il faut ?

Déjà, faut emerge sway en veillant à bien prendre les beta de la branche 1.x et non les versions en 0.1x qui sont basées sur wlc encore. D'ailleurs quitte à migrer sur Sway, autant en profiter pour recompiler le plus de paquets possibles avec le support de wayland : dans /etc/portage/make.conf on rajoute wayland dans les USE. Puis un ptit emerge -UDnav @world . Une fois fait il vous reste plus qu'à démarrer votre sway !

Bon dans mon cas je n'utilise pas systemd ni elogind ni policy-kit et mon gestionnaire de session est qingy. Donc pour rajouter sway, on crée /etc/qingy/sessions/sway

#! /bin/sh

if test -z "${XDG_RUNTIME_DIR}"; then
    export XDG_RUNTIME_DIR=/tmp/${UID}-runtime-dir
    if ! test -d "${XDG_RUNTIME_DIR}"; then
        mkdir "${XDG_RUNTIME_DIR}"
        chmod 0700 "${XDG_RUNTIME_DIR}"
    fi
fi
exec /usr/bin/sway >> /var/log/sway.log

Bon ça fait rien de bien palpitant : ça crée le dossier temporaire qui va bien et après ça lance sway.

Facile !

Ouai ouai. Bon en vrai le fichier de conf i3 faut le compléter un peu.

Première chose, ajouter la conf du clavier dans ~/.config/sway/config :

input 65261:24672:Lord_Corp_Kbd_0.1 {
  xkb_layout fr,fr,us
  xkb_variant bepo,,
}

Si ce n'est pas le cas, il faut passer tous les bindsym en bindcode c'est-à-dire virer tous les symboles et le remplacer par le keycode. Pour avoir ça, il faut utiliser l'utilitaire xev et appuyer sur la touche correrspondante. Exemple en bépo pour é :

KeyPress event, serial 34, synthetic NO, window 0x800001,
    root 0x39c, subw 0x0, time 15988577, (963,-103), root:(2190,1340),
    state 0x0, keycode 25 (keysym 0xe9, eacute), same_screen YES,
    XLookupString gives 2 bytes: (c3 a9) "é"
    XmbLookupString gives 2 bytes: (c3 a9) "é"
    XFilterEvent returns: False

Le keycode est donc 25.

Après la conversion c'est bon pour Sway.

Quelques ajustements dans l'environnement ?

Bon premier truc à savoir, par défaut Sway (si configuré avec le use X) fera tourner vos applis X11 via XWayland sans rien faire à tel point que vous ne vous rendrez pas compte si une appli est native ou non. Et c'est le cas même pour des applis qui semblerait difficilement compatible (genre xclip fonctionne bien) mais pourtant…

Bon par contre aurevoir scrot. Le meilleur outil pour faire des captures d'écran ne fonctionne pas mais il existe Grim qui s'en rapproche surtout lorsqu'on le couple avec Slurp.

Concernant mpv, si vous aviez fait de la config particulière, il faut désormais faire en sorte d'utiliser la sortie vidéo gpu.

Concernant QuteBrowser… bha même s'il peut tourner nativement avec Wayland il a quelques soucis un poil chiant pour le moment, du coup je le fais tourner via XWayland.

Mais à quoi bon ?

Bha c'est plus moderne. Bon c'est aussi pour aider à essuyer les plâtres en reportant les bugs.

Mais il y a quand même un avantage non négligeable pour l'utilisateur de base : Plus de processus tournant avec les droits root. D'un point de vue sécurité c'est excellent. Qui plus est, il me semble que contrairement à X11, les risques de keylogger sont bien moindres.

PS : et tout roule ?

Tout. Sauf, les jeux.

  • GzDoom ne sait pas gérer la souris comme il faut.
  • Quake3 ne sait pas locker la souris même avec des builds issues de git.
  • RetroArch tourne nickel.

Eternal Jukebox

Je pense que vous avez tous déjà eu une chanson qui vous a obsedée pendant des jours/semaines. À peine terminer il faut se la remettre. Encore. Une troisième fois. Et encore une quatrième.

Mais il existe un moyen de s'écouter un même morceau pendant très longtemps.

L'Eternal Jukebox va scanner un morceau et indexer tous les beats. Il va répertorier tous les beats identiques et va vous permettre de lire le morceau. Mais c'est alors que la magie se produit : il ne va pas lire le morceau de façon linéaire mais aléatoirement passera d'un beats à l'autre si les deux sont similaires.

Ça va aller en avant dans le morceau ou en arrière et du coup le morceau sera joué dans un ordre assez déroutant. Et au final vous n'arriverez jamais à la fin de votre morceau.

Il s'agit d'une repompe d'un précédent concept le Infinite Jukebox sauf que là c'est paramétrable et il y a quelques fonctionnalités en plus.

Vous pouvez donc régler la sensibilité de la détection de similarité des beats afin d'augmenter/réduire le nombre d'embranchements possibles, permettre de ne prendre que des branches qui retourne en arrière, uniquement des longues branches…

Il existe également une option pour auto-canoniser un morceau de musique. Bref ça transformera n'importe quel morceau en un canon et franchement j'aime pas mais certains apprécient visiblement.

Bon, vous voulez le lien ? … il est ici.

Voilà amusez-vous bien. Et pensez à Tune avec le Branch Similarity Threshold à 50 voire moins.

Certains morceaux sont plus "compatibles" que d'autres.

Quelques morceaux qui passent plutôt bien :

Monter un server esclave Dns

Si vous avez un nom de domaine à vous (et j'espère que si vous êtes sensibilisé à votre identité numérique vous en avez un) il y a deux possibilités :

  • soit vous laissez la tâche d'héberger votre zone à un prestataire (souvent celui qui vous a vendu le nom de domaine)
  • soit vous l'hébergez vous-même.

Bon, personnellement je pense qu'il vaut mieux que vous l'hébergiez vous-même. Soit dit en passant, je vous ai déjà concocté un joli guide concernant DNS plutôt complet. J'ai rien contre le fait de laisser un prestataire le faire. Je n'ai, à vraie dire, jamais vraiment entendu d'histoire de magouille/mauvaise gestion/d'usurpation ou autre saloperie à ce propos. Mais héberger son domaine est vraiment super simple, ça demande peu de ressource, pas vraiment contraignant. C'est vraiment le B.A.BA de l'auto-hébergement.

Et qui dit auto-hébergement, dit ?

Panne. Merci de suivre !

Bref, un jour où l'autre votre serveur se viandera et vous serez marron. Par chance, comme la plupart des anciens protocoles de l'Internet, DNS a été pensé pour être vraiment résilient. Il est très facile d'avoir plusieurs serveurs à même de répondre pour votre zone.

C'est une architecture Maître-Esclave où vous allez avoir votre serveur Maître qui connaît les informations concernant votre nom de domaine et qui les enverra aux serveurs esclaves qui recopieront ces informations et les communiqueront aux clients.

D'un point de vue de l'utilisateur, il ne verra pas de différence selon si l'info parvient d'un serveur esclave ou du maître. Il arrive d'ailleurs parfois que le Master ne soit pas joignable depuis Internet mais uniquement par un réseau privé et que donc seul les serveurs esclaves soit utilisés par les clients.

Vous pouvez avoir autant de serveur esclave que vous le voulez. Si jamais le maître tombe les serveurs esclaves seront toujours à même de fonctionner et vice versa.

Dans la suite je vais plutôt utiliser le terme zone DNS à la place de domaine. Allez on met ça en place !

Knot sur le master

On commence par modifier le serveur maître.

Rajouter un remote

Un remote est tout simplement un serveur distant avec lequel on interagira. Rien de bien méchant :

- id: slave_server
    address: 123.321.123.321

C'est tout.

Ajouter une ACL

Les ACL sont les régles définissants les droits que vous allez attribuer à une zone. En gros vous voulez autoriser votre zone à envoyer les modifs vers le serveur esclave.

  - id: acl_slave
    address: 123.321.123.321
    action: ["transfer","notify"]

Confer la zone

Bon jusqu'à présent vous avez ajouté des options globales à votre configuration Knot. Maintenant il faut affecter des options sur votre zone.

Soit vous mettez toutes les options dans un template que vous affecterez à vos zones, soit vous mettez les options à chacune de vos zones (le template permet d'appliquer les mêmes réglages à plusieurs zones d'un coup).

template:
  - id default
  acl: [ "acl_localupdate", "acl_slave"]
  notify: slave_server
  …

Là c'est un extrait du template par défaut où on affecte l'ACL que l'on a créé précédemment. Et ensuite on indique qu'il faut notifier le remote créé précédemment.

Le notify permet à votre master d'indiquer au slave qu'il doit rafraîchir ses infos car le master vient de modifier la zone.

C'est bon

Ouai c'est tout mais faut penser à reload avec un ptit knotc reload.

Knot sur le slave

Et maintenant on configure votre serveur esclave.

Rajouter un remote

Ça ressemble beaucoup à la même chose que tout à l'heure vous allez me dire ! Bha ouai.

- id: master_server
    address: 123.321.123.321

Ce coup-ci le remote est obligatoire et n'est pas là juste pour que ce soit clair.

Ajouter une ACL

  - acl: acl_master
    address: 123.321.123.321
    action: notify

Confer la zone

  - domain: mon.domaine
    master: master_server
    acl: acl_master

Et on reload !

Le master et le slave sont prêts et maintenant ?

Voilà c'est fait votre zone est maintenant répliquée sur un autre serveur qui peut prendre la main si votre serveur tombe en panne. Vous pouvez le tester avec l'outil Dig pour voir si le serveur esclave répond : dig votre.domaine @serveur.esclave

Bon si vous voulez que ça fonctionne il reste deux étapes capitales :

  1. Rajouter un enregistrement NS dans votre zone pointant vers votre serveur esclave.
  2. Informer également votre registrar pour que ça soit pris en compte.

C'est super mais…

Haa non pas d'objection !

J'ai pas les moyens de me payer un autre serveur !

Ha bha il suffit de demander à vos amis geeks. Héberger une zone pour un pote ça coûte absolument rien.

Et si vous avez pas d'amis bha… demandez-moi ! Je vous ferai une petite place volontier.

Ha mais c'est gentil mais j'utilise Bind…

Ça marche même si les serveurs maîtres et esclaves n'utilisent pas les mêmes logiciels vu que c'est un fonctionnement de base du protocole. Vous pouvez avoir du Bind et du Knot et du NSD par exemple. C'est d'ailleurs pas mal d'avoir des implémentations différentes (en cas de bugs, tous les serveurs ne seront pas impactés).

Vous trouverez des tutos pour faire de même avec Bind dans le pire des cas ;-)

Beurk c'est pas secure !

Rhaaa mais si c'est possible ! Juste que j'ai pas envie de vous faire un article fleuve mais la doc existe.

Hey mais mon DNSsec est foireux sur le slave !

Ouai. Et pour l'instant j'ai pas la solution car non il ne faut pas filer sa KSK au slave (on ne peut pas avoir autant confiance envers le slave).

Le HTTP Black Header

Rhaaaa ce que c'est chiant ces sites avec leur design super clair qui casse les yeux !

Bon maintenant qu'on a l'entête HTTP : Do-Not-Track, on pourrait pas avoir un nouvel header bien plus utile : Black.

Votre navigateur envoie cet entête et de lui même le serveur vous retourne un site ouaib avec un design tout de noir vếtu. Bon pas complètement noir non plus, mais un design sombre globalement.

Bon et si en passant, par défaut les navigateurs pouvaient se mettre dans le crâne que par défaut une page non chargée, pas besoin d'envoyer le plus étincellant des blancs mais au contraire un noir soyeux et suave ça serait pas mal.

On a tous subit le phare dans la nuit en plein visage lorsque tu sors le téléphone de sa léthargie pour vérifier un ptit truc vite fait (heuuu… je l'ai activé ou pas le réveil ?)…

Et je ne parle pas uniquement sur Android mais sur les gros ordis de bureaux également.

Bref ça changerait pas la face du monde mais ça serait pas dégueulasse comme option.

Il aura quand même fallu dix ans à Google pour se rendre compte qu'afficher une interface sombre peut épargner un ptit chouilla de batterie (d'autant plus maintenant avec les écrans oled), donc on va ptet ravoir une vague d'interface sombre comme à l'époque d'holo. Croisons les yeux.

PS :

Ça va peut-être exister bientôt ! Gabriel de #LDN m'informe qu'il existe un brouillon des Media Queries Level 5 dans lequel il y a la prefers-color-scheme ce qui permet de spécifier si l'on souhaite un thême plutôt clair ou sombre. Bref dans un futur incertain on aura probablement cette option.

Les services du Fédiverse fin 2018

J'aime le Fédiverse. Mais si vous savez, c'est le web 3.0. Mais contrairement aux annonces précédentes, il existe déjà et vous pouvez l'utiliser dès maintenant !

Donc le Fédiverse c'est tout un ensemble de différents services qui savent parler entre eux. Du coup, sur le même principe que les mails, un utilisateur sur le service X peut interagir avec un utilisateur du service Y.

Fini les silos de données qui vous enferment et vous retiennent prisonnier. C'est également un outil pour combattre l'effet réseau : si votre service est dans le Fédiverse, même si vous êtes que deux utilisateurs de votre service, c'est pas grave, vous êtes dans le Fédiverse et avez accès à des millions d'autres utilisateurs !

Le fonctionnement de la fédération ressemble à un mélange des mails et du RSS : vous vous créez un compte sur un serveur dans le Fédiverse et ensuite vous vous abonnez à des émetteurs de contenu (une personne qui blog, une chaîne de vidéo, un hashtag d'une instance, une galerie photo…) et ensuite vous n'avez plus qu'à attendre que le contenu vous soit envoyé dès sa création. Mais vous n'êtes pas seulement consommateur, vous pouvez également réagir, mettre en favoris, commenter, publier du contenu.

Le Web 2.0 c'est le web participatif où l'utilisateur est captif des plateformes, le Web 3.0 c'est l'utilisateur qui redevient maître de ses données et qui peut participer à toute une myriade de services interconnectés.

Allez c'est parti pour un petit tour du Fédiverse en cette fin 2018. Si j'oublie un service m'insultez-pas mais parlez-m'en pour que le je rajoute à la liste.

Mastodon

Mastodon(RSS) est le poids lourd du Fediverse avec ses près de deux millions d'utilisateurs. C'est donc un système de microblog avec des hashtags et une interface avec de multiples colonnes. De part sa notoriété maintenant, il est le fer de lance du Fédiverse et être compatible avec lui est un objectif primordial pour tout nouveau service qui se crée. Il est écrit en Ruby couplé à PostgresQL, Redis, NodeJS, bref pas le plus simple à héberger.


Pleroma

Pleroma est le service que j'ai désormais adopté.

C'est également du microblog avec hashtags comme Mastodon mais reposant sur des technologies un poil différentes. L'avantage est que c'est beaucoup plus simple à héberger que Mastodon et donc pour une instance mono-utilisateur c'est bien plus adapté.

L'interface PleromaFE est sure une colonne, à la twitter

Il paraît que ça ressemble à Twitter

Il y a plusieures interfaces utilisateurs, soit PleromaFE qui ressemble à Twitter avec deux colonnes, une avec les mentions et de quoi écrire et une seconde avec la timeline.

L'interface MastoFE est un copié collé de celle de Mastodon

Non, ce n'est pas Mastodon mais bien Pleroma mais avec MastoFE

La seconde interface est celle de Mastodon (inspirée de TweetDeck).

Le rythme de dev est assez élevé mais pour l'instant il n'y a pas de sorties officielles, du coup c'est via git uniquement. En plus de se fédérer via ActivityPub, il parle le OStatus ce qui permet de se raccorder à pas mal d'autres services. Il est compatible avec les applis Mastodon. C'est codé en Elixir et nécessite une base PostgresQL.

Bref si vous voulez en savoir plus j'ai déjà écrit un article rien qu'à lui.


GnuSocial

GnuSocial est le papy des réseaux sociaux fédérés décentralisés et libres. Parti d'Identi.ca pour finir en GnuSocial après moults forks et merges…

C'est encore du microblog à l'ancienne (comprendre Twitter) mais souvent les instances ont viré la limitation du nombre de caractères.

L'interface ressemble comme deux gouttes d'eau à Twitter

Le microblog approuvé par RMS

L'interface principale de Pleroma était à la base une interface pour GnuSocial. La montée en puissance de Mastodon lui a redonné un sursaut d'activité.

Il est codé en PHP avec une base MySQL ce qui était classique à l'époque où il a commencé.


MissKey

Misskey(RSS) est un Mastodon qui a été doppé, programmé principalement par des Japonais.

C'est donc du microblog mais propose pas mal de petites améliorations dans l'interface mais également des fonctions supplémentaires comme, par-exemple, des jeux/des sondages/des réactions… Ils se vantent d'être en perpétuelle évolution et force est de constater que le rythme de dev actuel est effectivement très élevé.

La Home de Misskey est assez joli avec des widgets un peu partout.

Au premier abord c'est assez fouilli mais au final pas tant que ça, il y a pas mal de thêmes différents (dont des sombres).

Je l'ai un peu testé mais pas plus que ça.

Côté technique c'est du NodeJS avec MongoDB


Microblog.pub

Microblog.pub est encore un service de microblog.

Il est orienté instance mono-utilisateur et se targue de ne pas nécessiter JS (tout le monde s'en fout ou presque mais moi non et visiblement l'auteur non plus).

Du microblogging pur, sans aucune fioriture

Le minimalisme dans le Fédiverse

Je ne l'ai pas testé, mais il a l'air un peu plus simple que la concurrence. J'ai l'impression qu'il s'oriente moins dans l'interaction et plus dans la publication.

Il est écrit en Python.


Osada

Osada est tout récent et représente un peu moins d'une centaine d'utilisateurs à l'heure actuelle.

Il parle ActivityPub mais aussi Zot (que je ne connais pas). Il n'est pas centré uniquement sur le microblog mais un mix étrange de différentes apps. On peut biensûr microblogguer (et ça fédère) mais il propose même du WebDAV (transfert de fichier) ce qui est pour le moins surprenant mais ça fédère pas.

aperçu de l'interface dépouillée d'Osada

le design est bien moins à la mode mais ça charge vite.

Il propose une gestion (basique) de calendrier et d'évènement, mais ça ne fédère pas.

Sa population est bien plus diverse qu'à l'accoutumée : à première vue peu d'occidentaux, beaucoup de Sud-Américains et de Caribbéens. Bon je l'ai testé une soirée, j'ai pas réussi à avoir de contacts avec d'autres personnes…

Le projet est surement bien trop jeune pour le moment mais à surveiller, il adopte une approche clairement différente et sa communauté pourrait s'avérer bien différente de ce à quoi on est habitué par chez nous.

Pour monter une instance ça sera encore du PHP et du MySQL ou PostgreSQL.

Plus d'infos dans les commentaires grâce à eSquid.


Hubzilla

Hubzilla ressemble un peu à Osada : il est compatible un peu avec tous les protocoles du Fediverse Zot, ActivityPub, Diaspora et OStatus. Le fourre-tout.

Encore une capture d'écran de réseau social, rien de bien différent

La home de Hubzilla | Lascapi

Je ne l'ai pas testé mais visiblement il tente de se fédérer le plus possible. Merci Lascapi pour l'image.

Si vous voulez monter votre instance c'est le classique PHP et MySQL.

Plus d'infos dans les commentaires grâce à eSquid.


Friendica

Friendica(RSS) est une implémentation de Diaspora (ça tire du côté de Facebook) mais est en passe d'ajouter le support d'ActivityPub (en plus de Diaspora et OStatus) et donc se fédère déjà avec les services précédemment cités.

C'est lui aussi un ancien avec environ 2000 utilisateurs actifs et un grand nombre d'instances.

| merci Jared

C'est moins orienté microblog et plus partage de photos/d'évènements et compagnie.

J'ai pas testé, mais ça ne m'attire pas dans le concept, c'est pas ce que j'affectionne dans les réseaux sociaux. Il propose le moyen de communiquer via IMAP ce qui est unique pour l'instant. C'est propulsé par le classique PHP+MySQL.


Peertube

Peertube est un projet monté par Chocobozz et fortement soutenu par la communauté via un crowdfunding monté par Framasoft. Il s'agit d'un service de vidéos en ligne à la Youtube mais encore une fois avec la fédération et tout.

Bien entendu vous pouvez regarder les vidéos des différentes instances sans vous y créer de compte.

Interface de l'instance Skepticon

L'interface est classique pour un visiteur lambda tout en étant fédéré, comme quoi c'est faisable.

Donc un vidéaste poste une vidéo et des gens depuis un autre service peuvent commenter/mettre en favoris… Le projet bien que déjà fonctionnel n'en est qu'à ses débuts et donc de nombreuses fonctionnalités sont encore à attendre.

Il est propulsé par NodeJS avec PostgreSQL mais aussi Redis et nécessitera FFmpeg pour l'encodage vidéo. Attention se monter une instance Peertube va nécessiter du CPU pour l'encodage des vidéos, de pas mal de stockage et aussi pas mal de bande passante, c'est clairement le plus cher à héberger de tout le Fédiverse.


Funkwhale

FunkWhale est lui le Grooveshark du Fédiverse. C'est une application pour écouter de la musique en fédérant les bibliothèques et à terme plus d'interactions avec le reste du Fédiverse.

L'interface est scindée en deux, à gauche la partie lecture, à droite la partie bibliothèque.

C'est effectivement assez ressemblant à Grooveshark comme à l'époque.

Pour se monter une instance il faut un ptit PostgreSQL, un Redis et surtout Python.


Plume

Plume est un service de Blog, pas microblog mais de vrai blog. Exit les limitations de caractères et bonjour le MarkDown pour rédiger des articles.

Il est codé en Rust avec une base PostgreSQL ou SQLite. Les articles sont donc suivables depuis les autres services.

Exemple de blog de Valère

L'interface de Plume et à droite, le même article vu depuis Pleroma.

Par exemple, depuis Pleroma, vous suivez un auteur, vous recevrez l'article complet qui apparaîtra dans votre Timeline un peu à la façon des RSS.


Write.as

Write.as(RSS) est un autre service de Blog, un peu comme Plume mais il s'agit d'une plateforme payante, mais le logiciel est libre et auto-hébergeable également. Je ne l'ai pas testé mais visiblement ça marche bien, les articles de blog sont bien poussés vers les followers et dans le futur il sera même possible de commenter depuis le Fediverse en répondant.

Cela ressemble à n'importe quel blog

À gauche l'article de blog et à droite comment ça apparait dans Pleroma.

Le logiciel qui propulse le service est WriteFreely et est écrit en Go et stock dans MySQL. Il est intéressant de voir que les devs du projet monte une instance officielle payante pour pouvoir se rémunérer mais qu'il est possible de s'auto-héberger gratuitement.


Read.as

Read.as est fait par la même équipe que Write.as (sisi je vous jure !), c'est pour … heuu … lire du contenu du Fédiverse. Pour le moment il n'y a pas grand-chose à se mettre sous la dent mais à voir dans quelque temps. Potentiellement intéressant. C'est aussi du Go et MySQL.


Prismo

Prismo est un simili HackerNews/Journal du Hacker/Reddit, bref, un aggrégateur de liens.

Du Ruby, du NodeJS et du PostgreSQL ici.

L'interface web de Prismo ressemble énormément aux alternatives

On reste sur une interface standard, la partie fédérée ne transparait pas.

Il est possible donc de poster des liens, qui seront notés et commentés.

Le projet est tout jeune mais déjà fonctionnel.


PixelFed

PixelFed est l'instagram du Fediverse. Bon je dis ça mais j'ai jamais vu Instagram non plus, je sais pas à quel point cette comparaison tient la route. Bref c'est du partage de photos fédéré.

Les images prennent le plus de place dans une interface très dépouillée.

La Home | Jared

Je ne l'ai pas testé mais quelques images en provenance de Dada : timeline-profile-settings-discover. Merci à Jared et Dada pour les images.

Il n'est pas encore complètement fédéré (c'est d'ailleurs à deux doigts de devenir un meme du Fediverse), mais ça arrive bientôt. Il tourne avec le classique PHP+MySQL avec supplément Redis.


Pinafore

Pinafore est juste un frontend pour Mastodon, une interface utilisateur quoi. Il vous faut un compte sur une instance Mastodon ailleurs et Pinafore vous fournira une interface différente.

L'interface est très sobre sur une seule colonne et très réactive

C'est plus dépouillé que le Mastodon par défaut et très réactif.

C'est écrit avec svelte que je ne connaissais pas.


Aardwolf

Aardwolf(RSS) va être un simili facebook. Il est codé en Rust mais n'est pour l'instant pas du tout utilisable, c'est beaucoup trop tôt.

C'est un prototype de la future interface

Juste une maquette pour le moment.

On en reparlera dans quelques années quand il se féderera via ActivityPub.


Anfora

Anfora se veut assez proche de PixelFed avec le partage de photo en ligne de mire. Codé en Python, il utilise pour sa part Redis. Il est lui aussi encore trop tôt pour l'utiliser, il ne se fédère pas encore au Fédiverse mais ça devrait arriver avant la première version 0.1.


Plus d'infos concernant le Fediverse

Il existe quelques sites qui vous permettront d'avoir des infos diverses et variées :

  • The-Federation.info propose des stats sur le nombre d'utilisateurs et de nœuds des différents services.
  • Fediverse.party est plus joli et plus joyeux (bha ouai c'est une fête !) est plus didactique et propose un flux RSS avec des news en provenance d'un peu tous les services du fediverse.
  • Fediverse.network est plus austère mais propose du monitoring des instances (et par la même occasion quelques stats).

Je remarque en passant que pas mal de ces projets héberge leur code ailleurs que sur Github (certains ont quand même un miroir sur github). Il existe d'ailleurs un projet de forge logiciel avec support ActivityPub, on pourra bientôt recevoir les commits dans notre ptite Timeline !

Clients ACME Pour Letsencrypt

La vague de blogposts concernant LetsEncrypt a l'air de s'être dissipée, du coup j'en profite pour en remettre une couche.

LetsEncrypt c'est une Autorité de certification gratuite mais ce n'est pas leur seule contribution. LetsEncrypt c'est également une automatisation pour la génération/signature des certificats x509 via un protocole normalisé : ACME.

Du coup, il y a le serveur (le logiciel se nomme Boulder et est libre lui aussi, vous pouvez le trifouiller depuis son dépot) qui est peu connu mais surtout les clients. Et j'ai bien dit LES clients.

Certbot

Avant de s'appeler Cerbot c'était LetsEncrypt mais la confusion entre l'autorité de certification et l'outil a poussé à le renommer. Il s'agit du client officiel et est donc le plus populaire.

Et c'est là que je vais jouer les grognons : il est pas terrible et chaque fois que je vois des gens l'utiliser j'ai mal pour eux.

Trop lourd

Il est écrit en Python et déjà ça commence comme un point noir : sur des install Linux minimaliste, Python est déjà suffisamment massif pour être contraignant. Je sais que pas mal de monde me trouve un peu trop extrémiste sur ce sujet et pourtant je persiste : installer autant de paquets pour ça me paraît absurde.

Chaque paquet que l'on installe est un potentiel de bugs et de failles et augmente d'autant la maintenance nécessaire. Avoir un système minimaliste est une des composantes de la sécurité (réduire la surface d'attaque).

Il s'auto-update

Ouai pour la sécurité c'est bien. Mais par contre ça prend une plombe. Et surtout il arrive que parfois ça se passe mal. Je l'ai déjà rencontré le coup du “Tiens mais pourquoi le certif est expiré, pourtant j'ai bien cronné cerbot !” qui déconne à cause de ses updates (et biensûr 0 supervision sur cette machine :-°).

Il touche potentiellement à la conf de votre serveur web

Ouai pour certains c'est un argument de vente mais pour moi absolument pas. J'aime pas qu'on touche à mes précieux fichiers de conf.

Les autres

Bon, j'ai pas donné trop d'arguments contre certbot mais c'est suffisant pour au moins aller voir la concurrence.

Il y en a dans tous les langages, tous les formats. Je ne les listerai pas, car je les ai pas tous testés, mais je vais vous en recommander deux différents.

Acme-client

Celui-là est en bon vieux C des familles. C'est-à-dire que vous aurez pas grand chose à installer : très peu de dépendances, pas d'interprêteur ni de machine virtuelle pour le faire tourner.

Il est issu de chez OpenBSD, ce qui est pour moi un gage de qualité (notez que je dis ça mais j'ai jamais fait tourner de BSD… une fois goûté Gentoo, on ne veut plus aller ailleurs). Il est dispo chez Gentoo et Alpine (entre autre) ce qui couvre mes besoins et s'appuie sur LibreSSL.

Il ne gère que le challenge http-01 ce qui suffit pour la majorité des cas (pas de wildcard du coup) et il va falloir confer votre serveur web comme il faut pour que ça tourne tout seul. Il s'automatise super bien, est très rapide et le code stable.

Dehydrated

Celui-ci, est en fait un simple script bash avec tous les outils qu'il faut lier les uns aux autres. Enfin simple script bash… il est tout de même super complet et fiable. Il utilise des outils qui ont fait leurs preuves, les dépendances les plus exotiques sont openssl et curl, c'est dire.

Il est plus complet qu'acme-client dans le sens où il gère également le challenge dns-01 ce qui vous permettra d'avoir un certificat wildcard.

Le fait d'être un script bash signifie qu'il est compabtible avec à peu près tous les nunux, c'est donc ma solution de repli quand acme-client n'est pas dispo. Un seul fichier à transférer pour l'installer, ensuite un fichier de conf à remplir et éventuellement un hook pour recharcher votre serveur. Le ptit fichier de conf de la doc est bien commenté de partout, il n'y a pas de surprise.


Voilà j'espère qu'avec ce ptit article je vous donnerai l'envie d'aller voir un peu les alternatives. Certaines peuvent probablement répondre mieux à vos besoins que Certbot.

Et merci LetsEncrypt pour tous ces certs.

La demoscene vol.5

Je vous ai déjà saoulé concernant les démos. Mais je vais continuer !

À l'origine la demoscene a débuté dans les années 80 en utilisant des C64, des Amiga et des Atari. Le but d'une démo était donc de pousser au maximum les capacités techniques de ces machines pour produire des œuvres les plus impressionnantes graphiquement et musicalement. Mais à partir de la moitié des années 90, la demoscene a entamé sa migration vers les PC (sans pour autant complètement délaisser les anciennes plateformes, même aujourd'hui).

Mais, le souci c'est que la plateforme PC est une plateforme mouvante question matériel. Du coup sa puissance augmente graduellement avec le temps. Du coup ça devient difficile de s'émerveiller devant une nouvelle démo : « Est-ce qu'il s'agit d'une performance incroyable dans le code ou bien juste que la machine est bien plus puissante que les précédentes ? ».

Je le répète encore mais la demoscene c'est aussi des compétitions (compo) dans différentes catégories. Du coup sur PC il devient très difficile de juger la performance technique d'une démo. De nouvelles catégories ont donc émergées.

Les catégories 64K et 4K (entre autre) sont en fait des contraintes : les démos doivent tenir dans moins de 64Koctets ou 4Koctets (c'est selon). C'est vraiment une contrainte énorme. 4 secondes de MP3 en 128kbps (l'un des formats les plus communs) représente 64Ko.

Il faut donc se débrouiller pour faire rentrer plusieurs minutes de musique et de graphismes en utilisant le moins de données. Cela va sans dire que la tâche est ardue.

Décroissons !

One of Those Days by Loonies

À peine sortie de l'emballage, cette démo est sortie pour la Revision 2018 et a gagné la première place de sa catégorie (pc 8K).

Une balade à ski bien rythmée avec un ptit tunnel psychédélique et enfin un bonhomme de neige.

capture d'écran de one of those days par Loonies

C'est de saison

Monarchahedron by Fulcris

Celle-ci aussi n'est pas bien vieille. De la géométrie avec des effets d'ombres diffuses, de réflexions et vraiment bien foutue techniquement.

Elle fait son ptit effet du haut de ses 6Ko.

Un sol orangé un ciel bleu et des octahèdres réflêchissants. très abstrait

Combien de face sur un Monarchahedron ?

Hartverdrahtet by Akronyme Analogiker

Première de la compo 4K lors de la Revision 2012. Elle mérite largement sa place avec sa musique électro, ses couleurs et ses ptits effets de lumière.

Mais surtout ses fractaux en 3D sont vraiment superbes.

On est à l'intérieur d'un fractal 3D extremement complexe. C'est légèrement brumeux, très atmosphérique.

C'est sûr que pour créer des modèles 3D très poussé le mieux c'est de pondre un fractal.

Gravity Haze by Traction and Fit

Et on finit par la plus petite de la fournée : 1Ko. C'est ridiculement petit.

Présentée en compet lors de l'Assembly 2015, celle-ci est vraiment mignonne avec une petite musique (mais ce sont des sons externes qui ne sont donc pas décomptés).

Un tour de force magistral.

complètement abstrait des formes colorés.

Ça ferait un joli screensaver :-þ

Updater le cache des méta-données lorsque Portage utilise git

Gentoo se modernise et depuis quelques années l'arbre Portage peut-être transmis non plus uniquement via rsync mais aussi par git maintenant. D'un point de vue réseau c'est bien plus rapide : au lieu de parcourir toute l'arborescence pour voir ce qui doit être mis à jour ou non, vous allez juste récupérer les commits depuis la dernière mise à jour. C'est vraiment plus rapide.

Par contre lorsque vous faites ceci, vous n'aurez plus les méta-données de l'arbre. Et ça pose soucis si comme moi vous utilisez eix pour chercher des infos sur les ebuilds. Si vous mettez à jour via emerge --sync ou même via eix-sync vous aurez donc potentiellement de nouveau paquets mais eix n'aura pas les infos.

Du coup pour mettre à jour le cache de méta-données il faut utiliser la commande egencache --jobs=8 --update --repo=gentoo

Et armez-vous de patience.

Autant la synchro via git fait gagner énormément de temps, la régénération du cache est super lent. Je ne le fais pas systématiquement. Étant donné que je suis tous les nouveaux ebuilds qui rentrent dans l'arbre via RSS, je sais à peu près ce qui est susceptible de m'intéresser et quand j'en vois un qui m'attire je régen le cache.

Quompression

J'ai l'algorithme ultime de compression de données. Vous allez pouvoir compresser plusieurs Go voir To de données et faire rentrer ça dans quelques dizaines d'octets.

Le quantum des données

L'algo en lui-même est assez flexible et permet de compresser sans aucune perte n'importe quel type de données. Le temps de compression est très rapide et s'appuie sur des technologies éprouvées.

Le système se base sur les data-hints afin d'améliorer la vitesse de décompression. Plus vous rajoutez de data-hints plus votre fichier compressé va gagner en taille. C'est donc tout un compromis qu'il va falloir faire : Préferez-vous un fichier rapide à décompresser ou la taille finale est vraiment le critère le plus important pour vous ?

Avec cette technique un jpeg de 2Mo est compressé dans moins d'1Ko sans data-hints.

Comment ça marche ?

L'algo de compression repose en grande partie sur les algos de hachage tels que md5, sha1

Utilisez ces algorithmes sur votre fichier, notez les résultats dans un fichier et … voilà.

Et niveau restitution ?

Bha là je vous cache pas que c'est là que le bât blesse. Va falloir bruteforcer.

Vous balancez des données aléatoires et vous hachez ces données et regarder voir si ça correspond aux hash que vous avez. Si c'est le cas, c'est bon vous avez vos données, si c'est pas le cas, vous jetez les données et vous recommencez. Ouai ça peut être un poil long voire impossible.

Mais toute l'astuce est dans les data-hints : Dans votre fichier compressé vous pouvez rajouter des données supplémentaires pour aider à la reconstruction des données.

Le plus répandu est size qui permet tout simplement d'indiquer la taille du fichier d'origine. Ça permettra à la décompression de créer déjà des données à la bonne dimension.

Ensuite un pratique est le fb qui rajoute comme information quel est le premier bit de données (est-ce un 1 ou un 0 ?). Ça va permettre à l'algo d'être deux fois plus rapide.

Un autre permettant encore de doubler est lb qui indique quel est le dernier bit de données (encore un 1 ou un 0 ?).

Comme expliqué plus haut, le format est très flexible, car vous pouvez ajouter autant de data-hints que vous le souhaitez et même en créer de nouveaux si ça peut aider. Par exemple mime qui indique tout simplement le type de fichier compressé. Ou alors pic-sub qui indique sur une photo quel est le sujet (un peu de machine learning peut aider à accélérer la décompression).

Décompression

J'ai jamais réussi à décompresser un fichier, mais je suis pas d'un naturel très chanceux.

Le format n'impose pas le type de hash ni leur nombre, mais il est préferable d'en indiquer au moins deux différents (surtout si vous n'ajoutez pas de data-hints) afin d'éviter les erreurs de décompression.

Gzip-bombe avec Nginx sans PHP

Bon je matais un ptit coup GoAccess et dans la section 404. Là, près de 18000 tentatives de connexion à wp-admin.php qui correspond à l'accès à l'interface d'administration de WordPress. Et plein de tentatives vers divers trucs du même genre pour tenter s'infiltrer dans la machine.

Heureusement pour moi, j'utilise Hugo qui est un générateur statique. Donc côté serveur web, il n'y a pas de PHP ou autre langage dynamique. Les pages webs sont de simples fichiers textes et le serveur web n'a aucune intelligence et ne fait qu'envoyer les pages demandées.

Mais du coup ça fait un bail que ça me titille de tenter de faire chier les scanners.

GZip Bombe

C'est une technique assez ancienne et simple. Vous créez un fichier bidon mais très gros contenant plein de fois un même caractère. Vous compressez ce fichier. Un trèèèès gros fichier donnera un très petit fichier.

La magie des serveurs web et clients web (les navigateurs mais aussi les logiciels qui scannent (entre autre)) fait que la plupart des logiciels savent communiquer en s'échangeant des fichiers compressés. Du coup le but du jeu est que le serveur envoie une bombe à un scanneur qui tentera alors d'ouvrir la page web en décompressant le fichier reçu sauf que ce fichier est énorme ce qui bouffera du CPU et probablement énormément de RAM.

Mise en place sur NGINX

On trouve déjà pas mal d'exemples de ce genre de truc avec Nginx mais ils sont tous prévus pour être utilisés via PHP. Un ptit tour sur votre moteur de recherche favoris vous donnera plein d'exemples. Sauf que je vais pas foutre PHP juste pour ça…

Il va donc falloir ruser.

1. Créer la bombe

On va créer un fichier de 10Go avec uniquement des zéros. Et on va le gziper et ça va faire 10Mo.

dd if=/dev/zero bs=1M count=10240 | gzip -9 > 10G.php

Ça prend un peu de temps, vous inquiétez pas. Vous le placez à la racine de votre site ouaib.

2. Mise en place du piège

On édite la conf de votre vhost nginx : /etc/nginx/conf.d/lord.re.conf

location ~* \.php(/|$) {
	root /home/nginx/lord.re;
	try_files $uri /10G.php;
	types { text/html php; }
	add_header Expires "Wed, 11 Jan 1984 05:00:00 GMT";
	add_header Content-Encoding gzip;
}

Voilà on ajoute deux entêtes HTTP. Le premier sert pas à grand chose mais visiblement il est défini sur deux installations Wordpress que j'ai testé.

Le second entête indique que ce sont des données gzippés et que donc le client va devoir les décompresser. Si vous le faites pas, votre navigateur web va tenter de télécharger le fichier au lieu de tenter de l'afficher.

On redéfini le type du fichier php en tant que text/html pour indiquer au client que c'est une page web classique.

3. Profit !

Vous voulez tester ?

Et bha venez. Les navigateurs réagissent tous un peu différemment. Certains bouffent du CPU mais pas trop de RAM, d'autres bouffent à mort de RAM…


Merci à Fol pour les modifs qui rendent le truc un peu plus simple encore !

MPV et les scripts

MPV est de loin le meilleur lecteur vidéo toute plateforme confondue à l'heure actuelle. Et pas la peine de venir pleurnicher, VLC c'est bien gentil mais non merci : c'est largement moins bien foutu même si ça a des fonctionnalités exotiques utiles à moins de 1% des utilisateurs.

Bref je disais quoi ? Ha ouai MPV c'est super. Mais on peut encore un peu l'améliorer ! Et oui ma bonne dame, voyons ça de suite ! Et encore quelques points d'exclamations histoire de véhiculer un peu plus d'enthousiasme !!

Les scripts

MPV peut recourir à des scripts pour ajouter des fonctionnalités. Il en existe beaucoup en LUA quelques-un en Javascript et après un peu de vrac.

Ils sont à placer dans ~/config/mpv/scripts et hop ça marche. Oui c'est tout.

Bon après certains peuvent avoir des dépendances externes, d'autres peuvent nécessiter d'ajouter des raccourcis. Bha ouai, un script qui ajoute de nouvelles fonctions c'est cool mais encore faut-il pouvoir déclencher ces nouvelles fonctions !

Puisque je suis quand même super gentil, je vous explique comment ajouter un raccourci. Vous éditez ~/config/mpv/input.conf avec la combinaison de touche suivi de l'action. Un par ligne.

Et concernant les subs ?

Et bha en fait quand vous regardez votre vidéo de vacances il peut s'avérer que vous êtes en présence de touristes (ou si vous êtes le touriste et que vous croisez des touristes) et du coup vous comprenez pas ce qu'ils racontent parcequ'ils ne parlent pas votre langue. Il vous faut donc des sous-titres mais plutôt que de les chercher vous-même, autant mettre à contribution les Internets.

Subliminal est un logiciel spécialisé dans la recherche de sous-titre. Vous voyez où je veux en venir ? Et ouai, il y a un script qui vous permet d'utiliser subliminal et de vous mettre le sous-titre tout seul dans la vidéo juste avec une touche. Il vous faudra donc installer subliminal de votre côté. Ce script se nomme autosub. Une fois mis en place il suffit de choisir la langue en modifiant le fichier lui-même pour mettre un ptit "fr" qui va bien. Et maintenant b et pouf ça trouve votre sous-titre et le démarre.

Et là, des fois, ça fait chier, le sous-titre est pas synchro avec le film. Donc vous avez beau caler le sous-titre comme il faut à un instant t, bha deux minutes plus loin, c'est plus synchoro. C'est rageant, hein ?

Et c'est là qu'on dégaine fix-sub-timing qui va vous permettre de très facilement régler ce souci : Vous synchronisez une première fois le sous-titre et vous appuyez sur ctrl-w. Vous laissez passer un peu de temps, vous resynchronisez le sous-titre et vous remettez un coup de ctrl-w et c'est bon il vous recalcule tout comme il faut et gère la vitesse du sous-titre et c'est tout bon.

Quelques autres scripts kivonbien

Pour les bourrins

Il m'arrive régulièrement de commencer une vidéo et de pas la finir. Et de la reprendre plus tard. Bon là de base, MPV peut reprendre la vidéo car si vous avez été prévoyant vous avez fait en sorte que lorsque vous appuyez sur q ça sauvegarde l'état de la vidéo avant de fermer.

Sauf que je suis un bourrin et je ferme MPV comme un porc en le killant voir en killant Xorg, bref il a pas le temps de sauvegarder. C'est donc pour des gens comme moi qu'a été créé Autosave qui sauvegardera toutes les X secondes l'état. Comme ça lorsque vous rouvrez la même vidéo ça reprend là où vous en étiez.

Pour les sensibles

Pour protéger mes mirettes j'utilise Redshift (comme tout le monde j'espère) ça rougit l'écran pour moins vous bombarder les rétines. En plus de ça je baisse drastiquement la luminosité de l'écran via DDCUtil. Toujours est-il que la baisse de luminosité pour un film ne me chagrine pas, mais la teinte rougeatre m'horripile réellement. Du coup Toggle Redshift vous permet de mettre en pause puis de relancer Redshift tout seul.

Pour les Youtube Spectateurs

Un ptit Youtube Quality vous permettra d'un appui sur ctrl-f vous afficher un menu avec le choix pour la qualité des vidéos Youtube. Par défaut Youtube-dl sélectionne la meilleure qualité disponible mais c'est pas toujours le plus judicieux. Bref maintenant vous avez la solution, et vous pouvez le faire pendant la vidéo pour passer d'une qualité à une autre sans interruption.


Bon c'est tout ce que j'utilise, mais il y en a un petit paquet d'autres. Mais n'essayez pas pour autant de tous les mettre… car rappelez-vous l'adage : plus vous en mettez plus ça va merder.

Bloquer l'accès au net à un soft sous Nunux

Suite à une ptite question sur le Fédivers voilà une petite astuce pour votre nunux favoris.

Lorsque vous lancez une application par défaut, celle-ci a accès au net sans restriction. Voyons comment couper complètement l'accès au net à une application.

Pour cela vous aurez besoin de la commande ip faisant partie de iproute2 et … c'est tout. Il y a fort à parier qu'elles soit déjà installées vu que c'est la base pour configurer le réseau (non non, ifconfig est obsolète sous Linux depuis près de 17ans, faut se mettre à la page sans souffler et traîner les pieds, merci).

Il faut tout d'abord créer un namespace réseau qui n'aura pas accès au net. C'est impressionnant dit comme ça mais en vrai c'est juste ip netns add nonet . Là, on a donc créée nonet.

Et maintenant il ne reste plus qu'à lancer une application dans ce namespace particulier avec ip netns exec nonet votre_appli . Et voilà.

Bon bien entendu si vous ne voulez pas exécuter l'application en root il faut ajouter du su . Ce qui donne quelque chose comme ip netns exec nonet su lord -c "votre appli .

Voilà voilà :-)

En vrai les namespaces réseau peuvent faire des trucs bien plus puissant comme avec l'utilisation d'un VPN forcer des applis à l'extérieur d'un VPN et d'autre les forcer à l'intérieur mais c'est pas le but de notre article ;-)

Pleroma : L'alternative à Mastodon

Je me suis monté une instance Pleroma perso. Il y a peu je vous chantais les louanges de l'interface de Mastodon et là PAF je vous parle de la concurrence !

Pleroma est logiciel de microblog fédéré compatible OStatus et s'appuyant sur ActivityPub. Cette description devrait faire tilt chez certains d'entre vous : « Mais c'est de Mastodon qu'il parle le con ! » Et bien oui et non.

Pleroma == Mastodon ?

Pleroma est une alternative à Mastodon mais participe au même réseau : le Fediverse. Ça veut dire que n'importe qui sur Pleroma peut s'abonner à un mastonaute et vice versa. Tout comme on peut également s'abonner à un compte Peertube, à une instance Plume, à un compte PixelFed… Bref, le nouveau web décentralisé et fédéré.

capture d'écran de l'Interface MastodonFE pour Pleroma

C'est très proche de Mastodon, hein ?

Mastodon est le logiciel le plus populaire du Fediverse avec le plus grand nombre d'instances et d'utilisateurs. Mais il existe pas mal d'autres logiciels dans le Fediverse avec des buts différents. Beaucoup sont orientés microblog (à la twitter) dont Pleroma et GnuSocial. Pleroma est très proche de Mastodon dans son fonctionnement, au point d'avoir même un fork de l'interface par défaut de Mastodon avec de très légères modifs. Du coup Pleroma propose actuellement deux interfaces différentes : PleromaFE se basant sur une colonne de contenu et MastodonFE se basant sur un nombre variable de colonnes configurables. Pleroma est bien moins connu mais mériterait plus de reconnaissance et de popularité dans le Fediverse.

Mon indépendance

J'ai utilisé un compte Mastodon d'ailleurs pendant un peu plus d'un an et demi. Mais je squattais une instance choisie un poil au hasard (mais ça s'est avéré un excellent choix avec une super admin et tout). Je n'ai pas l'habitude d'utiliser des services que je n'administre pas en dépendant du bon vouloir de quelqu'un d'autre, du coup ça fait un bail que ça me titillait de me monter une instance Masto. Bref je me suis monté une ptite instance Pleroma (voir plus bas) uniquement pour moi et j'en suis super content.

Pourquoi du Pleroma au lieu du Mastodon ?

Parceque contrairement à Mastodon ça consomme trois fois rien, pas cinquante dépendances et bha pour l'instant ça tourne automagiquement. Je n'ai pas encore eu d'upgrade majeure (juste du git pull, mix deps.get, /etc/init.d/pleroma restart) mais pour l'instant rien à déplorer. Un ptit downtime de trois minutes à chaque fois et c'est reparti.

Un des points forts de Pleroma est qu'il s'agit d'une implémentation un peu plus stricte d'ActivityPub par rapport à Mastodon. En interne, Pleroma fonctionne nativement en ActivityPub et suit plus les spécifications. Du coup si vous suivez un blog Plume parlant ActivityPub, vous voyez les articles complets avec leur formattage. Pleroma arrive à se fédérer à plus de services différents que Mastodon.

Un article du blog Funkwhale vu depuis Mastodon.

Vu depuis Mastodon c'est pas la joie.

Un article du blog Funkwhale vu depuis Pleroma avec le formattage et l'article complet.

Vu depuis Pleroma c'est bien plus joli.

Le souci c'est que Mastodon étant devenu le mastodonte du Fedivers (facile celle-là), il faut se plier à ses façons de faire et être compatible avec lui. Mais la communauté étant plutôt bienveillante tout s'arrange assez vite et tout progresse dans la bonne direction.

Monter son instance

Sur Alpine Linux c'est un poil plus exotique mais c'est pas pour autant compliqué. Elixir est un peu chiant, car il veut compiler des trucs avec gcc. Bref il va vous falloir install tout un tas de trucs avec apk add elixir erlang-runtime-tools erlang-tools erlang-xmerl gcc make musl-dev postgresql postgresql-contrib .

J'ai créé un user spécialement dédié, ensuite un ptit git clone depuis leur gitlab. On installe les dépendances via mix deps.get et enfin on conf la bête avec mix generate_config. La conf générée est à mettre dans config/prod.secret.exs (ouai n'ayant jamais tripotté d'Erlang avant on est dépaysé par ces commandes et ces extensions de fichiers).

On crée la base postgresql via le script fourni su postgres -c "psql -f config/setup_db.psql" . Yapuka démarrer ça tout seul avec un fichier d'init fait maison genre

#! /sbin/openrc-run
name="Pleroma"
description="Pleroma : social network qui poutre."
depend() {
  use postgresql nginx
}

start() {
  ebegin "Starting Pleroma"
  start-stop-daemon -v --start --exec "/usr/bin/mix" --user "pleroma" --chdir "/home/pleroma/pleroma" --env "MIX_ENV=prod" --background --stdout "/var/log/pleroma.log" --stderr "/var/log/pleroma.err" --make-pidfile --pidfile "/run/pleroma" -- "phx.server"
  eend $?
}

stop() {
  ebegin "Stopping Pleroma"
  start-stop-daemon --stop --exec "/usr/bin/mix phx.server" --user "pleroma" --chdir "/home/pleroma/pleroma" --env "MIX_ENV=prod" --pidfile "/run/pleroma"
  eend $?
}

Il vous reste plus qu'à copier (et adapter un peu) la conf nginx fournie : cp installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf. Là il faut changer le server_name (à deux endroits), l'emplacement des clés ssl_trusted_certificate et ssl_certificate et enfin ssl_certificate_key et enfin le connect-src 'self' wss://example.tld et à reload votre nginx.

Ça y est, vous avez votre instance prête à démarrer. Vous allez pouvoir créer votre utilisateur et commencer à follow vous amis du Fediverse !

Bon ça prend rien en CPU, concernant le skeudur par contre ça augmente (enfin uniquement la base de donnée).

  29/10/2018   04/11/2018   20/11/2018
DB postgres 26Mo 88Mo 320Mo
/home/pleroma 144.5Mo 144.9Mo 161.5Mo

Migration de Mastodon vers Pleroma

Par défaut la limite de caractères est de 5000 ce qui est au moins dix fois mieux que les 500 de Mastodon.

Pour migrer depuis Mastodon, j'ai exporté la liste de comptes que je follow que j'ai ensuite importé dans Pleroma. Ça m'a permis de très vite peupler ma federated timeline et de retrouver tous les gens que je suivais auparavant. Et d'ailleurs, fait amusant, comparé à Mastodon, on voit également les réponses des gens que l'on follow quand la conversation est initiée par des gens que l'on ne follow pas, ce qui permet de facilement trouver des gens potentiellement intéressants.

Dans les options de compte Mastodon, on peut indiquer le nouveau compte vers lequel on migre ce qui permettra aux gens de volontairement vous suivre sur le nouveau compte.

Autre bon point, les applis pour Mastodon sont compatibles avec Pleroma : j'utilise encore Tusky sans rien faire de particulier.

Bref, j'ai pas perdu de contenu et je n'ai pas changé mes habitudes : j'utilise MastodonFE qui est l'interface de Mastodon avec quelques légères modifications : les colonnes s'adaptent en largeur toutes seules. Par contre j'ai perdu tous mes followers… pas un drame, si les gens aimaient ce que je publiais avant, ils aimeront ce que je publie maintenant et me followeront à nouveau.

Si vous débutez dans le Fediverse et que vous voulez avoir un minimum d'indépendance, il est probablement préferrable de vous monter une instance Pleroma plutôt qu'une instance Mastodon. C'est plus simple et plus léger tout en étant quasi identique (voire mieux) à l'utilisation. Par contre je ne sais pas comment ça se comporte avec de multiples utilisateurs, peut-être que ça monte moins en charge que Mastodon…


EDIT : 20/11/2018 : Pleroma envoie les bons headers HTTP de lui même donc plus la peine de faire ça via Nginx. Merci Tetsumaki.

Confer un ONT alcatel

Une panne de connexion Internet à la maison est l'un des plus grand cataclysme des temps modernes. Pour parer à toute éventualité (enfin à mon niveau), j'ai choppé un ONT de rabe.

Un ONT est un petit appareil qui fait la conversion entre le signal optique de la fibre… optique vers un signal électrique en RJ45. Mais il ne fait pas uniquement cela (ça serait un media converter sinon). Le FTTH en France est très majoritairement en GPON. C'est-à-dire que sur une seule fibre on y mutualise plusieurs clients (jusqu'à 32 voire 64 ça dépend).

Du coup l'ONT doit parler avec l'OLT (qui est l'appareil chez l'opérateur) en faisant en sorte de pas marcher sur les platebandes de vos voisins avec qui vous partagez la fibre. Et il doit également faire en sorte de chiffrer vos communications pour que vos voisins ne puissent pas chopper vos précieuses données. Et cela se fait à base de SLID qui est un mot de passe.

Donc voilà, votre ONT n'est pas juste une bête boiboite noire à poser chez vous, il faut aussi y configurer le SLID. Il s'agit en vrai d'un mini ordinateur sous Linux (comme d'hab) avec ses failles.

Configurons donc un Alcatel I-010G-U

  1. Raccordez votre PC directement au cul de l'ONT via un câble réseau
  2. Configurez votre PC en 192.168.1.1/24 (ex: ip a a 192.168.1.1/24 dev eth0)
  3. Démarrez l'ONT
  4. Maintenez 5s le bouton reset de l'ONT jusqu'à ce qu'un ptit flash ait lieu sur les LED
  5. Ouvrez votre navigateur sur la page http://192.168.1.251
    Page d'accueil de l'ONT

    La page d'accueil de l'ONT

  6. Rendez-vous dans SLID configuration
    Page d'accueil de l'ONT

  7. Entrez votre SLID
  8. Rebootez l'ONT
  9. Patientez 5 minutes qu'il se mette à jour et redémarre plusieurs fois
  10. Profitez des Internets \o/

Et voilà un ONT prêt à prendre le relai en cas de soucis avec le premier.

L'interface web de l'ONT n'est plus accessible désormais. Si vous voulez y retourner, il faut refaire un reset de la bête.

Acko.net

Winamp va revenir foueter des lamas

Winamp fait sa comm en ce moment pour un retour prochain. Bon je ne vais pas jouer les rabats-joie et remettre en question l'intéret de la chose (il y a vraiment des gens normaux qui utilisent encore un lecteur audio ?). Mais plutôt vous parler vite fait d'AVS.

Winamp était franchement bien à l'époque. Son architecture à base de plugin était vraiment super. Du coup on pouvait rajouter des codecs, des skins à ne plus savoir qu'en faire et tout. Mais ce qui me plaisait le plus c'était l'AVS : l'Advanced Visualization Studio.

L'AVS

C'est un truc assez classique vu de loin. Une représentation graphique de la musique jouée en temps réel.

Classique. Ouai mais non ! Là c'était carrément un éditeur temps réel avec quelques fonctions et effets que l'on pouvait ajouter/combiner/programmer.

Il y avait une grande communauté de bidouilleur s'affairant à faire le truc le plus impressionnant. Et le tout était uniquement calculé par le processeur en réagissant aux signaux audio. Ça ressemble fortement à la demoscene : créer des œuvres synesthésiques avec une contrainte de temps réel !

Exemple d'un preset AVS

Houuu les gros pixels baveaux

L'éditeur était super simple d'accès et chaque modif était appliquée en live, sans phase de compilation ou autre. À peine tu modifies une variable que tu voyais le résultat à l'écran. J'étais particulièrement mauvais du fait que je ne savais pas programmer (ça n'a pas changé je vous rassure). Heureusement, Winamp était livré avec quelques presets (c'est le nom des scripts) parmi les plus appréciés du forum de l'époque.

Il existe une version Web désormais mais c'est pas aussi intuitif que l'original.

Si vous voulez retrouver une bonne sélection de presets vous pouvez aller visiter VisBot sinon cette vidéo Youtube vous donnera un aperçu du truc.

Acko

Quelques artistes créaient des packs complets où ils épataient la galerie. Un de mes préférré est Steven Wittens plus connu sous le nom de Whacko avant de devenir Acko qui a créé quelques packs. Il a créé parmi les presets les plus travaillés avec de la 3D et tout. Si vous avez un Winamp fonctionnel, vous pourrez tester ses presets téléchargeables.

Mais au-delà d'AVS, le gars s'est créé un des sites web les plus extraordinaires qui soit d'un point de vue technique. Acko.net est un petit bijou. Baladez-vous sur son site avec Javascript activé. N'oubliez pas de cliquer sur le bouton Play.

Survolez ces articles même si vous les comprenez pas (notamment MathBox2), il y a toujours une visualisation en CSS/WebGL. Et surtout ne ratez pas les Toys And Research sur la droite. Ses outils seraient particulièrement efficaces pour des cours de mécanique, physique et autres dans les collèges et lycées.

Franchement ce site est toujours impressionnant, c'est dommage qu'il ne reçoive pas plus de contenu.

L'UI de notre cher Mastodon

J'aime pas vraiment les réseaux sociaux web (parceque le mail et irc sont aussi des réseaux sociaux, mais je déteste le mail aussi). J'ai jamais ouvert de compte Facebook. J'ai ouvert un compte truitteur juste pour un concours (ouai j'ai craqué) mais il n'a jamais servi. J'ai bien eu un compte identi.ca pendant un temps avec mon propre serveur auto-hébergé mais ça n'a pas spécialement pris (la communauté était vraiment trop petite à l'époque).

Mais il y a presque deux ans j'ai découvert Mastodon et le Fédiverse et le concept m'a bien plus plu. Je ne vous ferai pas l'affront de présenter Mastodon le Twitter libre décentralisé s'intégrant dans le Fédiverse qui compte plusieurs logiciels différents.

Bref c'est sympa et mine de rien la communauté commence à être suffisamment grande pour que le Fédiverse soit intéressant. L'interface de Mastodon est vraiment pas mal du tout. Le thême par défaut est sombre et c'est pas mal personnalisable et ça s'adapte bien aux écrans larges avec son système de colonnes.

Le Fédiverse est peuplé de pas mal de gens différents et de pas mal de bots. Le souci c'est que certains sont de très gros posteurs qui auront tendance à non pas polluer parceque ce terme est trop péjoratif mais à remplir un peu trop votre Home Timeline (la timeline remplie par les comptes que vous suivez). Du coup les mastonautes un peu moins prolixes auront tendance à ne pas trop apparaître dans votre Home.

C'est d'autant plus vrai que certains bots peuvent poster très très régulièrement (comme, par exemple @FIP en direct qui annonce chacun des morceaux de musique à l'antenne donc toutes les 3/5minutes). Le fait de suivre des gens sur différentes timezones c'est sympa mais du coup selon l'heure où l'on regarde sa Home, autant des fois tu ne tomberas que sur du contenu US, autant des fois ça sera que du contenu FR. Mais du coup c'est un peu chiant pour retrouver le contenu FR de la veille quand les US ont bien tooté toute la nuit…

Les listes à la rescousse

Heureusement pour tous ces soucis il existe une solution : les listes.

On peut créer des listes des gens que l'on suit.

Du coup je me suis créé une liste Bots, une liste Fr et une liste En.

Et par contre là, bha… faut se les faire manuellement. Va falloir prendre chacun de vos abonnements et les classer dans telle ou telle liste.

capture d'écran de mastodon avec les 3 colonnes de listes

Pas mal le résultat, non ?

Tuto ?

Allez voyons ça vite fait.

Pour créer une liste il faut cliquer sur l'Hamburger Menu en haut à gauche. (mais si vous savez, l'icône avec les trois lignes parallèles, on la retrouve partout cette icône maintenant, faut vous y faire).

Dans la colonne Getting started tout à droite, vous avez maintenant Lists

capture d'écran de la colonne en question

Vous entrez un titre pour la colonne et vous cliquez le chtit + puis vous cliquez sur la liste qui vient d'apparaitre juste en dessous.

Vous vous retrouvez désormais dans votre liste, il faut y ajouter les mammouths que vous suivez dans cette liste. Pour ça cliquer sur la ptite icône de réglages tout en haut à droite et là Edit list.

Une fenêtre modale s'affiche avec un ptit champs de recherche. Là vous entrez une partie du pseudo de la personne en question et dans la liste de résultat le ptit +.

Voilà vous avez peuplé votre liste. Il ne reste plus qu'à la Pin pour devenir une colonne habituelle.

Une fois pin, vous pouvez la déplacer de gauche à droite avec les ptits < et >.

Si comme moi vous avez mis absolument tout le monde dans vos différentes listes (tiens d'ailleurs un compte peut être dans plusieurs listes, c'est bon à savoir), vous pouvez même virer la Home en l'Unpin.

Apparté concernant les raccourcis claviers

Mine de rien l'interface pas mal utilisable juste au clavier.

Les chiffres vous permettent de sélectionner la colonne voulue. Ensuite les flèches haut et bas vous permettent de faire défiler les toots. Enter vous permet d'ouvrir un toot. Et enfin n vous permet de démarrer un nouveau toot. Et les deux derniers utiles sont r pour répondre et f pour foutre en favoris.

Apparté concernant les performances

Si vous laissez tourner Mastodon dans un onglet constamment, vous allez vous rendre compte que le Mammouth broute le CPU allégrement. Après quelques bidouillages et avec l'aide de Lapineige et de Sp3r4z j'ai pu me rendre compte qu'on peut drastiquement diminuer l'appétit de la bête. Dans les préférences de votre compte, décochez Auto-play animated GIFs et hop vous voilà grandement soulagé. Sans ça, au bout de quelques heures, l'onglet qui me bouffait entre 20 et 40% de CPU ne consomme désormais plus que 8%.


L'interface utilisateur de Mastodon est vraiment bien. En plus d'être jolie, elle est suffisamment simple et intuitive en utilisation basique tout en étant pas mal flexible. Et la cerise sur le gâteau est la présence des raccourcis claviers bien branlés.

C'est d'autant plus rare pour un projet aussi jeune mais c'est très probablement une des raisons de son succès.

Et d'ailleurs profitez-en pour faire un bisou à votre admin d'instance et même lui payer une binouze.

Rituel à chaque nouveau kernel

Dans plus très longtemps maintenant, on va passer à Linux 5.0. Bon c'est pas une version plus majeure qu'une autre… c'est juste que … c'est chiant de compter à plus de 20, donc autant repartir au dessus à zéro.

Bon donc à chaque nouvelle sortie du kernel Linux, je m'empresse (keuf keuf) de mettre à jour.

Voilà donc mon petit rituel lors de la sortie d'un nouveau kernel !

  1. Récupération des sources
  2. Décompression et mise à jour du lien symbolique
  3. Configuration des nouveautés
  4. Compilation
  5. Installation et test
  6. Mise à jour du bootloader

Activons donc le mode verbeux !

1. Récupération des sources

Et quel meilleur endroit pour récupérer les sources que d'aller à la source ?

Gogo https://kernel.org

Et là je me fais pas chier je prends le lien du Latest Stable Kernel en cours.

2. Décompression et Mise à jour du lien symbolique

cd /usr/src/ Je me fous dans le bon dossier.

wget le latest Je télécharge donc le lien choppé précédemment.

tar xvf *.tar.xz Je détarre le bousin.

unlink linux Je supprime le lien symbolique pointant vers les sources du kernel précédent (on peut utiliser rm mais ça impressionne plus d'utiliser unlink !).

ln -s linux-votre-latest linux Je crée un lien symbolique vers les nouvelles sources.

3. Config

zcat /proc/config.gz > linux/.config Je récupère la conf du kernel qui tourne actuellement et je la fous dans les sources du nouveau.

make oldconfig Et c'est parti pour voir toutes les nouveautés du kernel et à chaque nouvelle option il demande si je veux ou pas l'ajouter (généralement non, j'aime les kernels minimaux). Il faut souvent chercher un peu sur le web à quoi correspond certaines nouveautés.

4. Compilation

make -j32 Bon bha compilation.

su Pour la suite faut devenir le patron.

make modules_install J'installe les modules kernels (j'en ai pas beaucoup mais ça les fout au bon endroit (/lib/modules/la.version/)). Bon bha là c'est bon, enfin j'espère. Des fois c'est pas si bon.

5. Installation et test

mount /dev/sda1 /boot Je monte la partoche de boot.

cp /arch/x86/boot/bzImage /boot/boot/kernelXXXX J'y copie le kernel tout juste sorti de la calculette.

reboot Le reboot indispensable.

e Pour interrompre Grub et éditer la ligne de boot, j'y change la version du kernel qui boot.

6. Mise à jour du bootloader

Si ça boot sans encombre il reste plus qu'à passer ça en dur.

su Je remets mon cosplay de patron.

mount /dev/sda1 /boot Je remonte la partoche de boot.

vi /boot/boot/grub/menu.lst Et j'édite la conf de grub en changeant juste le nom du kernel que je boot.

Et voilà c'est fini.

Bon de temps à autre faut penser à virer les anciens kernels de /boot et aussi les anciens modules dans /lib/modules .

21ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logicielles opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref, voilà l'article :


Bonjour tout le monde ! Et bhé, ces dernières semaines fûrent bien remplies. Voilà un rapport détaillé des avancées faites sur les différents fronts du Librem 5.

Conférences

Diverses collaborations in situ ont eu lieu. Il y a eu un hackfest en Allemagne où une grande partie des membres de l'équipe Librem 5 s'est rendu pour bidouiller (hacker), travailler et renforcer l'esprit d'équipe. Nous avons également participé au Libre Application Summit où nous avons donné une conférence au sujet du Librem 5. C'était aussi génial d'avoir pu participer au XDC où nous avons pu avoir des discussions utiles concernant wlroots et Pengutronix.

Design

Le design logiciel avance et s'améliore afin que les devs puissent avancer. Voici certains de ces derniers designs :

Travail logiciel

Les images

Les images sont toujours basées sur Debian Buster, mais elles peuvent maintenant se baser sur PureOS. Pour décrouter un peu les images, quelques scripts SSHd pour la génération des clés ont été ajoutés à l'image et des dépendances ont été déplacés dans le paquet librem5-base.

Comme à la fois les kits de devs et les téléphones se baseront sur des cartes i.MX 8M SoM, beaucoup de travail a été fait pour rendre le kernel 4.18 compatible et construire les images pour ces cartes.

Phosh

Dans phosh, de nombreux bugs ont été corrigés et le code a été nettoyé. Des efforts ont également été fait concernant les traductions : l'allemand et le français ont été mis-à-jour, les entêtes po ont été standardisés pour simplifier le travail pour de nouveaux traducteurs.

Un premier app switcher a été ajouté ainsi qu'un premier app switcher tactile.

Capture d'écran de l'app switcher

Le panneau de tête a été nettoyé ce qui le rend plus joli et le rapprochant un peu plus des maquettes.

Capture d'écran montrant le fameux panneau ainsi que des terminaux.

Si cela ne suffisait pas, la première version (0.0.1) de phosh a été libellé !

GNOME Settings

L'application GNOME Settings commence à être porté au Librem 5 et continue d'être travaillé.

gnome-session/gnome-settings-daemon

Un bug upstream concernant le démarrage de gnome-session en mode débug est résolu.

Sur le plan des plugins il y a eu des avancées. Un premier plugin WWAN a été proposé upstream pour prendre en charge le déverrouillage de la SIM par code PIN.

Ce gnome-settings-daemon a été ajouté aux images en attendant qu'il soit intégré upstream afin de déjà pouvoir gérer le déverrouillage de la SIM.

capture d'écran du vérrouillage de l'OS demandant un code PIN

Wlroots/Keyboard

De nombreuses améliorations ont eu lieu au niveau de virtboard. Parmis les nombreuses corrections de bugs, il y a notamment eu celui concernant l'affichage et la mise à l'échelle. L'input-method-v2, la text-input-v3 et le liant ont été ajoutés à virtboard et input-method-v2 est en cours d'adoption upstream. Virtboard apparait désormais et démarre par défaut sur les images et le clavier a été amélioré pour se comporter comme on l'attendrait.

Dans le même ordre d'idée, des changements ont été adoptés upstream dans wlroots et GTK+ en plus de tout ça. Nous avons corrigé des problèmes concernant les claviers virtuels dans GTK+. Il est important que les mouvements du curseur soit traités relativement aux surfaces et pas uniquement à l'écran. Nous avons donc codé un patch à ce propos. Il y avait aussi un problème sur la génération de tag qui est corrigé et soumis upstream.

Calls

L'application Calls a connu de nombreuses améliorations récemment avec de nombreuses corrections de bugs, des avancées audio et un ravalement de façade de l'interface utilisateur. On peut désormais ouvrir le GTK+ Inspector sur la version flatpak de Calls.

Pour préparer les kits de développement, un driver dérivé de QMI pour ModemManager pour les modems SIMCom a été complété pour mélanger QMI et les commandes AT pour le streaming audio et ajouter le support des appels audio. Un paquet Debian de ModemManager a été créé et contient ces patchs pour les appels.

Puisque les modems utilisés sur les téléphones seront potentiellement différents de ceux des kits de devs, des tests sont faits sur le Gemalto PLS8.

Il y a aussi eu une refonte partielle de l'interface utilisateur avec de nombreux changements intéressants à venir !

Il y a un nouveau daemon, Hægtesse pour convoyer le flux de données audio entre le modem et PulseAudio. Le daemon est intégré dans nos images et se lance au démarrage.

Libhandy

La bibliothêque libhandy a aussi eu droit à son lot d'avancées depuis la dernière fois. En plus des corrections de bugs mineurs, deux widgets ont été ajoutés. Un widget HdyTitleBar a été ajouté pour contourner les glitches de la barre de titre et un widget HdyHeaderGroup a aussi été ajouté pour mettre à jour automatiquement tous les entêtes des barres. Le widget existant HdyLeaflet a reçu une nouvelle propriété pour plier. Pour aider la communauté à jouer avec libhandy, l'application d'exemple de libhandy a été mise à jour avec des corrections de style.

Libhandy 0.0.3 est sortie et envoyée à Debian unstable mais une nouvelle version 0.0.4 est sortie entre-temps.

C'est d'autant plus excitant de voir libhandy utilisé dans la nature. Podcasts est la première application tiers à recourir à libhandy ! Voilà une courte vidéo démontrant les avancées de libhandy et le comportement actuel.

GTK+

Notre collaboration rapprochée avec l'équipe GTK+ a amené de nombreux changements dans les séparateurs entre autre. Un bug de style sur les séparateurs selection-mode a été rapporté et l'apparence des séparateurs a été amélioré lorsqu'on sépare deux barres d'entête en mode sélection. Des corrections supplémentaires pour Adwaita concernant les séparateurs, les problèmes de barre de titre et la simplification des réglages de sélection de mode ont été intégré upstream.

D'autres corrections et des modifications de la documentation ont été intégrés upstream. Par exemple, une correction à propos de l'entrée des [numéros de séries lorsque text-input est en cours](https://gitlab.gnome.org/GNOME/gtk/merge_requests/339] (c'est un pré-requis pour le clavier).

Et si vous ne l'avez point encore lu, jetez un œil à l'article de blog de Guido Gunther à propos de GTK+ et des application id. Cela vous sera d'une aide précieuse si vous prévoyez d'écrire des applications flatpak pour le Librem 5.

Upower

Upower est un bon candidat pour devenir l'API que les autres applications utiliseront pour par exemple obtenir des informations concernant la batterie donc de nombreuses améliorations de la documentation ont été ajouté.

Contacts

L'application Contacts doit être rendu adaptive grâce à libhandy donc voilà le fork adaptif de Contacts. Des modifications ont été apportées upstream pour pouvoir être potentiellement fusionné. Une simple correction du style de séparateur et une simple correction des conditions de taille ont été soumis upstream. L'application de menu et de raccourcis des comptes online devaient également bouger.

Messaging

L'application Chatty apporte de nombreuses améliorations et changements. Chatty peut également être empaqueté dans un flatpak désormais.

La vue "en bulle" est en train d'être transformé en widget et une version basique du widget msg-list est en train d'être completée et sera prochainement inclue dans libhandy. Quelques modifications dans GTK+ étaient requis pour afficher les conversations libpurple dans des chat-lists séparées et la liste d'amis est désormais fonctionnelle !

Un plugin libpurple est à l'essai pour la conservation des messages dans une base de données SQLite. Mais pour rendre cela utilisable, il faut d'abord remplacer les fonctionnalités de journalisation de libpurple avec un sous-système capable de gérer la signalisation des SMS (envoyé/lu…). Un parser pour les fichiers de log purple a été créé pour que l'historique de conversation soit affiché dans msg-bubbles. Le parser est la solution temporaire pour afficher l'historique des conversations dans message-view pour le moment.

Nous travaillons actuellement sur la gestion des comptes. Quelques écrans de configuration ont été ajoutés pour la création de comptes XMPP et pour les activer/désactiver séparémment. Il y a aussi eu des avancées sur l'interface utilisateur Blist (formattage des entrées, icônes rondes, passer la police en gras lorsque les messages sont non lus, ajout d'un horodatage) pour améliorer l'esthétique.

Kernel/mesa/etnaviv/libdrm

Comme mentionné plus tôt, un nouveau CPU (i.MX8) sera dans les devs kits et les téléphones en lieu et place des I.MX6 initialement prévus. Du coup, il faut redoubler d'effort pour faire tourner un nouveau kernel sur ce nouveau CPU ainsi que sur etnaviv et mesa. Voilà les principaux points.

Puisque les dev kits et les téléphones auront un USB type-C avec Power Delivery, un patch a été soumis upstream pour supporter cela.

Etnaviv fonctionne quasiment avec notre couche drm (direct rendering manager, pas digital right management) sur arm64 avec un kernel 4.18. Etnaviv a été activé sur la version Debian de libdrm. Plus de décalages vers les états sensibles ont été ajouté à etnaviv pour éviter les alertes et un patch a été intégré upstream pour permettre au parser de commandes de travailler.

Notre arbre mesa est disponible en attendant que les patchs soient intégrés upstream. Les compilations aarch64 de mesa ont été amélioré. Un patch pour une vérification d'alignement a été proposé et des problèmes de mappage non mis en cache sur arm64 furent corrigés.

Nous aimerions remercier les mainteneurs d'etnaviv, du kernel linux, libdrm et mesa pour leur support puisque nous nous appuyons fortement sur ce qu'ils ont déjà construis au préalable et qu'ils sont d'une grande aide pour l'intégration upstream de ces patchs.

Fractal

Puisque nous investissons également dans l'effort de fractal pour le chiffrement de bout-en-bout (E2E pour end-to-end), nous sommes contents d'annoncer que le module E2E en développement supporte les fonctionnalités basiques désormais. Nous pouvons déjà commencer à l'intégrer et travailler dessus. Il reste beaucoup de travail à faire, mais on y arrive petit à petit.

Côté matériel

Nos ingénieurs matériel et Nicole travaillent étroitement avec l'équipe d'assemblage des devkits. Pour cela, les fichiers finaux de prototypage (de fabrication de prototype et les dessins d'assemblage de KiCad) ont été envoyé a l'équipe d'assemblage. Nicole s'est rendu à Carlsbad (Californie) pour les assister pour la fabrication, l'assemblage et les tests d'un premier ensemble de devkits pour vérifier la qualité de notre design électronique. Nous avons eu quelques soucis, comme par exemple des composants perdu lors de la livraison qu'il a fallu se re-procurer mais tous les obstacles ont été surmontés ! Si tout se passe bien avec les tests sur ces prototypes, la première fournée de devkits (qui sera livré aux backers) devrait commencer incessement sous peu.

Côté communauté

L'équipe Librem 5 continue de collaborer avec l'équipe Plasma afin de créer une image utilisable avec les devkits. Pour l'instant, des tâches Jenkins sont nécessaires pour construire les paquets Plasma nécessaires et les membres de l'équipe Plasma travaillent avec nous pour corriger les soucis.

La documentation pour devs a vu des mise-à-jour concernant GTK+ et de nouveaux exemples de code.

Puisque nous avons reçu des offres d'aide pour la traduction du système d'exploitation, nous avons monté une instance Zanata publique pour permettre à la communauté de collaborer. Pour l'instant, le projet phosh est disponible sur Zanata, les autres projets suivront (libhandy, calls, chatty, virtboard).

Un grand "Merci !" pour toutes les équipes externes qui nous ont aidé à évaluer et intégrer nos modifications dans les différents projets upstream. Le temps et les contributions de chacun sont grandement appréciées !

Merci pour tout, les gens. Continuer de nous suivre pour le prochain rapport à venir.


Heather Ellsworth

Encore un article qui résume pas mal tout ce qu'ils font un peu partout. C'est pas mal du tout, surtout d'un point de vue kernel.

Mine de rien c'est sympa de voir qu'un produit commercial va permettre à tout un écosystème libre d'avancer et de bien progresser.

Recompresser ses photos et ses vidéos

Ces derniers temps je suis en pleine migration de serveurs et donc je bouge pas mal de données. Je vous en ai parlé, j'ai recompressé tout plein de photos persos mais également les vidéos.

La compression par défaut de l'appareil photo est pas super optimisée. Et pour les vidéos c'est pire encore.

Bref voilà comment j'ai gagné énormément de place sans forcément perdre en qualité.

Avant de commencer j'ai un backup des données d'origines que je ne toucherai pas avant … longtemps.

Photos

Pour les photos j'ai fait un ptit script tout simple :

#!/bin/bash
du -ch "$1"
parallel --eta -j 32 /usr/bin/mogrify -sampling-factor 4:2:0 -interlace JPEG -colorspace RGB -quality 85 "{}" ::: "$1"/*.JPG
parallel --eta -j 32 /usr/bin/mogrify -sampling-factor 4:2:0 -interlace JPEG -colorspace RGB -quality 85 "{}" ::: "$1"/*.jpeg
parallel --eta -j 32 /usr/bin/mogrify -sampling-factor 4:2:0 -interlace JPEG -colorspace RGB -quality 85 "{}" ::: "$1"/*.jpg
du -ch "$1"

Tout d'abord il donne la taille des données, ensuite je recompresse en parallèle les photos en JPEG en bonne qualité et enfin il redonne la taille après compression. C'est plutôt rapide et simple.

Mais méfiez-vous, la commande mogrify qui recompresse, supprime le fichier d'origine (pour ça qu'il faut backup avant).

En moyenne, les photos deux fois plus légère que ce que pond l'appareil photo (les photos issues de téléphones sont déjà plutôt bien compressées).

Vidéos

Là, le processus est plus manuel. Les vidéos de mon appareil sont dans un format à la con (du H264 en preset High, enrobé dans de l'AVCHD). Et en plus j'ai une légère tendance à la tremblotte, donc quitte à réencoder les vidéos je vais les stabiliser.

Il y a donc une passe d'observation de la vidéo, puis une passe de stabilisation et encodage.

#!/bin/bash
for i in $PWD/*.MTS

do
  echo "Processing vid $i ...${i%.*}"
	ffmpeg -i "$i" -vf vidstabdetect=stepsize=6:shakiness=4:accuracy=15:result=/tmp/transform_vectors.trf -f null -
	ffmpeg -i "$i" -vf vidstabtransform=input=/tmp/transform_vectors.trf:zoom=2:smoothing=10,unsharp=5:5:0.8:3:3:0.4 -c:v libx265 -crf 28 -c:a aac -b:a 128k "${i%.*}.mp4"
	rm /tmp/transform_vectors.trf
done

Ouai… je sais… j'ai choisi d'encoder en h265… c'est un format bardé de brevets et autres saloperies made in MPEG-LA, mais l'encodage est bien plus rapide que l'AV1 ou le VP9, la qualité est top et je sais pertinemment que dans dix ans je serai capable de le décoder… Je verrai dans quelque temps si ça vaut le coup de le refaire en AV1 (j'ai toujours le backup des originaux).

Ici je conserve la vidéo originale et je vérifie manuellement que la nouvelle est bonne (la stabilisation m'inspire moyennement confiance, même si au final je n'ai eu aucun souci à déplorer). Le gain sur les vidéos varie entre 2x plus petit et 10x plus petit avec une moyenne aux alentours de 7x plus petit à qualité égale et en étant bien plus stable.

Voilà, je suis passé de près de 500Go à près de 200Go avec tout ça

Prochaine étape : l'archiver quelque part.

Reflexe Dane

J'ai déjà plusieurs fois abordé DNSSEC et une fois survolé DANE mais je vais en remettre une couche.

Bon déjà reprenons vite fait du début.

DNSSEC c'est quoi donc ?

Il s'agit d'un ajout au protocole DNS ajoutant de la crypto permettant d'assurer l'intégrité des réponses DNS. Le but est de s'assurer que les données que vous échangez avec votre résolveur sont authentiques, elles restent toute fois lisibles, le but n'est pas de rendre votre trafic DNS illisible par votre FAI ! Si vous utilisez un résolveur DNS qui valide DNSSEC vous pouvez être assuré qu'une réponse est authentique si elle a le petit flag ad (quand vous utilisez la commande dig).

Ça se base sur tout un système de crypto à base de clés publiques et privées qui sont changées régulièrement (le roll) avec deux principaux types de clés :

  • les KSK qui sont les key signing key qui servent à signer d'autre clés
  • les ZSK qui sont les zone signing key qui servent à signer les enregistrements de votre zone

DNSSEC est une chaîne, signer votre zone c'est bien mais pas suffisant. Il faut que la zone parente soit elle aussi signée et surtout il faut un ptit morceau sur la zone parente qui lie votre zone (DS). Si ce n'est pas le cas la chaîne de certification n'est pas complète et donc pas de DNSSEC.

Une fois tout ceci mis en place (c'est pas bien compliqué, franchement faite-le !), les infos présentes dans votre zone peuvent être distribuée de façon sûre. On peut donc s'amuser à y mettre des données un poil sensibles. Sensibles mais publiques. Le DNS ce sont des données publiques. Mais alors pourquoi sensibles ?

Bha sensible dans le sens où maintenant qu'on peut s'assurer qu'elles n'ont pas été alteré, ces données peuvent attester de l'authenticité d'une information (typiquement attester que tel certificat est LE certificat utilisé par un service).

DANE

DANE est exactement l'application de ce principe : le certificat utilisé par tel service est celui-ci. Le logiciel peut donc vérifier que le certificat présenté par le service est bien identique au certificat publié dans le DNS.

DANE permet donc d'assurer à un utilisateur qu'il n'est pas en train de subir une attaque de type Man-In-The-Middle.

DANE repose donc sur DNSSEC mais également sur le fait que ça doit être implémenté par chaque logiciel voulant l'appliquer (logique). Malheureusement, aucun logiciel grand public ne l'utilise. Ça serait pourtant un sacré pas en avant dans la sécurisation du web.

Le jour où Chrome l'adopte le reste de l'industrie s'y mettra mais avant… œuf/poule.

Pondons l'œuf !

DNSSEC

Et voilà \o/ DNSSEC est en place. Bon en vrai c'est un tout petit peu plus compliqué.

Avec Knot, dans votre fichier de conf où vous déclarez vos différentes zones, vous devez attribuer une politique de signature. Celle par défaut peu convenir mais perso j'ai pas envie de me faire chier à changer la KSK trop souvent donc j'ai défini ma mienne :

policy:
  - id: ecdsa
    algorithm: ecdsap384sha384
    zsk-lifetime: 7d
    ksk-lifetime: 700d
    ksk-size: 384
    zsk-size: 384

puis dans votre zone :

zone:
  - domain: lord.re.
    file: lord.re
    dnssec-signing: on
    dnssec-policy: ecdsa

Et voilà Knot va se démerder en créant les clés les faire tourner et tout.

Maintenant vous transmettez le DS chez votre registrar. Pour l'instant Knot ne va pas commencer à rouler les clés tant que le DS n'est pas publié. Une fois fait il faut lui signaler avec knotc zone-ksk-submitted lord.re.

Voilà votre zone devrait être bien signée et tout, vous n'avez plus rien à faire jusqu'au prochain roulement de KSK dans 700 jours (mettez un rappel).

TLSA

DANE c'est le gentil nom de la technique mais en vrai il s'agit juste d'un enregistrement de type TLSA dans votre zone DNS. Prenons un cas concret : lord.re .

On va utiliser le générateur habituel.

Donc là si comme tout le monde vous avez un certificat signé par LetsEncrypt, le mieux est d'utiliser un TLSA 312 qui a l'avantage de ne pas devoir être renouvelé tous les 90 jours quand le certificat est renouvelé. Les enregistrements TLSA 312 s'appuient sur la clé publique qui n'est pas modifiée à moins de manuellement en régénérer une.

Donc, il faut copier/coller votre certificat cert.pem dans l'emplacement prévu dans le générateur. Avec acme-client ça se trouve dans /etc/ssl/acme/lord.re/cert.pem .

Le numéro de port dépendra du service que vous voulez protéger par cette technique. Pour le web c'est 443 et le protocole tcp.

Et enfin entrez le nom de la machine qui héberge le service lord.re dans l'exemple.

Ça vous pond une longue ligne à ajouter à votre zone. Sur votre serveur DNS hébergeant la zone DNS vous pouvez : knsupdate
server 127.0.0.1
zone lord.re
update add _443._tcp.lord.re 600 TLSA 3 1 2 enriuetjesuisuntrèsmauvaisgénérateurd'aléatoireuirnse==

Et voilà :-)

Et maintenant on le teste sur Le webtest de sidnlabs si c'est pour un serveur web ou sur bien sur le webtest de sys4 si c'est pour du mail.

Le réflexe

Bon c'est franchement pas dur. Ça se fait en près de deux minutes.

Maintenant il faut chopper le réflexe : À chaque fois que vous créez un nouveau certificat ou que vous utilisez un certificat existant sur un nouveau service, pensez à ajouter l'enregistrement TLSA qui va avec.

Si le réflexe est adopté par de nombreux sysadmin l'implémentation par les logiciels pourrait avoir lieu un de ces jours (admirez l'optimisme).

Bon pour cet article j'ai volontairement planté mes zones DNS afin d'expérimenter et tout mais au moins c'est clean et dans ma tête et pour vous.

Gestion de l'enregistrement DS chez OVH et Online pour votre DNSSEC

Étant actuellement en pleine migration de serveur, je fais pas mal d'adminsys ces derniers jours.

Dans le lot je bouge mon serveur DNS et j'en profite pour mettre à jour un peu mes zones DNS. Et je vous ai déjà parlé de DNSSEC où je vous disais qu'à l'époque, on ne pouvait pas faire de DNSSEC avec un nom de domaine acheté chez Online. Bha maintenant on peut.

DNSSEC est une chaîne de confiance : chaque niveau hiérarchique est relié au niveau inférieur. Dans le cas de lord.re., la racine . est liée à .re et ensuite lord.re. est aussi lié à .re. . L'enregistrement DS est ce qui relie votre domaine au niveau hiérarchique supérieur.

C'est donc un enregistrement DNS particulier que votre registrar doit vous permettre de leur envoyer.

Chez OVH

L'interface d'OVH a changé il n'y pas si longtemps que ça (encore). C'est plus joli mais c'est toujours aussi lourdingue. Leur système de robot qui planifie les modifs dans quelque temps et tout et ses messages d'erreurs peu explicites sont bien chiants.

Bref voilà comment il faut faire.

  • Tout d'abord rendez-vous dans votre domaine dans leur console d'administration.
  • Ensuite, dans l'onglet DNS servers, vérifiez que les serveurs déclarés ici correspondent bien à ceux déclarés dans votre zone (dig votre.domaine NS) sinon vous aurez le droit à une erreur du robot.
  • Ensuite rendez-vous dans l'onglet DS Records.
  • Cliquez sur Edit.
  • Le Key tag est donc le tag de votre KSK pour obtenir le votre, sur votre serveur DNS lancez keymgr votre.domaine ds ce qui vous donnera 3 représentation de votre KSK. Ça a cette gueule "votre.domain. DS XXXXX 13 1 YYYYYYYYYYYYYY". Le tag c'est le XXXXX
  • Le Flag c'est le type de clé, donc 257 pour les KSK et 256 pour les ZSK mais la ZSK changeant très souvent, contentez-vous de la KSK.
  • L'Algorithm est … l'algorithme de la clé. Knot par défaut vous sort l'algorithme 13 qui est ECDSAP256SHA256.
  • Et enfin la Public key est la partie chiante à récupérer avec knotc zone-read votre.domaine @ DNSKEY qui vous listera les différentes clés dont une de type 257 qui est votre KSK, il faut donc foutre le champ assez long qui se fini par ==
capture d'écran montrant le résultat sur l'interface d'OVH

Et voilà le résultat chez OVH

Une fois confirmé, ça créer une tâche planifiée que vous pouvez accélérer histoire de gagner 24h.

Chez Online

Il y a peu c'était pas possible, mais il est désormais possible de publier l'enregistrement DS chez eux.

L'interface est plus zen et tant mieux. Il y a ce qu'il faut et pas plus. Les modifs sont quasi instantannées.

  • Rendez-vous dans la console admin de votre domaine.
  • Vérifiez dans Manage DNS servers que les serveurs déclarés ici correspondent à ce qui se trouve dans votre zone (dig votre.domaine NS @127.1).
  • Puis dans Manage DNSSEC ajoutez l'enregistrement DS
  • Sur votre serveur DNS lancez keymgr votre.domaine ds et on va considérer la dernière ligne qui est la meilleure niveau crypto.
  • Le Key id est le troisième champ de la commande.
  • L'Algorithm est à faire concorder avec ce que vous a donné la commande précédente dans le quatrième champ : vous aurez un chiffre (par exemple 13) pour savoir à quel algo ça correspond reportez-vous au tableau de l'IANA (ouai c'est dommage de pas avoir mis les numéros direct dans leur interface…).
  • Pour le Digest Type c'est comme l'étape précédente, reportez-vous au tableau IANA pour faire correspondre la valeur du cinquième champs avec le type demandé.
  • Et enfin Digest vous mettez le sixième champ.
capture d'écran de l'interface d'administration d'Online

C'est un chouilla plus simple et plus beau que chez OVH, non ?


Knot gérant toute la génération de clé tout seul, les registrars étant de plus en plus au fait de DNSSEC, il n'y a plus d'excuse de ne pas le mettre en service en 2018.

Ré-Augmentation du piratage suite à la fragmentation du marché

Hahahahahaha j'adore cette news.

Visiblement, le piratage audio-visuel reprend du poil de la bête après des années de perte de vitesse. But_why.gif

Netflix avait à peu près à lui seul réussi à progressivement tuer le piratage (notamment les torrents). Faut dire que la plateforme est super pratique, propose pas mal de fonctionnalités en plus (passage d'un épisode à l'autre automatiquement en zappant le générique, diffusion des séries par saison complète et non au compte goutte, un catalogue massif et qui se renouvelle chaque mois…) le tout à un tarif super avantageux (pour le prix d'une place de cinéma ou d'un bluray).

Naturellement, les gens ont délaissé le piratage pour se goinfrer sur cette plateforme.

Mais qu'est-ce qui a changé cette année ?

C'est pas vraiment spécifique à 2018 mais de nombreux concurrents à Netflix arrivent progressivement et chacun y va de son exclusivité pour attirer le chaland. Il faut piocher du contenu chez Amazon, chez Netflix, chez Hulu, chez HBO, chez Salto (hahahaha non je déconne) bref le marché se décentralise.

Mais du coup, personne ne peut se payer un accès à toutes ces plateformes et s'en prend éventuellement un et pirate les autres. Voilà voilà.

On était arrivé à une situation cocasse :

  • les politiciens ont rejeté plusieurs fois l'idée d'une licence globale permettant de légaliser le piratage.
  • Ensuite une boîte américaine a proposé pour un prix fixe un catalogue à peu près illimité ce qui a grandement réduit le piratage. On était donc dans une situation proche de la licence globale sauf que le pognon revenait à une boîte privée outre-atlantique.
  • Et maintenant toutes les concurrents fractionnent le marché et le piratage repart de plus belle.

Du coup, quand est-ce qu'on reparle de mettre en place une licence globale ?

Virez l'Hadopi, remettez des pubs sur les chaînes de téloche française et réallouez une partie de la redevance TV en licence globale (quitte à l'augmenter un peu au passage).

Ça n'empêchera pas les gens de se prendre des abonnements Netflix (leur force n'est pas uniquement leur catalogue mais dans la convivialité et la praticité de leur écosystème) ou autre.

Youtube : La menace des Youtubeurs

Comme je vous l'ai dit précédemment, je reviens du Festival Frames qui s'est déroulé à Avignon et où de nombreux Youtubeurs sont venus. Et du coup j'ai pas mal réflêchi à leurs soucis qui commencent à revenir de plus en plus dans l'actualité : les problèmes psychologiques liés à leur «profession».

Tout d'abord je mets profession entre guillemet parceque ça n'en est pas une. Non pas que je dénigre leur boulot mais Youtubeur n'est pas une profession. Ils ne sont pas employés par Youtube, ils ne cotisent pas pour leur retraite, ils n'ont pas de salaire régulier, légalement c'est une galère pour déclarer leurs revenus, toussa toussa. Bref ils n'ont pas de statut et pas grand monde pour les aider.

Certains commencent donc à se regrouper pour monter une structure pour discuter sérieusement de tout ça et pour s'entraider (un simili syndicat). Le but est à la fois d'aider les vidéastes directement, mais aussi d'avoir plus de poids auprès des plateformes de diffusions (Youtube en tête, faut pas se le cacher) mais aussi auprès de l'État.

Bon je suis ptêt super optimiste, mais je pense que de ce point de vue, ça va s'améliorer incontestablement. Il restera alors toujours des causes qui affectent les Youtubeurs et qui en mènent pas mal à la dépression et/ou au burnout.

Youtube est la plus grande menace des youtubeurs

Beaucoup de Youtubeurs veulent vivre de leur activité. Produire des vidéos sur Youtube, c'est pas juste se filmer avec sa webcam et uploader ça sur Youtube contrairement à ce que semble penser les professionnels de la Télévision. Une ptite vidéo navrante pour illustrer le dédain du monde de la téloche à leur encontre.

Un Youtubeur doit écrire son texte/scénar, préparer son lieu de tournage/décor, mettre en place techniquement son matériel (cadrage caméra, placement des micro… ), il doit tourner et gérer ses acteurs/lui-même, réaliser, se maquiller, puis dérusher, monter, étalonner, mixer, faire des inserts, poser un synthé, rajouter de la voix-off, pondre des schémas, illustrer, encoder, uploader, créer une vignette, rédiger une description, gérer sa communauté. Tout ce travail d'équipe est parfois fait par une personne, parfois par une dizaine de personnes et dans des cas exceptionnels par plus de monde. Et ça, ça revient vite cher avant d'éventuellement de rapporter. Pour info, une vidéo Nexus VI leur coûte près de 20 000€.

La rémunération offerte par Youtube est … ridicule, mais elle a le mérite d'exister. Seul une grosse poignée de Youtubeurs français peuvent vivre exclusivement de leurs vidéos. Grâce à cette rémunération, Youtube a su attirer de nombreux vidéastes alors devenu Youtubeurs. L'effet réseau jouant, plus il y a de Youtubeurs, plus le public grandit et avec la force du système d'abonnement Youtube, les créateurs peuvent dénombrer leur audimat et leur communauté. Ils ont un feedback quasi instantané sur leur production.

Au fil du temps, Youtube a étoffé ses services pour devenir un réseau social complet, avec des commentaires, des abonnements à des chaînes, de la notation binaire (j'aime/j'aime pas), possibilité de faire du direct… Mais qui dit réseau social, dit … les tarés. Parceque bon maintenant on le sait tous, dans le monde physique, la plupart des gens savent se tenir à peu près, mais dès qu'il y a un écran dans l'équation, les comportements changent et deviennent beaucoup plus démesurés. La modération des commentaires sur Youtube est à peu près inexistante et la prose des spectateurs arrive directement en pleine face des Youtubeurs.

Les revenus provenant de Youtube sont en fonction du nombre de vues des pubs collées à la vidéo. La moindre modif dans l'algorithme de recherche/classement de Youtube peut radicalement impacter positivement ou négativement la visibilité d'un créateur de contenu. Pire encore, même en étant abonné à un Youtubeur, un utilisateur peut ne pas être au courant de la sortie d'une vidéo (il faut cliquer la ptite cloche). Et enfin, la démocratisation des bloqueurs de pubs peut finir d'achever le tableau : pas de pub == pas de sous.

Youtube a l'énorme avantage de gérer les problèmes de copyright. Du coup, un Youtubeur peut envoyer n'importe quelle vidéo, il ne sera jamais emmerdé (au pire une suppression de son compte et voilà, pas de soucis d'ordre judiciaire). Jamais un utilisateur ne recevra de plainte pour mise à disposition d'autrui du contenu copyrighté. Youtube a l'énorme désavantage de gérer les problèmes de copyright. Du coup, un Youtubeur peut envoyer n'importe quelle vidéo, il se sera jamais assuré que sa vidéo soit disponible (la suppression ou la démonétisation est monnaie courante). Constamment, des ayants-droits (rien que le mot fait peur) peuvent à tout moment se plaindre d'une violation de leur copyright et Youtube obtempérera immédiatement sans s'assurer de la légitimité de la plainte.

Des pistes de solution ?

Bon bha je vais enfoncer une porte ouverte : la majeure partie des soucis provient du pognon.

Thanks Cpt. Obvious !

YANA

Réellement, les risques de démonétisation, la nécessité de jouer le jeu de l'algorithme (produire très régulièrement), le blocage de la pub a un impact direct sur les Youtubeurs. Ils en viennent à se surmener : Le Joueur du Grenier est l'un de ces exemples. Ils adorent créer leurs vidéos habituelles de critiques de jeu entremêlé de fiction. Mais ces vidéos leur nécessitent beaucoup de temps et il leur est quasi impossible d'en produire plus d'une par mois ce qui relève déjà de l'exploit. Mais une vidéo par mois, même avec des millions de vues, bha ça rapporte peanut du coup ils ont monté une seconde chaîne nécessitant moins de boulot avec beaucoup plus de contenu. Enfin moins de boulot, faut le dire vite : ça veut dire 4 à 5 vidéos par semaine de dix/vingt minutes sur des formats certes moins travaillés : moins d'effets, moins de fiction, moins de décor, moins artisanal quoi. Mais au final c'est ce qui leur permet de vivre et de continuer leur format de prédilection.

Bref, pour pouvoir sortir une vidéo par mois, ils doivent en sortir vingt à côté.

Cet effort n'est clairement pas possible pour tout le monde et le fait qu'ils soient déjà au moins deux (en vrai un peu plus) est probablement ce qui les fait tenir. Donc une première piste serait de savoir s'entourer et de ne pas être seul.

Trouver du pognon ailleurs

Ouai, c'est le nerf de la guerre mais il faut parvenir à ne pas compter sur les revenus directs issus de Youtube. Il va falloir monter un crowdfunding récurrent à la Tipeee et compagnie. Mais encore une fois c'est à double tranchant : ça met grave la pression.

C'est difficile moralement pour un Youtubeur de récolter mensuellement des dons s'il n'y a pas eu de vidéo dans le mois. Et dans le cas d'une donation à chaque sortie de vidéo, il y a toujours la crainte de passer pour une personne non scrupuleuse qui publie une vidéo juste pour publier et toucher la cagnotte. Dans les deux cas de figure c'est néfaste moralement.

Il existe désormais une petite aide du CNC mais qui nécessite des démarches administratives et qui ne peut représenter que 50% maximal du coût de production d'une vidéo. C'est pas un revenu fixe et assuré et seuls les plus gros seront probablement à même de la décrocher mais c'est déjà un premier pas dans le bon sens. Je vous recommande d'ailleurs cette vidéo de RealMyop qui explique pas mal ces nouvelles aides.

Ignorer et pousser à la bienveillance via la modération

Comme souvent, il y a une majorité silencieuse qui ne se manifestera jamais dans les commentaires ou les avis binaires, mais il y aura toujours la minorité bruyante qui sera toujours là pour pourrir. « C'était mieux avant ! » « T'étais plus drôle quand tu étais gros ! » « Retourne dans ta cuisine, tu racontes n'importe quoi. » Bon je vais pas tous vous les faire, hein, vous voyez le genre.

Ignorer ce genre de commentaire est plus facile pour certains que pour d'autres. Et quand bien même on parvient à ignorer ponctuellement, il est particulièrement pesant de recevoir des commentaires complètement hors-sujet sur un vidéo qui a demandé X heures de boulot et que rien de valable ne ressorte des commentaires, surtout si c'est récurrent.

La modération des commentaires de Youtube laisse clairement à désirer. Les trolls notoires agissent inlassablement en toute impunité.

Il faut réussir à impliquer votre communauté pour qu'elle rapporte d'elle-même les commentaires indésirables.

Contrer le blocage des pubs en l'intégrant à la vidéo

Ouai j'ai horreur de la pub, mais malheureusement il ne faut pas se voiler la face, c'est la seule source de revenu des youtubeurs. Donc une des solutions possible pour eux, est d'inclure la pub directement dans leur contenu.

La chaîne Linus Tech Tips fait déjà cela, en présentant un produit en début de chaque vidéo. Malheureusement ce n'est possible que parceque c'est Linus Tech Tips… une des plus grosses chaînes Youtube, qui s'est professionnalisée il y a longtemps avec sa propre régie de pub et tout. Mais pour un gros Youtubeur ou un rassemblement, c'est peut-être envisageable mais nécessitera de devoir maintenant gérer la pub plutôt que de se reposer sur Youtube. Ils ont déjà suffisamment de casquettes à leur arc.

Youtube Premium

Si vous n'êtes pas encore au courant, Youtube propose désormais un abonnement payant donnant accès à de nouvelles vidéos en partie financées par Youtube. J'imagine que pour les vidéastes sélectionnés ils ont été rémuneré réellement avec un contrat de travail et tout. Le souci vient alors de la réaction du public pas habitué à payer pour Youtube. De nombreux commentaires insultants à l'égard des créateurs ayant acceptés cela reprochent violemment ce nouveau modèle économique. « Pourquoi payer pour la même chose qu'avant ?! » C'est pas complètement faux.

Il faut bien voir que seuls quelques élus auront le droit de participer à cette aventure. Youtube tourne à perte depuis des années et ça sera très probablement le cas encore quelques années (toujours ?) et donc le budget alloué par Google pour ce service n'est pas extensible à l'infini.

À mon avis la meilleure des pistes à long terme

Passer de Youtubeur à vidéaste. Se casser de Youtube.

J'ai très brièvement abordé le sujet avec RealMyop ce week-end et sa réponse était de la forme (pas les termes exacts) : « Non pas possible, c'est là où est le public. On préfere plier l'outil pour l'adapter à nos désirs plutôt qu'adopter un autre outil. » Je veux bien l'entendre que Youtube est incontournable en 2018 et très probablement 2019 et 2020. Problème d'œuf ou de poule.

Mais en tout cas, c'est pas de Youtube qu'il faut attendre le moindre changement, leur situation de monopole est à leur avantage et la seule chose qui pourrait amoindrir leur monopôle serait la fuite de leurs créateurs.

Certe la plateforme est techniquement parfaite et en plus gratuite mais les rares alternatives sont sur le déclin et/ou à l'agonie.

Peertube ?

Ouai, ça pourrait, mais pas maintenant en tout cas. Le projet est bien trop jeune et ne propose pas suffisamment d'outil pour les vidéastes mais justement le projet est très jeune et est libre donc malléable. Mais à terme ça pourrait le faire. Un Youtubeur pourrait commencer à uploader son contenu sur une instance pour déjà tester tout en continuant son business sur Youtube.

Techniquement Peertube peut proposer des vidéos en multiples résolutions, des sous-titres, à cela on ajoute le côté p2p pour essuyer les afflux massifs ponctuels de spectateurs. Les commentaires sont gerés sur le Fediverse et mine de rien, le Fediverse possède d'excellents outils de modération (silence d'un utilisateur voir d'une instance complète, report à l'admin d'une instance…) ce qui pourrait pousser les utilisateurs à la bienveillance. Surtout que la communauté actuelle de Mastodon est bien plus moderne dans l'intolérance des propos sexiste/*phobes qu'à peu près tous les réseaux sociaux. Peertube pour l'instant ne gère pas la pub mais justement tout est faisable pour le moment et pourrait pourquoi pas proposer des trucs innovants (soyons fous : des objets en 3D WebGL des objets présents dans la vidéos pour manipuler l'objet sur le côté de la vidéo et l'acheter ou ce genre de conneries).

Bref le financement par la pub c'est bien (erf, ça me fait mal de dire ça quand même) mais clairement pas suffisant. Il va faloir trouver autre chose. Comment salarier les vidéastes ? Le revenu de base universel et sans condition. Oui mais pour l'instant c'est de la science-fiction et un peu plus ne fera pas de mal. J'ai absolument pas de solution pour ça :-/ Les politiciens ne veulent pas de licence globale (c'est dommage le succès de Netflix prouve que ça marcherait), on aurait pu l'augmenter ou ponctionner une part de celle-ci pour rémunérer les vidéastes.

Une fois la problématique pognon réglée, le plus gros souci sera de sauter le pas. Youtube a une communauté immense. Peertube… rien. Les systèmes fédérés décentralisés comme Peertube ne sont pas compris par le grand public pour le moment contrairement aux silos centralisés auxquels ils sont habitués. Il va faloir amorcer la pompe pour contrer l'effet réseau naissant.

Perso, je ne vois en Youtube Premium qu'un moyen supplémentaire d'entretenir le monopôle. Ils se sont fait bouffer la communauté gaming par Twitch sans trop s'en rendre compte et n'ont pas réussi à faire prendre Youtube Gaming. Ils voient Netflix rafler le marché des séries et tente de produire un équivalent avec Youtube Premium en attirant des créateurs dans leur giron. L'avenir nous dira si ça prend ou non.

Youtube Premium est déjà une plateforme séparée de Youtube (vu que c'est payant…), du coup il y a déjà la perte de l'audimat. Pourquoi ne pas prendre ce même risque et aller carrément ailleurs sur une autre plateforme ?

La fin Septembre 2018

Ouai le titre est nul (en vrai je l'ai pas encore écrit mais je sais pas quoi mettre donc ça sera probablement nul quand je publierai).

Bref ne perdons pas de temps en palabres, je poste un peu moins en ce moment, mais je suis pas mal occupé de trucs offline et/ou de truc pas suffisamment intéressant pour en écrire des articles. Du coup je vais faire un seul ptit article avec un peu tout ça.

Frames

Ce week-end s'est tenu le Frames Festival à Avignon. C'est une convention sur deux jours (pour le grand public) avec des vidéastes venant présenter leurs dernières créations mais aussi pour discuter en rapport avec leur domaine respectif ou carrément de création de contenu audio-visuel.

J'y allais moyennement chaud mais au final j'ai été conquis. Les intervenants sont tous supers sympas et surtout accessibles. Ils sont à portée de bras et il y a toujours moyen de trouver un ptit créneau soit pour faire sa groupie et grapiller un autographe soit carrément de discuter quelques minutes. La team de l'orga s'est vraiment décarcassée pour rendre les attentes moins longues, les lieux sont sympatoches (erf j'ai appris que le cinoche Pandora était en galère administrative, j'espère qu'ils pourront rouvrir même si je peux pas trop y aller, le concept est franchement génial). J'ai d'ailleurs appris qu'ils sont en train de monter une asso/syndicat/société de protection pour aider les vidéastes, ça a été discuté lors des journées PRO précédents le week-end. J'ai pu rencontrer dans le désordre :

  • François Descraques qui a dédicassé son livre en avant première et a pu balancer pas mal d'anecdotes croustillantes. Et ptet même qu'il va y avoir une suite à 3ème droite et ptet même que ça se lira pas…
  • Le Fossoyeur de films qui est co-organisateur de l'initiative a tenu quelques conférences toutes centrées sur la saison 3 de Twin Peaks si j'me souviens bien.
  • Son pote Patrick Baud le fameux Axolot qui a diffusé sa prochaine escale à Paris.
  • Cyrus North avec son acolyte (désolé j'ai pas retenu le nom) qui a enregistré en live un podcast avec donc Axolot et Léo Grasset de Dirty Biology sur comment survivre à une invasion zombie.
  • Flober qui a donné une bonne liste de conseil à propos de l'écriture de scénar et la diffusion de sa dernière vidéo.
  • Alt236 que je ne connaissais pas. J'ai découvert une semaine avant le festival et me suis tout tapé et suis devenu fan : il parle de cinéma, fait de la musique, relie ça à de la peinture, bref de l'art avec toujours des thêmatiques tourné vers l'étrange, le sombre, le glauque. Il est super sympa et passionné et a tenu donc une conférence sur "l'inquiétante étrangeté". Bref allez-voir ce qu'il fait. J'ai eu son tout premier autographe !
  • Realmyop, Florence Porcel, French Food Porn et Aude GG qui ont discuté des troubles mentaux des youtubeurs. Rien de bien nouveau sous le soleil et d'ailleurs je pense que je ferai un article dédié à cela mais ça va demander un peu plus de réflexions.
  • Adrien Ménielle et Jérôme Niel nous ont présenté un court métrage qui ne sera diffusé sur Youtube que dans un an. Un hommage aux séries des années 90. Franchement bien fait et hilarant.
  • La team Nexus VI qui fait l'une des meilleures chaîne francophone à mon goût. Techniquement ça claque, ça sort de la masse et en plus c'est drôle et ça parle science-fiction et visiblement j'ai des goûts cinématographiques raccords avec le Capitaine. Mais ce qui était bien c'est que c'était une apparté avec les techos du Nexus VI qui ont abordé leur façon de bosser et tout. Ils vont faire un crowdfunding en Octobre ;-) Tiens d'ailleurs, la 3D est faite sous Blender : des gens biens !
  • Une aparté avec Bruce d'E-penser on a parlé un peu avenir de sa chaîne, d'Arel3 et on a pas réussi à avoir le moindre spoiler :-(
  • J'ai découvert Romain Houles qui a récemment monté une chaîne youtube : Derrière le masque qui parle des effets spéciaux (non numériques). On a un peu discuté et du coup je ne connaissais pas encore son travail, mais j'ai maintenant vu deux de ses vidéos et c'est pour l'instant vraiment bien avec pas mal de boulot de recherche et tout.

Bon bha va falloir y aller l'an prochain ! J'ai pas pu tout voir mais bon.

Serveur

Online a récemment décidé de monter ses prix. Mais quand ils le font ils font pas semblant. Du coup je vais résilier zapp que je louais chez eux depuis quelques années. Il était clairement surdimensionné, mais il avait pas mal de stockage ce qu'ils ne proposent plus (tout du moins pas du tout dans cette gamme de prix).

Du coup je me suis trouvé un autre VPS et je vais me débrouiller autrement pour le stockage. Je suis donc progressivement en train de migrer ce qu'hébergeait zapp.

J'ai fait le DNS ce soir à base de copié/collé des fichiers inhérents à Knot de l'ancien vers le nouveau. Ensuite direction le registrar (recoucou online), où je modifie les serveurs DNS ayant autorité sur la zone pour donner le nouveau VPS. Je modifie le SOA en accord avec ça. Et d'ailleurs je remarque qu'enfin, Online permet de signer sa zone DNSSEC (enfin permet de lui passer le DS record pour fermer le dernier maillon manquant de DNSSEC). Du coup très bientôt vous pourrez chopper la zone lord.re en DNSSEC.

Il va me rester à migrer TinyTinyRSS, les mails (que je meure d'envie de dégager, je HAIS les mails) et le ptit Sandstorm.

Pour les backup je vais me débrouiller autrement.

Routeur

Vous avez probablement constaté quelques interruptions de services il y a quelques jours. Orange a décidé de modifier la façon dont ils attribuent les adresses IP. Pour les clients utilisant une box pas de soucis elle a eu une mise à jour va bien mais pour les autres… bha faut se démerder.

En gros, le DHCP répondait plus. Certains ont donc remis la livebox et ont sniffé le trafic réseau entre l'ONT et la box. Ils se sont rendu compte que l'auth DHCP avait quelques peu changé (trois fois rien mais suffisamment pour que ça soit plus compatible). Une fois rajouté une chaîne de caractère dans l'auth DHCP, pouf tout remarche comme avant.

IPv6

J'en ai d'ailleurs profité pour enfin faire marcher l'IPv6. Et pour une fois, je me suis laissé guidé par OpenWRT. D'habitude je déteste toute leur façon de faire. Ne connaissant pas trop trop IPv6 et n'ayant pas d'expérience à ce propos, bha j'ai fait à leur sauce et tout a marché en deux deux.

Du coup me voilà enfin sur l'Internet de 1998 !

Backup

Bon pour l'instant mon backup était assez simple :

  • Les données originales sont dans Bender (un serveur/nas)
  • J'ai un premier backup en tant que disque dur interne branché sur un dock USB sur Bender
  • J'ai un second backup extérieur sur la dédibox

La dédibox va dégager, il me faut donc retrouver un endroit pour le backup.

J'ai pas loin de 600Go de données dans le backup pour la très grande majorité des photos d'appareils numérique et de téléphone. La première étape a été de recompresser les photos, il faut dire que les téléphones pondent des jpeg plutôt bien compressés mais mon appareil photo pas vraiment. En recompressant les jpeg en gardant toujours une excellente qualité (comparaison côte-à-côte) j'ai pu réduire la quantité de données de moitié et suis donc à environ 280Go. Je devrais pouvoir gagner 50 Go en compressant les vidéos ce que je ferai probablement un peu plus tard en AV1. Bref la volumétrie est plus facilement bougeable.

J'ai acheté un SSD au format mSata pour 90 balles que j'ai foutu dans le Turris Omnia où il hébergera les containers LXC dont un dédié au backup. Comme ça à la maison j'aurai les données sur du ext4 mécanique, du xfs mécanique et du btrfs ssd.

Il me manque plus qu'un backup distant ce qui va se finir probablement en NAS chez ma moman.

Sécuriser le relay Weechat avec LetsEncrypt

Weechat (le meilleur client IRC de tous les temps et de loin) possède un fonction super sympa : le relay. Il permet soit à un autre client IRC de se connecter à Weechat comme un bouncer soit à des interfaces de Weechat de se connecter.

Les interfaces Weechat

Il y en a plusieurs selon les besoins.

Il y a Weechat-Android qui est pour les moins perspicaces une interface pour les smartphones Android. L'interface utilisateur est vraiment pas mal, c'est pas moche et c'est très fonctionnel.

Également vous pourriez être intéressé par Glowing Bear qui est une interface Web qui permet donc d'avoir accès à votre client favori directement dans votre navigateur. Elle possède en plus quelques ajouts sympa comme la prévisualisation des images directement dans le chat, pareil pour les tweets, les vidéos Youtube, on s'approche d'un clone systèmes de chats à la Matrix/Slack/Mattermost (comme quoi ça peut se faire via IRC également). Cette interface est en plus assez Michu-Friendly.

Il en existe quelques autres que je ne vais pas lister.

Le relay

Donc ces interfaces ne sont pas des clients IRC complets mais juste une interface utilisateur pour Weechat. Il faut donc un Weechat qui tourne dans un coin (ou ailleurs) et le configurer pour activer le relay.

Un simple /relay add ssl.weechat 5002 fera l'affaire.

Et qui dit SSL, dit certificat et compagnie donc LetsEncrypt.

Chez Alpine

Je vous ai pas assez parlé d'Alpine Linux. C'est une super distro ultra légère et tout, je vous ferai un article à ce propos un de ces quatre.

Voyons comment faire pour avoir notre petit cert en deux minutes :

apk add nginx acme-client

On conf le ptit Nginx pour qu'il puisse s'occuper tranquilou de servir le challenge LetsEncrypt. Donc dans /etc/nginx/conf.d/votre.vhost.truc.conf

   location  ^~ /.well-known/acme-challenge {
           allow all;
           alias /var/www/acme;
   }

Un ptit /etc/init.d/nginx reload (ça vous rapelle les bons souvenirs où ça marchait bien, hein les debianneux ?).

Et maintenant on crée le script qui sera exécuté chaque semaine pour mettre à jour votre certif :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh
weerenew(){
        cat /etc/ssl/acme/private/votre.vhost.truc/privkey.pem /etc/ssl/acme/votre.vhost.truc/fullchain.pem > /home/lord/.weechat/ssl/relay.pem
        printf '%b' '*/relay sslcertkey\n' > /home/lord/.weechat/weechat_fifo
}
hosts="votre.vhost.truc"
for host in $hosts; do
        acme-client -a https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf -Nnmv $host && renew=1
done
[ "$renew" = 1 ] && rc-service nginx reload && weerenew

Et vous l'exécutez et c'est tout bon, plus besoin de s'en soucier.

L'astuce réside dans le fait de concaténer la privkey et le fullchain dans le relay.pem et ensuite d'envoyer la commande /relay sslcertkey dans la fifo de weechat. Comme ça, de l'extérieur du client IRC vous déclenchez le rafraîchissement du certificat par Weechat.

Être propriétaire de son matos

J'ai toujours voulu être proprio de mon appart. Pouvoir faire les trous comme je veux dans le mur, peindre de la couleur que je préfère, avoir son ptit coin à soit. Pouvoir faire ce que l'on veut de son bien sans devoir demander à qui que ce soit la permission.

Et comme je le disais sur Masto ce matin, cette semaine les gros de la tech nous montrent leur conception de la propriété. Dans l'ordre alphabétique.

Apple

Apple s'est permis de supprimer de la bibliothèque iTunes d'un de ses clients des films qu'il avait acheté en version dématérialisée.

Apple ayant perdu les droits de diffusion en question, au lieu d'enlever la possibilité à de nouveaux clients de l'acheter ils l'ont retiré des précédents clients. Quelle idée d'acheter du dématérialisé ?! Et ils s'en sont pas vantés ni n'ont prévenu les clients impactés.

L'article de presse vous donnera plus de détails.

Google

Ensuite, continuons ce coup-ci avec une démonstration de bonnes intentions. Un ouragan terrible est annoncé sur les USA et du coup Google a eu la brillante idée d'activer à distance sur des millions de téléphones Android le mode économie d'énergie.

C'est gentil de se soucier à ce point de ses clients et de prendre de telles initiatives. Il n'y a pas vraiment de conséquences trop négatives à cette activation. Ça a été repéré sur un thread reddit.

Microsoft

Comme tout le monde vous avez acheté volontairement votre nouveau Windows 10 flambant neuf. Comme tout le monde la première chose que vous faites, vous allez sur le web pour télécharger des photos de chats et quelques petits programmes pour votre OS. Une nouvelle fonctionnalité arrivée dans une béta de Win10 veillera désormais au grain et vous demandera confirmation si par mégarde vous tentez d'installer Chrome ou Firefox ! Pfiouuuu, vous avez failli par mégarde installer un navigateur web concurrent ! Heureusement que Microsoft est là pour vous éviter cette connerie !

C'est GHacks qui en parle dans son cet article.

Tesla

Allez on s'éloigne un peu de l'informatique (mais pas trop non plus) pour aller voir Tesla ! Eux aussi, à l'approche de l'ouragan Florence ont eu la magnanimité d'augmenter gracieusement la capacité batterie de certaines de leurs voitures (celles qui sont pourvues d'une batterie plus grande que ce que le client a accepté de payer). Du coup pour fuir ça peut donner un ptit supplément d'autonomie non négligeable. Et tout ça, à distance sans avoir rien à faire.

C'est Ars Technica qui relate ça.

Est-ce qu'acheter chez ces fabricants vous rend maître de leur produit ?

On pourrait clairement se poser la question !

À distance, sans rien demander, le comportement de votre appareil est altéré en bien ou en mal. Est-ce que vous êtes vraiment proprio de votre achat ?

Ces différents exemples prouvent bien que du jour au lendemain on pourrait vous couper l'utilisation de vos appareils.

PARANO-MODE : le jour où une guerre se déclenche contre les USA, ne pourraient-ils pas tout couper du jour au lendemain ? L'Europe en est un chouilla consciente vu qu'ils ont dépensé des milliards pour monter Galileo, un système concurrent au GPS, mais pour tout le reste de l'informatique, qu'en est-il de la souveraineté ?

Notre armée n'est-elle pas remplie de Microsoft à ras-bord ? Tout comme notre Éducation Nationale. On sait bien se foutre de la gueule de la Chine, la Russie et la Corée du Nord avec leurs OS soi-disant de brics et de brocs mais au moins ils ont un début de plan…

L'article 11 et 13

Le web est en émoi : l'Europe prend la direction d'une loi qui va amocher l'Internet.

Really ?

Ouai j'ai comme un doute… Franchement cette loi elle va changer quoi ?

Article 11

L'article 11 déjà, doit aider la rémunération de la presse en poussant les gros à devoir rémunérer les liens vers du contenu issu de la presse.

Hahahahahah. Ils y croient ne serait-ce qu'une seconde ? Franchement Facebook déteste quand on pousse ses utilisateurs à aller voir en dehors de Facebook. Pour Facebook, quelqu'un qui fout un lien vers l'extérieur, c'est une publicité à l'encontre de leur business. Vous pensez vraiment que Facebook va vouloir payer pour un truc qui leur déplait ?

La presse elle par contre rêve d'atteindre l'audience de Facebook. Mais pire encore, est-ce que "la presse" (ouai c'est un peu nébuleux) est au courant des agissements actuels de Google ?

Google fait la pluie et le beau temps sur les sites ouaib. Rien de nouveau. Et en ce moment, Google pousse les producteurs de contenu à créer non plus des pages web, mais de l'AMP pour Accelerated Mobile Pages. En gros c'est du web classique, mais on vire tout le superflu comme ça c'est plus rapide. Mais ça ne s'arrête pas là. Le contenu au format AMP est alors hébergé chez Google. Le but ? Que ce soit plus rapide pour les utilisateurs.

Forcément, les producteurs de contenu AMP sont favorisés dans les résultats Google. Et vous savez est le premier producteur de contenu AMP ? La presse.

Bon du coup, la presse mange dans la main de Google, puis tente de lui cracher dessus. Sauf que là, ton contenu sera hébergé chez Google (sinon tu seras doublé par la concurrence) donc tu pourras pas te faire rémunérer et si la mayonnaise prend, tu paieras pour que Google accepte d'héberger ton AMP pour pas disparaitre.

Vous vous êtes déjà fait bananer en 2011 quand suite à un procès Google vous a déréferencé… ils ne vous ont pas pleuré eux. Pfffff

Article 13

Bon là c'est pas mieux.

En gros l'article 13 vise les grosses boîtes (pas les TPE/PME/non-lucratifs) qui seront forcées de mettre des filtres à l'envoi de données afin de vérifier que les données en questions ne sont pas copyrightées.

Cette loi vise clairement les GAFAM. Mais… heuuu… vous savez que Youtube (le G de gafam) a déjà mis un tel système depuis des années ? Concernant Facebook j'en sais rien, je les connais pas suffisamment mais même s'ils n'en ont pas, ils ont les reins suffisamment solides pour soit se payer un système comme ça, soit dédier suffisamment de main d'œuvre pour en créer un toussa toussa.

Bref ceux que vous visez s'en foutent. Ça ne serait pas le cas, ils auraient placardé de partout des appels citoyens…

Ça ne va rien changer pour eux directement. Par contre un potentiel concurrent va devoir en chier encore plus pour commencer à exister. Il devra soit se le créer à la mano ce qui est colossal pour un nouvel entrant soit aller voir les solutions toutes faites… toutes faites par Google et/ou Facebook.

Haha. Vous leur enlevez de potentiels concurrents et en plus vous leur ouvrez un marché. slow clap

Bon et en vrai est-ce que les GAFAM vont payer ?

Bha non, la presse va disparaître des grosses plateformes si elle demande paiement.

Les créateurs de contenu vont continuer à alimenter Youtube pour assurer sa publicité.


Ouai je suis mollement énervé : C'est la victoire des loosers. Franchement, pourquoi tenter de faire vivre un truc qui se tire une balle dans le pied ?

Une bonne licence globale, un revenu universel, une dépénalisation du cannabis, des transports en communs gratuits et une unification de l'Europe et la vie serait bien plus simple. Arrêtons de se faire chier sur ça.

Décortiquer une URL

Un débat sur le web est en train d'éclater.

Chrome pour fêter ses dix ans a décidé de ne plus afficher une partie des URL. Ils suppriment le fameux www dans la barre d'adresse.

C'est pour cela que ça s'insurge et compagnie, comme quoi c'est pas bien (effectivement c'est pas bien) et que c'est la faute des utilisateurs lambda qui ne savent pas lire une URL.

Voici donc un mini-cours pour savoir décortiquer une URL like a boss !

Déjà, c'est quoi une URL ?

Bon déjà URL ça veut Uniform Resource Locator donc en gros c'est un moyen uniforme de trouver une ressource. Une adresse qui pointe vers un seul truc, quoi.

C'est typiquement l'adresse d'un document trouvable sur le web (mais en vrai pas uniquement le web, mais passons). C'est ce que vous êtes censé écrire dans la barre d'adresse de votre navigateur web.

Quelques exemples :

Mais alors, c'est quoi un nom de domaine ?

Bonne question ! Le nom de domaine est un identifiant désignant un ensemble de machines. Une entité va se prendre un nom de domaine pour donner un nom à plusieurs ordinateurs. Dans mon cas, mon nom de domaine est lord.re et dedans j'ai bender.lord.re qui est l'ordi du salon, zapp.lord.re qui est un serveur que je loue …

D'ailleurs, une même machine peut-être dans plusieurs domaines. Être dans un domaine n'est qu'une vue de l'esprit, chacun pourrait s'amuser à intégrer un ordinateur distant dans son domaine : je pourrai me faire google.lord.re et faisant pointer ça vers un des ordinateurs de Google (ou ailleurs, c'est la base du phishing).

Les domaines sont hiérarchiques, ça s'écrit du moins important vers le plus important : bender est inclue dans .lord qui est lui-même inclue dans .re (calmez-vous les puristes, je sais pour le point final).

Allez, on décortique !

Exemple 1 :

On prend donc la meilleure des URL : https://lord.re/

https://lord.re/

Et voilà un "beau" décorticage !

  • le protocole parlé, généralement HTTP ou HTTPS, mais ça peut en être d'autres
  • le nom de l'ordinateur.
  • le fichier demandé (oui oui ça pointe vers un fichier particulier, ici la racine).

Bon, cet exemple est simpliste. Il y a peu d'intéret de distinguer le premier niveau du nom de domaine, vu que le nom complet de la machine est la partie rouge et bleue. Prenons en un plus complexe.

Exemple 2 :

https://gitweb.gentoo.org/repo/gentoo.git/diff/games-fps/quake3-cpma/quake3-cpma-1.48.ebuild?id=c5c0ebe77f1380487e6d61226e74ef054f285ce3

C'est similaire :

  • On est encore en HTTPS
  • Ici on parle à la machine gitweb.gentoo.org, c'est le nom de l'ordinateur qui va afficher la page web.
  • Le fichier demandé tout ce long machin. En vrai ce sont des dossiers : il y a repo dedans gentoo.git dedans diff…

Et la polémique ?

Au balbutiement du web (vers 1990), l'Internet existait déjà. Les noms de domaines existaient déjà et du coup des machines avaient déjà des noms simples à la example.org. Ils ont à l'époque rajouté un site ouaib pour example.org, pour cela ils ont installé un nouvel ordinateur sur lequel ils ont créé le site. Cette nouvelle machine a souvent été nommé www.example.org .

www.example.org et example.org sont deux machines différentes. Du coup il était courant que le web ne fonctionnait que sur www.example.org et non sur example.org. À l'époque, c'était donc nécessaire de distinguer les machines.

Le web se répandant et gagnant en popularité, il est devenu l'usage premier d'un nom de domaine. Mais par habitude, la coutume de nommer le serveur web en www.truc.machin est resté. Et maintenant, la tendance est de rediriger le trafic web de www.truc.machin vers truc.machin qui sont maintenant une seule et même machine. Mais ce n'est pas forcément vrai à 100% !

Il arrive régulièrement que www.machin.truc et machin.truc soient deux ordinateurs différents affichant des pages web complètement différentes. Une preuve ? https://pool.ntp.org et https://www.pool.ntp.org vous mèneront sur deux machines différentes avec deux sites ouaib radicalement différents.

En cherchant bien on doit pouvoir en trouver des dizaines.

Vous comprenez donc que la nouvelle idée de Google de supprimer l'affichage du www dans une URL est une hérésie. C'est comme si vous donniez votre adresse postale en omettant le numéro de rue.

20ème article d'avancement du Librem 5, le vrai

Ouai je me suis merdé la fois d'avant, c'était pas le 20ème… mais je vous jure, ce coup-ci c'est le cas !

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logicielles opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Conférences

Une partie de l'équipe Purism s'est retrouvée à l'Akademy 2018 à Vienne. Cette conférence a simplifié le contact avec les devs KDE et c'était sympa de se rencontrer en personne !

We would like to express our gratitude to @Puri_sm, not only for sponsoring #Akademy2018, but also for working with our developers so we can have a Plasma Mobile-based smartphone soon.

— Akademy (@akademy) August 20, 2018

Certains membres sont également allés au FrOSCon. Prochainement, Todd tiendra une conférence au AllThingsOpen et aussi au Capitole du Libre où François et Adrien tiendront un stand (n'hésitez donc pas à aller leur dire bonjour si vous y êtes).

We're excited to have Todd Weaver, Founder & CEO of @puri_sm, presenting at #AllThingsOpen! https://t.co/FXc3M9ENwi pic.twitter.com/piFRSZ5WOL

— All Things Open (@AllThingsOpen) August 29, 2018

Design

De nombreuses améliorations ont été apportées au prototype du shell. Ils seront bientôt finalisés ! De nouvelles icônes pointeront bientôt leur nez et nous les utiliserons dans nos builds de devs et dans les applications livrées avec le téléphone. Les nouvelles icônes de GNOME sont prévues pour la 3.32 courant 2019.

Côté logiciel

Images

Les images qcow2 sont archivées ainsi que les images brutes. Cela rend les images de machines virtuelles x86_64 plus accessible pour les plus impatients ou pour ceux n'ayant pas commandé le devkit. Vous pouvez retrouver les builds les plus récents ici. Ci-dessous vous pouvez voir une démo de la rotation sur l'image qcow2. Égalemement, quelques paquets ont été ajoutés aux images pour permettre le redimensionnement de la partition racine pour occuper tout l'espace partitionné.

Nous transformons le paquet Debian de Plasma Mobile en un dépot Git convenable pour notre système de build et nous le buildons. Ces paquets seront éventuellement inclus dans l'image Plasma Mobile du Librem 5. Nous collaborons actuellement avec les devs Plasma pour résoudre les problèmes de build restants.

Phosh

De nombreuses corrections et modifications ont été apportées à Phosh ces dernières semaines. Les calculs de la taille ont été corrigé (et par la même occasion la position du menu) sur les affichages redimensionnés avec des modes personnalisés. La traduction allemande a été mise à jour. Désormais, un login shell est utilisé lorsqu'on démarre gnome-session, ce qui s'assure que XDG_* est correctement initialisé, du coup les icones des applications flatpak sont correctement reconnues par phosh. Pour assurer la robustesse de phosh, plus d'alertes de compilations ont été activées et une partie de celles-ci ont été corrigées.

gnome-settings-daemon

Pour préparer le terrain concernant la configuration du modem, une discussion avec l'upstream a débuté afin de débattre sur la façon dont gnome-settings-daemon doit se comporter vis-à-vis des modems.

Wlroots

Wlroots crashait lorsque phosh se reconnectait mais c'est maintenant corrigé. Nous continuons de garder wlroots à jour avec les versions upstreams.

GTK+ 4 et libhandy

Puisque le compositor et GTK+ doivent travailler main dans la main, un bug a été corrigé pour faire en sorte que le app_id de xdg-shell corresponde à l'application-id de GApplication. C'est donc plus simple pour le compositor de faire correspondre les applications avec les fichier .desktop dans Wayland.

Parmis les nombreuses et récentes corrections dans libhandy, il a été fait en sorte que le build soit plus fiable en échouant en cas d'alerte. Il y a trois bugs dans GTK+ qui affectent la possibilité de créer des interfaces utilisateurs adaptive : un souci de coin non-rond, un problème d'affichage hors de l'écran et un bug qui rend parfois le séparateur transparent. Un correctif a été proposé pour le bug du séparateur. Upstream, ils continuent de travailler sur le séparateur pour ajouter un mode sélection alternatif et simplifier l'inclusion d'un séparateur ce qui est nécessaire pour avoir des panneaux proprement définis dans HdyLeaflet. En plus de ça, le runtime pour libhandy flatpak (org.gnome.Platform) a été mis à jour depuis 3.26 vers master afin d'être sur la toute dernière version.

Clavier

Concernant l'OSK, l'ensemble de patch text-input-v3 a été ajouté à wayland-protocols et gtk-3.24. Le support préliminaire de text-input-v3 a également été ajouté dans wlroots. En plus, un patch pour le protocole virtual-keyboard a été mis-à-jour et est en cours d'évaluation. Une RFC pour le protocole input-method-v2 a été posté. Préparrez-vous donc à taper sur votre clavier virtuel !

Appels et messagerie

Puisque la décision d'implémenter un backend ModemManager à l'application Calls a été prise, quelques modifications dans cette appli sont nécessaires. Pour donner plus de droits à ModemManager, des fichiers policy kit ont été créés. Pour améliorer l'interface de Calls, une partie du code de l'affichage de Calls a été nettoyé et l'interface s'approche plus du design final.

De nouvelles fonctionnalités devraient bientôt voir le jour dans l'application Messaging. Un nouveau plugin libpurple pour les SMS est en cours de dev et des tests avec la fenêtre debug de Pidgin pour vérifier que l'interface avec ModemManager fonctionne. Des progrès ont lieu concernant l'interfaçage entre les objets Chatty GTK+ et les structures et signaux de libpurple UiOps. Un article concernant Chatty − complet avec une démonstration vidéo − a été publié donc lisez-le si vous ne l'avez pas déjà fait !

Kernel

D'importants efforts ont été faits pour faire tourner le kernel 4.18 sur le devkit SoM. Afin de simplifier le débuggage des freezes du kernel, nous avons contribué à openocd pour ajouter la configuration de la carte pour le devkit et alerter quand le CPU n'est pas stoppé par l'appel phys2virt. Les gens d'OpenOCD nous ont grandement aidés pour cela !

Les efforts continuent dans le kernel concernant les autres morceaux. Nous continuons le travail sur le driver de l'alimentation électrique et du chargeur de batterie avec les devs upstreams du kernel, ce qui mènera à son inclusion prochaine. L'USB2 a été testé et fonctionne. Il y avait quelques soucis d'horloge résolu depuis et le SDMA et le RTC fonctionnent correctement maintenant.

Côté matériel

L'équipe hardware de Purism a envoyé à fabriquer les fichiers pour la fabrication des PCB et l'assemblage des prototypes. Les fichiers sont en cours d'évaluation.

Coté communauté

Un patron de rapport de bug a été ajouté aux projets phosh, libhandy, calls, chatty, docs et virtboards afin de guider les utilisateurs pour qu'ils fournissent les informations nécessaires. Pour plus d'information à ce propos, lisez notre page de doc sur les rapports de bugs.

Un grand merci à toutes les équipes externes qui nous ont aidé en évaluant et incluant les modifications dans les projets upstreams. Le temps et les contributions de chacun sont grandement appréciés.

C'est tout pour le moment. Restez connectés pour plus de nouveautés à venir !


Original par Heather Ellsworth.

Ha bha enfin ça parle un peu plus de Plasma Mobile !

Bon sinon pas grand-chose à dire. Encore une fois désolé, je pensais que le précédent article était l'avancement 20 mais non c'était un hors-série…

N'utilisez pas de lecteur d'empreintes digitales !

Une mode assez récente dans le monde des smartphones est d'avoir un lecteur d'empreintes digitales pour remplacer les mots de passe . Et si un bête malware (sous forme d'appli gratos) mimant l'allure de l'écran de verrouillage s'amusait à capturer les empreintes digitales de tout le monde et allait stocker ça quelque part pour revendre ou autre ? Probablement du pognon à se faire !

Bon j'ose espérer qu'en vrai le capteur d'empreinte ne stocke pas l'empreinte elle-même mais produit un hash de celle-ci.

D'ailleurs utiliser les empreintes digitales pour ça me pose quelques soucis :

  • Inconsciemment on laisse nos empreintes digitales un peu partout.
  • On ne peut pas changer ses empreintes digitales.
  • On ne peut pas prêter ses empreintes digitales (il y a quand même quelques cas légitimes de partage de mot de passe (avec son conjoint en cas de mort de l'un ou l'autre)).
  • On peut très facilement récupérer l'empreinte de quelqu'un.
  • On peut très facilement forcer quelqu'un à donner son empreinte.
  • On ne peut pas nier qu'une empreinte n'est pas la sienne si c'est le cas.

Bref, voilà pourquoi je n'utiliserai probablement jamais mes empreintes pour ça.

20ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logicielles opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Comme vous vous en êtes aperçu lors du «dernier appel» concernant les devs kits, de nouvelles spécifications ont été publiées. Je veux expliquer ce qui nous a poussé à ces spécifications et pourquoi nous avons fait ces choix et quel est le calendrier actuel pour les devkits et les Librem 5.

Nous voulons fabriquer un appareil mobile de communication sûr qui propose une expérience proche des smartphones concurrents actuels, tout en étant aussi libre et transparent que nous puissions au vu de la situation actuelle. Nous prenons le concept de «libre» et «liberté» sérieusement afin de coller au label «Respects Your Freedom» (RYF) de la Free Software Foundation (FSF). Obtenir cette certification est important et un objectif capital pour nous. Les critères de la RYF interdissent un grand nombre de matériel ce qui rend la tâche de créer un smartphone certifiable par la RYF très compliqué. Il aurait été à peu près trivial de fabriquer un smartphone avec des drivers GPU non libres et un CPU intégrant le GPU et la radio en quelques mois, mais créer un smartphone classique n'est pas notre objectif. Nous avons des ambitions bien supérieures.

Nous avons choisi de fabriquer un appareil libre. Un appareil respectant la vie privée et la sécurité de ses utilisateurs. Nous l'avons choisi car c'est un défi pour notre entreprise et pour fournir un produit se souciant réellement de la liberté logicielle et matérielle. C'est un point où nous ne ferons aucun compromis, car nous savons pertinemment que c'est atteignable.

Parlons donc de l'état actuel du projet.

La route depuis l'i.MX6 vers l'i.MX 8M

Vous vous rappelez probablement d'un article précédent où nous expliquions le raisonnement du changement de plateforme de l'i.MX6 à l'I.MX8M. Aujourd'hui, nous vous donnerons plus de détails et les avancées sur la transition en cours.

Le matériel d'un téléphone comprend un SoC (System on a Chip - un système sur une puce) et des périphériques comme les modems pour se connecter au réseau téléphonique. Début 2017, lorsque nous avons commencé nos recherches pour trouver le bon SoC, nous sommes rapidement arrivés à la conclusion que la famille NXP i.MX − avec les drivers libres Etnaviv pour le GPU Vivante embarqué − serait le meilleur choix. Le fait que le i.MX6 ne nécessite pas de firmware propriétaire pour une utilisation normale de smartphone combiné avec le driver libre «etnaviv» disponible étaient très attirant pour nous. Le fait que le SoC soit sur le marché depuis un certain temps signifie également que les drivers étaient stables et solides.

À la fin de l'été 2017, nous étions alors au courant d'une nouvelle génération de SoC "i.MX 8" dont les rumeurs prédisaient la sortie prochaine. À ce moment, nous avions déjà lancé notre campagne de crowdfunding et nous devions donc continuer sur les plans initiaux. La possibilité d'avoir un SoC bien plus récent suffisait pour que l'on contacte NXP et certains distributeurs pour avoir plus d'informations. Alors que nous continuions le travail pour les autres composants et sur l'aspect logiciel, nous avons continué de nous tenir au courant concernant les opportunités sur ce nouveau SoC pendant six mois. Nous avons pu alors obtenir un début de documentation mais pas de date de disponibilité.

Début 2018, nous avons appris que la famille d'i.MX 8 serait annoncé à l'«Embedded World» à Nürnberg en Allemagne. Du coup, après un petit hackfest en Allemagne, le président de Purism Todd Weaver et moi nous sommes rendus à Nùrnberg et avons rencontré NXP et les partenaires i.MX8. Nous avons eu le droit à une démonstration de matériel i.MX8 avec les firmwares associés pour le voir tourné. Même les derniers Etnaviv fonctionnaient déjà correctement. Nous étions excités à l'idée d'utiliser du matériel bien plus récent.

Nous étions confiants sur la capacité de l'i.MX8 pour faire tourner le Librem 5 et pour être disponible en quantité suffisante pour notre date de livraison de janvier 2019. La décision de se tourner vers un SoC de nouvelle génération apporte les avantages d'un CPU moderne de 64bits, plus de GPU sur la puce, moins de conso électrique et d'autres améliorations tout en étant toujours compatible avec la certification «RYF» de la FSF. Nous pensons que le compromis de changer de matériel vaut le coup. Le SoC n'est bien entendu pas la seule préoccupation pour le Librem 5.

L'épreuve de fabriquer un smartphone Non-Android

Fabriquer un téléphone non android faisant tourner un système d'exploitation approuvé par la FSF supportant toutes les fonctionnalités attendues (réseau cellulaire, Wifi, Bluetooth, écran tactile) requière de la recherche étant donné qu'aucun smartphone n'a obtenu la certification RYF et les découvertes impliquent de trouver des solutions à de nouveaux problèmes.

L'industrie propose tout le matériel pour créer facilement un smartphone, puisque les fournisseurs de SoC incluent un modem (cellulaire et wifi) intégré. Une simple recette : prenez un SoC, Placez-le sur un PCB, Ajoutez de la RAM et une puce de mémoire flash par-dessus (ce sandwich s'appelle un PoP : Package on Package), Ajoutez des antennes et de l'énergie. La difficulté réside dans les firmwares et les logiciels pour faire tourner le tout. Les firmwares requis sont fournis par les fabricants de puces, tout comme les drivers pour le GPU et autres. Ces logiciels sont par contre propriétaires sans code source et peu voir pas d'alternatives.

Modem cellulaire (baseband)

Le modem cellulaire est de loin l'élément le plus complexe d'un téléphone mobile. C'est le composant qui doit implémenter toute la famille de protocole de téléphonie (2G, 3G, 4G et bientôt 5G). Il le fait en faisant tourner son propre système d'exploitation comme une boîte noire. Il est couvert pas des milliers de brevets détenus par des centaines d'entités différentes. Maintenant imaginez cela : Le modem est situé sur le bus de la RAM du SoC ! Du logiciel non-libre qui a non seulement accès aux données entrant et sortant du SoC, mais avec également la possibilité de les altérer. Parce que l'OS de ce modem est une boîte noire proprio, on n'a aucune idée de ce que ce composant fait et quelles sont ses vulnérabilités.

Revenons au design du Librem 5, nous estimons que ce n'est assurément pas une bonne solution. Le modem doit être isolé du SoC pour qu'il ne puisse pas accéder à la RAM. La situation s'est compliquée, lorsque lors de nos recherches pour un modem, nous avons réalisé qu'il y a très peu de fabricant et que la quasi-totalité d'entre eux intègrent leur modem dans un SoC. Qui plus est, vous devez acquérir une licence pour faire tourner ces firmwares proprio dans un SoC.

Cela nous a donc laissé qu'un choix : utiliser un «module» de modem tout prêt et notre propre arrangement pour isoler le modem du SoC. Il existe différents modems disponibles avec différents formats et différentes spécifications de vitesse, de fréquence radio, etc. En s'orientant vers un module, nous pouvons nous fournir auprès d'un fournisseur répondant à nos critères stricts et aussi permettre une isolation entre le modem et la RAM ainsi que le CPU.

Pour isoler le modem, nous le placerons donc sur un (remarquablement rapide) bus USB et donc le téléphone interagira à travers l'USB au lieu de la RAM. Cela séparera le modem sur son propre bus sans qu'il voit d'autre données.

Modem Wifi/Bluetooth

Pour le Wifi et le Bluetooth nous collaborons étroitement avec Redpine Signal. Ils nous fourniront une solution WIFI/Bluetooth à faible conso utilisant l'interface SDIO. Nous nous sommes tournés vers eux car leurs puces ne nécessitent pas de téléchargement de firmware lors du fonctionnement contrairement à d'autres fournisseurs. Devoir télécharger un firmware violerrai les recommandations RYF de la FSF. Au final, nous pensons avoir une excellente solution Wifi et Bluetooth qui s'intègrera bien et consommera peu. Ceci souligne l'attachement que porte Purism en tant qu'entreprise à but social de pousser nos convictions du Libre et de la liberté de nos utilisateurs dans notre chaîne d'approvisionnement.

EE, ID et MD (Electronics Engineering, Industrial Design et Mechanical Design)

Pour trouver les bons partenaires pour fabriquer nos composants matériels, Todd et moi nous sommes rendu à Shenzhen en Chine il y a quelques temps. C'est l'endroit où sont fabriqués les deux tiers des smartphones ; plus d'un milliard d'appareil y sont fabriqués chaque année. C'est ici que s'est développé une chaîne logistique optimisée ces dernières décennies et où se retrouve l'expertise électronique de nos jours. Nous avons choisi cette zone car c'est ici que nous trouverions les compétences pour fabriquer les composants matériels que nous avons choisis.

Sélectionner des partenaires pour la fabrication de nos designs fait maison était un exercice excitant de part les possibilités qui vont se concrétiser. Depuis le début Avril de cette année, nous avons évalué des entreprises de fabrications et des usines intéressées pour travailler avec nous. En accord avec notre planning originel nous avons commencé avec une maison de design électronique et peu de temps après nous avons trouvé notre design mécanique et notre fabrique matérielle.

État des devkits

Si tout se passe comme prévu, nous enverrons les devkits en octobre. Nous avons conscience de l'impatience des centaines de développeurs et sommes tout aussi pressé de vous permettre de travailler sur la plateforme PureOS du Librem 5. Nous avons pas mal mis la pression sur notre chaîne d'approvisionnement pour que tout aille aussi vite que possible. Ils seront équipés des SoC i.MX 8M. L'état actuel des choses est que nous avons terminé le design et nous travaillons vers les tests d'allumage. Nous sommes fiers de vous annoncer que les devkits seront assemblés et fabriqués aux USA, plus précisément à San Diego en Californie alors que la production finale des téléphones aura lieu elle en Chine.

Avec ce nouveau SoC, les devkits auront un matériel plus récent, rapide, un GPU plus puissant (quatre cœurs au lieu de deux), 64bits ainsi qu'une consommation en baisse et moins de chauffe. Cela améliorera l'attractivité du téléphone pour ceux comparant avec la concurrence durant leur shopping.

La documentation pour développeur des devkits est presque prête et nous pensons que ceux recevant leur kit pourront commencer à écrire des applications relativement vite.

Ces trois/quatre derniers mois ont connus une grande activité ici chez Purism avec beaucoup de débroussaillage, de négociation, de répartitions des tâches − une valse avec les différents partenaires pour travailler de concert dans un effort commun de concevoir le bon produit. Mais comme vous, nous sommes impatients du résultat : un téléphone fonctionnant au Libre que nous espérons voir disrupter le marché d'aujourd'hui avec des concepts innovants tout en ayant toutes les fonctionnalités d'un téléphone d'aujourd'hui.

photographie d'une table jonché de sachets de composants électroniques

Des éléments du devkits dans nos bureaux allemands. Le design des PCB que nous construisons comprennent plus de 700 composants

État de la feuille de route du Librem 5

Abordons le planning de sortie du Librem 5. Avec les dernières informations dont nous disposons, nous envisageons un retard de production jusqu'à Avril 2019. La faute revient à un bug dans le silicium du SoC causant une surconsommation sur la batterie. Si nous sortions le téléphone en l'état, la batterie serait à cours en près d'une heure… Ce n'est pas la première impression que nous voulons donner !

L'errata de NXP (le fabricant du silicium) pour la révision en cours de vente peut se trouver ici. Plus spécifiquement, ce document où les deux problèmes affectant la gestion de l'énergie et la consommation d'énergie sont identifiés en tant que «e11174» et «e11171».

Nous collaborons étroitement avec NXP pour régler le souci. Pourquoi avril ? Nous souhaitons être réalistes dans nos projections en se basant sur quelques facteurs :

  1. Si le problème se résout d'ici décembre, ça tombe pendant les vacances de fin d'année en Europe et Amériques.
  2. Février est le nouvel an chinois et effectivement le pays tout entier est à l'arrêt pour ce mois. Ce qui veut dire que nous pouvons relancer la production en mars pour que les premières pièces sortent en avril.
  3. En interne, nous avons de nombreux plans à accorder en fonction de la sortie afin de synchroniser les relations presse, la communauté (en ligne mais également à différents évènements), nos investisseurs et autres.
  4. Nous voulons vous donner une date qui soit réaliste afin de ne pas vous frustrer. Nous voulons vous épater et pour cela nous avons besoin d'une longue période de QA (Assurance qualité). C'est pour cela que nous espérons commencer la production en avril (si nous pouvons le faire plus tôt, tant mieux, mais nous préférons ne pas faire de promesse intenable).

Vous vous demandez probablement pourquoi les plans pour les devkits ne sont pas plus impactés que ça comparé aux Librem 5. Les devkits sont faits pour être branchés et ne sont donc pas impacté négativement par les bugs dans le silicium. Ils seront donc livrés avec les puces contenant ces bugs, mais cela n'affectera pas les développeurs (puisque ce n'est pas comme si vous vouliez vous balader avec le devkit avec une longue autonomie).

Pour vous ouvrir l'appétit, admirez quelques schémas des devkits (ne les utilisez pas comme référence !) ainsi que quelques rendus 3D pour le plaisir des yeux.

un schéma de devkit assez joli où l'on voit quelques composants majeurs

Un des premiers schémas du devkit

un rendu 3D du devkit avant et arrière plutôt réaliste

Rendu 3D du devkit Librem 5 avant et arrière

Au-delà des devkits, un détail qui devrait tous vous plaire est l'utilisation d'une batterie remplaçable par l'utilisateur : contrairement à la majorité des smartphones sur le marché aujourd'hui, les nôtres n'auront pas leur batterie soudée sur la carte mère et la coque ne sera pas collée.

Les schémas du design du téléphone sont à peu près terminés et nous sommes actuellement concentrés sur l'assemblage de l'appareil. Certaines pièces font encore défaut comme le modem, mais au-delà de ça, il n'y a aucun soucis pour l'assemblage.

Nous nous sommes également affairés pour qu'il y ait aussi peu de branding que possible sur le téléphone.

L'épopée continue

Une incroyable montagne de travail a été nécessaire dans la création du Librem 5 et nous apprenons encore de nouvelles choses et faisons encore face à certains challenges. L'une des plus grandes difficulté a été l'établissement d'une chaîne de fournisseurs et collaborer avec un grand nombres de partenaires à travers le monde, trouver les bons contacts pour obtenir ce que l'on veut. On ne doit pas sous-estimer la difficulté qu'a été de créer cette chaîne d'approvisionnement. L'autre défi est de trouver du matériel compatible avec notre idéologie et la compatibilité avec le RYF de la FSF lorsque toute la chaîne d'approvisionnement est optimisée pour la réduction des coûts. Trouver des fournisseurs permettant d'éviter tout blob dans le système d'exploitation s'est révélé, incroyablement, long et fastidieux.

Nous continuerons d'avancer en comprenant mieux comment fonctionne cette partie de l'industrie. Le succès de notre téléphone est critique car il nous apportera une légitimité et nous donnera les moyens pour orienter les fabricants de matériel vers notre façon de penser en leur montrant que nous avons le potentiel d'être leader sur un marché de produits éthiques qui respectent leurs utilisateurs.

Pour ceux qui ont investi en nous et continuent d'être patient avec nous : vous avez toute notre gratitude. Pour ceux qui ont adopté l'approche wait-and-see (j'attends de voir pour juger), nous espérons que vous rejoindrez la famille Purism soit avec notre téléphone soit avec nos autres offres. Merci


Original par Nicole Faerber.

Et bha voilà ! Ils annoncent enfin qu'ils auront du retard. Bon j'imagine que ça n'étonne personne mais bon, perso ça ne me gène pas du tout. Déjà parce que c'est que quatre mois et aussi parceque ça leur permettra de peaufiner un peu plus l'OS.

En plus c'est un peu en grande partie la faute du fabricant du SoC qui a un bug matériel. Ça arrive assez fréquemment, surtout sur des designs complètement nouveaux. Bref rien de bien grave pour le moment, espérons qu'il n'y ait pas d'autres déconvenues matérielles.

Pfiouuu qu'il était long cet article. On sent qu'ils arrivent vers la fin du projet et que ça approche de la concrétisation.

Gare à vous, ils ont l'intention de vous disrupter votre marché du smartphone !

Quelques sites/outils pour améliorer votre site

Il existe de plus en plus de sites promouvant de bonnes pratiques pour le web. Ça peut être à propos de l'accessibilité, ou bien de la sécurité ou des performances.

Ils vont donc analyser votre site (ou au moins une page) et vous attribueront une note, et proposeront des conseils pour améliorer votre jouet. J'adore ce concept. Un peu de gameification (attribution du score) pour un cercle vertueux. En plus c'est généralement assez rapide et pertinent.

Donc voilà une ptite liste de différents sites du genre :

Multiples

  • WebHint : un peu de tout avec une très jolie interface et des conseils qu'on retrouve pas ailleurs. Plus poussé que les autres du genre.
  • Dareboost : Très joli et assez moderne (il gère http2 par exemple), il analyse un peu la sécurité et le SEO également.

Sécurité

  • SSLLabs : est probablement le plus connu pour juger votre mise en place de TLS. Visez au minimum du A, c'est vraiment pas compliqué et c'est gratuit et n'a aucun effet secondaire.
  • CryptCheck : moins connu mais beaucoup plus rapide et tout aussi pertinent que le précédent. Il peut également vérifier votre serveur SMTP et XMPP.

Accessibilité

  • Wave : Assez complet concernant à la fois la structure du site mais également la vérification du contraste (et là c'est dur de n'avoir aucune alerte !).
  • AChecker : très complet aussi et s'intéresse beaucoup à la norme WCAG. Dur d'avoir un site parfait également mais pas mal de ptits trucs sont corrigeables sans difficulté.

Performance

  • Pingdom : Joliment fait et permet de tester depuis plusieurs coins du globe.
  • GTMetrix : Très connu aussi celui-là et complet.
  • PageSpeed Insights : forcément c'est made in Google donc si vous voulez être bien vu, il faut avoir un bon score sur celui-là.

SEO

  • SEOSiteCheckup : J'imagine qu'il est pertinent. Perso je m'en fous un peu…
  • WooRank : À peu près pareil qu'au-dessus.

Vrac

  • EcoIndex : Celui-là vous jugera sur l'aspect plus environnemental de votre site.
  • 1and1 Website Checker : Bon ça vaut pas grand-chose mais certains conseils sont toujours bons à prendre.
  • PowerMapper : Alors celui-là c'est qu'une démo mais est pas mal complet. Il fait un peu d'analyse de perf, de l'accessibilité, de l'utilisabilité, un peu de SEO, de la conformité de syntaxe…
  • NetRenderer : Si jamais le rendu de votre site ouaib sur Internet Explorer vous intéresse…
  • HTML Validator : le classique du W3C pour valider la syntaxe de votre HTML.
  • CSS Validator : la même mais pour le CSS.
  • Down or Not : permet de tester si un site déconne pour tout le monde ou juste pour vous.

Pas du web mais du Mail

  • MXToolBox : Il fait un peu tout concernant le mail.
  • Mail Tester : est pas mal pour tester un mail avant d'envoyer dans une newsletter voir à quelqu'un point il ressemble à du spam.
  • SMTP STS Check : Pour tester votre implémentation de MTA-STS.

Pas du Mail mais du DNS

  • ViewDNS : la trousse à outil classique qu'on retrouve sur d'autres sites du même genre.
  • ZoneMaster : outil de l'AFNIC très sympas si vous avez un serveur DNS pour vérifier que la conf soit correcte.
  • DNSSec-Analyzer : Celui-là vous permettra de vérifier que votre conf DNSSec est correcte.
  • DNSViz : Assez similaire au précédent mais un peu plus graphique.

Bon avec ça, normalement vous avez très probablement de nombreuses pistes d'amélioration pour votre site et un peu aussi pour votre serveur mail. Je vais tenter de grappiller quelques points pour l'accessibilité encore.


PS : Merci à Anna, Pifyz, Pofilo, Cascador et Tuxi pour leurs propositions !

Ecometer : De mauvais à plutôt bon en paginant.

J'ai de loin maté une conf concernant le GreenIT appliqué au web. Habituellement le GreenIT est assez pipeau mais étonnamment j'ai trouvé ça plutôt cohérent.

Et du coup dans cette conf ils évoquent EcoIndex un site web analysant des pages web pour leur attribuer un score. J'adore ce genre de truc !

Ici le score se base sur la performance environnementale. La taille de la page, le nombre de requête, le nombre d'élément DOM et bha je crois que c'est à peu près tout. Bon ça vaut ce que ça vaut (si pour générer la page il faut trente secondes de génération dans le langage X, c'est sûr que l'impact environnementale sera catastrophique).

Bref, tout confiant d'avoir un bon score je lance le test et j'obtiens D avec un 44.6. Pourtant tout est bien en dessous de la médiane sauf la complexité de la page où la médiane se trouve à 603 éléments alors que j'en envoie 2431 ! Bon bha va falloir améliorer ça pour donner l'exemple.

D'où ça vient ? Tout simplement du fait que sur la page d'accueil je liste chacun des articles du site et que bha ça commence à faire. Et c'est d'ailleurs peu pertinent d'afficher des articles d'il y a plus de dix ans… Remédions à cela et vite !

Paginons !

Bon donc on va juste afficher les 20 derniers items sur la home puis mettre les habituels liens précédents/suivants et compagnie.

Dans layouts/index.html on remplace le range par :

{{ $paginator := .Paginate (where .Data.Pages "Type" "in" .Site.Params.sectionsInHomepage ) }}
{{ range $paginator.Pages }}

Et ensuite il ne reste plus qu'à rajouter les liens de pagination donc dans ce même fichier à l'endroit qui vous convient ajoutez :

{{ template "partials/pagination.html" . }}

Et voilà ? Non.

Le template de pagination made in Hugo me convenait pas du coup je l'ai retouché à ma façon donc maintenant on créer layouts/partials/pagination.html :

<div class="pagination" style="text-align:right;">{{ $paginator := .Paginator }}{{ $.Scratch.Set "CurrentPage" .Paginator.PageNumber}}
{{ if gt $paginator.TotalPages 1 }}{{ if gt $paginator.TotalPages 4 }}<a href="{{$paginator.First.URL}}" aria-label="First">««</a>{{end}}
{{ if $paginator.HasPrev}}<a href="{{$paginator.Prev.URL}}" aria-label="Previous">«</a>{{end}}
{{ range $paginator.Pagers}} <a {{if eq ($.Scratch.Get "CurrentPage") .PageNumber}}style="font-size:1.3rem;font-weight:900;"{{end}}href="{{.URL}}">{{.PageNumber}}</a> {{end}}
{{ if $paginator.HasNext}}<a href="{{$paginator.Next.URL}}" aria-label="Next">»</a>{{end}}
{{ if gt $paginator.TotalPages 4 }}<a href="{{$paginator.Last.URL}}" aria-label="Last">»»</a>{{end}}{{ end }}
</div>

Le rendu est beaucoup plus compacte que le template par défaut Hugo.

Verdict ?

Et bha c'est pas mal du tout !

  • La page d'accueil passe de 49.7Ko à 14.7Ko.
  • Le score passe à un joli A avec 77.6 !
  • Le nombre d'éléments DOM passe de 2431 à 342.

D'ailleurs dans le même genre d'idée j'ai limité le nombre d'articles dans mon flux RSS. Mine de rien rien que le flux RSS représente près de 3Go de bande passante mensuelle. En sachant que les personnes déjà abonnées au flux RSS ne seront pas impactées, seuls les nouveaux abonnés ne verront que X articles lors de l'abonnement.

  • Je passe donc de 20 à 5 articles dans le flux RSS.
  • Le fichier fr passe de 188Ko à 52Ko.
  • le fichier en de 68Ko à 16Ko.

Une très belle réduction !

19ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logicielless opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Aujourd'hui sera l'occasion d'avancées techniques et d'une démo de SMS et de chiffremment de bout-en-bout de messages XMPP sur l'application que nous développons : Chatty. Mais tout d'abord un peu de contexte historique…

La montée en puissance et la chute des messageries instantanées

Dans le monde d'aujourd'hui, toujours plus prompt au changement, de nouveaux produits propriétaires apparaissent chaque quart d'heure. Certains parviennent à attirer un grand nombres d'utilisateurs et survivent sur le marché pour deux années. Cependant, parfois ils disparaissent au profit d'un nouveau service plus attractif dans ses fonctionnalités ou juste par la force de leur campagne marketing. Dans le monde des médias sociaux, on a vu Myspace disparaitre dans l'indifférence lorsque les gens ont rejoint Facebook. Mais il y a eu bien plus de fluctuation dans le monde des messageries instantanées ces deux dernières décennies. Vingt ans auparavant nous utilisions ICQ jusqu'à son acquisition par Yahoo. Puis pour quelque temps, MSN et Yahoo Messenger ont eu leur instants de gloire. Le premier s'éteint en 2013, alors que Yahoo débranche son service pour ses 20 ans le 17 juillet de cette année.

Aujourd'hui WhatsApp et Facebook-messenger sont à leur pic. Mais comme les habitudes des utilisateurs changent, il est fort probable que ces services ne perdurent pas et que leur durée de vie soit similaire à leurs prédécesseurs. Aujourd'hui, les utilisateurs de Facebook-Messenger se tournent vers la messagerie d'Instagram et Telegram grignote des utilisateurs à WhatsApp et ainsi de suite.

S'échapper des Walled Garden

Les services de messagerie instantanée sont majoritairement centralisés, non-fédérés et tournent grâce à une seule entreprise. Puisque le protocole et/ou le logiciel serveur n'est pas du Logiciel Libre (où le code est disponible), les utilisateurs ne peuvent savoir comment leurs données sont utilisées. Même si le fournisseur de service ne peut pas forcément lire vos conversations lors de l'utilisation de chiffrement de bout-en-bout, il peut tout de même savoir avec qui vous discutez et à quels moments puisqu'ils gèrent vos comptes, votre liste de contacts avec toutes les métadonnées associées.

Les alternatives aux systèmes mono-fournisseur sont les systèmes décentralisés, des structures fédérées faisant fonctionner une pile logicielle complètement Libre. De nombreux serveurs relaient les informations en utilisant un protocole commun, permettant aux gens inscrits chez différents fournisseurs de communiquer ensemble. Ce type de conversation fonctionne à peu près comme les emails. Bien sûr, chacun doit avoir confiance envers son fournisseur de service pour gérer son compte mais en plus les données seront aussi manipulées par d'autres stations-relais où certaines métadonnées devront être partagées avec le serveur abritant vos amis.

XMPP (Extensible Messaging and Presence Protocol) est l'un de ces systèmes fédérés ainsi qu'un standard maintenu à long terme et bien spécifié. Inventé en 1999 par la Jabber Open Source Community pour faire de la messagerie instantanée, de la présence, du chat de groupe, de la voix et aussi des appels vidéos. De nombreuses implémentations existent. N'importe qui peut faire tourner un serveur XMPP avec par exemple Prosody. Débuté avec un client est assez simple car il existe une multitude de clients pour toutes les plateformes (Pidgin, Gajim ou Dino pour Linux; Adium et Swift pour macOS;Conversations sur Android; ChatSecure sur iOS) et il existe de nombreux serveurs XMPP publics à choisir (lorsque vous voulez choisir un serveur de la liste, vérifiez sa sécurité avec IM Observatory. Il effectue quelques connexions pour tester et évaluer le chiffrement entre le client et le serveur ainsi que le chiffrement entre serveurs).

SMS : old but gold

Aujourd'hui, la plupart d'entre nous utilisent notre banque en ligne avec son authentification à deux facteurs via SMS. De nombreux services en ligne ont également recours à ce système. Les SMS semblent archaïque, mais la réalité veut qu'ils jouent un grand rôle dans les technologies modernes. Un sondage a montré que les SMS sont le meilleur moyen pour joindre une personne avec près de 90% de taux de lecture dans les minutes suivant l'envoi. Pourquoi ? Parceque lorsqu'ils reçoivent un SMS les gens pensent qu'il doit s'agir de quelque chose d'important. Envoyer un SMS est vu comme fiable. Et franchement, j'envoie régulièrement des SMS lorsque je veux être sûre d'être lue en temps et en heure même si j'ai du wifi à portée.

“The rumors of my death have been greatly exaggerated” − Mark Twain

Donc, réellement, un téléphone comme le Librem 5 se doit d'avoir une application pour gérer les SMS.

Les SMS seront gérés par notre application au nom de code “Chatty” (le nom définitif n'est pas encore attribué), en tant que plugin pour libpurple comme interface pour ModemManager.

  • La libpurple supporte de nombreux protocoles de messagerie via des plugins et permet aux utilisateurs de se connecter à divers services simultanément depuis une seule application. Le client de messagerie ayant recours à cette lib le plus connu est Pidgin puisqu'elle a été développée pour lui.
  • Libpurple permettra ainsi à d'autres devs de créer leur propre application de SMS.

Island hopping

Au tout début, “Chatty” devait simplement être l'appli des SMS pour le Librem 5 à cause de nos contraintes de temps et nos ressources limitées.

À force d'en discuter dans l'équipe, l'idée d'intégrer le chiffrement de bout-en-bout et les SMS dans une seule application s'est imposée. C'est toujours un fardeau de devoir se rappeler quel écosystème de discussion choisir lorsqu'on veut discuter avec un ami avec qui l'on a pas discuté depuis un bail, nous nous sommes dit que l'idée d'avoir une seule appli pour gérer de nombreux services différents était une évidence, d'autant plus lorsque libpurple fait tout le boulot “gratuitement”.

Néanmoins, Chatty supportera XMPP avec le chiffrement OMEMO ainsi que les SMS lors de la sortie. D'autres protocoles comme Telegram pourrait arriver plus tard si la fonctionnalité peut s'intégrer correctement dans l'interface.

Libpurple fournit des fonctionnalités essentielles pour la messagerie instantanée en général, pas uniquement le support des protocoles. Lorsqu'un contact est choisi dans la liste, libpurple récupère les données liées à cette personne, choisi le plugin associé au protocole, établie une connexion, et émet le signal pour que l'application puisse afficher l'interface avec l'historique.

Donc, comment s'en sort Chatty ?

Pour le moment Chatty peut faire la base (ce qui est probablement le plus difficile) comme envoyer et recevoir des SMS via ModemManager et un modem SIMCOM, ainsi que des messages XMPP/OMEMO via libpurple et le plugin lurch, comme vous pouvez le voir dans la démo en vidéo :

Pour le moment, les fonctions basiques de Chatty seront étendues par l'écriture de fonctions pour lier des objets GTK+ à libpurple. Ces fonctions de callback seront enregistrés dans les structures d'interface d'UI de libpurple pour que son noyau gère les conversations, la liste de contacts ainsi que l'interface utilisateur.

Il reste un long chemin afin de rendre Chatty suffisamment utilisable pour le Librem 5. Voici certaines des tâches à accomplir en ce sens :

  • Wrapper le code des SMS/ModemManager dans un plugin libpurple (ça a déjà commencé. L'interface avec ModemManager fonctionne et sa sortie peut être vue dans la fenêtre de debug de pidgin.)
  • Stocker l'historique des messages dans une base de données
  • Créer une visualisation des messages avec le support des images et des capacités de lazy load (chargement des images que lorsque c'est nécessaire)
  • S'interfacer avec la base de données des contacts
  • Designer les écrans de gestions des comptes libpurple (pour XMPP et ceux que l'on ajoutera plus tard)
  • Implémenter le chiffrement de bout-en-bout pour les fichiers (images) dans le plugin lurch
  • Ajouter la gestion de confiance dans le plugin lurch et designer une UI appropriée

Aucun client XMPP n'était dispo pour les appareils mobiles avant la sortie de “Conversations” en 2014 sur Android. C'est d'autant plus excitant comme mission de rendre XMPP disponible sur le Librem 5. Et peut-être que d'autres protocoles seront ajoutés par la suite via les plugins libpurple.

Lectures intéressantes

Des mythes persistent concernant les performances d'XMPP. Cet article les abordent.

Daniel Gultsch a écrit un long article concernant ses efforts à lui ainsi qu'Andreas Straub pour rendre le chiffrement OMEMO disponible pour de nombreux clients XMPP. Alors qu'ils ont eu besoin de plus de deux ans, Whatsapp, par exemple, a pu déployer le chiffrement du jour au lendemain. Mais rien ne pourra mieux décrire leur épopée que la conclusion de l'article de Daniel :

“…Enabling end-to-end encryption in a homogenous environment is easier than introducing it in a heterogenous one like Jabber… However, if something is hard to achieve there are two possible approaches: Either try your best and don’t give up, or put your head in the sand and create yet another walled garden that is no different from other proprietary solutions.”

“…Apporter le chiffrement de bout-en-bout dans un environnement homogène est plus simple que dans un environnement hétérogène comme Jabber… Cela dit, si quelque chose est difficile à réaliser il y a deux approches possibles : Soit vous faites de votre mieux en vous démenant sans abandonner, soit vous vous plantez la tête dans le sable et créez un autre jardin clôt similaire à l'approche propriétaire.”


Original par Andrea Schäfer.

La démonstration est rassurante et montre un système déjà fonctionnel et compatible avec un système radicalement différent (un iTruc). L'utilisation de libpurple est bon signe car l'ajout d'autres protocoles sera plutôt aisé (que ce soit par eux ou par des devs extérieurs). Toujours pas de nouvelles concernant le kit de dev qui devraient déjà être livrés.

Je n'ai pas traduit Walled Garden car je ne trouve pas d'expression équivalente. Le walled garden est littéralement le jardin clôt. Il s'agit du principe selon lequel une entreprise enferme ses utilisateurs dans un environnement clôt incompatible avec l'extérieur (Facebook, les iTrucs, …). Pour discuter avec une personne dans un walled garden, il faut soi-même être dans ce même walled garden. On pourrait parler de «chasse gardée», de «prison dorée», bref vous voyez quoi.

Je n'ai pas traduit Island Hopping car je ne pense pas qu'il y ait d'expression équivalente non plus. Notre cher wikip nous apprend qu'il s'agit d'une stratégie militaire adoptée par les USA pour atteindre le Japon. Au lieu de traverser l'océan Pacifique d'une traite, ils ont conquis les îles sur le chemin en y établissant des bases. Donc en gros au lieu de se taper un long et incertains voyage d'une traite, il est préférable de le découper en de multiples plus petits voyages pour arriver à ses fins. Scinder pour moins se décourager.

Je me rends compte que j'ai vraiment du mal à traduire quand ça parle vraiment code. Je ne connais que les termes anglais et du coup ne sait pas faire de phrases vraiment claires. Heureusement qu'il y en a assez peu dans ces articles…

Client MPD : TSMPCD

Il y a trois mois je vous parlait de ma migration de Groovebasin vers MPD dans cet article. Et je vous avais parlé de mon Frankenscript qui me sert de client MPD. Entre temps il a changé de nom, maintenant c'est TSMPCD pour Tiny Shell Music Player Client Daemon.

C'est donc un script bash (pas pur sh) Il est basique mais avec trois objectifs.

  1. Son job est donc de faire en sorte que la playlist ne s'assèche jamais en rajoutant des morceaux aléatoires à la suite.
  2. Faire des notifs avec le titre du morceau qui démarre.
  3. Permettre de contrôler MPD avec des raccourcis basiques.

Tout repose sur mpc qui est le client mpd basique en ligne de commande. Pour les notifs c'est du dmenu avec un ptit patch pour pas qu'il prenne le focus. Le reste c'est du shell classique (en dehors du read qui n'est pas posix).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#! /bin/bash
#Tiny Shell Music Player Client Daemon

CheckMPD(){
  if [ ! "$(pgrep -x mpd)" ]; then
    timeout 3 i3-nagbar -m "MPD n'est pas lancé"
    exit 1
  fi
}

Loop(){
  while true
  do
    CheckMPD
    if [ "$(mpc playlist | wc -l)" -lt 30 ]; then
      mpc findadd Title "$(mpc list Title | shuf -n 1)"
    fi
    if [ "$(mpc current -f %position%)" -gt 15 ]; then
      mpc del 1
    fi
    printf "\033[0;32m%s\033[0m\n" "$(mpc -w -f "[%title%] [by %artist%]  [from %album%] [ :  %time%]" current)"
    flock -F /tmp/mpdnotif.lock -c 'mpc current -f "%title% - %artist% [%track%] %album% - %date% | %time% |" | timeout 6 dmenu -g -b' &
  done
}

Input(){
  while true
	do
    read -s -n 1 input
    if [ "$input" = "n" ]; then
			mpc -q next
		elif [ "$input" = "p" ]; then
			mpc -q prev
		elif [ "$input" = "" ]; then
			mpc -q toggle
		elif [ "$input" = "h" ]; then
			Intro
		fi
	done
}

Intro(){
  printf "TSMPCD !\n-------\nSPC : play/pause\tN : next\tP : previous\tH : help\n"
}
Intro
Loop&
Input

Bon bha maintenant j'ai tenu ma promesse de le publier. Je doute qu'il intéresse grand monde cela dit. Ça monopolise un terminal rien que pour ça.

capture d'écran du script

Il gagnera pas un concours de beauté ce script

Scinder Firefox en deux versions

Tiens une autre idée que j'ai tooté ce soir.

Créer deux versions distinctes de Firefox, une version purement communautaire, sans branding et sans parternariats commerciaux et une autre avec tout le toutim.

Un peu à la manière d'un Chromium et de son acolyte Chrome nous aurions donc deux versions.

Une version Made in Mozilla Corp. avec toutes les décisions à la con : partenariat Google, partenariat Pocket (bon c'est racheté depuis mais bon), partenariat Laserlike, les DRM … bref tous les trucs qui génère du pognon et qu'il faut absolument proposer à Madame Michu. Le Firefox actuel avec ses logos et tout.

Une version Made in Mozilla Foundation sans les partenariats chiants, sans le branding, sans télémetrie, une version bien quoi. Avec 90% du dev ayant lieu ici. Les geeks se ruent ici, les Michus continuent d'abandonner progressivement le Firefox originel.

Concernant le financement de Mozilla Foundation, ça ne changerait pas, le pognon pour payer les devs et l'infra serait issu majoritairement de Mozilla Corp. mais aussi des quleques dons.

Et on fout des équipes dirigeantes différentes dans les deux entités, hein.

Ha, et je vous vois venir, « suffit d'utiliser un des forks de Firefox ! ». Oui mais non, Firefox évolue si rapidement qu'un fork n'est pas une solution à moyen ni à long terme. Ça représente trop de boulot de proprifier Firefox. Vaut mieux une version crade issue d'une version propre que l'inverse.

ZSH plus loin : ZMV

Les petites gens utilisent un environnement de bureau mais en tant que rustre, je préfère largement l'austérité d'un sombre terminal.

Vous connaissez probablement la commande mv qui permet de move un fichier. C'est bien dans 90% des cas, mais il arrive des fois que vous ayez plein de fichiers à bouger avec juste une partie à renommer. Et là c'est pas mal galère.

Vous allez pouvoir renommer les fichiers en masse avec quelques options sympatoches grâce à notre cher ZMV !

vous voulez changer un motif récurrent en début de nom par un autre (souvent je préfixe les fichiers) :

Original Renommé
XXX-fichier1.jpg YYY-fichier1.jpg
XXX-fichier2.jpg YYY-fichier2.jpg
XXX-fichier3.jpg YYY-fichier3.jpg

zmv 'XXX(*)' 'YYY$1'

 

Tout simplement.

zmv 'le_motif_quon_change(*)' '$1-cequonchange'

Pour être safe, on peut rajouter -n qui affichera les modifs devant être effectuées sans les faire. Et sinon il y a le mode interactif avec -i qui nécessitera que vous validiez chacune des modifs.

Bien entendu il y a d'autres options qui sont documentées mais celles-là devraient vous suffire.

L'extra-bonus vient du support des modifiers et du globbing de ZSH mais ça c'est pour une prochaine fois. Avec ces deux bidules supplémentaires, il est possible d'ajouter des critères pas mal du tout. ex : zmv '* *' '$f:gs/ /_' pour remplacer les espaces par des underscores. Bon j'arrive jamais à m'en rappeler, hein, mais au moins je sais où le retrouver.

PS : Pour pouvoir l'utiliser il faut ajouter autoload -U zmv dans votre ~/.zshrc.

La demoscene vol.4

Plus de trois quatre mois depuis la dernière fois, réparrons de suite ce méfait ! Et en plus maintenant c'est dans la section shares :-)

Bon donc voici une sélection de démo sans contraintes sur PC.

Ziphead by CNCD & Fairlight

Allez on commence direct par un sacré coup de cœur.

Capture d'écran de Ziphead

Ziphead by CNCD & Fairlight

Rien que pour la musique celle-là vaut le détour. Elle peut passer en boucle sans soucis.

Et graphiquement elle en fout plein les mirettes, bon par contre ça clignote pas mal, si vous y êtes sensibles évitez ptet. La synesthésie est totale, les couleurs pimpantes, techniquement sans contraintes (en dehors du temps réel bien entendu) et du coup ils y sont allé à fond.

J'ai dit que je l'aimais ? Elle a fini première en pc demo compo à la Revision 2015 et bon bha … ça le mérite quoi.

Lifeforce by ASD

Plus atmosphérique, posée, poêtique. Celle-ci est un classique, arrivée première lors de l'Assembly 2007 en pc demo compo.

Capture d'écran de Lifeforce

Lifeforce by Andromeda Software Development

Malgré les années qui commencent à s'accumuler elle est toujours bien même sur l'aspect technique. Le dézoom infini à la fin fait toujours son ptit effet !

1995 by Kewlers and MFX

On remonte encore d'un an ce coup-ci pour une démo qui n'a fini que troisième lors de l'Assembly 2006.

Capture d'écran de 1995 montrant des boules avec du raytracing

1995 by MFX & Kewlers

C'est une démo hommage à l'année 1995. La musique est géniale en flirtant avec le chiptune avec par-dessus un soupçon de vocoder.

Graphiquement on retrouve pas mal de motifs d'époque : des formes 3D simples, défilement d'étoiles, nuages de points, lumières volumétriques, des tunnels, des greetings, des images en surimpression avec du texte en "dessins bizarres" et des bouboules tout en raytracing. Bref un hommage aux anciennes démos.

Je dois d'ailleurs avouer que les modèles 3D composés de ptits cubes de tailles différentes ce qui crée un effet "d'antialiasing volumétriques" (je sais pas trop comment l'expliquer) me laisse moite.

J'ai toujours trouvé bizarre qu'elle ne soit pas parvenue à être première, la concurrence devait être sacrément rude cette année.

Second Reality by Future Crew

Bon là c'est la légende des démos. Une des plus connues. Mais je l'aime pas trop pour autant.

capture d'écran de second reality d'un monstre avec une loupe devant

Second Reality by Future Crew

Elle a un peu trop vieilli à mon goût. Il y a toujours quelques effets sympathiques, mais la musique m'est difficilement supportable.

Bon faut remettre ça dans le contexte de l'époque, Windows 95 n'était pas encore sorti, Linux n'était pas l'ombre de ce qu'il est maintenant. Du coup ouai pour l'époque, sortir une simili ville en 3D avec une caméra qui virevolte, un ptit effet de raytracing, une simulation de flotte 3D ça devait effectivement être assez impressionnant. Par contre qu'est-ce que ça manque de rythme… ce générique qui dure aussi longtemps que la démo…

Bref il faut la voir une fois pour la culture mais désormais… c'est vieillot. Il existe un documentaire à son sujet visible sur youtube.

Google Will Eat Itself

Ça faisait un moment que je le recherchais ce site. Perdu au fin fond de ma mémoire impossible de remettre la main dessus. Et là pouf, une lueur venue de nulle part et pouf j'ai pu retrouver ce maudit site !

GWEI est à mi-chemin entre la blagounette, l'œuvre artistique de génie et le plan machiabolique. Le concept est simple : ils ont monté quelques sites plus ou moins bidons avec des pubs AdSense dessus. Avec le pognon que Google leur donne (pour l'affichage et le clic sur les pubs), ils achètent des actions GOOG en bourse.

Ils se servent du pognon que Google leur donne pour racheter Google ! Pure Genius !

Bon en pratique ils sont pas près d'atteindre leur but mais c'est franchement marrant comme concept. Ils ont montré deux trois preuves de leurs méfaits que l'on retrouve sur leur site. Ça s'est monté en 2005 et c'est vrai que depuis c'est assez calme. J'imagine que le site continue d'exister mais que c'est désormais au point mort vu que les pubs ne rapportent plus rien.

Mais s'ils n'ont pas dilapidé leurs actions elles doivent valoir bien plus qu'à l'époque. Il y a bien un endroit où c'est marqué qu'au cours actuel ça représenterait pas loin de 400K$, mais est-ce tout de même à jour ? Bref toujours est-il que cette initiative est pour le moins drôle.

Ha ouai j'allais oublier : http://gwei.org/index.php

Ouverture Des Commentaires

Ceux qui lisent jusqu'en bas des articles ont dû voir que depuis hier, ça y est, il y a moyen de commenter.

J'ai donc installé une ptite instance Isso qui gère les commentaires. C'est un système auto-hébergé en python qui stocke les commentaires dans une ptite base de donnée SQLite.

Ces commentaires ne sont donc pas stockés ailleurs que chez moi, vous n'êtes pas plus traqués qu'avant. Ça repose bien entendu sur javascript, sans ça vous les verrez pas.

Les commentaires ne sont pas modérés à priori cela-dit, si du spam apparaît, je passerai en modération à priori ce qui nécessitera que je les valide un par un.

J'espère que ça insufflera un peu de vie et d'interaction.

Comment ça a été mis en place ?

La doc sur le site d'Isso est plutôt claire et suffisante.

J'ai donc créé un user dédié, installé isso via pip, créé un ptit fichier de conf, créé un vhost avec son certif x509 pour TLS, ajouté deux lignes dans le template hugo pour avoir le html et le script js qui va bien.

Et voilà ! Et bha non. Ça marchait pas.

Le souci vient du fait que Isso se protège en acceptant les commentaires que du site que vous définissez dans la config. Or le site et isso se trouvent sur la même machine mais tous deux derrière un reverse proxy où se trouve du NAT. Donc isso ne pouvait pas se connecter à https://lord.re/ nativement (via l'ip publique).

Il me manquait un peu de Hairpinning sur le routeur. En gros dans mon LAN mes machines discutent entre elles avec des adresses IP locales en 10.0.0.0/8. Par contre quand sur mon LAN je tente de me connecter à lord.re les machines tentent de se connecter à 92.167.84.9. Or, depuis mon LAN cette IP n'est pas renatté vers l'intérieur… Un ptit coup de /usr/bin/iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -d 10.2.0.51 -p tcp --dport 443 -j MASQUERADE et le tour est joué. Tout mon LAN peut désormais accéder à https://lord.re sans recourir à du bidouillage dans /etc/hosts.

Et là comme par miracle Isso a accepté de fonctionner. Et du coup c'est Arnauld qui nous a gratifié d'un premier commentaire :-).

Vacances en Angleterre

Je viens de passer deux semaines sur le territoire de notre chère Grande Bretagne. Pas de programme bien établi : l'hôtel pour les quatre premières nuits réservées deux jours avant et c'est tout ce qui était prévu. Plutôt que de faire un roman je vais plutôt faire une longue liste de pensées concernant tout ça.

Random facts

  • Wharf est un mot anglais mais aussi un mot français pour embarcadère. Et il y a pleins de wharf à Londres.
  • Beaucoup de magasins ont leur "café" à l'intérieur. J'imagine que les Britains se déshydratent très vite ! Certains magasins ont même leur machine à café à disposition où tu remplis ta propre tasse et hop c'est gratos. Ha non c'est gratos que si tu as la carte de fidélité mais comme on te la demande pas…
  • Tiens un truc un peu déroutant : j'ai l'habitude de ne boire quasi exclusivement que de l'eau du robinet. Généralement pas de boisson et encore plus rarement de l'alcool. Du coup quand au restau tu demandes de l'eau du robinet, on t'apporte un verre. Mais on t'apporte pas la carafe. Moi qui aie l'habitude de boire près d'un litre par repas c'est pas pratique. Mais généralement quand tu redemandes une seconde fois de l'eau on t'apporte la carafe. C'est d'autant plus gonflant quand tu as marché toute la journée et que c'est la canicule. Haha non je déconne au plus chaud il a fait 24°c alors qu'en partant de la maison on avait le droit a de jolis 36°c. Le retour est d'ailleurs assez nocif quand tu sors de l'avion et que tu te demandes si tu crèves de chaud parceque tu recommences à bouger après deux heures d'oisiveté ou si c'est juste la chaleur ambiante.
  • Les Fish'n'Chips ? Le pinacle de la gastronomie anglo-saxonne. Mouai je vais retourner bouffer de la grenouille (non quand même pas).
  • Tant qu'à parler bouffe : ils sont constamment en train de grailler des chips (pas des frites). Je pensais pas ça si populaire.
  • Malgré les polémiques comme quoi AirBnB augmentent les loyers pour les autochtones et compagnie, bha si tu veux partir en ayant encore un peu d'argent t'es presque obligé d'y recourir. Pioncer à Londres coûte super cher ! C'est près de trois fois moins cher que l'un des hôtels les moins chers de Londres (certes c'était pas un super quartier mais tout de même à 2minutes à pied d'une station de métro). Et c'est également moins cher que les dortoirs d'auberge de jeunesse. Et c'est à peu près pareil pour Oxford : on s'est retrouvé dans une guesthouse à 70£ la nuit, les prestas étaient vraiment bas de gamme…
  • S'il ne pleut pas, prenez des photos quand même, vous trouverez des tutos pour rajouter des nuages en retouches pour que ça ait l'air plus réaliste. D'ailleurs la pluie ça va ça vient, dans la même journée il peut faire bien moche, beau puis rebien moche. D'ailleurs si la météo indique des précipitations de 2.2mm en une heure, ce n'est pas la quantité d'eau qui tombe qui est indiquée mais l'épaisseur nécessaire du K-Way pour rester à peu près sec. Bref c'est la Grande-Bretagne à juste titre.
  • Les chiottes sont souvent étrangement placés dans les restaus et compagnie. Prévoyez un peu de temps pour y aller. Vous allez passer une porte indiquée "Loos" et là c'est parti pour l'aventure : une bifurcation, on monte trois marches, on passe pas la porte des cuisines mais la porte juste après, là on descend un étage sur un escalier moquetté, il commence à faire sombre là le couloir se sépare en deux mais tu as pas d'indication, tu choisis au hasard et avec un peu de bol tu trouves les gogues. Bref une vraie épopée d'où l'on ressort grandi et soulagé.

Londres

Boutiques / visites

  • Tu croises toujours les mêmes boutiques et les mêmes restaus constamment aussi bien à Londres qu'à Oxford. Et pour les pubs c'est presque pareil, beaucoup sont la main mise de Greene King.
    Un ancien pub de Londres le Prospect Of Whitby

    Il est vraiment beau celui-là, non ?

  • À Londres tu peux pas faire dix mètres sans avoir un Starbucks.
  • Le fameux musée Madame Tussauds : la gestion de la file d'attente est vraiment bien pensée avec des billets donnant une heure d'entrée du coup tu fais presque pas la queue (ne surtout pas venir en avance ça sert à rien). Par contre le musée en lui-même… On te prend vraiment pour une vache à lait ultime. À peine fait dix mètres qu'on tente déjà de te vendre du popcorn et autre chinoiserie en plastoc. Cinquante mètres plus loin on veut te vendre pour 5£ un accès à une section optionnelle du musée. Dans mon cas c'était Alien, comment résister ? Allez on raque pour ça, on a le droit à un Fassbender livide puis des "animacteurs" tentant de mettre l'ambiance en gueulant parcequ'on se fait attaquer, une ptite photo souvenir, puis on te fait rusher dans deux salles où tu vois un random cadavre le dos explosé et subrepticement un alien que tu as absolument pas le temps de regarder (ni même prendre en photo) et … bha voilà, c'est tout pour la partie optionnelle. L'arnaque. Tu continues de déambuler dans le circuit du musée avec du Marvel et du Star Wars (ptain que j'en peux plus de Star Wars). Encore des boutiques de popcorn tshirts et débilleries, un ptit court métrage en «"4D"» sur du Marvel avec une esthétique cheapos as fuck et une simili-histoire naze. Tiens pour 5£ par personne tu peux aussi avoir une extension dans le thème Sherlock Holmes version Guy Ritchie : Nope me suis déjà fait arnaquer une fois. Encore deux trois salles et hop tu as le droit au shop officiel. C'est déjà assez cher en lui-même l'entrée du musée. Bref j'en attendais rien et j'ai quand même été déçu. L'impression d'être un porc amené à l'abattoir, faut serrer les miches et courir si tu veux repartir avec ton lard. (C'est d'ailleurs marrant de voir l'engouement des gens pour foutre leurs doigts dans le nez de Trump)
  • Allez passons à la Boutique 9 ¾. Pour ceux qui savent pas c'est une boutique Harry Potter dans la gare de Kings Cross. Alors déjà tu peux faire la queue pour prendre la même photo que tout le monde en train de t'emplafonner avec ton caddie et ta valise avec quelqu'un te zigouillant avec ton écharpe marron dégueulasse. Ensuite tu as le droit de faire la queue 20 minutes pour pouvoir rentrer dans la boutique. Et c'est juste une boutique dans une gare, donc vraiment pas grande, pas spécialement adaptée pour contenir beaucoup de monde, donc il y a du personnel pour attendre que les gens sortent pour faire rentrer les nouveaux mais malgré ça la boutique est BONDÉE. Et dedans… ça pue le cheapos de partout. Avec des goodies à la qualité plus que déplorable de partout avec des prix plutôt élevés avec en prime les gamines hystériques en train de prendre tout en photo tout en bousculant tout le monde en criant "OMG OMG OMG" (Je suis d'ailleurs probablement sur quelques-unes de leurs photos en les regardant bien méchamment). Bref nul à chier (mêmes selon les dires d'une fan).
    Clocher de la gare Saint Pancras

    Clocher de Saint Pancras qui se trouve juste à côté de la gare Kings Cross.

    L'intérieur de Saint Pancras

    C'est beaucoup plus beau que Kings Cross.

  • Continuons le tour des boutiques pour fan : le Who Shop. Une expérience radicalement à l'opposé d'Henry Potier. La boutique est certe petite et assez excentrée (faut prendre le métro un ptit moment) dans un quartier bien moins huppé mais c'est tellement plus agréable. J'en ai pas parlé avant mais au moins ici le personnel est agréable et comprends que parler un peu moins vite quand on a des frenchies en difficulté ça aide à se faire comprendre. La boutique est calme, tu peux reposer ton armure et prendre le temps d'observer tous leurs goodies. Et là il y a de quoi faire, ça oscille du truc tous pourris en plastoc qui vaut rien à l'authentique Dalek grandeur nature ainsi qu'un authentique Tardis (pas grandeur nature car l'intérieur n'est pas plus grand :-( ) ayant eu son heure de gloire dans quelques épisodes. Il y a tout une collection de photos dédicacées, quelques vêtements ou des trucs plus artisanaux. On ne peut prendre de photos qu'avec l'accord du personnel qui aura alors la joie de faire un peu de mise en scène, allumer le Dalek et tout. Franchement génial. Et pour 3£/personne vous pourrez accéder à un ptit musée collectant de nombreux costumes ayant servis pour divers épisodes aussi bien pour la première série que pour la seconde. Ratez pas les photos ! On a craqué pour un Dalek tricoté habillé en David Tennant ainsi que pour un ptit Tardis métallique. D'ailleurs on s'est rendu compte après coup que l'on avait pas payé l'accès au musée… chacun pensant que l'autre avait payé. Mais à notre décharge c'est la faute du vendeur qui a passé plus de temps à nous faire prendre la pose dans le Tardis qu'à prendre notre pognon !
    Dalek ayant servi dans la série dans le musée Dr Who

    EXTERMINATE !

    Un Masque de Ood avec sa boule

    Un fameux Ood (ou spaghet-chatte)

  • L'organisation du Madame Tussauds est mieux que le musée lui-même, par contre pour le London Eye (la très grande roue sur la Tamise) c'est l'inverse. On avait également des billets avec une heure indiquée mais tout le monde s'en fout. Et quand je dit qu'ils s'en foutent, ils n'ont même pas scanné notre billet, on aurait pu rentrer gratos. Et par contre Coca-Cola est passé par là et s'est payé du branding pas possible. Tu as des logos de partout. Beurk. Je suis vraiment plus habitué à la pub. Et pendant la file d'attente tu as un ptit stand photo sur fond vert où tu dois te justifier pour pas être pris en photo… Heureusement que l'attraction est vraiment bien. On voit vraiment bien la ville, le tour n'est ni trop court ni trop long. En plus la météo était pas trop dégueue. On est pas trop quiché dans la cabine par contre le vertige peut en bloquer certains.
    La gare London Bridge vue depuis le London Eye

    On croirait un train électrique.

    Déjà que ce manège est haut, le London Eye est vraiment _très_ haut

  • Si vous êtes fans de Goodies et compagnie en plus des boutiques évoquées plus haut, il y a le Noble Collection qui propose pas mal de trucs. Et à peine plus loin Forbidden Planet et là c'est mi-librairie mi-paradis : de la figurine, des porte-clés, des jeux, des bouquins, des frusques, des casquettes… allez-y sans le porte-monnaie.

Quartiers

  • Canary Wharf est un quartier ultra moderne avec tous pleins de gratte-ciels. Ça en construit d'ailleurs plein d'autres (dont une massive qui n'est pas près de se terminer toujours dans le même état d'avancement que sur la photo de 2010). En sous terrain il y a un centre commercial et tout le toutime. J'aime beaucoup ce côté ultra moderne.
  • BigBen est en travaux :-/ . Les échafaudages sont magnifiques. On a quand même pu voir l'horloge.
    Big Ben complètement recouvert d'échafaudage

    C'est pas super photogénique.

  • Si vous savez pas quoi faire : balade à pied sur la rive nord de la Tamise de Canary Wharf jusqu'à Hyde Park. Vous aurez mal aux pieds et serez fatigués mais c'est super. Vous commencez donc au pied de tours immenses, puis dans des quartiers résidentiels bien calmes avec des immeubles aux tailles plus raisonnables ensuite vous aurez droit aux immeubles sortant tout droit de la révolution industrielle (bonus point si le ciel est bien grisâtre, vous pourrez siffloter du Sweeney Todd ou bien les ziks de Sherlock Holmes de Guy Ritchie (enfin made in Hans Zimmer quoi). Vous déboucherez ensuite sur une ptite enclave non loin de l'auberge Dickens toute mimi (avec sa bouffe meh). Quelques pas plus loin vous aurez le fameux London Bridge à bascule qui a une putain de classe malgré sa cohorte de touristes sortant de la Tower of London juste à côté. À cet endroit vous aurez un point de vue extra-ordinaire avec donc une forteresse moyen-âgeuse et dans le fond les tours flambant neuve de La City. Après une ptite pause bien méritée, continuez vers Cannon Street puis la Cathédrale Saint-Paul faisant passer notre Panthéon Parisien pour un jouet. Ensuite vous arriverez dans les parcs de notre chère Reine avec sa modeste bâtisse en bout que vous contournerez pour aller à Hyde Park. Et hop une journée bien remplie de photo.

    Un ptit cottage au beau milieu de la nature d'un parc

    Franchement qui ne voudrait pas habiter là-dedans ?

    Un wharf résidentiel très industriel

    Moins sexy que le cottage.

    Saint Katharine Docks Marina

    Vous voyez l'immeuble dans le fond ? C'est la tour où se déroule The IT Crowd.

    Le Royal Albert Hall

    Le Royal Albert Hall où allait se dérouler le BBC Proms. Grande salle de spectacle.

  • Architecturalement parlant c'est génial. Contrairement à Paris où vous avez soit de l'Haussmanien super joli mais vite ennuyeux soit du moderne pas terrible terrible, à Londres il y a du victorien ultra joli et surtout bien moins répétitif que l'Haussmanien. Mais il y a aussi des tours pas toujours superbes mais quand même globalement pas moches (j'ai un faible pour le Gherkin).

    Le Gherkin

    Gherkin veut dire cornichon, j'ai adopté ce surnom.

    Vu du pied de la Tower of London vers La City

    Ce contraste ancien/moderne.

  • Les entrées de métro sont presque toujours au pied des immeubles, dans les immeubles, pas un escalier dans le trottoir qui prend de la place et tout. C'est un détail con mais c'est pratique en ne bouffant pas de la place sur un trottoir pas toujours large.

  • J'imagine que c'est parceque c'était août mais Londres est quand même pas mal calme. En dehors des quartiers d'affaires et/ou ultra touristique tu peux discuter dans la rue sans hurler, marcher sur la route et t'arrêter prendre une photo, trouver des quartiers avec absolument pas de voitures.

  • Gringotts (banque d'Harry Poteux) se trouve être la Australia House et n'est donc pas visitable.

  • Il y a un Tardis stationné à la sortie du métro Earl's Court comme ça tout seul. Personne n'y prête attention. D'ailleurs étrangement les boutiques de souvenirs affichent toutes leurs merdiers Harry Potter, ou bien des drapeaux, des assiettes avec les deux zigottos qui se sont mariés récemment (je dois avouer ne pas savoir exactement qui c'est, car je m'en fous, mais je m'en fout royalement (Badum Tss)), tous pleins de trucs à l'effigie des émojis (sisi je vous jure !) mais globalement rien de Doctor Who. Doctor Who est apparemment moins populaire que je ne le pensais.

    Le Tardis d'Earl's court

    Ouai ouai tout le monde s'en fout !

  • La rive sud de la Tamise est super sympa à parcourir aussi. De l'Ouest à l'Est vous aurez le droit aux parties de Bonneteau sur le Westminster Bridge, le London Eye, quelques salles de concert et autre théâtres, un bâtiment IBM (un datacenter ? possible vu l'allure). L'OXO Tower Wharf où vous trouverez des boutiques qui sortent de l'ordinaire (principalement des artisans qui font de l'art/des bijoux). Vous serez vite sur le parvis du Tate Modern où vous pourrez rentrer gratuitement observer… des trucs (ouai je suis pas réceptif à cet art). Vous aurez ensuite le Globe Theater de William Shakespear reconstruit suite à divers incendies. En poursuivant vous arriverez sur un galion qui traîne là sans rien dire. Ensuite en s'éloignant un poil de la Tamise vous aurez droit à un marché de Street Food sous un pont et vous arriverez nez-à-nez avec The Shard la plus grande tour du moment. À son pied une gare (de train et de métro) toute neuve vous mènera à la Hays Galleria un ancien wharf reconverti en ptite place avec resto et quelques boutiques et surtout une superbe œuvre d'art Steam Punk d'un bateau qui parfois s'anime avec de la flotte faisant tourner une roue. Juste en face y est stationné le HMS Belfast un croiseur de la seconde guerre mondial. En continuant encore un peu plus vous arrivez proche du London Bridge. Ensuite quelques restaus sur le bord de la Tamise puis soudainement vous arriverez dans le quartier résidentiel de Bermondsey. Normalement ça devrait commencer à vous prendre une bonne partie de journée. Vous pourrez rejoindre le métro gris (jubilee line) pour rejoindre votre nid douillet.

    Sculpture dans la Hays Galleria avec un bâteau Steampunk

    La sculpture steampunk de la Hays Galleria

    Vu depuis la Hays Galleria en direction de La City sur la rive opposée

    De nuit La City est assez charmeuse

    La plus grande tour d'europe : the shard

    On la croirait pas vraiment finie en haut.

    vue de nuit de la rive sud

    Elle est jolie la lune

    Intérieur du Tate Modern Art

    L'intérieur du Tate Modern Art : c'est juste des gens fatigués ou une œuvre ?

  • Les parcs de la ville sont peuplés de gentils écureuils curieux prêts à venir chopper des noix (et des chips :-/ ). Vous verrez aussi les perruches vertes qu'on croise dans pas mal de villes désormais, il n'y en a pas beaucoup, mais on trouve quand même.

    Un écureuil du parc

    Ils sont à portée de main.

  • Un peu plus loin du centre dans sa banlieue, à Southmere qui est l'endroit où se déroule la série Misfits. Et là on peut pas être déçu du voyage. C'est tout moche comme dans la série : avec ces immeubles grisâtres, le lac un peu crade, le community center mochtoc. Bon en vrai il est en travaux actuellement et sera un peu modernisé donc on a pas trop pu l'arpenter. Mais on a vu les garages (où le beau-père de Nathan rôde nu), la ptite colline qui ne mène en vrai qu'à un peu de nature avec des chevaux, des oies et des renards. Une balade sympathique comme tout. Et puis il y a 0 touriste ici.

    Le fameux community center que l'on voit dans toute la série

    Le fameux community center que l'on voit dans toute la série

    On s'y croirait, hein ?

    Les garages de Misfits

    C'est peu ragoûtant si vous avez pas vu la série…

    Immeubles autour du lac Southmere que l'on voit dans Misfits

    Icônique, non ?

    Immeubles autour du lac Southmere que l'on voit dans Misfits

    On est juste au-dessus des garages en fait.

Oxford

  • Oxford est plein de Colleges tous plus jolis les uns que les autres. Mention spéciale pour Christ church avec ses prés supers sympas à visiter où broutent ses belles vaches.
    Devanture du college Christ Church

    La façade côté Meadows de Christ Church en impose.

  • Pas mal de visites à Oxford dont le musée d'histoire des sciences avec tous ses objets magnifiques. Ce qu'il montre est joli, le bâtiment est joli, c'est intéressant et en plus c'est gratuit. Que demande le peuple ?
    Un astrolabe dans l'une des vitrines du musée

    Un ptit astrolabe classieux du musée

  • Le Museum of Natural History est MAGNIFIQUE , rien que le bâtiment est une tuerie. L'architecture est superbe. Mais en plus il fait en sorte que chacune des colonnes soit décorées à l'éffigie d'une plante différente, soit fait d'une pierre différente, orné d'un scientifique différent : en plus d'être joli ça complète le but de documentation/démonstration. Ils ont une jolie collection de restes de dinos (dont un t-rex). Pas mal de jolis pierres, d'animaux, d'insectes… Tiens je vous ai pas dit : c'est gratuit O___O. Incontestablement une de mes visites favorites de ce séjour.
    Extérieur du museum of natural history

    T'es même pas rentré que tu veux remplir deux cartes SD de photos.

    Intérieur du museum of natural history

    Même pas besoin d'exposer des trucs, le bâtiment pourrait se suffire à lui-même.

    Intérieur du museum of natural history

    Il y a des dizaines de statues de scientifiques contre les colonnes du bâtiment.

    Intérieur du museum of natural history

    Et les colonnes sont en différents matériaux et représentent diverses plantes, un musée en lui-même.

    Un squelette de Trex complet est présent.

    Ho la grosse patoune de poulet !

  • Le Pitt Rivers Museum est à peu près du même calibre que le précédent mais consacré aux humains. Je sais pas comment on s'est débrouillé mais on l'a raté alors que son entrée est dans le musée précédent. Il est lui aussi gratos, lui aussi dans un bâtiment qui, à lui seul, vaut la visite. Bon le sujet m'intéresse moins mais c'est tout de même fichtrement sympa. Ça couvre quelques pans de l'humanité : les vêtements, les armes, les instruments de musiques, les moyens de transports, les coutumes…
    L'intérieur du Pitt Rivers est aussi magnifique

    Franchement superbe et pleins de curiosités.

  • Oxford c'est pas si grand pour les touristes, trois ou quatre jours suffisent pour voir à peu près tous les gros trucs.
  • Les bus à Oxford sont bizarres : c'est plein de compagnies différentes, du coup tu en as pas deux qui se ressemblent, mais sinon ça marche bien. Il y en a vraiment pleins super régulièrement. Et c'est toujours un plaisir d'être à l'étage aux places tout devant pour admirer le spectacle.
  • Il y a la Bodleian Library qui est la première bibliothèque publique du monde où ils conservent un exemplaire de chaque publication sortie désormais. Ils ont près de 13 millions d'articles. On peut en visiter une partie dont la Duke Humpfrey qui contient de vieux ouvrages que l'on ne peut pas consulter (à moins d'être étudiant et d'avoir une raison valide d'ouvrir un de ces bouquins).
  • Si vous êtes versés Tolkien il y a une expo qui lui est consacré à la Weston Library à Oxford où l'on peut y voir quelques-uns de ces manuscrits, des originaux de ses aquarelles, une carte en 3D avec un projecteur expliquant les chemins parcourus par les différents protagonistes du Seigneur des Anneaux. C'est aussi une visite gratuite mais faut réserver un créneau pour y aller.
  • Attention à Oxford à peu près tout ce qui se visite ferme à 17h, même au mois d'Août. Par chance les boutiques de souvenirs de merde restent ouvertes jusqu'à 21h pour certaines… les pubs, eux, pas de soucis !
  • Tiens d'ailleurs concernant les touristes j'ai été impressionné du nombre de chinois. Ils représentaient bien plus de la moitié des visiteurs à Oxford ! Et globalement je trouve que l'hospitalité des britains est pas au top dans les boutiques/restau/hotels. Lorsques certains commencent à parler super vite avec un accent vraiment prononcé, tu as beau demander à répéter doucement, tu as le droit à exactement le même discours avec le même vocabulaire, le même rythme et le même effort sur l'accent. C'est d'autant plus agréable quand c'est un hotel 4* réservé via une plateforme en ligne où on te montre que tu fais bien chier.

Retour en France

Voilà, ces vacances étaient éprouvantes pour les petons mais régalantes pour les yeux. Franchement brexitez un an ou deux puis revenez, on vous aime bien (et adoptez les euros ce coup-ci)!

Va falloir y retourner pour voir d'autres morceaux ! Bon bha pour finir voilà une photo de mur.

Mur bétonné laissant apparaitre ses briques.

C'est qui le génie qui s'est dit que bétonné ça serait plus beau ?

#1 Tap to Passthrough I3

J'utilise des gestionnaires de fenêtres pavants (je me force mais c'est clairement pas naturel… arg je tiens plus) enfin des tiling WM quoi depuis des années. J'ai utilisé principalement wmii et depuis 2009 je suis sur i3.

Le souci c'est que wmii utilisait la touche Alt pour toutes les commandes et je l'ai donc naturellement réutilisée sur i3. Du coup chaque commande i3 nécessite d'utiliser Alt. Bon jusque-là rien de bien méchant.

Sauf que Alt est souvent utilisée par d'autres logiciels pour des raccourcis. Du coup, si le raccourci existe pour i3, bha le logiciel avec le focus ne le reçoit pas. L'idée à la noix du jour serait de pouvoir tout de même envoyer le raccourcis si par exemple on lui faisait un petit tap au préalable.

Donc en gros Alt Alt+t et pouf i3 n'interprête pas le keybinding et transmet ça à l'appli ayant le focus.

Alors oui je pourrai remapper, mais ma mémoire musculaire est trop bien implantée désormais, j'ai pas envie de réapprendre les raccourcis d'i3. Et puis remapper chaque appli qui utilise Alt… arg la flemme.

Contrer la vague de spam touchant IRC

Bon ça fait plus de deux semaines qu'un bande de péquenots s'amuse à spammer joyeusement à peu près tous les réseaux IRC existants (enfin s'ils sont suffisamment gros).

L'attaque

C'est un flood avec toujours les mêmes phrases (!) consistant à envoyer des URL vers des blogs. Là où c'est encore plus dégueulasse, c'est que ces blogs sont ceux des membres de l'équipe de Freenode qui est le plus gros réseau. Et ces blogs annoncent fièrement que la pédophilie c'est super chouette… Cela va sans dire que ces blogs ne sont pas les blogs du staff Freenode mais ont été monté pour l'occasion avec des articles antidatés.

L'attaque utilise donc une belle armada de bots, tout d'abord hébergés sur le Google Cloud, puis l'Amazon Cloud, puis juste dispersés à droite à gauche désormais. Les bots prennent des pseudos d'utilisateurs légitimes en ajoutant parfois quelques chiffres en fin et hop.

Maintenant l'attaque se poursuit également en discussions privées.

Chouette -____-

La défense

Par les serveurs

Pour bloquer tout ce spam côté serveur, le mieux est de mettre en place des spamfilters mais tous les ircd ne possèdent pas cette fonctionnalité (comme, par exemple, ceux qu'utilise Freenode). Cette technique permettra de virer les bots au moment où ils envoient les fameuses phrases qui du coup ne seront pas relayées aux utilisateurs. Il ne reste alors que les join/quit qui malheureusement ne peuvent pas être distinguées de ceux légitimes.

Par les @ d'un salon

Plusieurs possibilités avec chacunes leurs inconvénients.

  • Voicer tous les utilisateurs légitimes et passer le salon en +m : il faut voicer tous les nouveaux arrivants.
  • Restreindre le salon aux utilisateurs enregistrés avec +R : les utilisateurs doivent avoir enregistré leur pseudo auprès des services.
  • Restreindre le salon aux utilisateurs avec une connexion sécurisée (tls) +z : les utilisateurs doivent se connecter via TLS.
  • Mettre en place une liste de badwords (la façon de faire varie beaucoup) : il faut se tapper la liste à la main et que le serveur le gère.

Côté clients

Pas grand-chose à faire.

Mais il y a quand même moyen de rendre le truc invisible si un spamfilter a été mis côté serveur. Le but va être de planquer tout ce merdier de join/quit

Une myriade infinie de Join/Quit sur le salon de La Brique Internet

C'est moche hein ?

Weechat possède un super truc appelés les smartfilters qui permettent de n'afficher les Join/Quit uniquement si la personne en question a parlé il y a quelques minutes (ce qui n'est pas le cas des bots). Les salons de discussions redeviennent agréables à utiliser.

/set irc.look.smart_filter on
/filter add irc_smart * irc_smart_filter *

Et hop. Vous pouvez l'activer/désactiver avec Alt =

Pour Irssi il existe un script perl apportant cette même fonctionnalité mais en 2018 plus personne n'utilise Irssi, non ?

Pour les autres clients IRC ? Voici une doc exhaustive qui vous sera utile.

17ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logicielles opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


L'équipe du Librem 5 a été pas mal occupée par le GUADEC avec de nombreuses avancées dans le dev. Voilà un petit récap de ce qu'il s'est passé ces dernières semaines.

GUADEC

Récemment, la majorité des membres de l'équipe étaient au GUADEC. Certains ont même donné des conférences. Même si certaines ne sont pas encore montées, en voilà certaines à regarder :

D'autres confs ont eu lieu concernant la sécurité et l'implémentation de l'interface de téléphonie avec GTK+. Nous vous fournirons les liens lorsque leurs montages seront terminées.

Design

Le Librem5 sera beau mais cela ne se fait pas sans effort. Dernièrement, notre équipe design s'est acharné sur la création d'un nouveau pack d'icônes pour GNOME 3.30 qui sera utilisé par le téléphone. Ils ont aussi créé de nouvelles maquettes pour les réglages propres à la téléphonie avec plus de réglages avancées en peaufinant également le shell.

Travail logiciel

Images

Les images prenaient trop de temps à être créées, mais nous sommes parvenus à accélérer la procédure en faisant quelques ajustements. Cela simplifie le dev et les tests. Les images ne sont pas encore complètement basées sur PureOS (toujours sur Debian buster) mais ça arrivera bientôt. Si vous avez utilisé la machine virtuelle x86_64, vous serez heureux d'apprendre que les nouvelles images permettent de redimensionner la partition racine pour s'accommoder de plus d'espace (31Go). Il sera donc plus simple de dev puisqu'auparavant elles étaient limitées à 3.6Go. Il y a encore certains aspects à peaufiner mais c'est déjà fonctionnel.

Phosh

Phosh a connu de nombreuses améliorations sous le capot sous forme de corrections de bugs tels que de nombreux crashs potentiels et des initialisations manquantes. Le bouton de luminosité est également réparé pour se comporter normalement lorsqu'il bouge.

Le Wayland global handling a été [bougé dans un GObject séparé][https://source.puri.sm/Librem5/phosh/merge_requests/84). Le gestionnaire de verrouillage a été ajouté pour désencombrer (il récupère la tempo de timeout depuis GSettings maintenant) et tous les Layersurfaces ont été converties en PhoshLayerSurfaces.

Ce sont tous ces petits nettoyages de code qui permettront d'obtenir des contributions de la communauté car plus le code est bien organisé, plus est simple à comprendre et donc y contribuer.

L'intégrité de phosh est capitale puisque ce sera l'interface du téléphone donc un smoketest gitlab a été mise en place pour passer phosh dans Valgrind. Il y a également un début du support de l'internationalisation du coup des traductions espagnole et allemande ont été ajouté.

Quelques bugs ont également été éradiqués de phosh. Comme mentionné lors du dernier article d'avancements, des avancées ont été faites pour le support de redshift. Le code est inclus dans la branche principale ainsi qu'un correctif de bug concernant des races conditions lors de l'énumération des modes vidéos. Phosh/wlroots peuvent être démarrés par gnome-session et un bouton accueil (logiciel) a été créé en bas de l'écran.

Wlroots

Du côté de wlroots de nombreux changements ont eu lieu. Quelques patchs pour le support de modes vidéos personnalisés a été inclus upstream. Puisque le Librem5 ne supportera pas X, nous devions virer les dépendances à xwayland. Désormais wlroots est compilé avec ET sans le support de xwayland. Un freeze de wlroots s'avère être causé par la déconnexion de la session ssh ayant lancé wlroots ce qui est débattu upstream pour savoir comment gérer ce cas.

Clavier

Le clavier (virtboard) bénéficiera de l'important travail ayant lieu sur le protocole text-input. Le patch text-input-v3 a été mis à jour et envoyé upstream à Wayland pour revue. Une implémentation du protocole text-input pour GTK3 a été envoyé upstream et est en cours. Pour le support wlroots, une implémentation a été prototypé et sera bientôt envoyé pour revue.

Calls

Afin d'intégrer Calls dans gnome-settings-daemon et gnome-control-center, il nous est apparu évident lors des discussions au GUADEC que la meilleure façon de faire est d'utiliser ModemManager au lieu d'oFono. Bien que jusqu'à présent tous les essais a été fait pour l'implémentation d'oFono, c'est un changement inévitable. L'implémentation initiale du backend ModemManager pour Calls est complète et les tests ont commencé.

L'interface de Calls s'est grandement amélioré pour ressembler aux maquettes de l'équipe design. En dessous vous pouvez voir l'implémentation (gauche) et sa maquette (droite).

La maquette et l'application se ressemble comme deux gouttes d'eau

Libhandy

Quelques bugs ont aussi été corrigés dans libhandy ainsi que du travail pour préparer l'arrivée prochaine de GTK+4. Un des problèmes réglé est une fuite de mémoire. Également, un bug trouvé et corrigé dans HdyColumn où une mauvaise largeur était utilisée pour les calculs de la hauteur de colonne.

Si vous suivez la mailing-list librem-5-dev, vous avez probablement vu passer la sortie de libhandy v0.0.2.

Epiphany/GNOME Web

Personne n'aime les pubs donc Better le bloqueur de pub a été suggéré pour inclusion upstream pour être utilisé dans epiphany.

Messaging

Les technologies de messagerie vont être séparées en deux applis distinctes. Une dédiée aux conversations à deux personnes ou pour les petits groupes (Chatty) et l'autre pour les discussions publiques comme sur les salons IRC (Fractal).

L'application Chatty est développé par Purism, s'appuie sur libpurble et permettra des communications E2EE par messages XMPP via OMEMO dès la sortie (lorsque les Librem seront livrés en janvier), ainsi que les SMS non chiffrés. Puisque nous nous sommes rendu compte qu'il nous fallait utiliser ModemManager en lieu et place d'Ofono, un handler D-BUS a été créé pour le backend ModemManager de l'application. Avec cette installation de ModemManager, envoyer et recevoir des SMS fonctionne.

Le client Fractal ne permettra pas forcément les communications E2EE dès la sortie, mais nous travaillerons pour que cela arrive.

Sécurité

La sécurité est l'un de nos aspects favoris (vous l'avez peut-être remarqué) donc des recherches ont été commencés à propos de TrustZone, TPM et autres. Nous avons eu quelques discussions internes à propos d'un boot anti-sabotage, Heads et la sortie vidéo par les modes alternatifs de l'USB. Nous envisageons sérieusement l'implémentation de mesures de sécurité dans le Librem 5.

Kernel

Avoir un kernel fonctionnel pour l'i.MX8M n'est pas une mince affaire. Après de gros efforts, nous sommes parvenus à avoir l'ethernet fonctionnel. Afin de faire marcher le DRM et l'affichage, nous avons d'abord porté le support du PCIe. Le second port SD fonctionne mais pas SDIO (la carte SDIO étant alimenté par USB), il va falloir le support de l'USB en premier. Plus d'appareils i2c ont été activés. La carte nécessitera également un chargeur de batterie et donc nous testons actuellement le BQ25896 de TI, mais un driver d'alimentation électrique a été ajouté et soumis upstream.

Il reste un important chemin à parcourir avant d'avoir un kernel pleinement fonctionnel avec tous les drivers en ordre, particulièrement pour tout ce qui concerne l'affichage. S'il y a des experts en drivers graphiques prêt à filer un coup de main, merci de nous contacter sur le salon de discussion Matrix.

Travail matériel

Nous travaillons toujours d'arrache-pied avec le potentiel fabricant des cartes de dev pour évaluer les schémas développés par nos ingénieurs matériel et faire les changements suggerés. Cependant, certaines choses sont maintenant gravés dans le marbre et de nombreux composants ont déjà été commandés. Voici donc ce que vous trouverez à coup-sûr sur les cartes de devs :

Communauté

Il y a une nouvelle FAQ sur le site de documentation basés sur les questions reçues sur le salon de discussion matrix community/librem-5. Nous n'y mettrons pas TOUTES les questions car cela nécessiterait trop de temps mais certainement les plus fréquentes.

Un grand merci à toutes les équipes externes qui ont évalué et inclus les patchs dans les différents projets upstreams. Le temps et les contributions de tout le monde sont fortement appréciées.

C'est tout pour le moment les amis. Restez branchés pour plus de mises à jour à venir !


Original par Heather Ellsworth

Bon on sent que cet article a été rédigé en parallèle du précédent car il y a un peu de redites. D'un point de vue logiciel ça progresse vraiment bien dans tous les projets connexes. C'est agréable de voir plusieurs communautés collaborer (plus ou moins indirectement) vers un but commun : les joies du libre.

D'un point de vue matos ils ont l'air d'avoir la majeure partie des composants arrêté, ce qui est bon signe.

Ils semblent toujours confiants pour janvier 2019.

Ils commencent à aborder les aspects de sécurité et ça semble plutôt encourageant. On peut s'attendre à avoir un truc qui les différencie des habituels Android/IOS. Ça pourrait être un argument de vente pour certaines personnes pas spécialement touchées par le Libre mais plus pour la sécurité.

Polissage du thême Hugo : NeoDark

Salut les lecteurs ça va ?

Et bhé ! Vous êtes pas très causant.

Bon je vais pas me fâcher même si c'est un peu vexant de pas avoir de réponse.

J'ai encore un peu retravaillé NeoDark (ouai le nom est bidon) mon thème Hugo. Le but est d'enfin le partager proprement avec vous pour que vous puissiez le réutiliser.

Avant de vous le partager, bha il fallait virer les saloperies que j'avais faites.

Par exemple au lieu d'avoir un template spécifique pour les posts, un autre pour les fast-posts et un troisième pour les shares, j'ai tout viré et fait un seul template générique où juste une class css est modifiée. Du coup maintenant tout a la même gueule, juste des ptites modifs de couleurs mais c'est plus rationnel. Donc non seulement le design final est plus unifié mais en plus c'est vachement plus rapide pour Hugo. Je suis passé de 800ms à 330ms pour créer tout le site.

Le thême du site a d'ailleurs été déjà retaillé par Franck Paul qui l'a adapté pour DotClear.

Bon et zavez-vu ? Il y a des ptites icônes SVG à gauche maintenant. Ça enlève un peu de texte et ajoute un peu de couleur…

Et donc voilà un tar du thème Hugo.

J'espère que ça vous plaît !

Dans la catégorie ça sert à rien mais ça m'amuse : j'ai mis un lien vers la version dans une autre langue directement à côté de chacun des “Lire en entier …”. J'ai à peu près 0 lecteur pour les articles en franglais mais bon… Avant c'était juste accessible depuis la sidebar mais du coup pour l'accessibilité c'était vraiment pourri. D'ailleurs si vous vous y connaissez en accessibilité et que vous trouvez des trucs vraiment nul à chier sur mon site n'hésitez pas à m'en parler, je me ferai une joie de trouver une piste d'amélioration.

Bon dans la catégorie spoilers : l'arrivée d'une nouvelle catégorie bientôt.

Voilà tout.

Le Geekcode

Allez, je déballe encore une vieillerie !

Il fut un temps, où pour briller en société (keuf keuf), il fallait sortir sa carte de visite. Comme chacun sait, le geek a bien du mal à sortir de sa tanière physique tout entravé dans sa barbe qu'il est, du coup il lui fallait une carte de visite pour le monde numérique.

C'est d'ailleurs presque un CV plus qu'une carte de visite : le Geekcode.

Nani ?!

Il y a vingt ans, être un geek n'était pas à la mode et ne signifiait pas être capable de débourser 1000€ dans le dernier smartphone à la mode et sortir trois termes techniques. Le mot "geek" lui-même, n'était pas connu du grand public et c'était d'ailleurs proche de l'insulte. Quoi qu'il en soit, déjà à l'époque une distinction existait entre les différents types de geeks.

Parcequ'au-delà de l'informatique, en vrai, un geek est juste une personne passionnée++ mais du coup de nombreux domaines existent et donc toute une pléthore de geeks différents !

illustration de 56 sortes de geeks différents par Scott Johnson

Vous retrouvez-vous plus de deux fois là-dedans ?

Partant de ce constat, un certain Robert A. Hayden a entrepris la tâche de classer ces drôles de bêtes et de fournir un moyen d'afficher quel type de geek on est. Pour cela un grand questionnaire à choix multiples qui attribuent des lettres avec des symboles associés. On fout tout ça à la suite et pouf vous obtenez votre Geekcode !

Ok c'est où ?

Bon malheureusement la dernière version officielle 3.12 est pas mal obsolète car datée de 1996 mais l'idée est bonne. Un Français a entrepris de proposer une bonne update en 3.20 en 2010. Mais bon la référence officielle est tout de même la 3.12.

Voilà le mien refait pour l'occase.

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GIT d? s--: a C+++ UL++++ P L+++ E--- W+++
N+() ?o ?K w-- ?O !M ?V !PS !PE Y++ PGP(+)
t@ ?5 ?X ?R !tv b- DI D++ G e++ h r+++ z?
------END GEEK CODE BLOCK------

Quelqu'un de motivé pour en faire une version 2018 ?

16ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Nous avons passé les dernières semaines concentrés sur le design des applications de communication par défaut du Librem 5. Nous sommes donc parvenu à établir des spécifications pour deux applications. L'une d'elle se nomme Calls et sert à - vous l'avez deviné - recevoir et émettre des appels téléphoniques. La seconde est Messages quant à elle permet comme son nom l'indique d'envoyer et recevoir des messages.

Tobias, notre lead designer, a particulièrement bien bossé en communiquant et collaborant avec l'équipe design de GNOME ce qui nous a permit de faire de grands progrès conjointement avec le projet upstream GNOME. Quand Tobias nous a rejoint, nous avons eu une conversation avec Allan Day et Jakub Steiner (de l'équipe design de GNOME) où nous leur avons présenté le projet, nos buts et discutés à propos de la structuration de nos contributions à GNOME. Par exemple, nous avons un dépot de design applicatif sur le serveur Gitlab upstream de GNOME où nos designs et prototypes sont rendus disponibles à tous. Au final, notre projet et sa vision semble bien reçu par la communauté GNOME.

L'application Calls

L'application étant nouvelle, nous sommes donc partit de zéro. Nous l'avons fait alors que Bob progressait dans l'implémentation des fonctions basiques d'appels.

Les différents écrans visibles lors d'un appel

Calls est supposé permettre à l'utiliateur d'utiliser les fonctions de base d'un téléphone classique mais n'est pas limité à cela. Elle est architecturé de façon telle qu'elle promet un haut niveau de sécurité et d'intimité (privacy) via du chiffrement de bout-en-bout de façon transparente. Les appels privés, entre deux appareils supportant cette fonction seront établis juste en sélectionnant un contact et en appuyant sur le bouton d'appel.

Le numéroteur ainsi que les contacts de l'application Calls

Le design complet de l'application peut être admiré dans notre propre dépot.

L'application Messages

Photo des devs lors du hackfest fractal

Au début de l'été, certains de nos employés (Dorota, Adrien, Tobias et moi-même) avons participé au Fractal hackfest à Strasbourg. Le but était d'analyser et discuter des possibilité d'utiliser Fractal comme appli par défaut pour la messagerie dans PureOS et le Librem5. C'est motivé par notre souhait d'être en phase avec les choix upstreams mais aussi par le fait que Tobias, en plus d'être designer des applis du Librem 5 est également le designer de Fractal. Nous avons également profité de l'opportunité pour rencontrer Matthew de Matrix qui nous apporta des clarifications techniques bienvenues à propos de Matrix.

Il était clair lors de ce meeting que les plans pour Fractal soient en accord avec les principes du Design éthique que le Librem 5 et PureOS suivent. Une application suivant ces recommandations doit être simple et dédiée à une seule tâche.

On pourrait penser que l'état actuel de Fractal sied déjà au but premier de Messages (envoyer et recevoir des messages), mais elle est trop générique en terme de but. Discuter en privé avec un ami est différent d'une discussion dans un salon public IRC bondé. Bien que la technologie employée dans le fond soit la même, l'interface utilisateur doit répondre à des objectifs différents. Ce fût discuté lors du hackfest Fractal (Tobias a eu recours à l'analogie du "barbecue" et du "banquet" pour exposer le soucis), où les devs de Fractal décidèrent de scinder l'application en deux : une application pour les discussions en aparté ou petit groupe (le barbecue) tandis que la seconde sera dédiée aux discussions publiques (le banquet). Il faudra cependant un peu de temps pour découper l'application existante.

L'application simplifiée Messages que nous avons développée est basée sur le cas du "barbecue"; ce qui s'avère être l'utilisation majoritaire. Le but de Messages est d'être capable de gérer des SMS mais aussi des messages chiffrés de bout-en-bout de façon transparente entre deux appareils compatibles.

Exemple de conversation dans Messages

Le design global de Messages peut être reluqué dans son propre dépot.


Original par François Téchené

Un retour sur leur collaboration avec l'équipe Matrix. Les screenshots sont plutôt encourageant surtout pour ceux appréciant le look de GNOME. Ça commence franchement à avoir une gueule d'OS de smartphone.

Un truc qui serait pas mal c'est une compatibilité avec l'application Silence pour Android qui permet d'envoyer des SMS de façon chiffré même pour des personnes pas spécialement douées en informatique.

TDC

Et alors qu'une vague de spam sévit actuellement sur les IRC (oui oui en 2018 ça se fait encore…), je me sens obligé de vous présenter l'un des meilleurs sites old-school encore sur le ouaib.

tROu dU cuLz hiDeOuT

L'une des meilleures ressources du ouaib encore dispo pour devenir un 1337. Ne vous laissez pas berner par l'esthétique pleine de charme et d'un esthétisme certain, le contenu prévaut sur la forme ici.

Vous y apprendrez plein de trucs indispensables :

  • Comment devenir un rebelz en utilisant Linux (et en méprisant wiNfUcK'98) ?
  • Comment bafouer la nétiquette sur Usenet ?
  • La joie de snober le bas peuple sur les IRC.
  • L'intérêt de monter sa homepage de daube.
  • Plein d'autres trucs uber classe.

Bref tout un art de vivre à adopter pour débuter sur le web en cette fin des années 90.

Outre l'aspect limite vulgaire de ces pages humoristiques, j'aime beaucoup l'aspect historique. Ça rappelle pas mal de souvenirs. Haaa, le bon vieux temps du net avant que ce ne soit monopolisé par tout l'aspect business d'aujourd'hui.

Cette page circulait assez régulièrement à l'époque. Bon par contre pour les gens sur téléphones mobiles, le site n'est pas très très responsive mais bon les smartphones n'existaient pas à l'époque…

Voilà le TDC Hideout, vous en reviendrez grandi (ou pas) !

J'aime toujours retrouver des bouts du web d'antan où chacun osait se lancer avec un design dégueu trois bouts de balises html, une bonne louche de gif mais qui au final produisait un contenu original. À l'ère des réseaux sociaux à la brièveté absolue et où l'on favorise principalement le retweet, le reposts, ça fait du bien de revoir l'époque où créer était plus important.

Configuration Weechat 2018

Weechat 2.2 vient de sortir et c'est l'occasion de lui faire un ptit article. Ça fait maintenant très longtemps que je l'utilise comme client IRC. Je l'ai pas mal trifouillé de droite et de gauche depuis le temps du coup je voulais poser un peu toutes ces personnalisations quelque part pour les retrouver au cas où et pour vous les partager.

Les scripts

Du haut de ses 15 ans, Weechat a sû se créer un petit écosystème complet de plugins/scripts (et bientôt des thêmes !).

J'ai toujours préferré éviter de trop en cumuler. Du coup j'en utilise assez peu :

  • colorize_nicks.py : Permet de colorer les pseudos lorsqu'ils sont cités dans une phrase. Très pratique pour repérer quand ça parle de gens présent sur le salon.
  • autoconnect.py : Permet de se reconnecter automatiquement aux précédents serveurs et salon ouverts lors d'un redémarrage.
  • chanmon.pl : permet d'avoir un buffer aggrégeant tous les salons. Pratique pour voir d'un coup d'œil ce qu'il se raconte partout.
  • colorize_lines.pl : Permet de colorer les lignes de texte de la même couleur que le pseudo. Excellent pour améliorer la lisibilité.

Et voilà, j'ai réussi à ne pas être trop gourmand.

Autoconnect me sert peu car weechat tourne 24/7 sur un serveur mais au cas où, on sait jamais.

Les deux plugins de colorations sont purement esthétiques mais pourtant je pourrai pas m'en passer. Ça simplifie grandement la lecture des conversations, surtout si on augmente le nombre de couleurs utilisées par weechat.

Chanmon est lui dispensable mais étant sur de très nombreux salons, j'ai très souvent la hotbar assez bien remplie avec de l'activité dans pleins de chans à la fois. Ça me permet de ne pas aller dans un buffer où il y a de l'activité pour rien.

Layout

capture d'écran de l'interface de Weechat

Par défaut c'est… meh

On va élaguer tout ça je vous préviens !

Bon alors la barre à gauche qui liste les buffers on peut virer : ça sert à rien. /bar del buflist

La barre de droit avec la liste de pseudo, même combat : ça dégage. /bar del nicklist Les rares fois où vous aurez besoin de voir la nicklist vous ferez un ptit /names et hop.

Vous voyez la barre avec le titre en haut ? Vous voyez où je veux en venir : /bar del title

Bon bha déjà c'est pas trop mal.

Bon cette barre bleue en bas c'est pas mal mais qu'est-ce que ça bouffe comme place ! It would be a shame if… /bar del status

Ha merde il y avait des trucs pas mal dedans quand même ! Bon faisons une barre mieux foutue du coup ! /bar add ubar root bottom 1 0 buffer_number+:+buffer_name,hotlist,input_text,time,[completion]

Et voilà notre übar, plus qu'à virer celle par défaut : /bar del input

Voilà, on a gratté à peu près tout l'espace disponible, on a fusionné la status_bar avec l'input_bar et viré toutes les autres. C'est bien minimaliste tout en étant parfaitement fonctionnel.

Bon maintenant, il ne reste plus qu'à faire en sorte de voir le chanmon en haut. On va donc découper la fenêtre horizontalement avec un ptit /window splith 10 et on a donc 10% de l'espace vertical qui est dispo pour un autre buffer. Pour passer à la fenêtre du haut on fait un ptit /window up on peut y changer de buffer (typiquement on se fout sur celui de chanmon) et on retourne à celui du bas et voilà.

Bon on a fait le plus gros du boulot je crois. Il va rester à fignoler quelques ptits réglages pour rendre le truc encore un peu plus séyant.

Ptites optimisations

On va virer tous les scripts inutiles (ou juste ne pas en installer). /script Et là on coupe avec /script remove xxx.yy .

Et surtout on va aussi virer tous les plugins inutiles. /plugin et maintenant /plugin unload xxx et surtout set weechat.plugin.autoload "*,!buflist,!exec,!fset" pour que ça persiste à un redémarrage de la bête.

En virant tout le superflux j'arrive à faire tourner mon instance weechat dans un container de 64Mo de ram avec pourtant près de 200 buffers ouverts simultannément tout en ayant le relay. Et le tout avec un uptime de plusieurs mois. Bref ça tourne comme sur des disquettes.

Mais mais ! À quoi ça ressemble maintenant qu'on a tout trifouillé ?!

Capture de Weechat une fois toutes les modifs effectuées

Beau comme un rognon !

Vrac moins intéressant

  • irc.network.send_unknown_commands on # Pour envoyer les commandes d'admin du serveur
  • plugins.var.perl.chanmon.alignment channel # Histoire que ce soit joli à voir et pas le dawa
  • plugins.var.perl.colorize_lines.highlight off # Pour ne pas qu'un HL colore toute la ligne (c'est moche et trop agressif)
  • weechat.color.chat_time orange # Un peu de orange pour l'heure
  • weechat.completion.nick_completer "" # Ouai j'aime pas quand ça rajoute ":" quand on tab un pseudo
  • weechat.look.prefix_align_max 10 # Pas plus de 10 lettres pour les pseudos… largement suffisant
  • weechat.look.prefix_same_nick "" # J'aime bien le fait de pas avoir le même pseudo affiché en boucle lors de ligne successive
  • weechat.look.prefix_suffix "│" # Pour avoir des jolies barres complètes
  • weechat.color.chat_nick_colors "028,029,030,031,032,033,034,035,036,037,038,039,040,041,042,043,044,045,046,047,048,049,050,051,058,059,060,061,062,063,064,065,066,067,068,069,070,071,072,073,074,075,076,077,078,079,080,081,082,083,084,085,086,087,088,089,090,091,092,093,094,095,096,097,098,099,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229" C'est long mais ça rajoute tout pleins de nouvelles couleurs utilisables.

Ralentir le flux

Tiens un petit fast-post rapide sur le feu.

En ce moment je cherche à ralentir un peu le rythme de mon TTRSS. Il se connectait toutes les heures sur chacun des flux RSS pour voir s'il n'y avait pas une nouveauté.

Au final ça représente un sacré bastringue réseau pour rien les trois quarts du temps. J'ai donc diminué la fréquence d'actualisation de quasiment tous les flux à une fois toutes les 24h.

Les sites publiant plusieurs fois par jour je l'ai monté à 2h et certains 12h. J'ai donc pas mal diminué la cadence en espérant alléger légèrement mon empreinte réseau/ressource à la fois de ma machine mais aussi de chacun des sites que je poll constamment. C'est probablement anecdotique mais comme d'hab, les molards font les grandes rivières.

Il est d'ailleurs dommage qu'un flux RSS ne puisse pas spécifier une cadence de rafraichissement (qu'il soit biensûr possible d'outre-passer) pour que lors de la souscription se soit suggéré à l'aggrégateur.

En plus d'alléger les machines et le réseau, mes flux arrivent désormais un peu plus par vague, plutôt qu'au compte-goutte toute la journée. Ça permet d'un peu moins se disperser. Et d'y consacrer un peu moins de temps au final.

Bref ça peut vous tenter d'essayer d'expérimenter ça.

L'Histoire d'Iloth

J'en ai jamais vraiment parlé sur mon blog et pourtant Iloth représente une page de ma vie.

Iloth est une association membre de la FFDN. J'en ai été membre quelques années pas au tout début mais pas trop loin, jusqu'à très récemment où j'ai eu besoin de passer à autre chose.

Du coup je vais vous raconter un peu la vie d'Iloth, certains de ses moments forts et tout et tout. Ça sera bien entendu mon point de vue sur l'asso et non quelque chose de purement objectif. Par contre pas de bol j'ai un mal de chien avec les dates donc ça sera pas super précis.

2010 : Création

En l'an de grâce 2010 née la FFDN, Fédération FDN qui cherche à essaimer. Pourquoi ? Parce que l'asso FDN devenait trop grosse et du coup gagnait en poids mais malheureusement perdait le côté local/associatif où tu connais tout le monde toussa.

Du coup de nombreuses petites assos locales se sont créées et regroupées dans une fédération afin de garder un certain poids tout en recréant un côté local qui est bénéfique pour l'humain.

Iloth a été dans la première vague de la FFDN à l'initiative de 3 geeks Montpellierains et voilà que le 31 Août 2010 l'asso existe officiellement avec la publication au Journal Officiel et intègre donc la FFDN. Internet Libre et Ouvert à Tous dans l'Hérault

À cette époque les 3 valeureux gugusses se sont tapés toute la paperasse administrative, ont ouvert un compte en banque, se sont déclarés officiellement comme étant un vrai FAI auprès de l'ARCEP. Ils ont fait la partie vraiment chiante.

Peu de temps après (je sais pas quand exactement), l'asso sympathise avec une boîte locale qui héberge et fournit des services et notamment des connexions Internet neutres à des entreprises du coin. Des liens sont tissés et c'est ainsi qu'une relation solide s'est créée et permettra à l'asso de vivre et surtout d'avoir une présence sur Internet. Une convention est signée et permet à l'asso d'héberger son propre serveur dans un datacenter montpellierain avec un peu de bande passante. Bref l'asso peut commencer à officier en tant que FAI.

Et là ça va commencer à patauger, comme souvent dans le milieu associatif, chacun investit le temps qu'il peut quand il peut… L'asso commence donc déjà à battre de l'aile. Elle n'a pas de vitrine, ne se réunit pas, n'existe pas vraiment. Il n'est pas vraiment possible d'adhérer car aucun moyen de les contacter.

2012 : La seconde vague

On est désormais aux alentours de fin 2011 début 2012 si je me rappelle bien. C'est à ce moment là que j'ai voulu rejoindre l'asso. Sauf que pas de bol, le site était sacrément vide («Coming Soon»), le salon IRC était en calme plat pendant des semaines complètes malgré plusieurs tentatives d'attirer l'attention.

J'ai réussi à faire venir une deuxième personne sur le salon IRC qui était également intéressée et même une troisième que je ne connaissais que d'IRC. Bref nous étions désormais au moins trois à vouloir intégrer les membres de l'asso et vla-ti-pas qu'un quatrième larron sorti de nulle part est également intéressé et se met à traîner également sur le salon #iloth .

Et un jour, Ô miracle ! Un des pères fondateurs voit ça et commence à parler sur IRC.

On s'organise une rencontre dans un café du centre de Montpellier pour discuter de vives voix. Bon comme on s'en doutait, la démotivation était totale. En gros il s'est dit «Bon bha si vous voulez je vous donne l'asso, j'ai plus le temps ni l'envie, on a déjà tout un tas de trucs en place, yapuka. Si vous êtes motivés, organisez une Assemblée Générale pour trouver un président, un tréso et un secrétaire et roulez jeunesse».

Bon une fois la rencontre finie… on a quand même été un poil étonné. Mais au final on était partant tous les quatre et une AG a été faites courant Mars 2012 où l'on s'est entre-élus. Bon pas de bol j'étais pas dispo le jour de l'AG du coup je n'ai pas pu y participer.

Voilà la seconde vague d'Iloth était lancée. Nous étions donc 4 nouveaux membres et il ne restait plus qu'un membre actif de l'équipe d'origine.

2013 : La belle époque

C'était donc une période faste. Nous étions 4 supers motivés pour monter un FAI. La partie ultra-chiante avait été bien gêrée par l'ancienne équipe et nous allions remotiver le dernier membre restant de la première vague.

  • Nous voulions un logo
  • Nous voulions monter un service de VPN fournissant du vrai Internet neutre.
  • Nous voulions proposer de l'ADSL en marque blanche depuis FDN.
  • Nous voulions monter des services.
  • Nous voulions un joli site ouaib pour communiquer.
  • Nous voulions organiser des conférences.
  • Nous voulions faire du réseau comme des grands.

Bref on était chaud.

On avait une machine fonctionnelle, pas mal de temps libres. On a également tissé des liens avec d'autres assos locales tel que Montpellibre (de loin) et un peu plus intimes avec Le BIB notre cher Hackerspace Montpellierain. Nous nous y réunionnons une fois par mois dans leur garage pour faire une réu-apéro qui généralement se termine dans un restau.

Un des prototype de logo non retenu

L'une des propositions non retenues de logo

Le côté social de l'asso commence à décoller. Avec le temps le noyau dur de l'asso se connait désormais pas mal et nous sommes devenus une bande de potes.

On organise notre première foire associative L'antigone des assos 2012 où l'on tente maladroitement d'attirer le chaland sans avoir rien à présenter. «Quoi ? Un fournisseur d'accès Internet comme Free ? Et du coup c'est gratuit vu que c'est associatif ? Ha mais vous faites pas d'ADSL ?»

Recruter de nouveaux membres va être compliqué, nous ne sommes clairement pas de bons communicants mais c'est pas grave on va progresser. Ça nous permet en plus d'établir une roadmap : monter des services pour montrer du concret, travailler la comm pour rendre le bousin un peu plus compréhensible. On va avoir une année bien remplie.

On a donc fait un site web statique sous Bootstrap histoire d'avoir une vitrine un peu jolie et on y a mis un tout petit peu de contenu.

On commence à discuter d'un projet de créer un IX sur Montpellier afin de relier tous les opérateurs présents localement afin d'améliorer le maillage Internet. Actuellement si deux opérateurs se trouvent physiquement à Montpellier, il y a de très grande chance qu'ils n'y soient pas interconnectés et qu'il faille remonter jusqu'à Paris. Le but est donc de créer un point d'échange local, neutre et gérer par une asso à but non lucratif : le Sudix. Pour l'instant c'est à l'état de discussion de restau.

On s'est empressé de prendre un numéro d'AS ainsi qu'un premier bloc /24 d'adresses IP bien à nous.

On possède des IP, à nous. Je répète des IP qui sont rien qu'à nous ! Wow ça en jette. Nous sommes enfin un vrai opérateur de réseau Internet. Quelque bidouilles BGP plus tard et paf nos IP sont accessibles du grand Ternet !

Mi avril 2013, on ouvre officiellement le service de VPN avec nos ptites IP à nous le tout sur notre serveur hébergé physiquement à Montpellier. La conf OpenVPN est assez simple et pleinement fonctionnelle. Et on peut enfin commencer à utiliser notre bande passante de 10Mbps burstable à 100.

Bon on se monte un serveur mail et on y accroche une mailing-list. Nous avons alors à cette époque du DNS, du mail, du web, du VPN de fonctionnel. On peut maintenant communiquer à peu près officiellement. Et notre infra est à peu près complète.

Et voilà qu'arrive notre seconde foire associative, nous sommes donc Septembre 2013. On va se reconfronter au grand public avec notre petit stand de geeks avec ce coup-ci un truc à annoncer : Iloth participera aux RMLL2014 en fournissant le réseau lors de l'évènement qui se déroulera en Juillet de l'année suivante. On a d'ailleurs réussi à faire venir quelques nouveaux membres dans l'asso à ce moment là. On atteint la dizaine de membres dont environ 7 ou 8 actifs. Je me retrouve non-officiellement propulsé trésorier de l'asso et je commence à faire mumuse avec Dolibarr (beurk) et la banque (beurk beurk).

Le début des emmerdes. Le poste de trésorier est clairement le plus chiant de l'asso. C'est le seul où il y a constamment de la paperasse. Générer des factures et tout. Communiquer avec la banque est d'un compliqué avec leurs horaires d'ouvertures qui ne conviennent pas vraiment avec la vie active et le fait qu'ils demandent constamment des papiers avec des confirmations toussa. Bref ce sont des emmerdeurs de première qui nous font suer encore maintenant.

Fin Octobre, on ouvre notre première ligne ADSL pour notre cobaye belge. C'est de la marque blanche de chez FDN. En gros Iloth ne fait pas grand chose à part facturer l'abonné et recevoir une facture de la part de FDN. Mais on a un service existant pour le grand public !

Le mois suivant on sera également aux JM2L pour nous chauffer pour les RMLL approchant. Nous y serons à trois membres dans une bonne ambiance décontractée le temps d'un samedi.

2014 : année ReuMeuLeuLeu

L'AG de Janvier instaure officiellement un rythme mensuel de réunion chaque premier lundi du mois.

Le site passe sur un Wordpress auto-hébergé en conservant son design fait main convertit pour l'occasion en thême Wordpress. Le but de l'opération est de permettre à plus de membres de le manipuler en lieu et place du site statique précédent.

Le rythme de croisière va s'intensifier pour l'organisation des RMLL. Le but est de fournir du réseau neutre à haut débit lors de l'évènement, à la fois sur le campus universitaire mais également lors du "village grand public" organisé sur l'esplanade Charles de Gaulle. Pour ceux qui ne connaissent pas Montpellier, cet esplanade est en plein centre ville, une grande allée bordée de platanes. Le défi va être de parvenir à y faire arriver du réseau. De nombreuses réunions vont avoir lieu auprès de la FRUL (l'association regroupant d'autres assos locales pour l'orga des RMLL).

On a également organisé une petite conf à propos de la neutralité du net organisé dans les locaux du Bib le 16 Mai. C'était un peu à l'arrache mais au final ça s'est bien passé, même si c'était ma première fois.

À côté de cela, dans le monde des cinémas alternatifs se montent un projet de distribution dématérialisé des films : DCP Bay. Iloth participera en fournissant deux connexions ADSL au cinéma Utopia qui est dorénavant membre de l'asso. Nous les avons aidé en câblant un peu leur bâtiment et en mettant en place logiciellement le client torrent et compagnie. Le cinéma peut maintenant recevoir certains de ces films sans passer par des disques durs externes envoyés par transporteur. Un projet bien sympas auquel je suis fier d'avoir participé et j'ai d'ailleurs un magnifique sticker rond en forme de tranche de citron !

Juillet arrive et nous voilà donc en train de grimper dans les arbres de l'esplanade avec une grande échelle et un touret de fibre optique au milieu des passants.

Les premiers petits arbres de l'esplanade

Les premiers petits arbres de l'esplanade

Les premiers petits arbres de l'esplanade

Les premiers petits arbres de l'esplanade

On tire près de 1250m de fibre dans les arbres en espérant qu'elle survivra une semaine. C'est en partie réussie (une seule fibre pétée paralysant qu'un tiers des stands, on comblera avec un peu de wifi). Malgré quelques soucis de MTU et compagnie le réseau fonctionnera sur le campus. J'en aurai beaucoup chié à cause du manque de sommeil au point de ne plus trop parvenir à réfléchir le jour J. L'évènement est un succès et permet à l'asso de beaucoup se voir et être active, l'ambiance est au beau fixe, les voyages pizza et les restaus pour adultes soudent un peu plus l'équipe.

Moment d'euphorie lors des RMLL2014

L'euphorie lors des RMLL2014

En Août un membre offre un Edge Router Pro à l'asso qui permettra de délester notre unique serveur de la partie réseau. Nous possédons donc un routeur, un switch et un serveur. Un FAI dans moins de 300W.

Pour finir l'été le rendez-vous annuel de l'Antigone des assos. Probablement une des meilleure année, avec à peu près toute l'équipe Iloth présente toute la journée pour faire découvrir l'asso à tout le monde.

Stand 2014 pour l'antigone des assos

Stand 2014 pour l'antigone des assos

On a réussi à gagner encore quelques membres.

Et les trois derniers mois seront plutôt calmes.

2015

On commencera l'année en Mars avec une projection du film Citizen Four au cinéma Utopia lors d'une soirée débat co-organisé par Montpellier Journal et Montpel'libre.

L'AG a lieu comme d'hab courant Mars dans les nouveaux locaux du Bib et je suis désormais Président ! Après avoir tenu tant bien que mal la tréso deux ans et demi à base de fichier texte pour savoir qui doit payer un abo vpn, qui doit payer un abo adsl, faire le lien entre un pseudo et un vrai nom/prénom, savoir que tel numéro de ligne = telle personne…, je suis désormais président. Plus à moi de gérer Dolibarr \o/

On remarque déjà qu'une fois les RMLL passées, le rythme de l'asso diminue drastiquement et que la motivation connait une baisse drastique. Cependant, l'asso lance des idées de projets qui ne seront jamais menés à bien… Il a également été décidé d'organiser deux permanences par mois afin de pouvoir organiser des ateliers/débats mais celles-ci n'auront lieux que trois fois faute de participants (internes et externes). C'est dommage on aura réussi à y recruter un membre très actifs par la suite.

Nous menons une campagne de contacts des députés pour les pousser à ne pas voter pour l'instauration des boîtes noires dans les réseaux opérateurs. Nous les avons contactés par courrier postal et n'aurons malheureusement qu'un seul retour (négatif) des neufs députés contactés. Bref j'en repartirai pas mal refroidi de cette expérience politique.

On tente de recruter de potentiels membres en zone blanche pour fournir de la connectivité wifi. Trois ans plus tard force est de constater que … bha non, ça ne se fera jamais.

L'activité globale de l'asso décline continuellement depuis le passage des RMLL. Le nombre de membres réellement actifs commence même à diminuer. Je me lance dans le projet des briques internet en espérant que ça ramène du sang neuf et que ça remotive les membres actuels.

Je parvient à écouler une première fournée de 10 briques que j'aurai déballé, monté, installé, configuré, vendu moi même. C'est globalement assez chiant. Pour au final tomber en panne quelques jours après ou alors n'être jamais mis en service. Assurer le SAV est une galère ultra chronophage.

Rien de mieux pour démotiver quelqu'un.

Bref les restaus mensuels s'enchaînent toujours, mais je suis encore seul à devoir les organiser. Si je ne le fais pas… ça se fait juste pas. Mais quand on y est ça se passe toujours bien, juste une bande de potes contents de se retrouver chaque mois pour discuter de tout et de rien autour d'un peu de bouffe. Socialement le but de l'asso est complètement rempli et depuis qu'on fait moins de technique (vue que c'est déjà en place) bha l'asso se casse carrément la gueule.

Tiens, en passant, en Décembre on connait notre première petite panne de quelques heures. Comme quoi on a beau être une ptite asso et tout, le service rendu est tout de même assez fiable.

2016

Cette année l'AG courant mars aura lieu dans les nouveaux locaux du Bib (oui encore des nouveaux :-) ). L'équipe continue de s'étioler avec de moins en moins de membres actifs et de participants.

Les restaus mensuels continuent de se dérouler toujours dans la bonne humeur mais on y croise de moins en moins souvent de nouvelles têtes et on y parle de moins en moins de l'asso et même au fur et à mesure, même les habitués ne sont plus 100% dispos.

Notre installation dans le datacenter de Cogent à Montpellier

Notre infra au datacenter Cogent, imaginez à peu près la même chose dans celui de Zayo

Je présente deux confs, une dans un fablab de Montpellier pour y présenter la neutralité du net et aborder vite fait la brique Internet et une seconde dans un Lycée à Mendes sur les mêmes sujets. Je suis à peu près le seul membre actif désormais. La motivation est désormais au plus bas.

Montpel'Libre (un GUL de Montpellier) promeut de plus en plus l'initiative de dé-googlisation de Framasoft. Un début de collaboration un peu plus poussé émerge alors avec Montpel'Libre mais également le Bib pour monter un CHATONS local. En s'appuyant sur les trois associations nous toucherions un large public pas forcément initié, avec des lieux de rencontre et une infrastructure réseau déjà existante. Qu'est-ce qui pourrait déconner ?

Il est décidé de repartir sur une seconde fournée de dix briques à distribuer. Je le fait un peu à reculons mais étrangement les autres membres sont intéressés pour continuer cela (sans avoir participé au premier batch). Bref on les prépare à plusieurs et je parviens à ne pas garder tout le stock et n'en avoir que deux. Ils se débrouilleront avec les autres briques. C'est triste de voir que le but est désormais de se débarrasser des tâches à faire.

Je rédige également quelques articles sur le site d'Iloth qui auront un succès pas trop dégueu. C'est d'ailleurs en partie ce qui m'a remotivé à reprendre en main mon site perso. Même deux ans plus tard, certains articles amènent encore quelques visiteurs sur le site de l'asso, c'est une bonne pub naturelle. Malheureusement personne d'autres ne semble intéressé pour en rédiger.

Et voilà pour l'année…

2017 ou la vache maigre

L'AG sera l'occasion d'avoir un nouveau président pour me remplacer, je vais pouvoir m'éclipser petit à petit. Pas de bol quelques semaines plus tard il abdique sans donner aucune raison et on ne le revit plus jamais… Dans la foulée, le reste du bureau démissionne également et l'asso se retrouve sans plus personne.

Un début de drama commence à éclater lorsqu'un des membres de l'asso prend peur de la pérennité de son VPN et discute avec son avocat pour éventuellement mettre encore plus en péril l'asso voire certains membres. C'est tout pile ce qu'il fallait pour donner envie de reprendre le bousin…

Bref quelques temps après une Assemblée Générale Extraordinaire est organisée où un nouveau Bureau reprend les rennes de l'asso. L'asso est donc officiellement sauvée. Le drama est finalement étouffé avec plus de peur que de mal puisque de toute façon rien ne pouvait être reproché à quiconque et que l'asso (ou ses ressources) ne pouvait pas être reprise par une seule personne.

Cette année, pas de foire associative vu que personne n'a rien prévu, on cède gracieusement notre stand (pourtant vraiment bien placé cette année) au Bib.

2018

Bon bha on est déjà à la moitié de l'année mine de rien donc j'en profite pour faire le bilan vu d'ici. Bha malgré toute la bonne volonté du nouveau Bureau, bha … il n'y a plus de membres actifs. L'asso vivote tant bien que mal.

D'un point de vue politique, le Bureau a tenté d'arranguer les foules concernant la loi européenne concernant le copyright toussa toussa. Bon bha, en dehors du Bureau personne n'a rien fait. Bref, no comment.

Et voilà.

BIM : le CHATONS montpellierain

Tiens et d'ailleurs faisons un point sur le projet de CHATONS en collaboration avec les trois assos. Bha j'ai monté un Sandstorm (plateforme de cloud pour avoir pleins d'applications sans administration toussa, je ferai un article dessus un de ces quatre) sur lequel on a commencé à organiser pas mal de trucs.

Logo de BIM

Bienvenue sur l'Internet Montpellierain : Bib Iloth Montpel'Libre

Niveau matos on a désormais un bon gros serveur bi-proc avec 64Go de ram toussa. On a tout pleins d'IP dédiées aux différents services. Une instance Etherpad lite, un Pastebin, un Studs (Framadate) et bha on est deux et demi à avoir fait tout ça. Et au final on a été que deux et demi à s'y investir. Du coup bha au bout de deux ans, plus envie d'y toucher. Je vais maintenant faire comme les autres, attendre de voir ce que font les autres.

Bref j'ai lâché l'affaire et du coup j'imagine que c'est la mort du projet.

Conclusion ?

Je suis triste que l'asso soit morte mais d'un certain point de vue j'y ait fait d'excellentes rencontres. J'y ai trouvé une bande d'amis, j'ai testé pleins de restaus du secteur, j'ai appris pas mal de truc de réseau, j'adore tout l'environnement de la FFDN, j'aime pas devoir gérer les gens surtout dans une structure associative.

Une association n'existe que par l'investissement de ses membres. On est jamais servi QUE par soit même.

Iloth a toujours eu un fonctionnement assez libre. Tu veux rentrer dans l'asso pour faire des trucs : ok pas de soucis, mais c'est toi qui va le faire ! Faut pas juste vouloir donner un coup de main, il faut vouloir faire le truc en question et ne pas être paralysé de peur de se planter. Fais ce que tu veux (si c'est dans les clous de l'asso), l'asso peut te filer une place sur un serveur, un peu de réseau, mais n'attend pas à ce qu'on le fasse à ta place, au mieux tu auras un coup de main.

Et surtout ne venir qu'avec une idée n'est pas vraiment utile. Apporter une idée, c'est inscrire quelque chose sur la todo-list de quelqu'un d'autre.

Si tu viens avec une idée c'est à toi de la réaliser !

Bref si vous êtes motivés pour faire avancer les choses, apprendre pleins de trucs, découvrir des nouveaux gens, participer à Iloth est génial. N'hésitez pas à le faire et à vous rendre sur le salon de discussion. L'asso a un grand besoin de nouveau souffle, a du matos, un peu de pognon, il ne manque que des cerveaux motivés.

Moi pour l'instant, je prends des vacances, je reviendrai ptet quand il y aura de la vie.

Termtosvg : capturer la cli dans un svg

Capture faites lors de la rédaction de cet article ! Peut prendre un peu de temps pour charger.

L'article en cours de rédaction ~3min

Voilà vous le voyez sous vos yeux ébahis : Termtosvg est un petit logiciel en python qui permet d'enregistrer ce qu'il se passe sur votre terminal et d'en faire un joli SVG.

SVG est un format graphique permettant de faire des images zoomables sans perte de qualité et "sélectionnables" car les données enregistrées ne sont pas des pixels mais des éléments graphiques définis de manière procédural. Il est donc possible de sélectionner le texte du SVG pour faire un copie/coller.

Bref c'est un format bien comme tout, le seul soucis c'est qu'il a une légère tendance à rapidement devenir assez massif surtout quand c'est animé. Par chance ça se compresse assez bien dans le format gzip ce qui devient donc un fichier .svgz qui est bien interprété par les navigateurs nativement.

Termtosvg est donc un excellent outil pour présenter voir faire des tutos de manips faites en console. Je l'utiliserai probablement pour de futurs articles.

Bon par contre un petit point négatif, c'est que par défaut le navigateur n'essaie pas de décompresser les svgz s'il ne reçoit pas le bon content-encoding. Vous me direz c'est tout justement à quoi sert le content-encoding. Ouai mais malheureusement, dans mon cas, nginx et hugo server n'envoient pas le bon content-encoding pour svgz du coup j'ai pas de preview avec hugo. Bon et j'ai dû faire une ptite modif à nginx pour qu'il envoie ce qu'il faut :

location ~ \.svgz$ { add_header Content-Encoding gzip; }

Bon c'est trois fois rien mais c'est dommage que ce soit pas par défaut…

Bon voilà. C'est quand même pratique le rendu est propre (quelques ptits glitch mais ça devrait s'arranger, le projet est super jeune).

Par contre il n'y a pas moyen de contrôler l'animation (play/pause/barre de progression) ce qui peut être un poil gênant pour des animations un peu longue comme dans l'exemple. Ptet qu'un jour les navigateurs ajouteront cette possibilité (rien à attendre à court terme).

Pour ceux intéressés sur le fonctionnement interne, dans sa série Github All Stars, Artur Skowroński a détaillé la bête dans cet article.

Bref vous le trouverez dans toutes les bonnes distros nunux ;-)

15ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Ces dernières semaines, l'équipe du Librem 5 a bossé d'arrache-pied pour améliorer la pile logicielle ainsi que pour finaliser les schémas du kit de dev. Voici les progrès les plus marquants réalisé.

Côté logiciel

Images

Les images produites pour la carte i.MX6 utilisent désormais phosh en shell par défaut et nous expérimentons sur PureOS comme OS de base (en lieu et place de Debian Buster). Il y a désormais une image de machine virtuelle en architecture x86_64 en cours de création. Vous pouvez suivre ces instructions pour en avoir une copie et la faire tourner. Cette machine virtuelle utilise la même résolution qu'utilisera le Librem5.

Alors que les images pour i.MX6 ont été faites pour le matériel actuellement en possession de l'équipe, elle continue d'être modifiées pour être utilisée sur la carte de dev i.MX8 et le téléphone. Soit dit en passant, lors de nos investigations concernant le CPU du i.MX8, des soucis concernant la liberté du code ont été repérés et devront être résolus. Pour en savoir plus à ce sujet, consultez l'article de blog Résoudre les premiers soucis de FSF RYF pour le Librem5 (FSF RYF signifie Free Software Foundation - Respect Your Freedom).

L'image construite pour l'i.MX8 peut désormais booter un kernel mainline très basique (au lieu du kernel du constructeur). La prochaine étape est de faire fonctionner plus de composants ( comme l'affichage) et de reverser à la communauté ces changements. Avec tout cela, l'image pour l'i.MX8 s'annonce plutôt bien.

Phosh / Wlroots

À un moment ou à un autre, les utilisateurs seront sur leur Librem5 la nuit, donc avoir redshift fonctionnel permettra d'amoindrir l'impact de l'écran sur nos yeux. Du boulot a été fait afin d'implémenter certaines API DBUS de Mutter dans Phosh afin, par exemple, de gérer la configuration de l'affichage ou bien de supporter redshift. Désormais, phosh peut détecter les sorties vidéos, les modes vidéo supportés et les communiquer comme le fait mutter/gnome-shell afin que nome-settings et gnome-settings-daemon soit content. C'est la base pour le futur support du gamma (redshift). Cela dépend d'un patch pour wlroots en cours de discussion.

D'autres améliorations ergonomique pour phosh ont été apportées. La temporisation  de l'écran de verrouillage a été augmentée pour accorder plus de temps pour se connecter. Également, les favoris et l'écran d'accueil ont été corrigés pour correctement placer les colonnes et ajouter des barres de défilement quand nécessaire.

Puisque phosh est le shell et qu'il travaille étroitement avec wlroots, ils sont tout deux des éléments centraux des images. Il y a eu des mises à jour fréquentes afin que wlroots soit sur la dernière version upstream existante. Un bug mineur a été corrigé sur wlroots afin d'améliorer la gestion des erreurs de compilations sur l'architecture armhf. En sus, le support des modes vidéos personnalisés a été ajouté à wlroots. Les devs sur phosh travaillent sur l'intégration des prompts-systèmes Gcr. Cela permettra de résoudre une foultitude de problèmes avec les fenêtres modales pour les authentifications comme par exemple pour le code PIN, le PUK, les mots de passe, les smart-cards et le porte-clef en utilisant ce qui est déjà intégré à Gnome.

Clavier

Des avancées ont aussi été faites sur le clavier visuel (virtboard) ce qui fait que désormais il est intégré aux images. Afin que virtboard soit affiché/caché lorsque nécessaire, l'intégration d'une méthode d'entrée dans wlroots était un pré-requis et l'équipe GTK+ a été contactée concernant l'intégration du code de cette méthode d'entrée. Nous travaillons a l'élaboration d'un patch pour sécuriser la méthode d'entrée dans notre compositeur. Il y a eu des retours continus pour l'intégration du protocole de clavier virtuel. En plus, le clavier s'adapte beaucoup mieux maintenant !

Calls

L'application calls a également été ajoutée dans les images pour un accès simplifié. Dans l'appli, l'envoi des fréquences DTMF a été ajouté comme cela il est possible d'entendre les fameux bips lors de la composition des numéros.

Afin de rendre calls plus robuste,la possibilité de faire des tests unitaires, dans oFono le backend de l'appli, en utilisant phonesim simulator a été envisagé. Cependant, faire tourner ofonod nécessite les privilèges root pour réquisitionner le nom org.ofono, ce qui rend les tests quasiment infaisable. Cependant, des tests unitaires ont été créés pour le fournisseur d'interface de Calls en utilisant l'implémentation dummy, ainsi que des test pour l'interface Origin et Call.

Libhandy

Le widget GTK+ libhandy a grandi également. HdyColumn a été ajouté afin d'ajouter le redimensionnement dynamique de colonne. Des tests unitaires ont fait leur apparition pour HdyArrows (utilisé pour le balayage directionnel). Une toute première version de libhandy est sortie et la version v0.0.1 a même été envoyée sur Debian experimental !

Epiphany / Gnome Web

Le navigateur web du Librem5 sera Epiphany donc les modifications pour le rendre adaptifs ont été implémentés upstream pour améliorer l'utilisation sur de petits écrans. Un menu interne a commencé a être implémenté mais n'est pas encore finalisé.

Messaging

Une application de démo s'appuyant sur libpurple a été esquissé afin qu'une conversation XMPP soit établie vers Dino. Pour le chiffrement, une conversation OMEMO tournant sur libpurple et le plugin Lurch a pu être faite. La récupération et l'affichage d'avatar et d'information de compte depuis une liste stockée en xml a été réussie. L'interface ofono pour les SMS et XMPP a été implémentée dans l'application de démo également.

Côté matériel

Des facteurs extérieurs ont causé des retards reposants la date initiale de livraisons de Juin concernant les kits de devs. Lorsque nous établissions les schémas pour les cartes de devs, toutes les infos n'étaient pas disponibles ce qui nous a poussés à investiguer plus concernant de nombreux composants ( ex : les caméras, WLAN+BT, les batteries, les interrupteurs, les boutons, etc). En plus des circuits devaient être ajoutés avant que les schémas puissent être considérés comme prêts par l'équipe de validation externe en charge de leur impression. L'équipe matériel du Librem5 a donc finalisé tout ça et en est à la phase de commande des composants pour envoi chez le fabricant des cartes.

Notre estimation au doigt mouillé actuelle pour l'envoi des cartes de dev est d'Août 2018, nous vous tiendrons au courant plus en détail dans un futur article de blog plus détaillé.

Communauté

Le salon de discussion matrix du Librem 5 a explosé avec de nombreux retours et questions. Certains membres de la communautés se sont même mis en quête de bugs à corriger et d'ajout de documentation. Suite aux demandes de la communautés, il y a désormais une image de machine virtuelle en x86_64 disponible qui ressemble comme deux gouttes d'eau à ce qu'utilise notre équipe sur les cartes i.MX6.

La collaboration entre Purism et la communauté Plasma se poursuit également. Il y a désormais des version arm et aarch64 des flatpaks de Plasma. L'équipe Purism réfléchie activement à la création d'image Plasma pour les cartes i.MX6.

La documentation pour dev a connu d'important modifications pour mieux guider tout le monde au bon endroit :          - La page volontaire a été mise à jour avec des instructions plus claires sur comment participer.     - Quel que soit le type de carte (physique ou virtuelle), des étapes communes ont été ajoutées à la page des premières étapes     - Il y a dorénavant des instructions sur la mise en route de l'image x86_64     - Un référentiel de contribution a été posté afin d'établir une charte des process de communication     - Une page GTK+ a été ajoutée avec des exemples d'applications et l'ajout de documentation sur les labels adaptatifs.     - Une page des contraintes de téléphone a été ajouté pour souligner quelques contraintes spécifiques à prendre en compte lors du dev d'applications pour le Librem 5.

Nous étions récemment au GUADEC en Espagne où nous avons pu interagir avec beaucoup de personnes attendant le Librem 5. Nous communiquerons plus sur cet évènement lors d'un prochain article de progression.

Photographie de tous les participants au Guadec 2018

Un grand Merci à toutes les équipes extérieures nous ayant aidé en révisant et intégrant nos modifications dans les différents projets upstreams. Le temps et les contributions de chacun sont grandement appréciés.

C'est tout pour le moment. Restez-là pour de prochaines mises-à-jour à venir !

Heather Ellsworth


Cela fait plusieurs fois que je ne sais pas comment traduire upstream donc je vais l'expliquer ici une bonne fois pour toute.

Dans le monde du libre, les codes sources sont disponibles et peuvent être modifiés/adaptés par chacun. Cependant ces modifications ne sont pas forcément répercutées dans le projet d'origine. Si un dev fait des modifs dans un logiciel, ce nouveau logiciel basé sur un autre s'appelle ça un fork. Mais ce dev peut tout à fait avoir l'intention que ces modifs soient intégrées au projet d'origine, il va donc les soumettre à l'équipe du projet. Cette équipe peut choisir d'intégrer ou non ces modifs.

Si elle accepte, tout va bien dans le meilleur des mondes. Si elle refuse (parceque le code est moche, buggé, dans un autre langage, ajoute des dépendances non voulues, la façon de faire ne convient pas, le dev en question n'est pas en odeur de sainteté, le code en question n'est pas forcément très légal, le projet ne veux tout simplement pas de ces modifs, l'équipe est aux abonnés absents, bref pour n'importe quelle raison), le dev peut soit laisser tomber et pouf ça tombe dans l'oubli, soit son projet devient un fork et peut alors soit devenir complètement indépendant soit continuer à suivre le projet d'origine en y intégrant ses modifs. Cela peut être uniquement temporaire et peut également être à l'initiative du dev en question qui ne désire pas forcément fusionner son travail avec le projet d'origine. Il existe désormais deux projet, le projet d'origine et son fork. Le projet d'origine est appelé upstream et l'autre le fork.

Dans le cas présent, les équipes de Purism créer des forks de plusieurs projets existants pour ajouter les nouvelles fonctionnalités nécessaires, il les testent et compagnie. Quand le résultat est acceptable, ils soumettent leur fork aux projets upstreams en espérant que ce soit acceptés histoire de ne pas avoir à continuer leur fork pour que les projets fusionnent.


Bref niveau logiciel ça a l'air de pas mal avancer sur tous les plans. Cela dit côté matos, on voit les premiers retards se confirmer. Bon c'est pas trop trop étonnant mais bon ça jette toujours un léger froid.

On sent quand même que la collaboration vis-à-vis de Plasma semble assez légère. J'espère qu'à la sortie, l'équipe de KDE saura proposer un truc suffisamment stable et utilisable et pas juste un proof-of-concept bâtard.

Les Vidéos Primitives

Je suis fan des vidéos primitives. Vous êtes jamais tombé dessus ?

Ce sont des vidéos de personnes simulant la vie primitive c'est-à-dire sans technologie. Alors ça se contente principalement de construire des trucs plus ou moins utiles.

Mais il y a des codes à respecter :

  1. Partir de 0 : pas d'outil ou autre. Il faut se construire ses propres outils à partir des ressources à disposition localement.
  2. Ne pas parler : les vidéos ne sont pas des tutos. La partie audio se contente des bruits ambiants.
  3. Être dans la nature. Faut pas faire ça dans le jardin de mamie avec les immeubles dans le fond.
  4. Être à moitié à poil. Bha ouai on est primitif mais pas trop non plus. L'uniforme habituel est le bermuda uni et c'est tout (enfin probablement un slibard/calçouf j'imagine mais dur à vérifier)
  5. La caméra est en plan fixe de façon à pouvoir être manipulée par l'acteur qui la place puis vaque à ses occupations.
  6. Bonus point : être asiatique. Ouai les trois quarts des youtubeurs qui font ça sont asiatiques. Ce sont les rois de la discipline.

Voilà pour les règles.

Après faut avouer que certains les prennent plus ou moins au pied de la lettre. En faisant gaffe on entend parfois des bruits de motos dans le fond, ou alors certains ont recours discrètement à un outil non fait main, certains ne sont même pas asiatiques ! Généralement ça se pratique seul, mais on trouve des gugusses qui se mettent à plusieurs pour ça et souvent la caméra est gérée par une personne dédiée que l'on ne voit/entend pas mais qui parfois bouge la caméra, bref ça se professionnalise.

Au commencement : Primitive Technology

La première chaîne à se lancer dans la discipline est Primitive Technology dont la première vidéo a été publiée le 2 mai 2015. Ce gars est un Australien qui s'est payé un bout de terrain dans une forêt et a commencé à se faire des ptites cabanes. John Plant (ouai c'est son nom) s'est filmé lors de ses tribulations et a connu un succès d'abord un peu lent puis fulgurant. Il a ouvert un blog qui détaille chaque vidéo en fournissant des explications et tout.

Ses vidéos contiennent également des sous-titres détaillant ce qu'il fait.

Il me semble qu'il a depuis investit un second terrain pour pouvoir continuer ses aventures. Il cumule plus d'un demi milliard de vues à l'heure actuelle. C'est le big boss du domaine mais son rythme de publication est désormais assez faible.

Voilà sa chaine et surtout son flux rss.

L'engouement

Du coup quand un toituyauteur publie pas assez vite, on va voir les concurrents. Et là BIM ! Il y en a des cargaisons maintenant.

Depuis 2017 toute une tripottée de nouvelles chaînes se sont créées en reprenant le concept quasi à l'identique. La plupart sont d'origine asiatique donc j'imagine que là-bas ça doit être super populaire. Bref il y a des thailandais, vietnamiens, philippins… mais bon en vrai on s'en fout : les titres de vidéos sont en anglais et ça parle pas donc c'est parfait on peut profiter sans incompréhensions.

Primitive Life

Je sais pas pourquoi mais cette chaîne est dans mon top. Je sais pas pourquoi, mais ce gars m'apparaît sympatique avec son rythme et sa démarche bien à lui. Je saurai pas l'expliquer mais j'accroche particulièrement.

Je ne sais pas exactement d'où il est, mais je le soupçonne d'être vietnamien et de s'appeler Chris Wong. Bref il a commencé il y a moins d'un an et est passé du stade de débutant au stade de roi du −−−−−− en quelques vidéos. Je veux pas vous le spoiler, mais vous verrez vite.

Du travail de pro même si parfois on entend quelques bruits de civilisation mais bon ça sort pas pour autant de l'ambiance.

Bref voilà le lien de sa chaîne et son flux rss.

Primitive Survival Tool

Là c'est du travail d'équipe. Deux hommes pleins d'énergie. Mais vraiment plein d'énergie.

Ils construisent pas mal de cabanes/huttes différentes. Et ça se déroule comme un épisode de Télétubbies avec le réveil/sortie de la cabane/boulot boulot/retour à la cabane pour faire dodo.

Ils ont par contre recours à deux outils assez discrètement : une tête de hache enfichée dans un baton et un ptit outil pour percer le bamboo. C'est un peu dommage mais bon ils restent très bons surtout pour creuser !

Ils publient assez régulièrement, car ils ont commencé il y a six mois à peine. Voilà le lien de leur chaîne ainsi que leur flux rss.

Primitive Life

Ouai c'est le même nom qu'une autre chaîne… La particularité de celle-là est d'être tenue par une femme.

Ça change pas grand-chose au concept mais bon. Il y a un plus grand effort vestimentaire (pas forcément dans le bon sens) mais sinon elle s'en sort vraiment super bien et a tendance à pondre des vidéos un peu plus longues que les autres protagonistes.

Le rythme de publication est pas trop régulier. Il y a des périodes de rush et des périodes sans rien mais bon. Voilà donc sa chaîne youtube et son flux rss.

Et tout un tas d'autres

Bon je vais pas vous le cacher mais en fait on tourne assez vite en rond. Et j'ai pris pour habitude de mater ces vidéos en acceleré (] dans mpv) en 1.66x.

Ensuite ?

Je pense qu'il faudra un peu de renouveau dans la communauté assez vite pour pas que ça ne s'essoufle de trop. À vraie dire ils s'inspirent tous les uns des autres et, donc, on retrouve le même genre de construction chez tous.

Les vidéos ont tendance à stagner à partir du moment où ils parviennent à se procurer un approvisionnement de flotte, de filtrage de la flotte et un bassin.

J'avoue ne pas trop savoir ce qu'ils pourraient faire pour aller plus loin. Passer à l'âge de cuivre pour se fabriquer des outils ? J'imagine que c'est un peu plus compliqué pour un vidéaste de trouver un terrain avec les ressources nécessaires.

Bref seul le temps nous le dira.

Kakoune

Après avoir un peu utilisé Amp j'utilise désormais kakoune depuis quelques mois. En fait à la base je n'avais pas l'intention de migrer aussi vite vers un autre éditeur mais pas de bol, une mise à jour de ncurses à rendu Amp inutilisable à cause de bugs graphiques dans tous les sens. Une mise à jour était nécessaire mais du coup je suis allé voir un peu ailleurs voir ce qui se faisait.

J'ai été tenté par Xi mais je me suis rappelé d'un autre qui me faisait de l'œil depuis quelques années : Kakoune.

C'est pas du Vi mais c'en est pas loin non plus

Capture d'écran de l'accueil de Kakoune avec Clippy indiquant le changelog important

Welcome to Kakoune

Donc ce cher petit est modal (ouai j'essaye que ce genre d'éditeur mais j'aime beaucoup ce principe). Il se base également sur des actions (ou verbes) comme par exemple supprimer/remplacer… mais contrairement à Vi, la syntaxe est dans l'autre sens : d'abord on sélectionne le texte sur lequel on veut effectuer une action puis on choisi l'action. C'est le ptit détail qui a l'air assez insignifiant mais qui permet de mieux borner ses actions puisqu'avant même d'effectuer une action je vois la sélection sur laquelle elle sera appliquée.

Par défaut

Kakoune est assez récent et n'est donc pas encombré d'un lourd héritage et surtout possède des réglages par défaut vraiment utilisables. Après quelques mois, mon fichier de config ne contient que trois lignes. Pas besoin d'aller fouiller dans les confins de la doc ou autre pour le rendre utilisable au quotidien.

Par défaut il y a la coloration syntaxique, par défaut il y a l'auto-complétion automatique, par défaut il y a une status bar bien foutue. Bref par défaut c'est déjà suffisant pour la plupart des utilisations.

Aide contextuelle

Il y a toujours une petite aide contextuelle sous forme du célèbre Clippy qui reprend enfin du service ! Mais si Clippy ! Le ptit trombone de Word 97 avec ses supers conseils ! Et bha il est là ! Et mine de rien ça aide vachement et évite d'aller voir la doc pour des ptits trous de mémoire réguliers.

Un exemple ? Pour sauvegarder il faut taper :w puis Entrée, mais si vous n'appuyez pas tout de suite sur Entrée, vous verrez alors en bas de la fenêtre ceci :

capture d'écran de l'interface de Kakoune montrant la status bar et Clippy

Clippy the Almighty

Tout en bas il y a la status bar que je détaillerai plus loin. Et juste au dessus sur fond jaune (le thême de couleur par défaut est pas des plus seyant) vous avez le Clippy qui vous indique à quoi correspond l'action en cours et les options possibles.

Status bar

Dans tous les logiciels en TUI on retrouve souvent une status bar en bas. Kakoune ne fait pas exception, voilà ce que vous y trouverez par défaut :

  • Le nom du fichier en cours d'édition
  • La position dans le fichier sous la forme Ligne:Colonne
  • Le [+] indique le contexte
  • Le mode actuel
  • Le nombre de sélections (et donc de curseurs)
  • Les informations concernant le client/serveur

Et bien entendu vous pouvez changer tout cela pour afficher ce que vous voulez comme l'indique la doc.

Multi-curseur

C'est une fonctionnalité qu'on retrouve de plus en plus souvent et c'est vrai que c'est pas mal utile quand même. Au lieu de n'avoir qu'un seul curseur où écrire, vous pouvez en avoir plusieurs simultanément.

exemple 1

Par exemple, juste au dessus j'ai fait une liste d'éléments alors que lors de la rédaction j'ai fait une phrase. Du coup comment je l'ai découpée puis transformée en liste ?

Tout d'abord je sélectionne toute la ligne avec x, ensuite je lance la commande de sélection avec s ce qui ouvre un prompt en bas. Là je rentre les éléments que je veux sélectionner pour y placer les curseurs, dans mon cas , pour sélectionner chaque virgule. Après avoir validé avec Entrée je me retrouve avec tous mes curseurs. Maintenant un petit d pour supprimer les virgules, puis passage en mode édition avec i et enfin Entrée pour ajouter les retours à la ligne.   - pour créer les puces et voilà.

N'oubliez pas de virer tous les curseurs à la fin en appuyant sur la touche Espace.

Seek&Replace

Une fonction souvent utilisée est de remplacer une chaîne de caractère par une autre. Sous vim ça se ferait avec le fameux s/machin/truc/ avec éventuellement le % pour le faire sur tout le fichier en cours d'édition.

C'est absolument pas visuel et du coup ça a un fort potentiel de casse-gueulerie.

La méthode à la Kakoune pour ça est bien plus visuel :

Tout d'abord faut sélectionner la zone de texte où vous voulez l'appliquer (% pour tout le fichier). Par exemple pour le faire de la ligne 10 à 18 on se place sur la ligne 10 avec 10g puis on sélectionne jusqu'à la ligne 18 avec 18G (remarquez le G majuscule qui permet de sélectionner). Ensuite on démarre une sélection avec s puis vous tapez la chaîne de caractère à modifier machin et vous validez avec Entrée. Vous voyez du coup toutes les occurrences qui seront affectées par vos modifs. Et là c bidule pour changer le texte par "bidule".

C'est pas plus compliquée que la méthode vim et plus safe.

Verdict ?

Vous vous rendez probablement compte que du coup dans kakoune il faut prendre les bons réflexes pour sélectionner le texte que l'on veux modifier, c'est l'élément crucial. Une fois cette habitude acquise, l'utilisation est assez simple et rapide.

Il est bien plus avancé dans son dev que Amp par exemple. Pour de l'édition de texte c'est franchement génial. Pour coder j'imagine que ça ne plaira pas à tout le monde.

L'écosystème de plugin de vim est une sacrée force mais au final j'aime pas installer des cargaisons de plugins pour pouvoir me servir d'un éditeur de texte. Le second avantage de vi(m) est son omniprésence (intégré à busybox toussa). Ce qu'aucun éditeur de texte ne pourra jamais concurrencer.

Bref ces 5 derniers mois je l'ai pas mal utilisé et je vais continuer.

Tant pis pour Amp qui m'avait bien plu mais ton bug m'a fait goûter/adopter autre chose.

:wq

5000$ Compression Challenge

Ce second partage avec vous est une perle que je souhaitais vous montrer depuis des lustres mais je n'avais pas de moyen bien pour vous le partager auparavant.

Il s'agit d'un échange de mail entre Mike Goldman (j'ai pas trouvé d'infos) et Patrick Craig qui est un informaticien avec un site perso.

Notre cher Mike a décidé de lancer un concours avec à la clé 5000$ de gain en l'an de grâce -3 avant Facebook.

Le challenge

Le participant choisit une taille de fichier. Il recevra ensuite un fichier de la taille voulue et devra renvoyer ce même fichier compressé + le décompresseur. Pour gagner, la somme des deux devra être inférieure à la taille du fichier initial.

Pour participer il faut envoyer 100$.

La page en question-cache local

Bon par contre cette fois aussi, c'est en anglais.

TL;DR - Spoiler !

Pour ceux que l'anglais rebute ou qui n'ont pas la patience de lire l'histoire voilà un ptit résumé et quelques explications.

Le fichier que va génèrer Mike Goldman sera un fichier aléatoire bien foutu. Ça veut donc dire qu'en théorie, il n'est pas compressible efficacement. Même si ce fait n'est énoncé à l'avance il n'y a rien d'étonnant à cela.

Notre cher Patrick Craig est très probablement bien au fait de tout cela mais avant de participer pose une question faussement innoncente : Est-ce que la solution peut être constituée de multiples fichiers du moment que le décompresseur retourne le bon résultat ? Ce à quoi Mike Goldman ne vera pas d'objection.

Notre cher participant paie la taxe de participation et demande un fichier de 3Mo.

Entre temps, Mike Goldman a annoncé avoir un participant à son challenge sur la newsgroup comp.compression (ouai c'est pas récent, à l'époque les ng étaient pas mal utilisées encore). Il annonce fièrement que ce challenge est mathématiquement impossible (ce qui est effectivement le cas).

Patrick Craig nous explique ensuite qu'il est mathématiquement impossible de gagner ce challenge MAIS il y a une petite feinte. Le fait de pouvoir rendre plusieurs fichiers est l'astuce.

En gros le fichier original contient des caractères aléatoires. La compression consiste donc à lire le fichier original et de le découper à chaque apparition d'un caractère particulier ("5"), de supprimmer ce caractère et c'est reparti. Recompresser le fichier consiste à lire le premier fichier compressé, caténer le caractère "5" puis de passer au fichier suivant et ainsi de suite. Donc oui les fichiers compressés + le décompresseur sont plus petits que le fichier original. Mais non ils ne prennent pas moins de place.

Pourquoi ?

L'astuce réside donc dans le fait d'utiliser plus de méta-données afin de réduire la taille des données.

Le système de fichier, pour chaque fichier doit stocker des méta-données dans sa base de données. Donc au lieu d'avoir 1 fois des méta-données pour 1 fichier, il y a désormais 218 fois des méta-données pour 218 fichiers (+1 pour le décompresseur) mais comme le système de fichier ne les affiche pas.

Bref il y a eu filouterie :-)

Patrick Craig n'a pas eu le droit à ses 5000$ mais il ne comptait pas trop dessus. Il aura perdu tout de même 100$ de participation mais franchement c'est plutôt marrant l'histoire qui en découle et puis surtout :

« My main motivation was to "out-trick the tricker". »

La Renaissance Des RSS

Ça y est \o/ En ce moment on assiste à la renaissance des RSS et c'est pas moi qui le dit ! On le lit un peu partout en ce moment. On vit une époque formidable !

Mais attends une seconde : pour que ça renaisse, il faut que ça meurt !

Mais du coup, les RSS étaient morts ?

C'est ce que semble penser pas mal de monde visiblement. Pourtant les sites ne les ont pas supprimés. Mon ptit aggrégateur de flux n'a jamais tarit ces dix dernières années.

Ils sont morts quand ?

Apparemment deux évènements auraient sonné le glas : la mort de Google Reader et FeedBurner qui déconne.

Bon bha dans le cas de Feedburner je sais pas trop, j'ai jamais utilisé ce service mais visiblement ils ont changé leur façon de faire et ça aurait fait fuire une partie des utilisateurs.

Concernant Google Reader, bha je sais pas trop non plus. Effectivement c'était l'aggrégateur de flux rss le plus populaire à son époque mais sa fermeture est-elle vraiment une raison de la mort des RSS ? Quand ma connexion tombe en panne à la maison c'est pas la mort de l'Internet !

Il s'est passé quoi réellement ?

Google Reader est donc arrêté en 2013 et en fait à cette période beaucoup de monde a cessé d'utiliser les reuseuseu pour se tourner vers les réseaux sociaux : Facebook et Twitter en tête. À l'époque ça pouvait effectivement être une alternative plus ou moins potable. Leurs logiques de fonctionnement étaient pas exactement similaires à aujourd'hui. La course au profit n'était pas absolue et du coup les algoritmes régissant les timelines étaient assez inofensif.

Le temps passe.

Une élection est passée et avec un peu de recul maintenant le monde commence à un tout petit peu faire semblant de commencer à peut-être éventuellement ouvrir les yeux.

« Ha bon ? Les timelines sont biaisées ? Ha bon ça me manipule discrètement pour influencer mon jugement/vote/ressenti ? »

Les créateurs de contenu qui ont délaissé leur site perso pour bénéficier d'une audience élargie et se constituer un vivier public doivent désormais passer à la caisse pour parler à leur auditoire. Bref les réseaux sociaux doivent remplir leur comptes en banque désormais.

Quel rapport avec les RSS ?

Bon revenons à nos moutons : les RSS. Ils sont toujours là et les quelques très rares sites qui les ont zappés pour se contenter d'abreuver leur compte truitteur/faceplook commencent pour certains à revenir en arrière.

Et on arrive donc en 2017-2018. Il faut donc reconquérir son propre auditoire des griffes des bleus.

« Et si on créait une renaissance des RSS ?! » L'idée de génie que Bernard a eu ! Sérieux, on présente le truc comme le renouveau, on passe pour des gentils qui aident à se réapproprier une tech bonne pour la vie privée et EN PLUS on amenuise un peu notre dépendance au GAFAM !

BRAVO ! Bon c'est dommage que Bernard ne soit pas au courant que ça fait quinze ans que son site ne produit que du RSS tronqué suite à la décision de Jean-Kevin marketeux de son état qui s'est rendu compte qu'ils balançaient pas de pub/trackers/cookies dans les RSS. C'est bien gentil de crier contre les GAFAM quand ton site est pourri jusqu'à la moêlle au point que ton contenu ne représente que 10% du poids de tes pages webs. La presse en ligne adore vos données mais quand au final ils se font petit à petit bouffer par ceux qu'ils ont nourris, ils retournent leur veste sans pour autant se repayer une dignité.

Bon, crachons pas trop dans la soupe parceque bon les RSS c'est génial et si l'orchestration de "leur Renaissance" peut pousser un peu la populace à y recourir plutôt qu'aux réseaux sociaux… On sera ptet gagnant, sait-on jamais.

Les RSS ne sont jamais morts et la plupart de ceux qui le clâment auraient voulus les tuer à l'époque mais se font guanoter dessus désormais.

500 Miles Mail

Pour inaugurer cette section je vais vous vous mettre un lien vers une histoire assez cocasse :

Débugguer le souci des mails qui ne peuvent dépasser les 500miles.

Un adminsys reçoit un appel d'un directeur de son organisation qui ne parvient plus à envoyer de mails à des destinataires à plus de 500 miles. Forcément l'adminsys va devoir trouver comment démerdouiller le tout.


Je trouve cette histoire vraiment sympa et en plus bien écrit. J'ai tout de même un doute sur la véracité mais au final c'est assez plausible et bien écrit.

Bon par contre c'est en anglais…

Allez sans plus attendre voilà l'article en question - version en cache local.

Nouvelle section : Shares

Hello hello. Bon, pour passer le blues, quoi de mieux que de bidouiller le blog ?

Des partages

Ça fait un petit moment que j'aimerai vous parler de trucs plus … comment dire … "extérieur". Parler de trucs que j'ai lu/vu/écouté ailleurs et vous les recommander souvent.

Du coup voilà une nouvelle section qui commencera très bientôt à se remplir.

Adaptation CSS

Bon du coup pour ça j'ai remis un peu les doigts dans le CSS.

De ce que vous pouvez voir dès maintenant… ça n'a pas changé radicalement, juste quelques couleurs modifées.

Du coup chaque section a sa couleur :

  • Violet (limite rose) les posts.
  • Bleu les fast-posts.
  • Jaune les partages.

Et aussi pour rendre le truc un peu plus clair, j'ai rajouté une ptite étiquette en haut à gauche qui indique la catégorie. Bref ça devrait être un peu plus clair qu'avant sans rajouter trop d'éléments visuels au site.

D'ailleurs j'hésite à terme à mettre des liens vers les différentes catégories directement dans la barre latérale de gauche. Pourquoi pas ?

Faut que je réflêchisse à comment agencer ça.

Bref, j'ai poussé le CSS, avec les histoires de cache toussa vous verrez pas forcément les modifs tout de suite mais rien de bien grave.

Et dans quelques jours je vous envoie un premier share.

Les userscripts dans Qutebrowser

Qutebrowser est un super navigateur mais sur certains points il est loin des ténors. Son développement est bien plus lent que celui de Chrome et Firefox car c'est un projet bien plus petit avec bien moins de contributeurs et aucune entreprise commerciale pour pousser. Il n'en reste pas moins tout à fait fonctionnelle et propose une alternative crédible au prix de maigres sacrifices.

Un des sacrifices à faire est l'absence d'extensions. Mais on peut toute fois lui ajouter des userscripts. Il s'agit de petits bouts de javascripts qui s'executent sur les pages web pour modifier le comportement de la page.

C'est un système qui se base à l'origine sur l'extension Greasemonkey créée en 2005 mais qui a été souvent remplacé par TamperMonkey. Depuis, pas mal de navigateurs ont adoptés différents moyens pour être compatibles avec ces scripts.

Dans QB

Donc Qutebrowser ne fait pas exception à la règle et est nativement compatible avec ces userscripts. Pour les utiliser, rien de plus simple : Placez les scripts dans .local/share/qutebrowser/greasemonkey et voilà.

Super simple, rien à modifier ou autre.

Par contre faut le relancer…

Où les trouver ?

Plusieurs sites.

Il y a Greasy Fork qui en propose pas mal mais je suis trop fan de l'interface. Un meilleur site est OpenUserJS.

Ceux que j'utilise

  • Pour Youtube j'utilise Iridium qui permet d'ajouter tout pleins d'options pour Youtube plus ou moins utile (dont la possibilité de continuer la vidéo même en changeant de page sur youtube).
  • Pour explorer son système de fichier local j'utilise Supercharged Local Directory File Browser qui vous mettra une interface pas mal du tout lorsque vous ouvrez file:///home/lord/ .
  • Celui-là ne m'a jamais servi car je l'ai découvert après en avoir eu besoin mais je l'ai au cas où : Remove Web Limits empêche les sites de bloquer les clics droits, copier/coller et compagnie. Généralement les sites qui font ça je les contourne simplement par le fait que je n'active javascript qu'au cas par cas.

Voilà tout. Il y en a des tas d'autres mais j'ai su rester raisonable.

Hellblues

Ce week-end se tenait le Hellfest à Clisson. 4 jours dans une ambiance extra-ordinaire.

Extra-ordinaire est le mot le plus adapté qu'on puisse trouver pour ça. Pendant quatre jours tu vis dans une ambiance bienfaisante. Tout le monde est gentil, heureux, souriant, ensemble. J'oserai presque dire qu'il y règne une sorte d'ambiance de ZAD mais avec un thème radicalement différent. Alors que c'est tout à l'opposé de cette philosophie : il y a des tas de stands pour acheter des conneries hors de prix. Mais tout le monde y est paisible tout en étant extrêmement bruyant.

Tout le monde se fritte la gueule dans des pogos mais en prenant soin de tout de suite t'aider à te relever quand tu échoues sur l'herbe la poussière.

Tu dors difficilement 6 heures par nuit, tu passes tes journées à errer de scène en bar jusqu'à tenter le grand voyage jusqu'au Leclerc tout grimé en Hellclerc pour l'occasion, tu portes tout ton barda pour 45 minutes de marche sous un soleil de plomb et tu te tapes 8h de route.

Mais tu ne penses plus qu'au 360 jours d'attente pour la prochaine édition.

4 jours à vivre dans une ambiance hors du commun en dépensant tes deniers durement acquis pour ramener des souvenirs. Une ptite centaine de photos et vidéos pour tenter d'en ramener un peu plus à la maison.

Tu repenses à ces gens que tu as rencontré quelques secondes/heures. Les gars complètement déquerres trop bourré pour profiter des concerts. Les Espagnols un peu bruyants de la tente d'à côté. Les meufs à trois quarts à poils avec des coups de soleil de la mort qui te font mal rien qu'en les regardant. Les quelques punks au loin en train de pisser dans le Kingdom of Muscadet. Le mec à moitié amoureux de tes chaussures pendant sa petite sieste lors d'un concert de Black Metal…

Il y a bien quelques reproches qui sont faits au Hellfest… La programmation qui n'est pas vraiment du goût de tout le monde (me suis un peu fait chier niveau musique le samedi, mais du coup ça fait une ptite pause pour faire un tour de Grande Roue). Et c'est vrai qu'en regardant un peu le débrief Arte … bha … hmmm … il y avait quand même pas mal de rap ! Et puis pourquoi c'est aussi loin dans un bled où on se pèle sévère dès le soleil disparu !? C'est vrai quoi le faire à une heure de chez moi ça serait plus pratique !

Bref.

Maintenant, bha faut retourner au boulot. -___- Retourner à la civilisation normale… chiante. Le supermarché à la déco fadasse. Les gens qui font la gueule dans la rue. Ne plus voir de cheveux longs, kilts, cornes, les tatouages bien planqués.

C'est le blues. Allez plus que 358 jours.

Les us et coutumes d'IRC

IRC est l'un des plus anciens protocoles de chat sur Internet encore très activement utilisé. Malgré une perte d'intérêt de la part du grand public qui se tourne massivement vers les réseaux sociaux ou alors sur les plateformes verrouillées/privatives de Slack, Discord, Telegram, … IRC reste toujours utilisé près de trente ans après sa création et connait même des mises à jour du protocole.

IRC est donc à la fois un protocole mais aussi toute une communauté avec ses traditions, ses codes et ses ptites habitudes.

Morning

Il existe de très nombreux fuseaux horaires utilisés dans le monde mais sur IRC nous avons dépassés ces concepts abstraits. Au lieu de s'appuyer sur UTC pour synchroniser tout ce petit monde, nous nous appuyons sur UGT : l'Universal Greetings Time qui permet de simplifier les rapports :

Quand une personne arrive dans un salon de discussion c'est le matin. Du coup « Good Morning !» , quelque soit l'heure chez soit.

Et quand elle part ? Bah « Bonne Nuit ! ».

C'est super simple et devrait s'appliquer dans le monde physique aussi. Fini de se tracasser et hésiter entre bonsoir ou *bon aprem*…

HL : HighLight

La plupart des clients IRC sont configurés de sorte que lorsque quelqu'un mentionne votre nom, votre client se mette à clignoter/jouer un son/envoi une notif/… bref ça se rate pas. On appelle cela un highlight ou plus communément HL.

Évitez de HL les gens pour rien. Et évitez également de HL pleins de monde (à tord) sur un salon. C'est souvent une bonne occasion de réveiller un bot pour kicker le malotru.

Et tant que j'y suis, pour l'amour de Gnu, si vous mentionnez quelqu'un, foutez pas un @ devant. On est pas sur twitter ou autre, un @ devant un nom signifie que c'est un opérateur et aura même tendance à empêcher le client de HL.

Slaps

MSN a les wizz, Facebook les pokes, IRC les slaps.

Berthe slaps Guigui around a bit with a large trout.

C'est amusant cinq minutes. Mais ça fait bien plus de cinq minutes que l'on est sur IRC…

Don't ask to ask, just ask

Sur les salons de discussions des distributions linux (mais pas seulement), de très nombreux utilisateurs vont et viennent pour avoir un petit coup de main. C'est l'endroit idéal pour ça (mieux que les forums dans la majorité des cas je dirai).

Mais par contre, ne demandez pas la permission pour poser une question. « Can I ask something ? » Biensûr que vous pouvez poser votre question, mais demander si vous pouvez poser la question est une perte de temps pour tout le monde.

Posez votre question tout de suite avec courtoisie et le plus clairement possible. Mais surtout, posez là à votre moteur de recherche favoris avant, ce serait dommage de déranger des gens pour une réponse que l'on obtient en moins de trente secondes par soi-même.

Pas mal de monde traîne passivement sur IRC. Soyez précis, concis et courtois dans vos questions.

XY

Et ne vous ofusquez pas si quelqu'un vous demande « Pourquoi vous tentez de faire telle ou telle chose ? ».

Par habitude on reconnait les questions étranges pour tenter d'obtenir des effets abscons. On est typiquement dans un XY problem, donc ne vous braquez pas et expliquez quel est votre problème global plutôt que « Comment faire ceci ? ».

Et vous aurez probablement des suggestions pour trouver un meilleur angle d'attaque de votre problème.

Bon c'est pas spécifique à IRC mais c'est problème récurrent.

Idle

IRC est une messagerie instantanée certes mais généralement les utilisateurs sont passifs. On est connectés 24/7 mais on est pas forcément devant le terminal 24/7.

N'espérez donc pas une réponse instantanée, surtout un dimanche à 4h du matin. Il n'est pas rare de tomber sur des salons de discussions où rien ne se raconte pendant plusieurs jours et puis d'un coup : PAF ! Une fulgurance, une activité débordante, bref la vie reprend le dessus.

Chacun à un rythme de clavardage différent.

Bref si vous arrivez sur un salon désespérément calme, lancez une phrase ou deux mais surtout ne commencez pas à chouiner que personne ne répond. Et non, HL tout le monde ne vous attirera pas la sympathie des occupants.

Messages d'away

Bon bha maintenant que vous avez envie de rester connecté 24/7 avec votre client irc vous vous demandez : « Mais comment signaler au monde entier quand je suis pas dispo ?! »

Et bha en fait on s'en fout royal. Si vous répondez pas… bha on comprend assez vite que vous n'êtes pas là…

Épargnez-nous les messages d'away et les changements de pseudo.

AMSG

Bon je continue de râler encore un coup. Les amsg sont les messages envoyés à tous les salons de discussions où vous êtes connectés.

Et bha comme pour les messages d'away…

On

s'en

fout.


C'est vrai quoi… Ce n'est généralement que du spam.

Vous êtes toujours là ?

Je vous ai pas dégouté en passant pour un gros con aigri ?

Bon bha du coup venez sur IRC, c'est super sympathique ! Pleins de gens très intéressants (mais aussi des cons comme partout).

Même si la fréquentation est en légère baisse depuis quelques années, les salons de discussions sont toujours pas mal remplis surtout dans la communauté du logiciel libre. En tentant d'aider des gens, on apprend énormément les rouages internes d'un logiciel. Avec des problèmatiques que l'on a pas rencontré personnellement ou autre.

Ce n'est pas un réseau fédéré mais une myriade de réseaux indépendants avec leurs règles et coutumes spécifiques : Freenode est le réseau de référence pour le monde du Libre. Geeknode est un réseau français versé logiciel libre et neutralité du net hébergeant beaucoup de salons francophones dont une bonne partie de la FFDN. Et encore pleins d'autres réseaux IRC…

14ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Beaucoup de travail a été abattu sur le projet Librem 5 et même s'il en reste énormément, nous voulions faire un point des avancées réalisées par l'équipe ces deux dernières semaines. Profitez donc de cette brève mise à jour concernant nos effort récents et nos accomplissements.

Le travail logiciel

Cela représente une importante masse de travail pour le Librem 5. Il y a toute l'infrastructure comme l'apparence de l'interface utilisateur et les nouvelles bibliothèques et protocoles. Mais il y a aussi les applications familières qui sont nécessaires.

Sous le capot, notre interface téléphone (phosh) a subit d'importantes améliorations ergonomiques principalement concernant l'écran de verrouillage. Un important changement vient du fait que dorénavant le déverrouillage est délégué à PAM pour mieux gérer le verrouillage de l'appareil via un code PIN. Des ajouts de code ont également ont été fait pour mieux gérer de multiples sorties (écrans). Également, libhandy est notre lib pour l'UI handy (pratique) pour développer des applications GTK+. Il y a eu l'ajout récent d'un widget de flèches (HdyArrows) pour indiquer la direction de balayage de l'écran qui sera très utile pour de nombreuses applications, particulièrement pour l'écran de déverrouillage. Qui plus est, libhandy a eu quelques corrections de bugs et une refonte de la gestion du clavier. Puisque les graphismes sont importants, nous avons ajouté le support d'Etnaviv à weston-simple-dmabuf (un client Wayland pour tester l'implémentation du protocole Linux DMA-BUF). Nous avons aussi completé son support du format NV12. C'est utilisé pour tester l'implémentation de linux-dmabuf de wlroots. Nous aimerions tout particulièrement remercier le projet wlroots et Weston pour leurs revues de code, recommandations et supports.

Puisqu'on peut pas avoir un téléphone qui ne puisse faire d'appels téléphoniques, de grands efforts ont été fait sur Calls qui peut désormais émettre des appels ! (Et si vous l'aviez manqué, nous vous encourageons à lire l'article correspondantFR) En plus de tout le code écrit, les interfaces ont été documentées dans de code. L'empaquetage pour Debian est en préparation et nous taffons pour inclure un paquet Flatpak créé par un membre de la communauté.

Chaque smartphone nécessite un clavier visuel (OSK pour On-Screen-Keyboard), donc des efforts de devs ont été fait en ce sens pour les protocoles nécessaires et les upstreamer (les faire accepter par les mainteneurs des projets amonts). Pour l'instant, le protocole virtual-keyboard a été accepté pour être inclus dans wlroots. Le protocole text-input a été soumis upstream à l'approbation. Pour tester le protocole. virtual-keyboard, nous avons créé un prototype basé sur weston-keyboard. Vous pouvez lire ça plus en détail à propos du dev du clavier visuel dans l'article de DorotaFR.

Le travail matériel

Identifier et tester chaque composant matériel qui seront présent dans le dev kit et éventuellement le téléphone est une tâche non trivial. Après le choix d'un composant potentiel et la réception de quelques échantillons pour tests, il faut souvent modifier ou carrément écrire un module kernel avant même de pouvoir tester. Cela a été le cas pour évaluer et tester des module basse consommation Wifi, ce qui est encore en cours. Les moteurs de vibrations sont aussi en cours d'approvisionnements pour évaluations et les chargeurs de batterie sont testés. Nous sommes aussi en train d'investiguer différentes options pour les caméras.

Construire une communauté

La communauté continue d'occuper nos pensées. Nous avons donc monté un wiki PureOS qui n'est pas encore très étoffé mais qui pourrait devenir un endroit pour trouver de la documentation générale et des informations techniques sur PureOs et les produits Purism. Nous avons corrigé un soucis sur la mailing-list de la communauté pour être de nouveau fonctionnelle et avons ouvert nos salons de discussion Matrix pour que vous puissiez nous rejoindre avec vos Matrix ID existants. Pour plus d'infos à ce propos, jetez un œil à notre page “volunteer”.

Nous sommes heureux de recevoir des propositions de volontariat qui font un travail formidable pour aider à rendre le Librem5 génial. Si vous avez suivi ou contribué à nos dépôts de code, sachez que nous venons de migrer de Gogs à GitLab − la nouvelle adresse est source.puri.sm.

C'est tout les amis. Restez branchés pour de futures nouveautés à venir !


Beaucoup d'avancées logicielles. C'est assez encourageant et on dirait qu'un bon rythme s'est mis en place avec de la collaboration effective avec d'autres projets.

Par contre c'est toujours un peu flippant concernant la partie matos. Les dev kits devraient pas tarder à être finalisés pour être livrés… j'ai du mal à imaginer que la deadline initiale puisse être respectées. On croise les doigts

13ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


L'importance des claviers visuels

Le rôle des claviers ne doit pas être sous-estimé. Ils sont apparus bien avant les ordinateurs et survivent à l'ère des smartphones. Des millions de gens discutent avec leurs amis en écrivant sur leur cher ordinateur de poche en utilisant la vénérable disposition QWERTY datant de 1873.

C'est dur d'imaginer un smartphone sans dispositif d'entrée de texte. Certains rêvent de mouvement à la Minority Report mais le Librem 5 perpétue la tradition du clavier.

Ces dernières semaines, je suis devenue la spécialiste de l'équipe concernant le clavier. J'ai passé ce temps à m'assurer que toutes les pièces s'emboîtent bien et à prouver que le prototype fonctionne. Le prototype peut être vu dans la vidéo ci-dessous. Il est basé sur rootston (wlroots), GTK et weston-keyboard − notez ces noms, ils auront leur importance plus loin.

photo d'un clavier de machine à écrire en Qwerty

Une machine à écrire “Continental Standard” Photo issue de Wikipedia

Cette tâche s'est avéré un voyage intéressant et enrichissant. Le train Wayland m'a baladé des méthodes d'entrée à l'Asie, à travers les protocoles, ainsi que les communautés FLOSS. Je vais tenter de vous décrire mon histoire.

“Ça doit pas être bien dur, pas vrai ?”

À la surface, un clavier est un appareil simple. C'est un assortiment de boutons attachés à un ordi. Appuyez sur un bouton et l'ordinateur réagit promptement. Placer un clavier à l'écran ne devrait pas être difficile : il suffit de réserver une portion de l'écran pour les touches. Appui : action. Ça ressemble à un clavier de téléphone, non ? Il n'apparait pas à l'écran tout le temps. Et il corrige les erreurs. Pas mal, il y a d'autres différences ?

En fait, les claviers visuels ne sont pas considérés comme des claviers. Ils font partit d'une plus large catégorie appelée : «les méthodes d'entrées». Ces méthodes d'entrées peuvent avoir plus de responsabilités que juste permettre d'appuyer sur des touches. On pourrait avoir une touche pour corriger les erreurs de frappe, ou bien choisir une suggestion depuis un dictionnaire, trouver des synonymes, entrer des phrases complètes que j'utilise fréquemment comme “Ahoy Matey!”. Pour les langues asiatiques, il est quasiment indispensable d'en utiliser pour écrire.

Illustration d'anthy un logiciel de méthode d'entrée pour les langues asiatiques

Écrire en japonais en utilisant la méthode d'entrée Anthy. Image issue de Wikipedia

En général, les méthodes d'entrée permettent à l'utilisateur d'entrée du texte, il existe une grande variété de façon de faire. Elles peuvent afficher un pop-up de suggestions, suggérer des phrases, reconnaître de l'écriture manuscrite or proposer carrément proposer des systèmes comme Dasher.

Arrive Wayland

Pour moi cependant, la première tâche était de parvenir à taper du bon vieil anglais en appuyant sur des boutons sur l'écran. Le Librem5 utilisera des applications Wayland native exclusivement (grâce à GTK3 et Qt5) et c'est un point important pour le clavier. Wayland est en charge des interfaces humaines comme les claviers, souris, écrans tactiles et méthodes d'entrée. Un compositeur Wayland agit en tant qu'intermédiaire entre les appareils et les applications. Il définit comment les applications se partagent ces appareils. Imaginez le boxon que ce serait si toutes les applis écoutaient les clavier en même temps !

Diagramme montrant la relation entre les différents appareils d'entrée, le compositeur au centre, puis les applis à droite à qui le compositeur redirige les entrée

Voilà où la partie technique démarre. Wayland est un ensemble de protocole. Il y en a un, wl_keyboard, définissant comment les applications écoutent les appuis sur le clavier. De la même façon, un autre (text-input) défini comment les applications écoutent les méthodes d'entrées. Encore un autre, nommé input-method, défini comment les application de méthode d'entrée communiquent avec le compositeur. Cela nous donnent trois classes de logiciels qui ont besoin de travailler ensemble pour créer un clavier visuel : application, compositeur et clavier lui même.

Premier réflexe, j'ai regardé comment ces protocoles étaient supportés par les projets existants. La pièce centrale est le projet wlroots sur lequel nous nous basons pour le compositeur du Librem5. Il ne supporte aucun de ces protocole et mon intention d'ajouter leur support a été chaudement apprécié par les mainteneurs. Tout n'est pas aussi rose cependant. Le seul clavier implémentant le protocole input-method est weston-keyboard, qui n'est clairement pas fait pour les téléphones. Le cas du protocole text-input est encore plus intéressant. Voyez-vous, j'ai menti un peu : il y a en vrai trois protocoles pour cela. Qw et KWin se reposent essentiellement sur _v2 et GTK et gnome-shell utilisent gtk_input_method ( tant qu'à digresser, le projet maliit utilise zwp_text_input_unstable_v1). C'est un très mauvaise nouvelle car chaque compositeur devra supporter les deux méthodes pour communiquer les entrées textes pour les applis Qt et GTK.

Le moyen raisonnable de résoudre ça serait de convaincre tout le monde de standardiser un seul protocole. Avant de plonger plus profondément dans les politiques des communautés, j'ai décidé de me salir les mains afin d'avoir une meilleure vue des détails.

Le travail

J'ai choppé rootston, GTK3.22 et weston-keyboard et j'ai codé le support de wlroots. Après l'arrivée de ce code, gtk_input_method a été proposé pour devenir le nouvel zwp_text_input_unstable_v3 officiel. Pendant ce temps, j'ai envoyé une pull reguest à wlroots. De là a émergée une longue série de discussions avec les devs de wlroots. Deux conclusions en sont sorties :

  • text_input_v3 est très proche de ce qu'attend la communauté
  • input-method est à moitié à l'abandon, incomplet et duplique de nombreuses fonctionnalités d'autres protocoles.

En bref, les deux protocoles nécessitent de du boulot.

La bonne nouvelle est que ces discussions étaient très approfondies et impliquaient des gens de différents projets ce qui a clarifié ce qui devait être fait. Pour l'instant, je peaufine des propositions pour chacun de ces protocoles qui seront étudiées en profondeurs et qui seront je l'espère suffisamment propres pour être adoptés et inclus dans les protocoles Wayland.

Avoir de bons protocoles faisant leur job devrait convaincre GTK, Qt et Maliit de s'uniformiser sur une façon de faire afin d'éviter la duplication du code et des efforts.

Vous vous demandez peut-être : “Vous avez déjà une implémentation fonctionnelle, pourquoi se préoccuper des autres projets ?” Dans l'équipe Librem 5, nous réalisons à quel point notre projet sera important dans l'écosystème Wayland. Une fois le téléphone sorti, ça sera la référence pour les projets à venir. Agir dans notre coin, couperai le Librem de certains projets alors que d'autres suivraient le reste du monde. Faire les choses bien et par étape permettra une interopérabilité entre les téléphones Librem et les autres projets sans efforts ce qui améliorera la compatibilité pour tout le monde.

La suite ?

Le travail sur les protocoles se poursuit et leurs implémentations sera proposé pour leur inclusion dans les libs upstreams (les bibliothèques de codes utilisés par les autres projets). À un moment, weston-keyboard devra disparaitre ou être radicalement transformé ce qui signifie plus de travail pour la design team. Les protocoles devraient être standardisés ou presque lorsque nos premières boards arriveront dans les mains du public. Je suis très curieuse des méthodes d'entrées que vous créerez − les idées entendues durant les discussions étaient folles ! Et enfin j'espère être témoin de l'expérience en la matière de la part des asiatiques ;-)

Dorota


Dorota est dans l'équipe de dev mobile de chez Purism.

J'espère que l'unification des protocoles d'entrées de Wayland aura effectivement lieu sinon ça risque d'être assez chiant à l'usage si l'on mixe du gtk et du Qt.

D'ailleurs je connaissais pas du tout le projet Maliit.

J'aimerai bien une réimplémentation libre de MessagEase que j'utilise sur l'android. C'est un clavier qui ne tente pas de mimer un clavier de machine à écrire mais est pensé pour être utilisé sur du tactile.

Trifouillage de firmware de clavier

Je vous ai déjà parlé de mon clavier fait maison il y a bientôt trois ans dans ce premier article. Il est ptet temps de faire la partie 2 ? Ouai mais non c'est trop tard.

Par contre je viens de modifier un peu la disposition du clavier et du coup c'est une bonne occase pour en reparler ! Ça sera un peu la seconde partie en quelque sorte où j'aborderai un peu plus la partie programmation du firmware.

S'y remettre trois ans plus tard

Bon donc ce clavier me sert constamment depuis tout ce temps. Il fonctionne superbement bien malgré son look… particulier.

Photo du clavier au 05/06/2018

Le fameux clavier lors de la rédaction de l'article (admirez le repose poignet à base de SSD et de batterie).

J'ai déjà refait une soudure ou deux qui s'étaient pétées mais bon rien de bien méchant. Ça se refait en moins de cinq minutes montre en main.

Par contre depuis que je réutilise mpd j'ai pas de moyen simple de passer au morceau de musique suivant. J'ai pas de touche multimédia et j'ai pas envie de rajouter un raccourci i3 à base de alt ou autre…

Il me restait toujours deux emplacements de libres sur le clavier mais à des emplacements un peu bâtard du coup pas trop envie d'y toucher, je conserve ce Maj droite et ce GUI (la ptite touche menu à droite de la touche windows droite sur un bon vieil azerty des familles).

Une solution élegante serait de rajouter des touches multimédia par l'intermédiaire de la touche Fn.

Bon bon c'est parti ?

Non !

J'ai bien gardé les sources du firmware du clavier dans un ptit gogs perso. Par contre j'ai plus tout le reste.

Le reste ? Bha déjà il faut le compilateur kivabien, c'est à dire gcc-avr.

Et il faut le ptit outil pour transferer le binaire de l'ordi jusque dans la ptite puce du ptit Teensy.

Propre via Gentoo

Bon bha déjà, ça commence par un emerge arduino avec tout un tas de dépendances des plus effrayantes à base de java et compagnie…

Ça fait un peu chier mais bon faut le faire. A man's got to do what a man's got to do !

Pendant que ça s'installe je vais voir la FAQ PJRC (PJRC est le fabricant du Teensy).

The AVR toolchains provided by Gentoo and Arch are broken. They compile .hex files which simply do not work!

Bon … c'est ptet ancien, je verai le moment venu.

Après arduino, il faut Teensyduino qui est un add-on pour rajouter le support du Teensy à l'IDE arduino. En gros chaque petit appareil a ses spécificités et cet add-on permet d'ajouter tout ce qu'il faut pour que l'IDE soit pleinement compatible avec le Teensy et puisse également transferer les binaires génerés dans le Teensy. Ça se télécharge directement depuis le site officiel de PJRC.

Quand on lance le truc il faut l'installer par-dessus l'install arduino. Bon je lui file /usr/share/arduino mais non, l'installer n'en veux pas…

Bon allez j'ai pas envie de perdre deux heures en dégueulassant ma ptite gentoo pour ça.

Sale via Debian

Bon je créer un chroot jetable donc pas besoin de me faire chier avec de la création d'user et compagnie, je veux juste un environnement basique le plus vite possible.

Donc je choppe l'installer arduino directement depuis le site Arduino parceque ça ne marchera pas avec la version made in Debian… J'untar le fichier téléchargé.

Je re-récupère Teensyduino depuis le site officiel PJRC et je lui donne le dossier où j'ai foutu Arduino. Et ça marche \o/

Je récupère les sources du firmware depuis mon gogs. C'est un bon gros git avec des sources pour tous pleins d'autres claviers également.

Je récupère aussi pour tester le firmware déjà compilé que j'utilise actuellement.

Je teste de le transférer dans le Teensy histoire de m'assurer que tout le bousin est fonctionnel. Et hop ça fonctionne, je peux passer sereinement passer à la suite. Bref le ptit quart d'heure de création de chroot n'aura pas été perdu vu que tout fonctionne comme sur des roulettes.

Le firmware du clavier

Je me base sur un firmware libre assez réputé dans le milieu des bidouilleurs de claviers : TMK. Le firmware est donc un programme qui tourne dans le Teensy qui possède un tout petit CPU à 16Mhz.

Il a plusieurs tâches à effectuer. Il doit comprendre quels boutons sont appuyés, les débouncer, choisir quel signal transmettre à l'ordinateur.

Et comme c'est un logiciel, on peut s'amuser à tripotter tout ces comportements. Bon par contre je suis pas codeur donc c'est un peu tendu de modifier ça mais par chance le code est commenté de partout avec beaucoup de doc sur le Github avec explications des variables et tout. Bref un projet bien sympa pour les bidouilleurs du dimanche soir.

La partie qui m'intéresse particulièrement aujourd'hui est la modification du keymap.

lrd/keymap_lrd.c

Bon donc tout ce qui concerne spécifiquement mon clavier se trouve donc dans le dossier lrd (ouai je lui ai pas trouvé de nom à ce clavier). On trouve plus précisément le keymap_lrd.c qui est utilisé par le firmware (c'est défini dans le Makefile).

Voilà ce qu'on y trouve, c'est plutôt simple.

#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: BÉPO */
KEYMAP(GRV,    1,    2,    3,    4,   5, FN2,   6,   7,   8,   9,   0,MINS, \
       EQL,    Q,    W,    E,    R,   T,RSFT,   Y,   U,   I,   O,   P,LBRC, \
       TAB,    A,    S,    D,    F,   G, DEL,   H,   J,   K,   L,SCLN,QUOT, \
       LSFT,   Z,    X,    C,    V,   B,BSPC,   N,   M,COMM, DOT,SLSH,RBRC, \
       LCTL,RGUI, BSLS, LGUI, LALT, SPC,RALT, ENT,LEFT,  UP,DOWN,RGHT,FN1),
/* 1: Fn1 */
KEYMAP(TRNS,  F1,  F2,  F3,  F4,  F5, ESC,  F6,  F7,  F8,  F9, F10, F11, \
       TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
       TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
       TRNS,TRNS,TRNS,TRNS,TRNS,MPRV,MPLY,MNXT,TRNS,TRNS,TRNS,TRNS,TRNS, \
       TRNS,TRNS,TRNS,TRNS,TRNS,VOLD,MUTE,VOLU,HOME,PGUP,PGDN, END,TRNS),
/* 2: test */
KEYMAP(  NO,   A,   B,   C,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO),
};
const uint16_t PROGMEM fn_actions[] = {
    [0] = ACTION_LAYER_TAP_KEY(1, KC_ESC), // Vers Fn1
    [1] = ACTION_LAYER_TAP_KEY(1, KC_ESC), // Vers Fn1
    [2] = ACTION_MODS_KEY(MOD_LSFT, KC_INS),
};

Bon ça marche par couches, la 0 est donc l'accès direct des touches classiques, la couche 1 correspond aux touches pressées en même temps que Fn1. La couche 2 est un reste d'expérimentations que j'ai pas pris le temps de virer.

Ceux qui ont l'œil affûté verront que bien que le clavier soit bépo il est défini en qwerty. C'est parcequ'il est réellement qwerty mais que c'est ensuite Xorg qui map ça en bépo. En vrai un clavier n'envoi pas les lettres à l'ordinateur mais envoie une valeur numérique et ensuite l'OS se démerder pour transformer ce numéro de touche en une lettre en fonction de la configuration. C'est d'ailleurs pour ça que certains programmes ont toujours les mêmes raccourcis quelque soit la disposition clavier choisie car ils se basent sur le keycode et non le keysym.

Pour ceux qui ont les yeux encore plus affûtés, vous aurez également remarqué que j'ai pas de touche Échap et que j'ai Fn1 et Fn2. Bravo, vous êtes fort (si c'est pas le cas, faites semblant, je peux pas déceler vos mensonges à ce sujet).

Fn1 est donc la touche qui déclenche l'action [1] qui est définie en dessous, c'est-à-dire ACTION_LAYER_TAP_KEY. Cette fonction est G.É.N.I.A.L.E et encore je pourrai insister un peu plus. En gros cette touche a dorénavant deux fonctions :

  1. Passer sur la couche 1 lorsqu'elle est maintenue enfoncée donc Fn.
  2. Faire KC_ESC lorsqu'elle est juste tappée, c'est-à-dire Échap.

Voilà deux touches en une. On a jamais besoin de maintenir Échap appuyé donc on peut très bien l'utiliser de cette façon. En plus, en étant dans le coin tout en bas à gauche, elle est super accessible de la paume de la main sans viser; dans vim (et ses copains) c'est un régal ! Ce système de double touche est plus souvent utilisé avec Espace ce qui lui a donné son nom de SpaceFn mais il m'arrive de jouer de temps à autres donc la touche Espace est déjà bien utilisée…

L'action [2] est la combinaison de touche MOD_LSFT et KC_INS qui s'avère être Majuscule + Inser. C'est un raccourci classique de Xorg pour Coller. Et hop une touche dédiée pour coller du texte !

Les modifs du jour

Bon du coup pour rajouter les touches multimédia, j'ai bidouillé le fichier keymap sur la couche 1. J'ai ajouté MPRV, MPLY, MNXT qui correspondent à Multimedia Previous, Multimedia Play et Multimedia Next. Sous Linux, ces touches sont appelées XF86AudioPrev, XF86AudioPlay et XF86AudioNext.

Bon bha une fois ces modifs faites, comment qu'on compile et on qu'on upload ?

Mise en service

Compilation

C'est tout simple, un simple make va compiler votre nouveau firmware. Ça va générer pas mal de fichiers dont un fichier avec l'extension .hex . Dans mon cas c'est un ptit fichier de 48Ko contenant tout ce qu'il faut.

Ensuite faut l'envoyer.

Envoi

Bon on va filouter.

Normalement l'IDE arduino s'attend à compiler lui même le code et tout mais j'ai déjà compilé par moi même ce qu'il faut avant. On lui indique donc juste quel type de board on veux trifouiller dans le menu Tools/Boards/Teensy 2.0 . (houlà j'ai vraiment pas l'habitude de parler de logiciels graphiques avec des menus…)

Ensuite pour démarrer la ptite applet d'upload on va dans Sketch/Upload Ce qui ouvrira une ptite fenêtre.

capture d'écran de la popup d'upload du binaire

Upload du binaire dans le Teensy

Là on ouvre File/open hex en allant chercher le fichier géneré précédemment.

Et maintenant l'instant stressant : Appuyer sur le ptit bouton du teensy. Et normalement une barre de progression va apparaitre et faire son œuvre.

Test

Tout s'est bien passé ?

Bha… suffit d'essayer d'utiliser le clavier, pas besoin de débrancher/rebrancher ni rien, c'est instantanné. Ça permet d'itérer très rapidement car ça prend moins de 10 secondes entre l'édition et le test.

Conclusion

Avoir un clavier où on peut trifouiller intégralement le firmware c'est trop bien ! C'est un super jouet.

TMK est un super bac à sable et en plus la doc est géniale. Sérieux, regardez comment les actions des touches et les touches elles-mêmes sont super bien documentées. Mais au delà de l'aspect fun c'est vraiment fonctionnel comme un vrai clavier lambda si ce n'est mieux !

En dehors de la phase de préparation de l'environnement qui est un poil chiante et inintéressante (mais bon rapidement mis en place quand même) c'est vraiment super agréable.

Gérer les spamfilters sur UnrealIrcd

Unrealircd est un ircd très populaire qui a près de vingt ans désormais mais à connu un sursaut d'activité ces dernières années pour arriver en version 4. On l'utilise notamment chez Geeknode sur les quelques serveurs du réseau.

Et comme tout réseau IRC qui se respecte, on subit régulièrement des relous qui viennent spammer les salons et les utilisateurs de façon plus ou moins créative. Un groupe particulièrement chiant passe régulièrement pour faire leur propagande en floodant.

Bref un moyen de contrer leur spam est donc d'utiliser la fonction Spamfilter d'Unrealircd.

J'avais un peu survolé les différentes actions que peuvent faire un ircop ici mais là c'est spécifique au spamfilter.

Spamfilter

La syntaxe est à première vue assez simple mais pourtant toujours un peu spéciale.

Lister

Déjà pour lister les filtres déjà existant : /spamfilter. Ce qui vous sortira un listing de ce genre :

10:26:33   geeknode  -- │ F simple cpnNPq kill 0 9842810 86400 "supernets" Lord!Lord@geeknode.fuckyeah :iяс.sцреяиетs.ояg сни sцреявоwl
10:26:33   geeknode  -- │ F posix cpnNPq tempshun 0 25184053 86400 racisme Lord!Lord@geeknode.fuckyeah :*vap0r*freenode*
10:26:33   geeknode  -- │ F posix cpnNPq kill 0 25696998 86400 supernets Lord!Lord@geeknode.fuckyeah :*SUPERNETS*
10:26:33   geeknode  -- │ F posix cpnN tempshun 0 26141654 60 spam Lord!Lord@geeknode.fuckyeah :*www.icq-net.eu*

Ajouter

Bon pour ajouter un nouveau filtre c'est assez simple si l'on suit la doc

/spamfilter add -regex cnNPq kill 0 l0de_spammer \ [lL1][oO0][dD][eE3]\

En y regardant de plus près on voit quelques trucs chiants :

  • Le type de spamfilter commence par un - donc c'est pas juste regex ou simple mais -regex ou -simple. C'est le truc que j'oublie à chaque fois.

  • Ensuite, dans la raison il faut remplacer les espaces par des underscore _ (le «tiret du 8»).

  • Mais surtout dans la regex elle-même, on ne peut pas foutre d'espace, il faut les échapper avec "\ ".

Supprimer

Bon pour l'instant cet article n'apporte pas grand chose de plus que la page du wiki vous me direz. C'est vrai. :-(

Mais mais mais je vais me rattraper tout de suite avec cette astuce de sioux !

En théorie pour supprimer un spamfilter vous devez faire exactement la même commande que lorsque vous en avez mis un en place. Mais c'est pas forcément simple car lorsque vous les listez la syntaxe est pas exactement la meême. C'est vite très chiant à retrouver.

Mais si vous faites /spamfilter del vous aurez un listing mieux foutu :

10:41:56   geeknode  -- │ F simple cpnNPq kill 0 9843733 86400 "supernets" Lord!Lord@geeknode.fuckyeah :iяс.sцреяиетs.ояg сни
                        │ sцреявоwl
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f7421b79b40
                        10:41:56   geeknode  -- │ -
                        10:41:56   geeknode  -- │ F posix cpnNPq tempshun 0 25184976 86400 racisme Lord!Lord@geeknode.fuckyeah :*vap0r*freenode*
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f74216e0080
                        10:41:56   geeknode  -- │ -
                        10:41:56   geeknode  -- │ F posix cpnNPq kill 0 25697921 86400 supernets Lord!Lord@geeknode.fuckyeah :*SUPERNETS*
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f74216dfe00
                        10:41:56   geeknode  -- │ -
                        10:41:56   geeknode  -- │ F posix cpnN tempshun 0 26142577 60 spam Lord!Lord@geeknode.fuckyeah :*www.icq-net.eu*
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f74216dfd30

Et surtout ils donnent une commande avec un id pour le supprimer facilement \o/.

Joie et Félicité.

Bon bha voilà, l'article avait un peu d'intéret quand même (plus pour moi que pour vous car je n'arrive vraiment pas à mémoriser cette syntaxe et ce truc pour virer les anciens spamfilters).

Tiens et tant qu'à y être, pour les curieux qui se demandent à quoi ça ressemble quand un spamfilter se déclenche :

11:16:29   united.geeknode.org  -- │ united.geeknode.org: [Spamfilter] lorddl!lorddl@LFbn-1-7920-9.w92-167.abo.wanadoo.fr matches filter '\ [lL1][oO0][dD][eE3]\ ': [PRIVMSG #testage: 'lode lode lode'] [l0de spammer]

On voit sur quel serveur était connectée la personne, son identité, la regex qui a déclenché, le message qu'elle a envoyée et enfin le message envoyé comme raison.

C'est pour ça que si ça déclenche, vous risquez de voir apparaitre des ircop quelques temps après ;-)

Firefox : Project Fusion - Remplacer le Tor Browser

Ha bha enfin une bonne décision de la part de Mozilla concernant Firefox !

Le Project Fusion est dans la continuité de Mozilla pour rerendre Firefox sexy. Après les perfs en remodelant toute la partie sous le capot, c'est maintenant la sécurité qui revient sur le devant.

Depuis des années il existe le Tor Browser qui est un fork de Firefox avec de nombreuses modifications pour améliorer tout ce qui a attrait à l'anonymat et tout ce qui est protection de la vie privée. Ce fork était geré par l'équipe de Tor depuis des années et représentait une importante masse de boulot pour pouvoir suivre le rythme de Firefox et s'assurer que tout continue de fonctionner tout en ne leakant pas plus de données.

Donc maintenant que Firefox tente de regagner désespérément des parts de marché, ils se sont rendu-compte qu'inclure des fonctionnalités du Tor Browser dans le vrai Firefox serait un argument marketing intéressant. Tant mieux ! Du coup il va y avoir pas mal de collaboration entre les deux équipes. Le but explicite est de rendre le Tor Browser obsolète.

Bref on devrait bientôt avoir pas mal de fonctionnalités assez poussées mais dans un enrobage bien pensé pour les non-techos.

Quelques fonctions à venir :

  • Meilleure résistance aux fingerprintage
  • Intégration à Tor
  • Le private mode sera boosté aux hormones

Bref avec un peu de chance ça sera une très bonne chose pour tout le monde. Avec un peu de bol ils gagneront quelques parts de marché histoire de mieux résister au vilain Chrome.

Voilà l'annonce officielle de la part de Tor.

Utiliser HTTP2 et le PUSH avec Nginx

HTTP2 est une nouvelle version du protocole HTTP qui améliore pas mal de points de l'original.

Tout d'abord la sécurité car la plupart des implémentations ne fonctionne qu'avec une couche de TLS qui était autrefois réservé au HTTPS.

Mais surtout les perfs ont été grandement travaillées. HTTP a été très largement utilisé pendant près de 20 ans avant que le boulot sur son successeur ne commence ce qui a laissé suffisamment de temps pour savoir où ça coinçait et donc comment améliorer le truc.

Optimisations

Compression des headers

Certaines optimisations ont été un peu controversées comme par exemple le fait de compresser les headers. Ça permet d'échanger un peu moins de données mais la contrepartie est que ce n'est plus un vrai protocole texte.

Pour info, un protocole texte échange des données uniquement sous forme de texte ce qui permet à un humain de facilement pouvoir le comprendre contrairement à une machine qui devra bosser un peu plus. L'argument de savoir si un protocole texte est bien provoque de nombreux débats depuis pas mal d'années.

Multiplex

Un autre point d'amélioration de HTTP2 est le multiplexage des données. Auparavant chaque ressource récuperé par le navigateur nécessitait l'envoi d'une requête au préalable dans une nouvelle connexion TCP. HTTP1.1 a ajouté le PIPELINING ce qui a permis de réutiliser la même connexion TCP pour plusieurs requêtes et réponses. Le gain était déjà énorme mais il fallait toujours une requête, avec une réponse distincte pour chaque ressource, le tout dans une seule connexion TCP. Malheureusement cette technique n'était pas utilisé dans tous les cas voire était rare. HTTP2 lui apporte le Multiplex qui permet de faire à peu près pareil mais encore plus efficace. Dans une seule requête, un client peut demander plusieurs ressources différentes et toutes les recevoir dans une seule réponse.

Cette technique a rendu obsolète certains bidouillages mise en place avec HTTP1 tel que le sharding qui consistait à répartir les ressources sur de nombreux domaines différents pour forcer le navigateur à ouvrir plusieurs connexions simultannées. Maintenant, une seule connexion est préferrable plutôt que plusieurs.

Mais pour aller encore un peu plus loin, il existe aussi le PUSH.

Push-toi de là !

Lorsqu'un client va demander une ressource, le serveur web va envoyer le document voulu, mais il peut également en envoyer d'autres qui lui semblent pertinent.

Le client reçoit les données avant même d'en avoir fait la demande ce qui permet (si c'est bien utilisé) de ne pas avoir à demander cette ressource et donc de pouvoir l'utiliser plus vite.

Par contre, vous vous doutez que si le serveur s'amuse à envoyer un fichier inutile, le client n'utilisera pas ce fichier et du coup vous aurez consommé de la bande passante pour pas grand chose…

Et dans le Moteur X ?

H2

Pour utiliser HTTP2, pas grand chose à faire dans votre conf nginx. Dans le block server vous devriez avoir un listen (ou plus). Sur celui concernant le port 443, ajoutez http2.

C'est tout.

PUSH

Nginx sait pusher du contenu depuis la version 1.13.9 sortie en Février 2018. Je me suis empressé de le mettre en place et de faire quelques tests.

Bon du coup dans bloc de type location, depuis l'endroit où vous voulez pusher votre contenu, il va falloir rajouter un simple :

http2_push /css/neodark.css;
    http2_push /favicon.ico;

Et hop votre fichier css et votre favicon seront envoyés.

Si votre site est simple, ça sera vite torché, mais si vous avez pas mal de trucs ça va vite être chiant. Et là vbrandl va vous sauver avec son générateur de conf nginx. Vous lui donnez une page web, vous lui dites quels types de ressources vous voulez push, il vous choppe les liens et vous transforme ça en bout de conf nginx à copier/coller.

Et maintenant pour vérifier que ça marche soit vous utiliser les devtools de chromium qui vous indiques (dans performance) si c'est issu d'une requête ou d'un push. Ou bien si vous voulez un truc plus simple vous avez http2-push qui est un ptit site ouaib permettant de tester une URL.


Voilà vous allez probablement pouvoir grapiller quelques ms sur l'affichage de votre site ouaib avec ça. C'est en place depuis déjà plusieurs jours ici sans soucis, j'ai pas constaté d'augmentation de la conso de bande passante (j'ai été prudent sur les push).


PS :

Comme signalé par Buzut, si vous mettez le push comme indiqué dans l'article, à chaque requête les ressources seront poussées au visiteur ce qui n'est pourtant utile que la première fois. Il est possible de gérer ça en utilisant un cookie et de ne pusher que lorsque le cookie n'existe pas comme c'est montré sur l'article nginx à ce propos.

Ce qu'il se passe quand on envoie un mail

On m'a soufflotté dans l'oreille que ce sujet pourrait être intéressant. Et effectivement ça l'est. Enfin… si on s'y intéresse… Bref…

Quelles sont les étapes qui se passent, par où va transiter les données. Voyons tout ça.

Pour l'exemple, je vais aborder le cas suivant :

Un mail envoyé depuis un client mail type thunderbird via mon serveur auto-hébergé vers un utilisateur gmail.

1 - Rédaction du mail

La partie la plus normale consiste donc à rédiger le texte de votre email. Il s'agit des données à proprement parlé.

C'est un simple texte ce qu'il y a de plus basique ou bien du texte au format HTML. Dès lors que vous ajoutez du formattage à votre texte (du gras/italique/couleur/taille de police/…) c'est du HTML. De lui même, l'éditeur de texte va donc transformer votre texte vers le format HTML pour apporter toutes ces subtilités. Votre destinataire va donc de voir "interprêter" ce texte HTML pour l'afficher avec parfois des résultats différents selon le logiciel.

Au passage, lorsqu'on rédige un mail en HTML contenant des images, celles-ci ne sont pas incluent à proprement parlé il ne s'agit que de liens. Votre lecteur de mail va suivre ces liens pour au moment de la lecture pour vous afficher les images.. C'est un moyen de voir si les mails sont consultés ou non et d'éventuellement vous profiler (en envoyant une adresse unique à chaque mail). Il est donc préferrable de désactiver l'affichage automatique des images dans les mails.

2 - Ajout des pièces jointes

Étape que l'on réalise généralement lors d'un second mail de type “Oups voilà les pièces-jointes oubliées précédemment”.

Le mail est un protocole de type texte. Cela veux dire que toutes les informations transportées le sont sous forme de texte, aussi bien les métadonnées que les données. Il faut donc transformer votre fichier en texte avec le codage base64 qui consiste en 64 caractères alphabetiques permettant de coder n'importe quelles données.

Cependant, c'est loin d'être optimisé :

cat 99-ce-quil-se-passe-quand-on-ouvre-une-page-web.md| base64 | wc -c
23939
cat 99-ce-quil-se-passe-quand-on-ouvre-une-page-web.md| wc -c
17720

Un même fichier une fois passé en base64 est près d'un tier plus lourd que l'original. Cela explique pourquoi certaines fois des fichiers juste en dessous de la limite de taille maximale ne passent pas.

3 - Ajout des méta-données utilisateurs

Bon votre mail contient votre texte et d'éventuelles pièces-jointes, c'est chouette mais ça va pas aller bien loin. Il faut donc un destinataire, voir plusieurs destinataires cachés ou non. Vous allez aussi mettre un sujet à votre mail. Et dans certains cas indiquer quelle est l'adresse d'envoi (si vous en avez plusieurs) et/ou de retour.

Ce sont les méta-données que vous entrez manuellement.

Mais ce ne sont qu'une partie des méta-données du mail puisque votre logiciel va en rajouter ainsi que les différents serveurs qui traiteront votre mail.

4 - Connexion vers le serveur d'émission

Bon bha ça y est vous avez cliqué sur le bouton d'envoi et du coup votre logiciel va commencer à parler à une autre machine !

Votre client mail est appelé un MUA pour Mail User Agent dont le boulot est de converser avec un MTA pour Mail Transfert Agent qui lui est chargé de réellement envoyer/recevoir des mails. Votre client mail donne tout simplement le mail fraîchement préparé au serveur SMTP qui lui a été configuré, en parlant le protocole SMTP (certains logiciels apellent ça serveur d'envoi).

Le protocole SMTP est également un protocole texte assez ancien (plus ancien que le web) mais a connu quelques évolutions comme notamment l'authentification et le chiffrement). Historiquement le port utilisé était le 25 mais c'est généralement le port 587 qui est désormais utilisé dans le cas d'envoi de mail. À l'usage il s'est créé une distinction entre l'envoi de mail et la réception.

Un serveur de mail n'avait pas de notion d'envoi de mail mais juste de transfert, en gros il reçoit un mail sur le port 25 sans savoir si ce mail provient d'un autre serveur de mail ou s'il provient d'un logiciel d'envoi de mail. Avec le temps on a rajouté de l'authentification pour l'envoi de mail ce qui nécessite un traitement différent et donc un port différent.

À noter que certains FAI bloquent les connexions vers le port 25 aussi bien dans un sens que dans l'autre, à des fins de luttes contre le spam. Ce blocage est dans le meilleur des cas débrayable et parfois non, ce qui vous empêche d'utiliser un serveur mail autre que celui de votre FAI.

Dans notre exemple, thunderbird se connecte donc à notre serveur de mail auto-hébergé (dans mon salon, donc sans requête DNS).

4.1 - Connexion TCP vers le serveur d'émission

Mon serveur est configuré de sorte qu'un mail émis depuis une de mes adresses perso ne peut se faire que s'il y a authentification. Il faut donc se connecter au port dit de soumission (puisque on y soumet notre mail) c'est à dire le port TCP 587.

Pour l'instant c'est donc dans mon réseau local. Je ne part pas tout de suite sur le réseau des réseaux. Il s'agit d'une connexion TCP classique en trois parties : “Connexion ?”, “Ok tu peux te connecter.”, “Merci, on est connectés.”.

4.2 - Chiffrement de la connexion

Même s'il s'agit d'une connexion sur mon réseau locale, vu qu'il y aura authentification, je préferre chiffrer la connexion. Déjà parceque ça ne mange pas de pain et ensuite ça permet d'avoir la même chose aussi bien en local qu'en distant via un réseau non sûr.

D'ailleurs de manière globale, ne considérez aucun réseau comme sûr, une machine vérolée volontairement ou non est si vite arrivée…

4.3 - Auth

Bon la connexion est désormais sûre, il ne reste plus qu'à Thunderbird de vous identifier via les identifiants/mot de passe configurés. Cette étape permet au serveur d'émission de n'accepter des mails en votre nom que si les identifiants sont bons pour éviter l'envoi de spam dans votre dos.

Si l'une des deux étapes précédentes échoue, votre serveur vous enverra probablement bouler sans ménagement et coupera la connexion TCP ce qui vous gratifiera d'un joli message d'erreur dans votre Thunderbird.

5 - Vérifs de base antispam avant émission

Internet c'est la jungle et je pense que vous connaissez tous à peu près l'ampleur du spam. Bref tout le monde tente de s'en protéger le plus possible. Ne pas recevoir de spam c'est bien, ne pas en envoyer soi même c'est mieux ! Si votre serveur a la malheur d'en envoyer vous serez très vite blacklisté de partout il vous faut donc vous protéger pour ne pas finir en tant qu'Open relay.

Bon déjà on s'est authentifié, c'est le minimum syndical.

Ensuite il existe tout plein de petits réglages sur le serveur afin de limiter les possibles fuites. Ce sont principalement des ptites restrictions sur les adresses IP autorisées à se connecter ou bien quels domaines sont autorisés à envoyer du mail… Bref rien de bien méchant, c'est du vite vu par le serveur.

Il est même possible de faire passer le mail sortant dans un antispam mais je ne l'ai pas mis en place personnelement mais sachez que c'est possible afin de vraiment s'assurer que ses utilisateurs n'envoient pas de spam. Sur une installation conséquente c'est quasiment indispensable pour ne pas transmettre du spam à la première machine vérolée.

Dans un second temps, le mail va être signé par le serveur d'émission en fonction du domaine d'émission du mail : il s'agit du DKIM le Domain Key Identified Mail. C'est une signature qui atteste que le mail provient bien du serveur de mail autorisé par mon nom de domaine (dans mon serveur DNS, j'ai annoncé que les mails provenant de mon domaine sont signés par telle clé). Contrairement à GPG, cette signature vaut pour tous les mails du domaine, ils ne chiffrent pas le message et ne garantissent pas de l'identité de l'émetteur mais l'identité du nom de domaine d'émission. Toutes les personnes utilisant le même nom de domaine pour émettre leur mail auront la même signature.

Qui plus est cette signature atteste de l'intégrité du mail : il prouve qu'à partir de votre serveur d'émission jusqu'à la lecture, le mail n'a pas été modifié. (Par contre entre le logiciel rédigeant le mail et le serveur d'envoi par contre pas de certitude mais c'est généralement un segment de confiance.)

Bref, cette signature sera placée dans l'entête du mail et sera utilisée par les serveurs intermédiaires et finaux afin de vérifier que votre mail soit bien légitime. Elle ne sert pas directement aux utilisateurs et n'est donc que rarement montrée. Cette signature atteste uniquement de l'authenticité du serveur d'émission et de l'intégrité du mail à partir du serveur d'émission. Elle ne prouve rien concernant l'utilisateur lui même, uniquement le serveur !

Si tout se passe comme il faut, votre mail est donc consideré comme légitime par votre serveur de mail et est donc signé. Votre serveur de mail va donc transferer ce mail au serveur du destinataire

6 - Trouver le serveur de destination

Bon, votre mail est donc prêt à partir, mais à partir où ? Votre serveur de mail va donc trouver quelle machine gère les mails de votre destinataire et qui qui c'est qui doit faire ça ? C'est le DNS !

Bon truc@gmail.com ça veux dire l'utilisateur truc sur le domaine gmail.com, ça devrait être plutôt simple pour le moment. Du coup votre serveur de mail va demander aux serveurs DNS “À quelle machine je dois me connecter pour envoyer des mails pour gmail.com ?” ce qui correspond à “Quels sont les enregistrements MX pour gmail.com ?”

Les MX records sont donc les machines en chargent de la réception du mail : un ptit dig gmail.com in MX

; <<>> DiG 9.12.1 <<>> gmail.com in MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48789
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gmail.com.                     IN      MX
;; ANSWER SECTION:
gmail.com.              3581    IN      MX      5 gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      10 alt1.gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      20 alt2.gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      30 alt3.gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      40 alt4.gmail-smtp-in.l.google.com.
;; Query time: 0 msec
;; SERVER: 10.0.0.254#53(10.0.0.254)
;; WHEN: Wed May 23 15:48:51 CEST 2018
;; MSG SIZE  rcvd: 161

Donc là on voit que pour gmail il y a cinq réponses indiquant donc 5 machines à contacter par ordre de priorité du plus petit au plus grand. Je vais donc devoir tenter de me connecter à gmail-smtp-in.l.google.com. et si cette machine ne répond pas je passe à alt1.gmail-smtp-in.l.google.com. et ainsi de suite. C'est un système qui permet d'avoir plusieurs machines redondantes assez facilement (si seulement un même mécanisme était utilisé pour d'autres protocoles comme le HTTP…).

Bon c'est bien gentil mais c'est une demi réponse ça, il me faut une adresse IP, il faut donc faire une requête DNS pour connaitre l'adresse IP de gmail-smtp-in-l.google.com., ce qui va me donner 74.125.133.27.

Si jamais le domaine à qui vous tentez d'envoyer un mail ne possède pas de MX record, votre serveur tentera de se connecter directement à l'adresse IP rattaché au domaine directement. Mais bon il faut vraiment être un très mauvais administrateur pour ne pas mettre de MX record à un serveur de mail.

Comme d'habitude on peut voir que le DNS est toujours un point sensible pour la confidentialité et que le choix d'un résolveur DNS peut avoir d'importantes conséquences pour le respect de la vie privée.

7 - Interconnexion des serveurs émission/réception

Allez hop, votre serveur d'émission va se connecter donc au serveur de réception pour transmettre votre mail. Une connexion TCP va être établie et parfois ça sera chiffré, parfois non. Globalement le chiffrement progresse énormément ces dernières années au point d'être quasi systématique.

Il va quand même falloir montrer patte blanche pour prouver que vous n'êtes pas un vil spammeur.

La base de la base c'est de parler le protocole SMTP correctement. Certains spammeurs utilisent des logiciels pas très très respectueux du standard et se font repérer et dégager facilement.

Votre serveur va donc transferer votre mail donc avec ses méta-données et les données. Et ensuite bha le serveur de réception fait un peu ce qu'il veut.

7.1 Greylisting

Une méthode très efficace de virer du spam est de faire du greylisting. Le serveur de réception va dire “Je suis pas dispo réessaye plus tard”. Et cinq minutes plus tard votre serveur d'émission va retenter et ça marchera.

La plupart des spammeurs se découragent facilement (ça leur permet de ne pas perdre de temps à retenter…) mais les mails légitimes, eux, retenteront. Cela engendre par contre un délai de quelques minutes dans la réception des mails mais rapelez-vous : Les mails ne garantissent absolument pas de délai de livraison ! Avec un peu de chance ça sera dans quelques secondes mais rien dans le protocole n'empêche de le livrer quelques jours plus tard sans aucun message d'erreur ou autre.

Il me semble que cette technique n'est pas employée par Gmail mais assez courante chez les auto-hébergeurs du fait de son efficacité redoutable.

7.2 Différentes vérifications

Chaque serveur possède des règles différentes pour l'acceptation des mails.

Certains ne font que le strict minimum (c'est à dire vérifier que le destinataire existe bien), d'autres imposent des tailles maximales pour les mails, d'autres utilisent des systèmes de réputation… Chacun fait sa tambouille.

Dans les grands classiques on trouve la consultation de listes noires publiques via le DNS, ce que l'on apelle les DNSBL. On y vérifie que l'adresse IP de votre serveur d'envoi n'est pas présent dans cette blacklist. C'est donc potentiellement encore un endroit potentiel de fuite d'information : votre mail n'est pas envoyé aux fournisseurs de DNSBL, juste l'ip de votre serveur, ce qui peut être couplé avec l'ip du serveur de réception faisant la requête DNS. Le risque est minime cela-dit.

Vous obtiendrez parfois un mail de réponse de la part de Mailer Daemon vous indiquant pourquoi (ou pas) votre mail à été rejeté et ce mail peut prendre jusqu'à une semaine pour arriver…

8 - Fin de l'émission

Bon bha ça y est votre serveur d'émission a fini son boulot et donc maintenant le destin de votre mail n'est plus entre ses mains. Votre serveur peut couper la connexion et se rendormir paisiblement.

Voyons donc ce que fait le serveur de réception désormais.

9 - Antispam

9.1 SPF

Le serveur de réception va faire la vérification du SPF qui permet de s'assurer que le serveur qui a émit le mail est bien autoriser à émettre des mails. Pour cela, le serveur de réception va faire une requête DNS particulière qui lui donnera la liste des serveurs autorisés à émettre des mails pour votre domaine. Si le serveur d'émission ne fait pas parti de cette liste, votre mail sera rejeté pour soupçons de spam. Encore une fois, le DNS va être utilisé.

Il y a encore un potentiel de fuite d'information : le serveur de mail réceptionnant votre mail enverra une requête à son serveur DNS lui indiquant de vérifier quels sont les machines autorisées à envoyer du mail pour tel domaine. Le serveur DNS peut donc deviner que votre domaine à envoyer un mail à tel autre domaine.

9.2 DKIM

Tout à l'heure, votre serveur a ajouté une signature DKIM sur votre mail et maintenant le serveur de réception va la vérifier. Ça permet de s'assurer que le mail reçu provient bien de votre serveur de mail. Donc le serveur de réception regarde le mail, et vérifie que la signature correspond bien à ce qui se trouve dans l'enregistrement DNS du DKIM. Seul votre serveur peut créer une signature valable pour votre domaine.

En gros SPF assure que le serveur a le droit d'envoyer des mails et DKIM prouve que le mail provient bien du domaine. C'est deux technique complémentaires permettant de limiter l'envoi de spam en votre nom.

Si en 2018 vous n'avez pas de SPF et de DKIM fonctionnel, vos mails finiront quasi-systèmatiquement dans les spams, à juste titre. Là encore le DNS joue un grand rôle et se trouve être une potentielle fuite de données.

9.3 Antispam basique

Encore un peu d'antispam mais ce coup-ci ça se base non plus sur le serveur d'émission mais sur les méta-données et les données du mail lui-même.

le mail va être analysé selon pleins de critères variés.

  • Est-ce que la date d'émission est crédible ?
  • Est-ce que ça parle pas un peu trop de pognon ?
  • Est-ce que ça utilise des caractères louches ?
  • Est-ce que les entêtes correspondent bien ?

C'est aussi bien des points techniques que des points plus "humains". À chaque réponse on obtient un score positif ou négatif.

9.4 Filtre Bayésien

Là on pousse encore un peu plus l'antispam en faisant une analyse statistique sur les mots présents dans le mail.

Si votre mail insiste un peu trop sur la longueur des membres, ou bien s'attarde un peu trop sur d'éventuels gains financiers ou tout autre sujet à la mode, le filtre Bayésien va reconnaître des motifs récurrents et encore une fois attribué un score de probabilité.

On cumule ce score à celui précédemment obtenu et à la fin on fait le compte et le résultat final détermine si c'est un spam ou non.

En fonction de ce score le mail sera soit supprimmé, soit placé dans les spams, soit aura le droit d'arriver dans la boîte du destinataire.

Ici le logiciel antispam a accès au mail complet. Cela pourrai poser un soucis de confidentialité cependant ce filtre n'est pas sous-traité à ma connaissance. Bon bha finalement on me signale que si certaines entreprises sont spécialisées dans l'antispam et reçoivent donc les mails en live pour les analyser et délibérer si oui ou non il s'agit d'un spam, donc c'est encore une fois une fuite potentiel pour votre mail.

10 - Livraison locale

Le serveur du destinataire a donc accepté le mail et effectué tous ses tests d'antispam, il faut donc maintenant transférer le mail au LDA, le local delivery agent. Ce logiciel a pour but de ranger et stocker le mail.

Son rôle premier est donc de trouver à qui le mail doit être livré (il peut y avoir des alias ou des redirections par exemple).

Son second rôle ensuite est de ranger le mail au bon endroit en fonction de règles définies par le service mais qui peuvent également être écrites par l'utilisateur. Par exemple le mail va être classé dans les newsletters ou bien vous avez créez une règle pour indiquer que tous les mails en provenance de tel utilisateur doivent être placés dans un dossier prédifini.

Mais n'oublions pas que le mail est à destination de Google. Il est donc fort probable qu'en interne l'architecture de Gmail soit très complexe et ne soit pas un seul petit serveur mais bien une armada complète pour le stockage (redondant et backuppé) avec répartition de la charge pour pouvoir supporter des millions d'utilisateurs mais cette partie est trop complexe pour cet article.

Bon il y a tout de même une étape cruciale encore.

11 - Indexation

Le but de Google est, comme tout le monde sait, d'aider à chercher dans vos mails. Non pas vous aider vous, mais aider les clients de Google. En tant que marchandise vos mails sont donc lus et analysés et un profil est établi en fonction de tous vos mails. Vous êtes donc placé dans différentes cases en fonction de votre courrier.

Vous êtes inscrits sur tel site, vous prenez des vacances à tel endroit, vous conversez avec telle personne, vous vous êtes abonnez à tel newsletter, vous supprimmez systèmatiquement les mails de telle origine, vous effectuez régulièrement des achats sur tel site…

En bonus toutes ces informations permettent à gmail de vous afficher rapidement les résultats de recherche dans votre montagne de mail.

Bref ce service coûte très cher mais par chance est très facilement rentabilisé par Google.

12 - Consultation

Bon bha maintenant votre destinataire va vouloir lire votre mail, Gmail étant un webmail avant tout, votre utilisateur va devoir ouvrir la page avec son navigateur web et se tapper toutes les étapes classiques. Le webmail a le rôle de MUA ici.

Et voilà ! On y est arrivé.

TL;DR

Chemin d'un mail : MUAMTAMTALDAMUA Avec dans quelques cas des risques de fuites de données de votre mail (surtout du côté des DNS et des MTA).

Si vous vous autohébergez, vous pouvez à peu près garantir les deux premières étapes pour la confidentialité de votre mail tout au mieux. Si vous ne vous auto-hébergez pas vous ne pouvez garantir que la première étape au delà … bha … bonne chance.

Si vous voulez mieux, il va falloir chiffrer votre mail ;-)

Remplacer Groovebasin par MPD

Voilà maintenant des années que j'utilise le logiciel Groovebasin pour écouter de la musique. C'est un lecteur audio web. Ça veux dire qu'il faut utiliser un serveur web, et un navigateur web pour pouvoir l'utiliser. Ça a de sacrés avantages tel que la disponibilité de votre bibliothèque numérique de partout. De reprendre la lecture là où vous en étiez, pouvoir contrôler la lecture depuis une autre machine.

Mais au final ça a ses inconvénients : il faut passer par un navigateur web, ce qui est assez lourd. L'intégration dans le reste du système est compliquée : pas facile de faire des hotkeys pour le contrôler à distance. Et puis il ne gère pas les notifications du coup pas moyen de voir le titre de la nouvelle chanson qui démarre sans aller chopper la page web.

J'ai utilisé pas mal d'alternatives : Subsonic qui est très similaire mais moins bien globalement sauf pour la partie application android (qui gère la création d'un cache offline entre autre). J'ai également testé Ampache il y a très longtemps et ça m'avait moyen convaincu. J'ai utilisé quelques temps MOC qui est un player audio en console que j'aimais bien mais du coup on perd toutes les features qu'apporte un player web. Et encore plus longtemps avant j'ai utilisé foobar2K sur windows et encore un peu avant Winamp.

Bon du coup… vers quoi me tourner ?

MPD

Music Player Daemon est un projet qui est maintenant assez connu de part son âge. Il était particulièrement novateur à l'époque dans son concept d'avoir un serveur musical. C'est une approche pas trop éloigné des players web à la différence que c'est pas du web.

On a donc des clients MPD dédiés plus ou moins variés dont un certains nombre en console. On peut donc manipuler le serveur avec de nombreux programmes différents, du plus basique (mpc) à d'autres plus lourdingues avec de vrais interfaces graphiques en GTK+ ou QT… Bref il va forcément y avoir un truc qui va me plaire !

NCMPCPP

Mon premier réflexe a été de chercher un client console. Après tout j'ai l'habitude de manipuler quasiment tous mes softs dans des terminaux désormais et puis bon… jouer de la musique ne nécessite pas d'interface graphique.

Ayant déjà fais mumuse avec la bête il y a quelques années, je me suis retourné vers ncmpcpp qui est l'un des clients consoles les plus réputés.

Et bhé… J'aime pas trop trop. Je trouve l'interface étrange : par défaut on tombe sur la playlist mais du coup si l'on veux rajouter une chanson à la playlist là commence la bataille. Il faut aller dans la bibliothèque. Trois choix possibles, la première c'est Browse / qui affiche l'arborescence de fichier, la seconde est le Search engine et enfin la Media Library. Et c'est là que je commence à râler.

Ptain que l'interface est désagréable ! Si l'on va dans l'arbo de fichier, on cherche une chanson, et si on a le malheur d'appuyer sur Entrée paf ça vous la fout en fin de playlist et ça passe dessus… Mais heuuu pourquoi ce comportement ? Ça serait compréhensible que ça la foute en fin de playlist mais sans la jouer tout de suite, parcequ'une fois la chanson finie bha la playlist est finie. Ou alors ça la fout à la place du morceau courant du coup la suite de la playlist est pas impactée. Bref un choix bien étrange.

Toujours dans la catégorie interface étrange, le Search engine est d'un lourdingue. Là on peut faire une recherche globale ou alors rechercher uniquement dans un tag précis des fichiers (genre que dans les "artists" ou que dans les "albums") ce qui est vraiment bien. Par contre pour lancer la recherche faut descendre tout en bas de la liste de choix possible pour aller sur *Search*… Ptain habituellement les interfaces textes sont tellement plus efficaces. Et encore une fois gare à vous ! Si vous avez le malheur d'appuyer sur Entrée, rebelotte ça vous le fout en bas de playlist et ça passe dessus : la plaie. Si vous voulez l'ajouter dans votre playlist actuelle faut appuyer sur a, là s'ouvre un fenêtre vous demandant dans quelle playlist, puis ensuite une autre fenêtre pour savoir où la placer dans la playlist. Beaucoup trop d'étape pour une action aussi basique.

Et c'est pareil pour la Media library, au moins l'interface est cohérente dans sa lourdeur.

PMS

J'ai vite fait testé un autre client pour MPD du nom de PMS qui est plus récent que le vénérable ncmpcpp et qui est actuellement en train de subir une réécriture en Go. J'ai donc testé la version classique avant réécriture qui est annoncé comme stable et pour l'instant avec plus de fonctionnalité et pour faire vite j'ai pas aimé l'interface non plus. Et puis la doc est … déplorable. Pas réussi à faire ce que je voulais simplement du coup j'ai capitulé en voyant la non-doc.

J'ai un peu trop pris mes habitudes avec Groovebasin. La migration vers autre chose est donc difficile. Va falloir que je me décroute et du coup avec l'aide du Fediverse, j'ai décidé de prendre le taureau par les cornes.

SMPCD

Du coup j'ai fait un ptit cahier des charges :

  1. Je veux pas que la musique s'arrête pour cause de playlist vide
  2. Je veux pouvoir revenir au morceau précédent et ptet celui d'avant aussi et aussi au précédent…
  3. Je veux pouvoir le contrôler via des raccourcis claviers
  4. Je veux des ptites notifs quand ça change de morceau avec le titre/l'auteur
  5. Je veux un truc super léger

Bon bha en fait tout rentre dans un simple script shell. MPD propose MPC qui est une interface en ligne de commande basique mais qui a accès à toutes les fonctionnalités de MPD. Si c'est pas faisable dans MPC, c'est que MPD peut pas faire.

Allez c'est parti pour ce dimanche maussadee !

Vérifier que MPD tourne

CheckMPD(){
  if [ ! $(pgrep -x mpd) ]; then
    timeout 3 i3-nagbar -m "MPD ne tourne pas"
    exit 1
  fi
}

Cette partie est ultra simple, si le daemon ne tourne pas on quitte

La boucle qui fait tout

Loop(){
  while true
  do
    CheckMPD

    if [ $(mpc playlist | wc -l) -lt 30 ]; then
      mpc findadd Title "$(mpc list Title | shuf -n 1)"
    fi

    if [ $(mpc current -f %position%) -gt 15 ]; then
      mpc del 1
    fi

    mpc idle player
    flock -nF /tmp/mpdnotif.lock -c 'mpc current -f "%title% - %artist%" | timeout 8 dmenu -g' &
  done
}

Voilà la bête. Au final c'est ultra simple, d'abord on lance une boucle infinie avec le while true. Dans cette boucle d'abord on lance la fonction décrite précédemment histoire de pas mouliner pour rien.

Ensuite le premier if s'assure que si la playlist fait moins de 30 morceaux de musique d'en rajouter un au hasard depuis la bibliothèque.

Le second if lui veille à ce que si l'on dépasse le quinzième morceau de la playlist de virer le premier morceau de la playlist. Ça évite de garder un historique des morceaux passés trop long.

Après se trouve le mpc idle player qui permet d'attendre que MPD fasse une action au de type player ce qui correspond à passer au morceau précédent/suivant ou juste faire une pause/reprendre. Ça évite de faire un sleep dans la boucle.

Et enfin le flock permet de mettre un vérou (dans /tmp) pour éviter de lancer plusieurs fois simultanément la commande qui suit. Sans ça, lors d'une frénésie de passage à la chanson suivante on se retrouve avec pleins de notifs de morceau suivant. Et pour afficher la notif j'ai rusé, j'ai utilisé dmenu avec la commande timeout. timeout permet de lancer une commande pendant quelques secondes puis de l'interrompre. Dans mon cas je lance un dmenu à qui j'ai passé les informations depuis mpc current.

DMENU MPD

Dmenu est amour et des gens ont déjà bidouillé des scripts pour manipuler MPD via dmenu. Mais globalement c'était soit overkill soit pas tout à fait ce que je cherchais. Du coup j'ai fait mon mien qui est ultra simple :

#! /bin/sh
mpc listall | dmenu -i | mpc insert

Ouai c'est ultra basique. Le but est juste de lister tous les morceaux dispo dans la bibli et de pouvoir en chercher un et de l'ajouter à la playlist. Il suffit d'ajouter un ptit raccourcis pour lancer ça depuis i3 et le tour est joué.

Adaptation de Dmenu

J'adore dmenu, c'est un outil formidable. Je m'en sert pour pleins de trucs comme lancer des commandes, pour récupérer mes mots de passe, pour lancer mes films, pour contrôler la musique et aussi pour les notifs. Le souc c'est que pour les notifs… bha ce couillon il choppe le focus du clavier. Du coup à peine lancé vous vous retrouvez "coincé" dans dmenu.

Du coup au début j'ai fouillé dans la doc i3 pour contrer cette habitude. J'ai aussi demandé sur leur salon irc mais pas de bol c'était l'heure de la sieste. Du coup j'ai cherché plus globalement sur le net mais rien de bien probant.

Et si en fait c'était pas du fait d'i3 mais de dmenu lui même ?

Allons voir un peu le code de dmenu. Je sais que c'est du C et je n'ai que de vagues notions de C mais bon c'est made in Suckless, ça devrait être concis.

Un ptit tour dans /usr/portage/distfiles/ et un cp plus tard et me voilà avec le code de dmenu. 17 fichiers ! Ça va je devrais pouvoir m'y retrouver.

Commençons direct par le dmenu.c qui fait 750 lignes. Bingo, visiblement c'est quasiment tout le code de dmenu qui reste plutôt lisible même pour un noob de mon genre.

Bon va quand même falloir un peu fouiller. Je commence par chercher focus qui n'a que 11 occurrences. Il y a des trucs qui paraissent pas mal et je vois que ça parle de grabfocus(). Intéressant !

Cherchons un peu ce qu'il y a avec grab et ses 12 occurrences. Une fonction grabfocus(void) des plus pertinentes ! Et en plus en toute fin de fichier elle est appelée, à ce qui ressemble le lancement de dmenu.

Bon bha yapuka !

En début de main() il y a le parse des arguments, je rajoute une nouvelle option -g pour ne pas grab le focus, j'initialise la variable juste avant bien entendu. Et je rajoute un ptit (en vrai deux) if pour vérifier la présence de cette nouvelle variable pour ne pas appeler la fonction grabkeyboard() et voilà.

Je make et je teste. Ça marche du premier coup \o/.

Bon j'en profite pour modifier le man, et l'ajouter dans la liste des options et voilà. Je fait génère le patch et je fout ce patch dans /etc/portage/patches/x11-misc/dmenu.

Je réinstalle dmenu à la gentoo avec emerge dmenu -av et quelques secondes plus tard je teste en vrai et ça fonctionne, le man est mis à jour aussi.

Bon bha cette partie a été au final torchée en trente minutes. Finalement le C c'est facile et Gentoo est toujours aussi formidable.

Raccourcis claviers

Bon maintenant je veux pouvoir faire pause/suivant/précédent avec des raccourcis claviers. Pas de bol j'ai pas de touches multimédia sur mon clavier.

Il faudrait que je modifie un ptit coup le firmware du clavier pour en ajouter avec Fn mais j'ai un peu la flemme. Je n'ai pas conservé l'IDE arduino… Bref ça sera pour une prochaine fois.

Pour l'instant me contenterai de créer un raccourcis clavier i3 classique sur des touches non utilisées même si c'est moins propre.

Publication des codes

Pour l'instant je publie pas SMPCD (Shell Media Player Client Daemon) car je pense qu'en l'utilisant quelques jours j'y apporterai des modifs mais je le ferai vous inquiétez pas. Si jamais vous le voulez vraiment n'hésitez pas à demander.

Pour dmenu pour l'instant j'ai annoncé ce que j'avais fait sur le chan irc de Suckless sans trop de réponse donc pour l'instant ça reste chez moi. Pour les intéressés je le fout ici.

Présentation de Calls. L'appli du Librem 5 pour les appels

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Introduction

De loin, la fonctionnalité la plus critique d'un téléphone est la possibilité d'émettre et recevoir des appels via le réseau téléphonique publique en utilisant des numéros de téléphones. Même si chez Purism nous souhaitons implémenter des systèmes de communications permettant plus de sécurité et un meilleur respect de la vie privée que ce que l'on peut attendre via le réseau téléphonique publique, ce moyen est le plus utilisé pour le moment et nous ne pouvons nous permettre de vendre un téléphone ne pouvant pas téléphoner.

Mon boulot a été de coder un dialer (numéroteur) et la gestion des appels. Comme tous nos développements sur le Librem 5, le but est de réutiliser le plus de code existant possible et de viser l'intégration dans la plateforme Gnome qui est utilisée par défaut par notre PureOS. Il n'y a pour le moment pas de dialer dans le projet Gnome donc nous pousserons son adoption.

Idées initiales

Après quelques recherches, le but initial était de réutiliser le framework Telepathy, l'idée étant que nous pourrions un numéroteur utilisant le réseau publique et d'utiliser le dialer SIP car Telepathy possède déjà un gestionnaire de connexion PSTN (réseau publique téléphonique) et SIP. Qui plus est, le gestionnaire de connexion PSTN telepathy-ring est déjà utilisé dans des téléphones sur le marché. Et même si il possède quelques soucis, je trouve Telepathy vraiment génial :-)

Pour aller plus loin, mon collègue François Téchené a écrit un article décrivant un approche basé sur les fonctionnalité plutôt que sur les applications concernant l'expérience utilisateur. Telepathy pourrait fournir les fondations d'une telle approche.

Il est bon de noter cependant que Telepathy n'est pas en odeur de sainteté. De nombreuses voix parmi le projet Gnome préferraient sa mort. Telepathy est un système complexe où le moindre changement est difficile à apporter. Pour se faire, il faut synchroniser ces changements dans les spécifications de l'API D-Bus et dans une multitude de composants divers. Une longue discussion à propos de Telepathy et de son éventuel remplacement a eu lieu dans la mailing-list Gnomes's desktop-devel en Aout et Septembre 2017.

Élargissement du débat

Après avoir commencé quelques travaux préliminaires sur le code de Telepathy, étant donné que notre but est que ça devienne le dialer de Gnome, et que notre intention est d'utiliser le framework contesté qu'est Telepathy, j'ai contacté la fameuse mailing-list pour voir ce qu'ils en pensaient.

La discussion s'est penché sur les soucis généraux et la consolidation des différents systèmes de communication. La première conclusion a été que créé un système à base de fonctionnalité est pour le moins compliqué. Comme lors de la première discussion de 2017, un Telepathy-NG (nouvelle génération) serait la meilleure solution. C'est une future tâche que nous envisageront une fois les fonctions basiques déjà en place. Pour l'instant, il n'y avait aucune réticence à propos d'un dialer PSTN reposant sur Telepathy.

J'ai aussi discuté via IRC avec Robert McQueen, l'un des auteurs originels de Telepathy. Le gestionnaire de connexion telepathy-ring utilise le framework de téléphonie mobile oFono. Étant donné la difficulté d'écrire un client Telepathy, Robert suggera qu'il serait probablement plus simple de créer une interface utilisateur (UI) avec une fine couche d'abstraction implémentant d'abord un backend oFono puis, plus tard, un backend plus complexe sur Telepathy. Nous avons suivi son conseil et notre dialer adopte donc cette approche.

Bienvenue Calls

Capture d'écran montrant l'interface du dialer.

Notre programme s'appelle Calls. Il a une interface utilateur (UI) en GTK +3 et utilise oFono à travers une fine couche d'abstraction. Nous utilisons également notre libhandy pour le widget du numéroteur.

« Peut-il téléphoner ?! » Oui, il peut ! 🙂

Les rouages internes

Le diagramme est représentation à la UML de la couche d'abstraction dans Calls :

Diagramme UML de la couche d'abstraction

Les classes sont des GInterfaces. Pour vous donner une meilleure idées de la sémantique derrière chaque interface, voici un tableau des objets que les implémentations pourront utiliser :

Interface objets d'implémentation
Provider oFono Manager, Telepathy Account Manager
Origin oFono Modem/VoiceCallManager, Telepathy Account
Call oFono VoiceCall, Telepathy Channel

Le nom “Origin” a été choisi puisqu'il s'agit de l'objet à l'origine d'un appel.

La super-interface MessageSource est utilisée pour traiter les messages de l'utilisateur. La couche d'abstraction est une fine couche pour l'UI donc l'implémentation est amenée à afficher des informations, comme des erreurs ou des warnings ou autre, d'une manière appropriée pour l'utilisateur. Même si les méthodes ne renvoient pas d'erreurs d'information mais à la place s'attendent à ce que l'implémentation fournissent des signaux de type messages.

Le code source est disponible dans gitlab Gnome de notre repo community.

Modems, oFono et ModemManager

La démo d'en haut utilise un modem SIM7100E de chez SIMCom que vous pourrez voir monter sur notre board prototype avec la bordure rouge en bas à droite de l'écran. Comme la plupart des modems cellulaires, il supporte à la fois les commandes AT ainsi que les QMI.

Lorsque le SIM7100E a été branché pour la première fois, oFono ne le reconnaissait pas. Cependant, il existe un second framework de téléphonie mobile, ModemManager qui l'a reconnu et pouvait passer des appels, envoyer des SMS et faire des connexions de données out of the box. Nous avons alors considérer de l'utiliser à la place d'oFono mais malheureusement, le support des appels audio est rudimentaire et ne supporte pas les services additionnels comme la mise en attente ou les conférences.

Alors que QMI est préferrable aux commandes AT, oFono ne supporte pas les appels via QMI. Donc pour pouvoir faire des appels vocaux, nous avons besoins d'un nouveau driver pour le SIM7100E utilisant les commandes AT. Ce drive a été upstreamé (partagé à la communauté).

Ensuite

Nous avons abattu un certain travail jusqu'à présent mais il reste de nombreuses tâches à accomplir.

  1. Ajouter des sonneries. Pour le moment le programme ne joue aucun son lors d'un appel entrant. Il va falloir également jouer les tonalités DTMF quand l'utilisateur composera des numéros.
  2. Implémenter un journal d'appel et son intégration avec Gnome Contacts. Pour l'instant Calls ne journalise rien, nous avons donc besoin d'un format de stockage ainsi qu'une UI. Nous devons également être capable de chercher des contacts depuis Calls et ajouter des contact depuis le journal d'appel.
  3. L'UI est simple mais fonctionnelle. Nous sommes bien loin du niveau de finition que nos designers envisagent. De nombreux efforts pour retravailler et polir l'interface seront nécessaires.
  4. Implémenter les réglages téléphoniques dans Gnome Settings. Nous avons besoin d'une nouvelle page pour les réglages spécifiques comme la sélection du réseau mobile et autres.
  5. Gérer les multiples SIM et les connexions des modems. Pour l'instant Calls est une simple interface pour les objets DBus OFono et ne peut qu'utiliser des modems déjà fonctionnels. Nous avons besoin de mécanisme permettant de configurer quel modems doit utiliser Calls et pour les connecter automatiquement quand l'appareil démarre.
  6. Implémenter un backend Telepathy pour avoir un support des appels SIP ainsi que les autres protocoles supportés par Telepathy.
  7. Le choix final des modems n'a pas encore été fait donc nous ne poussons pas trop les efforts vers le SIM7100E, juste assez pour tester Calls. Nous pourrions implémenter le support de QMI dans oFono si nous décidions d'adopter ce modem. À vrai dire, alors que j'écrit cet article il y a une discussion sur leur mailing-list pour le support QMI. Cependant nous pourrions implémenter le support de services supplémentaires dans ModemManager, qui est plus dans l'alignement de la plateforme Gnome.
  8. Ajouter le support des services supplémentaires et les opérations complexes. ModemManager a un support rudimentaire des appels tout comme Calls actuellement. Nous voulons être sûr que notre dialer aura un support complet des standards de la téléphonie mobile.

C'est tout pour le moment, restez branché pour de futurs infos ! 🙂

Une entreprise qui ne sera pas nommé vendait des téléphones basés sur GNU/Linux mais ceux-ci n'étaient pas capable d'émettre des appels téléphoniques quand ils sont sortis. Cinq ans plus tard, j'ai acheté un de ces téléphones et l'ai apporté à mon LUG local. Et biensûr, la première question a été : “Est-ce qu'il peut téléphoner ?! haha!” La réputation n'est plus à faire une fois que l'on vend un téléphone qui ne peux pas téléphoner !


Ça avance petit à petit. C'est pas mal du tout mais ça rassure pas… La deadline approche et bha ça paraît toujours aussi distant pour les fonctions basiques et le choix du matos. Gardons confiance.

Leur collaboration avec l'écosystème existant fait toujours plaisir et augure un bon avenir.

Les maux des GAFAM

Il est de bon ton de critiquer les GAFAM. C'est un sport assez commun. Aussi bien chez les libristes/techniciens qui sont au fait des enjeux techniques de la chose mais également désormais la presse spécialisée voire pas spécialisée du tout.

Bref le discours devient assez connu et commun. C'est bien.

Par contre le remède n'est que très rarement abordé.

Un remède mais pour quelle maladie ?

La maladie en elle-même n'est pas unique. Le terme “GAFAM” c'est déjà trop générique et pourtant ça regroupe des maux radicalement différents.

Et si on essayait de décomposer cet accronyme et voir un peu ce que ça regroupe ? La liste qui suit ne sera pas exhaustive du tout mais donnera un bon aperçu.

G

Google, le fameux moteur de recherche.

Ha le bon vieux temps où ce n'était qu'un moteur de recherche est révolu mais bon qu'est-ce qu'on leur reproche désormais ?

  1. Hégémonie sur la recherche web : ils font la pluie et le beau temps sur la visibilité d'un site web. Si demain ils modifient leur algoritme d'indexation, ils peuvent chambouler la vie d'un site web (en bien ou en mal).
  2. Hégémonie sur le navigateur web : ils font la pluie et le beau temps sur la façon dont le web évolue. S'ils décident d'utiliser de nouvelles balises HTML hors standard bha… tant pis pour les autres. S'ils décident d'ajouter un blocage de pub nativement dans leur navigateur… bha tant pis pour les régie pubs autre que la leur.
  3. Roi de la pub : la pub en elle même n'est pas l'élément génant mais en fait ça veux surtout dire roi de l'espionnage. Ce n'est pas “juste de la pub”. La pub que vend Google à ses clients est ultra ciblée. Et pour cibler le pigeon, il faut le connaître par cœur. Donc on l'espionne constamment partout pour recouper les données et monter non pas un simple profil mais une identité complète.
  4. Omniprésent : ils ont une galaxie de site web (google, youtube, maps, plus, …), une myriade d'appareils (android, chromecast, chromebooks, des enceintes, des thermostats, quelques voitures, …), une petite collection d'OS (android, chromeOS bientôt fuschia). Même hors ligne on sent sa présence permanente.

Ça fait peur. On ne peut absolument pas leur échapper sans être très précautionneux et en ayant des connaissances techniques assez poussées. Et le pire c'est que ça ne va pas s'arranger de si-tôt.

A

Apple, la plus grosse capitalisation boursière actuelle (proche du 18ème PIB mondial).

En quarante ans, ils sont passés d'une entreprise pro-bidouilleurs à une église diabolisant la personnalisation, empêchant la réparation et compliquant la propriété privée.

  1. La forme avant le reste : c'est un reproche assez récurrent. Ils préferrent sortir un produit qui sera plus joli/léger plutôt que réparable/upgradable.
  2. C'est comme ça et puis c'est tout : quand on achète un produit Apple, on utilise un produit Apple comme Apple accepte qu'on l'utilise. Très peu de personnalisation, c'est tout verouillé de partout. Une autre personne avec un produit Apple aura le même que vous. Une chance qu'on puisse changer le fond d'écran !
  3. Vous avez le droit de l'utiliser : quand on achète un produit Apple, on utilise un produit Apple comme Apple accepte qu'on l'utilise. C'est tout juste s'il vous appartient. Vous n'avez pas le droit de l'utiliser différemment. Surtout pas utiliser leurs logiciels sur un autre OS ou leur OS sur un autre matériel. Bref on se retrouve vite enfermé dans toute une philosophie, un écosystème… Bref une religion.
  4. Le culte Apple : Ouai c'est fatigant toute cette ambiance qui règne autour. Non, c'est pas forcément mieux pour un graphiste… À l'inverse, c'est pas forcément beaucoup plus cher à matos de même qualité et même intégration. T'as-tu vraiment besoin de remplacer ton matos toutes les cinq minutes ? Non tu n'utilises pas 50% des perfs de ton téléphone actuel, donc les 15% de perf supplémentaires du nouveau te changeront rien.

Finalement on ne leur reproche pas du tout la même chose que Google. Pas de soucis de vie privée. Pas de pistage intempestif. On me signale qu'en fait leurs produits embarquent un SuperCookie permettant d'identifier leurs utilisateurs. En gros on s'en fout un peu d'eux. Ils posent pas trop de soucis, c'est plutôt leur clientèle qui est toxique.

Le moyen facile pour éviter leurs travers est de ne pas acheter leurs produits et c'est bon vous êtes safe.

On peut se réjouir que le “Don't be evil” s'applique plutôt à eux, car avec les semi-remorques de lingots qu'ils possèdent ils pourraient faire des dégats massifs.

F

Facebook, le grand registre mondial de l'humanité.

Le plus récent des GAFAM et pourtant l'un des plus néfastes mais soit-disant légèrement sur le déclin.

  1. Omniprésence sur le web : il est difficile d'ouvrir une page web sans envoyer une requête vers leur serveur. Partout des scripts, des images, des boutons qui pointent vers leurs machines.
  2. Point d'accès unique : pour de nombreuses personnes l'Internet peut se résumer à Facebook.
  3. Créer des identités vraiment poussées : dans le but de vendre de la pub encore une fois. Un publicitaire peut cibler "les personnes entre 16 et 18 ans de couleur blanche habitant tel quartier à tendance technophile n'aimant pas le rap" et savoir que sa pub atteindra X personnes. Flippant.
  4. Omniprésence qui se répend hors du web : avec le rachat de Whatsapp ils se font une joie de capter les conversations des gens. En sachant que Whatsapp s'est forgé une popularité massive dans les pays en voie de développement grâce à leurs apps tournant sur n'importe quel type de téléphone, le déclin est pas près d'arriver. Et puis ils sont plutôt bien placé dans la VR grâce au rachat d'Occulus. Ha et si vous êtes plutôt Instagram… bha c'est aussi Facebook. Bref…

Là c'est bien moins ragoutant qu'Apple et on a les mêmes travers que Google. Bref pour la vie privée c'est le désastre complet. On a déjà vu/lu des centaines d'articles à ce propos mais c'est réellement un bourbier immense.

A

Amazon, le ptit libraire qui héberge la moitié du net Américain.

Je ne parlerai pas de leur business physique de vente de trucs mais uniquement de leur business informatique.

  1. Tout le monde l'utilise : ils se taillent une belle part de l'hébergement cloud, surtout aux US. Leurs offres de stockage sont également massivement utilisée pour tout et n'importe quoi.
  2. Ils obéissent aux lois US : c'est un reproche à faire également aux autres mais c'est un reproche un point plus génant pour eux dans le sens où en tant qu'utilisateur, on est pas forcément au courant qu'on se retrouve sur leur infra. Et du coup potentiellement on visite un site français mais qui en fait est hébergé par Amazon et du coup potentiellement à disposition de la NSA, CIA, FBI, …
  3. Alexa l'espion à la maison : Bon sur ce point c'est comme le truc de Google. Heureusement personne n'accepterai d'acheter un micro à placer chez soit qui écoute constamment tout ce qu'il se passe à la maison. Hein ! Personne ne ferait ça !

Moins de reproches du fait qu'ils ne sont que prestataire et au final ne touchent pas vraiment les données qu'ils hébergent. D'ailleurs peut-on leur reprocher de se plier aux loi US ?

M

Microsoft, le logiciel mou qui tente désespérément de se faire une place sur l'Internet.

Comme pour Amazon, je ne parlerai que de leurs pratiques concernant Internet/la vie privée.

  1. Leur cloud fait tourner plus de Linux que de Windows : hahahahaahhahahaha. Le plus gros vendeur d'OS proprio qui est l'un des plus gros loueur de Linux. Voilà c'est juste pour les troller.
  2. GAFA, pas GAFAM : ouai pas de bol pour eux, ils se font souvent zapper. Ils existent presque pas sur Internet.
  3. Hégémonie sur les PC : bon allez on va quand même parler de leur position dominante sur les OS grâce à la vente liée et le lobbying massif. Et quand à ça on saupoudre d'un peu d'espionnite dans Win10 et un soupçon de pubs on obtient un OS techniquement en amélioration mais au détriment de l'utilisateur.
  4. Ils chient sur les mails : envoyer du mail chez Microsoft est une plaie. Il faut avoir bonne réputation, mais comment avoir bonne réputation si on peut pas leur envoyer de mail ? C'est simple ! En ouvrant un compte chez eux et en les suppliant de bien vouloir recevoir vos mails. Donc voilà, si vous êtes pas un très gros du secteur bien établi, vous ne pourrez leur envoyer des mails qu'en montrant patte blanche. Appliquer les bonnes consignes des serveurs de mails ne suffira pas.

Bon bha que dire si ce n'est qu'en fait on s'en fout un peu d'eux. Même si ces derniers années ils s'améliorent énormément en découvrant l'Opensource et le Libre, leur faible présence sur le net ne les rend pas trop hostiles en dehors de leur attitude merdique concernant les mails.

Verdict quel est le soucis ?

Bon bha une partie vient de la position dominante dans un domaine.

Donc utiliser des alternatives est déjà un bon moyen de rendre plus inoffensif ces géants.

Ensuite concernant la vie privée, la première chose la plus évidente est d'arrêter de coller nos données ailleurs que chez soit. N'écoutez pas les sirènes du cloud. Le cloud c'est l'ordinateur de quelqu'un d'autre. Et si ce quelqu'un d'autre vous le prête grâcieusement c'est bien pour faire tourner son business et rarement par bonté d'âme (bien que ce soit parfois le cas, hein Framasoft).

Arrêtez de nourrir le cloud !

Ne postez plus vos photos de soirée sur Facebook. S'il vous plaît, épargnez la vie privée de vos enfants qui n'ont pas forcément envie de voir publier leurs premiers instants et les suivants. Cessez de distiller la moindre de vos pensées dans des tweets (tiens j'avais pas parlé d'eux). Je ne vous demande pas de vous couper du monde, juste d'agir plus raisonnablement en le faisant différement et plus posément.

Tout ce que vous poussez dans le cloud sera archivé, stocké, analysé, monétisé et qui sait un jour se retournera contre vous.

Le point Godwin obligatoire

Bon pour enfoncer le clou je me dois de faire cette digression.

Je vais faire court mais si vous voulez plus de détails il existe un livre ainsi que la page wikipedia anglaise qui détaille un peu.

Le régime nazi a travaillé main dans la main avec IBM pour créer une base de donnée (via recensement) de la population allemande dans les années 1930. Cette base de donnée à base de cartes perforées a permis de trier/classer/analyser le recensement avec une précision telle qu'elle a grandement aidé à peupler les camps de concentration.

Il faut bien voir que lors de l'établissement de la base de donnée Hitler n'avait pas encore commencé sa purge massive. Il ne s'agissait que d'un simple recensement utilisant les balbutiements de l'outil informatique. Ce recensement était tout à fait légitime et le monde ne savait pas encore quelle serait l'utilisation de ces données.

Les bases de données de Google et Facebook feraient rêver plus d'un Hitler.

Sachez qu'une fois en leur main, les données qu'accumulent Google et Facebook ne sont très probablement jamais supprimmées. Et gardez en tête que ce qui est légal/normal/admis aujourd'hui ne le sera pas forcément demain.

Montez votre site ouaib !

Plutôt que d'engraisser les vendeurs de vie privée, montez votre blog, votre galerie photo, réfugiez-vous sur une instance Mastodon proche de chez vous. Faites vivre les alternatives que sont les chatons. Utilisez un navigateur web respectueux (non gagner 2ms sur l'ouverture d'une page web n'est pas indispensable).

Alors vous allez vite me dire que ça demande des compétences. Bha oui et non. Vous n'êtes pas obligé d'y aller à fond tout de suite en vous auto-hébergeant et tout. Mais vous pouvez commencer simplement par exemple via l'excellente initiative Framasoft que sont les Framasite.

11ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Salut tout le monde ! Beaucoup d'avancements depuis mon dernier rapport de design. Jusqu'à maintenant je n'ai rapporté que les avancées design sur le plan software, mais nos efforts ne s'y limitent évidemment pas. L'expérience que ressent une personne vis-à-vis d'un appareil physique est également très importante. Cet article résumera les récentes décisions prises d'un point de vue logiciel mais également matériel.

Penser à l'interface physique

Notre but avec le Librem 5 est d'améliorer l'identité visuelle de la lignée Librem tout en restant proche de notre look humble et minimaliste qui nous caractérise.

Le principal challenge d'un design de boitier est un compromis entre l'esthétisme, l'ergonomie, la praticité et les limitations techniques.

Comme vous le savez, le Librem 5 est particulier car contrairement à la tendance actuelle, nous auront un processeur et un chipset distincts. La consommation électrique est un facteur majeur à prendre en compte mais également la capacité de la batterie ainsi que l'arrangement des circuits imprimmés et ne voulons pas sacrifier l'endurance de la batterie pour quelques milimètres d'épaisseurs. Cela-dit :

  • Nous visons désormais un écran d'une taille d'environ 5.5 à 5.7 pouces avec un ration de 18:9 ce qui nous permettrait d'inclure une plus grande batterie sans impacter le format du téléphone.
  • Nous allons également opter pour une forme chanfrein (voir la photo), au lieu de l'habituel bord arrondi. Non seulement c'est élégant, mais ça permettra une meilleure préhension tout en donnant un peu plus d'espace pour les composants internes.
Concept de design du Librem 5 en version 1

Simplification de l'interface utilisateur

Au fur et à mesure de l'avancement du Librem5, nous sommes conscient du planning serré en visant une sortie en Janvier 2019, et sommes donc concentrés sur la robustesse et l'efficacité pour la première version de l'interface mobile ("phosh"), que nous allons pousser pour devenir l'interface mobile de Gnome Shell.

Nous avons donc revus les fonctionnalités et décidé de diviser le design et son implémentation en plusieurs phases.

La Phase 1 définie une interface la plus simple en terme de fonctionnalité et d'utilisation. C'est ce qui sera livré avec le téléphone en Janvier 2019.

Concept des différents éléments d'interface de l'interface phosh.

Cela inclu :

  • Un écran de verrouillage.
  • Un écran de déverrouillage à base de code PIN pour protéger la session.
  • Un écran d'accueil affichant une liste paginée d'applications.
  • Une barre en haut affichant des informations utiles comme l'heure, le niveau de batterie, le volume audio, le niveau de signal réseau.
  • Une barre du bas simulant un bouton de retour (uniquement visible quand une application est ouverte).
  • Un clavier virtuel.
  • Des notifications d'appels entrants.

Le multi-tâche, la recherche ou les notifications ne seront implémentés qu'en phase 2 et donc disponible plus tard.

Même si la “phase 1” ne correspond pas à l'offre pléthorique habituellement proposé, nous pensons que cette interface minimale sera extrèmement simple à appréhender ce qui favorisera une adoption sans heurts. Cela sera un très bon point de départ.

Designer l'application Contacts

L'application *Contacts sera au centre des fonctionnalités de communication. C'est l'application qui aura en charge la gestion des contacts pour les autres applications comme Calls ou Messages.

Pour cela, nous sommes en train d'adapter l'applications Contacts existante en designant son agencement mobile et en ajoutant de nouveaux champs nécessaires pour les différentes applications.

Différents écrans de l'interface de l'appli Contacts à la fois sur ordinateur et sur mobile.

Librem 5 & Fractal team hackfest à Strasbourg

Cette semaine, certains membre de l'équipe Librem 5 (incluant moi-même) seront au Fractal Hackfest 2018 à Strasbourg dans le but d'aider l'équipe Fractal à créer application basée sur Matrix à la fois jolie et sécurisée à la fois sur ordinateur que sur plateforme mobile. J'espère faire un rapport sur les fonctionnalités de communication du Librem 5 dans un futur article où j'aborderai ce qu'il se sera passé au Fractal Hackfest.


Bon bien entendu quand vous lisez "je" dans cet article, ce n'est pas moi mais l'auteur original François Téchené membre de Purism.

Les modifications de concept de design physique sont intéressantes. Mine de rien les modes des smartphone a pas mal changé depuis la création du crowdfunding et ce nouveau design (provisoire) est déjà plus sympa et accuse moins le coup. J'aime beaucoup le fait qu'ils ne cherchent pas à faire le smartphone le plus fin possible. Perso ça ne me gène pas d'avoir un appareil un peu épais, surtout si ça permet d'avoir une meilleure batterie et un téléphone mieux branlé.

Concernant le logiciel, certains vont probablement râler mais bon la deadline est vraiment courte. Même s'ils repartent de briques existantes, le monde GNU/Linux est quand même pas vraiment adapter au téléphone et du coup tout le userspace est à créer ou presque. Bref c'est bien qu'ils annoncent que dans un premier temps ça sera léger. Il y a plus qu'à espérer qu'ils ne s'arrêteront pas à la Phase 2 mais poursuivent les efforts par la suite.

Ce qu'il se passe quand on ouvre une page web

Vous ouvrez très probablement des dizaines voir des centaines de pages web tous les jours. C'est devenu naturel à tel point qu'on ne se rend pas compte de toute la magie à l'œuvre pour nous afficher notre drogue moderne.

Déjà commençons par une petite mise au point : je vais causer principalement de Web mais pas trop d'Internet car souvenez-vous : Web ≠ Internet.

C'est parti !

Comprendre l'adresse

Imaginons que vous vous comportiez bien en utilisant la barre d'adresse (et non la barre de recherche). Vous entrez donc lord.re/posts .

Votre navigateur va devoir transformer ça en une véritable URL.

Donc premièrement il va rajouter le protocole utilisé. Ça veux dire qu'il va rajouter http:// devant pour indiquer Hyper Text Transport Protocol. Peut-être que les navigateurs utiliseront https par défaut bientôt ce qui permettrait d'utiliser une version plus sécurisée du web par défaut mais c'est pas encore le cas.

L'adresse est donc http://lord.re/posts avec les différents composants :

  • http:// étant le protocole
  • lord.re est le nom de la machine sur laquelle vous vous connectez
  • posts est le document que vous voulez voir

À partir de là, le navigateur va pouvoir passer à la suite.

Requête DNS

Bon c'est bien gentil, votre ordinateur sait quel serveur contacter mais il ne sait pas où il se trouve. Votre navigateur ne peut se connecter qu'à des adresses IP, il lui faut donc faire la correspondance entre le nom de la machine et son adresse IP. Ce service est assuré par l'OS et plus spécifiquement le service de résolution de nom couramment appelé DNS.

Votre navigateur demande donc à votre OS : « Quelle est l'adresse IP de lord.re ? »

Votre OS va donc consulter le serveur DNS qui est configuré et celui-ci lui donnera une adresse IP de la forme 92.167.84.9 si c'est une IPv4 ou bien 2001:0db8:1234:4321:1234:4321:1234:4321 en IPv6 (oui c'est beaucoup moins simple à retenir).

Avec un peu de chance cette information ne vous aura nécessité l'envoi que d'un paquet DNS et la réception d'un paquet DNS. On a donc déjà 2 paquets qui ont voyagé. Votre OS transmettra ensuite cette réponse à votre navigateur qui pourra établir la connexion IP et TCP.

Création des paquets IP

Lorsque deux machines se connectent pour ensuite parler, elles le font via le protocole IP (IPv4 ou IPv6). Les données sont tronçonnées en de multiples morceaux. Chaque morceau est placé dans un paquet IP. En gros un paquet IP c'est une enveloppe avec l'entête (écrit sur l'enveloppe) et les données dedans.

Ces entêtes IP contiennent (entre autre) l'adresse IP d'émission du paquet (pour pouvoir revenir) ainsi que l'adresse IP de réception (pour pouvoir atteindre la destination).

Bref le navigateur est désormais capable de joindre le destinataire final en demandant à l'OS de créer des paquets IP. Le réseau se chargera de les amener au bon endroit et de faire le retour également. Mais ça c'est une autre histoire passionnante.

Établissement de la connexion TCP

Si vous voulez parler via le protocole http, alors les paquets sont émis à destination du port 80 si c'est en https, alors ce sera le port 443 et seront émis depuis un port aléatoire de votre ordinateur.

Mais dis-moi Jamie, c'est quoi un port ? La notion de port est ce qui permet à un ordinateur d'établir plus d'une connexion simultanée.

Vous n'allez pas vous connecter juste à un ordinateur en réalité mais à 1 port d'un ordinateur. Un même ordinateur pourra faire tourner plusieurs logiciels simultanément qui attendront chacun des connexions sur des ports différents. De ce fait un seul ordinateur peut à la fois parler http et https mais également faire serveur mail sur le port 25 par exemple et pourquoi pas aussi serveur de discussion via le port 6667…

Les ordinateurs en ont 65535 ce qui leur laisse pas mal de marge de manœuvre (et encore autant en UDP). Un port est donc un point d'entrée et/ou de sortie de votre OS sur le réseau.

Donc reprenons :

  • votre ordinateur va envoyer une demande de connexion tcp vers le port 80 ou 443 du serveur web (TCP SYN).
  • Lorsque le serveur web va recevoir cette demande, s'il est disponible, il enverra un paquet comme quoi il accepte cette connexion (TCP ACK).
  • Et enfin votre ordinateur à la réception de l'acceptation enverra un accusé de réception attestant que la connexion est établie (TCP SYNACK).

Cet échange s'appelle le TCP Handshake ou 3way-handshak ou la poignée de main TCP.

TCP est dit fiable car il s'assure que chaque paquet envoyé est reçu et dans le bon ordre. Si des paquets ne sont pas reçus, TCP le renverra. Ce système fonctionne grâce à des accusés de réception et le fait que chaque paquet est numéroté.

On est donc dans le meilleur des cas à 5 paquets échangés et toujours 0 info à se mettre sous la dent.

Établissement TLS

TLS est la couche de protection qui fait la différence entre le HTTP et le HTTPS. Ce fameux petit s qui veux dire secure.

C'est lui le garant de la sécurité et de la confidentialité de vos données mais malheureusement ce n'est pas infaillible mais je ne pousserai pas dans ces détails. Cette étape n'intervient donc que lorsque l'adresse rentrée est en HTTPS.

Bref maintenant votre ordinateur (le client) va parler SSL/TLS (SSL étant le nom de l'ancien protocole) avec le serveur.

  • Votre client indique quel domaine il veux contacter ( lord.re dans notre exemple) en clair.
  • Il y tout d'abord la négociation de la méthode de chiffrement pour que le client et le serveur puisse utiliser la même.
  • Le serveur envoi son certificat au client.
  • Le client vérifie que ce certificat est de confiance (en regardant qui l'a signé et si ce tiers est de confiance)
  • Si c'est ok, le client choisi une clé de chiffrement temporaire qu'il chiffre via la clé publique du serveur
  • Le serveur web déchiffre cette clé temporaire grâce à sa clé privée
  • Les échanges suivant sont chiffrés via la clé temporaire échangée de manière sécurisée.

Si les rouages sous le capot vous intéresse le bon vieux wikipedia possède une page plutôt pas mal à ce sujet.

Autant vous dire que les méthode de chiffrements sont variées allant du vraiment blindé à la passoire. Sachez que généralement les sites sont plutôt moyens et que généralement les banques sont dans le tout juste passable voir passoire… Le site SSLLabs de Qualys propose un excellent test de niveau de sécurité TLS bien foutu ce qui vous permettra de juger de la sécurité d'un site (mais ça ne fait pas tout).

Bref l'utilisation de TLS a un léger impact sur les performances mais garantie (dans la grande majorité des cas) que les données échangées ne sont pas lisibles par quiconque et ne sont pas non plus alterées, c'est donc indispensable.

Bon bon bon, notre compteur atteint désormais les 11 paquets échangés et toujours pas de données utiles pour votre navigateur mais ça arrive à la prochaine étape. (spoiler pas vraiment mais presque)

HTTP

Bon maintenant que la connexion est établie pour de bon et qu'elle est éventuellement chiffrée, ça va enfin pouvoir parler http.

Votre navigateur (le client web) va donc dire quel domaine il veux contacter, quel document il souhaiterait recevoir ainsi que quelques métadonnées. Voilà un exemple de requête :

> GET /posts/ HTTP/1.1
> Host: lord.re
> User-Agent: curl/7.59.0
> Accept: */*

On y voit quel document je demande, ainsi que la version du protocole que j'utilise, quel hôte (le domaine) je demande, quel est mon navigateur (curl/7.59.0) et quels sont les types de données que j'accepte (/ signifie tous les types).

Une des choses fondamentales à voir est que le navigateur et le serveur se parle en s'envoyant du texte lisible par un humain. C'est donc très facile à débugguer et inspecter pour un humain, ce n'est par contre plus le cas avec HTTP2 qui ajoute de la compression et n'échange plus ces entêtes sous forme textuelle mais binaire.

Cependant cet exemple n'est pas super représentatif car curl n'est pas un navigateur classique mais un logiciel en ligne de commande un peu spécifique. Voyons plutôt à quoi ça ressemble avec un bon vieux Firefox des familles :

> GET /posts/ HTTP/1.1
> Host: lord.re
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language: en-US,en;q=0.5
> Accept-Encoding: gzip, deflate, br
> DNT: 1
> Connection: keep-alive
> Upgrade-Insecure-Requests: 1
> If-Modified-Since: Mon, 30 Apr 2018 21:59:32 GMT
> If-None-Match: W/"5ae791c4-21f57"
> Cache-Control: max-age=0

Et là il y a beaucoup plus d'infos dont certaines permettent de vous profiler/espionner/suivre.

Le User-Agent indique quel navigateur vous utilisez et souvent quel OS vous utilisez.

Le Accept est aussi plus spécifique en spécifiant également la langue et quel formats de compression de données vous pouvez gérer.

DNT est là pour indiquer que vous ne souhaitez pas être traqué et n'est généralement pas mis par défaut et rarement pris en compte par les serveurs malheuresement.

Connection indique la façon dont vous voulez que la connexion soit gerée. Ici on indique que l'on reste connecté (au sens TCP) même une fois les données transferées, ce qui permet de réutiliser cette même connexion dans le cas où il y aurait d'autres requêtes par la suite. Bien évidemment au bout de quelques secondes/minutes c'est tout de même coupé.

Upgrade-Insecure-Requests indique que le navigateur web accepte de passer en HTTPS si c'est possible.

Les trois derniers éléments de la requêtes sont relatifs au cache du navigateur qui indique qu'il a déjà des données en cache afin que le serveur s'adapte.

Bref c'est beaucoup plus verbeux que le bon vieux curl mais ça apporte quelques raffinements bien utiles tout de même.

Ce coup-ci de multiples paquets seront nécessaires et contiendront enfin vos vrais données. Maintenant votre navigateur va attendre la réponse du serveur.

Création de la page

Vous voulez désormais recevoir le document demandé mais pas si vite! Tout ne se déroule pas toujours aussi facilement.

Deux cas sont possible, le document est dit statique et de ce fait existe dans un fichier qui vous est transmis ou bien ce n'est pas le cas.

Et là je parle pas d'erreur 404 mais juste que le document que vous demandez doit être généré juste avant l'envoi et que ces données sont volatiles. Elles peuvent être regénérées mais ne sont pas un vrai fichier sur un disque dur quelque part, dans ce cas c'est dit dynamique.

Le serveur reçoit votre requête http et en fonction de celle-ci va créer une page.

C'est par exemple le cas des pages web en PHP utilisés par de nombreux sites (notamment Facebook ou plus simplement les sites utilisant le moteur Wordpress). Les pages sont générées par le serveur à la volée et vous sont transmises. Cette technique est désormais communes et s'est développé peu après le début du web vers la fin des années 90.

Il existe un troisième cas qui est de plus en plus répandu et qui est bien plus récent puisqu'il a débarqué ces dix dernières années où le contenu brut est envoyé au navigateur web mais c'est le navigateur web lui même qui va générer la page. Cette technologie s'appuie largement sur le langage Javascript qui s'exécute dans votre navigateur.

Sachez d'ailleurs qu'il est possible de désactiver Javascript dans votre navigateur ce qui rend ces sites inutilisables. Qui plus est, beaucoup de ces sites posent des problèmes d'accessibilités et parfois de référencement mais que voulez-vous ma petite dame, c'est la mode.

Réception de la page

À l'étape HTTP on a vu la requête envoyée par le navigateur, ici nous allons voir la réponse HTTP reçue :

< HTTP/1.1 200 OK
< Server: nginx
< Date: Fri, 13 Apr 2018 17:29:43 GMT
< Content-Type: text/html
< Content-Length: 134839
< Connection: keep-alive
< Vary: Accept-Encoding
< Last-Modified: Thu, 12 Apr 2018 11:25:23 GMT
< ETag: "5acf4223-20eb7"
< X-Cache-Status: MISS
< Accept-Ranges: bytes

On voit la version du protocole ainsi que le code de retour (200 qui signifie OK, vous connaissez probablement 404 qui signifie document introuvable, 403 interdiction de voir le document, …). On voit quel est le serveur (nginx est l'un des logiciel les plus répandu), la date, le type de donnée du document voulu, sa taille, la dernière modif du document et des informations concernant le cache.

Ensuite, il y a les données, c'est à dire le document demandé.

Lire la page

Votre navigateur vient donc de recevoir votre page web, il va la lire et regarder son contenu.

Une page web ce n'est qu'un fichier texte formatté d'une certaine façon.

Ce fichier texte va donc devoir être transformé en un document plus regardable qu'un simple fichier texte. Le navigateur va afficher les images qui sont liées à la page, appliquer un style définie dans un fichier CSS, placer une/des vidéo ou jouer des sons, pourquoi pas afficher des éléments en 3D.

Pour chacun de ces éléments, votre navigateur va refaire toutes les étapes précédentes avec d'éventuelles subtilités. Par exemple si un document est sur le même domaine que la page actuelle, le navigateur pourra zapper l'étape du DNS et en fonction du protocole utilisé (si c'est du HTTP2 par exemple ou 1.1 avec quelques options) le navigateur pourra réutiliser la connexion TCP en cours ainsi que la session TLS actuelle.

Bref le navigateur va recevoir en premier lieu, à peu près tout le texte de la page (sauf s'il y a filouterie via javascript) puis recevra les autres éléments, mais le navigateur tentera de faire le rendu au plus tôt et le modifiera à chaque fois qu'il recevra de nouveaux éléments.

Par exemple le CSS est un fichier texte s'occupant de styliser la page en y définissant des couleurs, le placement des éléments et tout ce qui a attrait à l'esthétisme. Une même page web peut avoir plusieurs fichiers CSS.

Toujours à ce propos, une même page web peut contenir de nombreuses images (no shit Sherlock) ou de nombreux Javascript. Mais là où ça devient problèmatique, c'est que ces différents contenus ne proviennent pas forcément du site que vous consultez mais de sites extérieurs.

Par exemple tous les boutons de réseaux sociaux, sont très généralement issus de ces fameux réseaux sociaux eux-mêmes ce qui implique que même si vous ne cliquez pas sur ces boutons, les sites en questions collectent tout de même l'information que vous avez consultez telle-page, même sans y être connecté (via un champs referer de la requête http, qui contient l'adresse web de la requête précédente). Bref, un désastre pour les performances mais aussi la vie privée.

Exécuter le javascript

Une fois que votre navigateur a également reçu les javascripts, il va les exécuter. Ce sont des sortes de mini programmes qui à l'origine étaient très limités mais qui au fil du temps ont de plus en plus de possibilités ce qui a amené à la création des web applications.

C'est eux qui permettent par exemple de créer des ptits graphs en live, qui affichent les prix les plus à jour sur les sites marchands, qui rafraîchissent partiellement la page pour afficher le nouveau contenu, bref tout ce qui est un peu dynamique sur une page provient de Javascript.

C'est d'ailleurs souvent un nid à emmerdes dans le sens où certains s'en servent pour chopper quelques données sur vous, pour miner de la crypto monnaie dans votre dos, pour utiliser votre processeur un peu trop intensivement juste pour afficher des effets négligeables… Bref je suis pas un fan inconditionnel de Javascript et je recommande de n'activer Javascript qu'au cas par cas afin de vous épargner (ainsi que votre machine) tout plein d'emmerdes.

Et voilà votre page web est complète et aura nécessité de nombreux aller-retours un peu partout dans le monde. J'ai pas mal insisté sur le nombre de paquets car il faut bien voir que chacun des paquets fais un aller-retour (le paquet fait l'aller, l'accusé de réception le retour), ce qui implique à chaque fois une certaine latence. Ça explique en partie la lenteur d'ouverture de certaines pages.

Le second facteur de lenteur est tout simplement la quantité de données de tous les documents nécessaires à la page web.


Cet article est une nouvelle version d'un article publié sur le site d'Iloth un gentil Fournisseur d'Accès Internet dont je suis membre. Je l'ai réécrit pour l'améliorer et le rendre un poil plus digeste et plus à jour.

Des fissures dans le Fediverse

La popularité récente de Mastodon mais plus largement du Fédiverse est intéressante. Mais. Ouai fallait mettre un "mais". Mais, il commence à montrer quelques signes de fissures.

La fédération

Mastodon s'appuie donc sur du logiciel libre pour créer un réseau social fonctionnant sur le même principe que Twitter. Sauf que contrairement à Twitter, c'est un logiciel libre parlant un protocole ouvert s'appelant ActivityPub et OStatus.

Cette différence peut sembler mineure mais est en fait la force de ce réseau social : le protocole étant ouvert et documenté, il est possible pour plusieurs personnes de monter un serveur qui saura parler avec le reste du réseau.

On est donc sur un ensemble de serveurs parlant le même langages et pouvant donc communiquer entre eux.

C'est un peu comme les mails. Il existe tout plein de fournisseurs de mails qui acceptent de parler entre eux. Vous pouvez donc via votre adresse @gmail.com envoyer un mail à quelqu'un chez @yahoo.fr . Tout comme sur mastodon, sur votre instance @octodon.social vous pouvez tooter votre ami se trouvant sur @mamot.fr .

Les serveurs bossent ensemble et forment un seul et unique grand réseau aggloméré.

Pour que ça soit effectivement le cas il faut donc 1 langage commun + accepter de se féderer. Le langage commun c'est sous le capot, le choix d'un protocole ouvert et normalisé. Par contre accepter de se fédérer c'est de la décision humaine.

Bref maintenant qu'on a vu ce qu'est en gros la fédération voyons les quelques soucis qui émergent en pratique dans le Fediverse.

La mort d'une instance populaire

Le Fediverse est donc peuplé d'environ 2000 instances Mastodon (mais pas que…). Les utilisateurs (Près de 1.5 Millions) sont donc répartis entre ces instances.

Witches.town était l'une de ces instances. Pas la plus populaire mais pas non plus la plus petite des instances. Elle était maintenue par une personne. Une seule personne. Et pas de bol cette personne a décidée d'arrêter et du coup pas mal des sorcières ont dû trouver une nouvelle cabane.

Heureusement tout a été plutôt bien fait avec un long délai avant que ce ne soit effectif et pas mal de bonnes âmes ont proposées des places sur d'autres instances. Mais ça risque d'arriver de façon un peu plus chaotique les prochaines fois.

Il est donc important de bien choisir son instance Mastodon. Et il est même possible de monter sa propre instance perso afin de le gérer au plus proche de ses besoins.

Pleroma vs Mastodon.social

Je vous ai teasé que le Fediverse n'était pas uniquement composé d'instances Mastodon.

On y trouve également d'autres logiciels tels que Gnu.social qui est la suite de status.net qui était la suite d'identi.ca … Bref c'est un projet qui a une vie assez longue désormais et qui est toujours en place. Il me semble que c'est ce logiciel qui a créé le protocole OStatus (tout du moins ses ancêtres de fork).

Mais ce n'est pas tout. Le Fediverse grandit de plus en plus désormais et de nouvelles alternatives émergent régulièrement.

Une qui commence à avoir pas mal le vent en poupe est Pleroma.

Mais pas de chance, l'une des plus grosses instances (mastodon.social) a décidé de silence une instance pleroma ainsi que quelques devs pleroma. Parceque visiblement Pleroma a une vision légèrement différente sur la façon de faire les choses que les mainteneurs de mastodon.social. Bref drama drama drama.

Est-ce que le Fediverse va se scinder avec d'une part un Fediverse avec seulement Mastodon d'un côté et les autres de l'autre ? On ne le sait pas mais peut-être que ça pourrait arriver si la situation ne se désamorce pas.

IRC

Quittons le Fediverse un instant. Il fût un temps où le meilleur des protocoles de chat en ligne (IRC) était un seul et unique réseau féderé.

Vous pouviez vous connecter à n'importe lequel des serveurs existant à l'époque et vous vous retrouviez connecté à tout l'IRC. Tous les chans du monde accessibles en un point. Tout le monde au même point.

Puis il y a eu mésentente et coups-bas, un nouveau réseau parallèle s'est formé pour ensuite tout refusionner. Et ensuite quelque temp après, commencer à se fractionner de partout. En cinq ans on est passé d'un modèle décentralisé fédéré à un modèle multi-centralisé non fédéré. Trente ans plus tard l'IRC est toujours morcellé en de nombreux réseaux.

C'est ce que risque le Fediverse.

Si vous voulez plus d'infos concernant l'histoire d'IRC, la page anglaise de Wikipedia en a un ptit résumé.

Le seul réseau fédéré qui malgré les années l'est encore est le SMTP : les mails. Et pourtant Google et Microsoft s'acharnent à briser cette fédération.

Préserver la fédération

Le meilleur moyen de protéger la fédération est de morceler le plus possible les instances.

Plus les instances sont nombreuses et petites moins elles ont d'intéret à briser la fédération et s'isoler. Au contraire, plus une instance devient importante moins la fédération a d'intéret pour elle.

Mais d'ailleurs pourquoi vouloir à tout point garder la fédération ? Parceque le succès d'un réseau social est directement lié à son nombre d'utilisateur afin de bénéficier de l'effet de réseau.

Pour virer ces crasses que sont Facebook, Twitter et tous les autres réseaux sociaux propriétaires, il faut une alternative crédible et fonctionnelle. Le Fediverse pourrait l'être.

Bon sur ce, je vous laisse, je retourne à la fête du Fediverse.

PS : Tiens wikipedia n'a pas d'article concernant le Fediverse.

PS2 : Ha bha trois heures après finalement il y a un article Fediverse dans le wikipedia FR. Je comptais m'y atteler demain pour fêter le travail mais finalement j'ai été pris de vitesse.

Mes déboires Hardware de ce début 2018

Bon bha ça y est j'en vois le bout.

Gros nordi

Mon ordi de bureau m'a fait quelques misères. Impossible de booter. Ça plantait inlassablement à divers moments du boot, parfois dès le POST, parfois au niveau de grub, par chance je parvenais à booter pour quelques minutes une fois sur Y. Bref de l'aléatoire comme j'aime (keuf keuf).

Bon, je vais voir le bios (j'ai toujours pas pris l'habitude de dire l'UEFI…). Hmmm je fouille, je fais d'ailleurs l'update bios en version 2.0 (wahou ça doit être tellement mieux avec une update majeure).

Bof pareil. Je ClearCmos avec le ptit bouton qui va bien. Suspens. Tiens il se passe plus rien. … Ha bha je suis pas dans la merde. … Ha si ça booot… pas. Erf. On sent qu'ils se passent des trucs pas net quand on clearcmos, ça prend un temps fou à faire on sait pas trop quoi avant de réellement booter (surement l'AMD PSP qui doit booter aussi son ptit OS et faire ses saloperies dans mon dos).

Bon j'enlève les barrettes de ram je les permuttent, je vire les SSD. Rien à faire.

Il y a bien le DrDebug qui est en fait un code à deux caractères hexa affiché sur la mobo pendant le boot pour indiquer les erreurs. Mais ce cher Docteur indique plein de trucs qui alternent sans cesse puis ça part en boucle.

Je fais une ptite vidéo de la carte mère qui agonise et j'envoie ça par mail au support d'Asrock.

Bref après deux jours d'emmerdes et un bon week-end, je contacte Amazon pour un ptit RMA. Comme à leur habitude c'est d'une rapidité déconcertante et je teste donc la nouvelle mobo identique.

Je l'installe dans le boitier, je fous le cpu, toute la ram, la carte graphique, les différents connecteurs, les SSD, le ventirad et c'est parti ! Je vois le logo de la mobo (ce qui est déjà rare). Je vois même mon bon vieux grub violet mochtoque. Et là pouf ça reboot !

-____−

Bon bha c'est pas la mobo déjà une bonne chose. J'ai une réponse d'Asrock et du coup je leur parle pas du RMA pour voir ce qu'ils proposent. Après quelques manips que j'avais déjà effectué, ils me demandent de faire une autre vidéo en virant absolument tout sauf le cpu.

Et là Miracle ça marche, ça ne redémarre plus en boucle.

Bon bha. Heuuu. Je mets la ram. Ça marche. Je fous le GPU. Ça marche. hmmmm Je fous les SSD. Ça marche. Je fous les connecteurs USB et Audio du boitier. Ça marche. Je fous les connecteurs des boutons Power et Reset. Ça déconne.

HOLY SHIT !!!

Cette petite merde de bouton reset qui déconne et qui se déclenche seul de temps à autres.

RAGEQUIT

Ptit nordi

Mon vieux Bender était malade.

Une extinction inopinée le mois dernier dans un mystère le plus total m'avait un peu troublé mais sans plus. J'étais pas spécialement pressé de le réparer car avec l'usage je me rends compte que je suis de moins en moins dépendant envers mon nas. J'utilise désormais Netflix et mon instance Groovebasin comblent mes besoins multimédias. Qui plus est le skeudur de backup étant via usb, j'ai pu le foutre sur une autre machine…

Sauf que là en ayant plus accès à mon gros ordi ça devient un peu plus gênant de plus avoir accès à mes mots de passes (qui sont synchros entre ces deux machines). D'autant plus quand il devient nécessaire de passer voir les impôts, accéder à Amazon et d'autres comptes.

Bref j'ai profité de la convalescence du gros ordi pour tester son alim dans le ptit ordi.

Yatta ça fonctionne.

Bon bha je commande une ptite alim au format SFX et c'est reglé. Bon je prends un ptit skeudur 8To aussi au passage pour éviter d'en commander un dans quelque temp et donc diminuer un poil l'empreinte carbone (on se trouve des excuses).

Et bha pas de bol. Je reçois un 4To -____-

Bon bha je vais le renvoyer aussi et espérer recevoir un 8To assez vite.

Voilà à plus ;-)

Mon environnement auto-hébergé

Ça fait un ptit moment que je voulais faire un point des services autoheberge que j'utilise.

Mails

Allez on commence par les mails. Je vous ai déjà pas mal bassinné avec ça mais bon un ptit point rapide. Vos mails sont une grande partie de votre identité numérique. Ils regorgent d'identifiants, de factures, de conversations, de pièces-jointes…

Bref, ça se refile pas au premier venu qui vous regarde gentiment avec des grands yeux et un grand sourire en vous disant qu'il s'en occupera gratuitement. C'est l'un des services les plus importants à auto-héberger mais c'est aussi le plus chiant.

Avoir un serveur de mail pleinement fonctionnel n'est pas si difficile en soit. Par contre faire en sorte qu'il fonctionne encore dix ans plus tard sans perdre de mail et voir ses mails acceptés partout… ce n'est pas la même affaire. Je ne le recommande donc pas à tout le monde. Pour le webmail j'ai longtemps utilisé Roundcube mais je suis désormais sur Rainloop. L'interface est un poil plus joli que Roundcube et passe mieux sur téléphone.

Et dans le fond j'utilise Postfix, Dovecot, Rspamd, Sisyphus.

RSS

Dans les services web, un dont je suis ultra friand est l'aggrégateur de flux RSS/Atom. Dans mon cas c'est Tiny Tiny RSS. Malgré l'attitude quelque peu particulière du main dev, ce logiciel est excellent et super fiable. Mon instance a soufflée sa 11ème bougie récemment, sa base de donnée s'est déjà fait migrer plusieurs fois et tout fonctionne encore sans aucune prise de tête. Juste de temps à autres une update via l'interface web et hop je le backup même plus tellement je suis inconsc^W mal-habitué.

Les RSS sont ma source principale de news et autres. J'adore le fait de pouvoir chopper des news de blogs très rarement mis à jour sans devoir vérifier constamment. Et contrairement à Fb et compagnie c'est pas filtré, tout le contenu des créateurs est publié sans le faire passer à la caisse.

Musique

Pour la musique j'ai une instance Groovebasin qui tourne. Ça stream de la musique, gère les playlists, sait importer de la musique via youtubedl, ça normalize et surtout ça génère une playlist infinie. Malheureusement c'est maintenant à l'abandon et il n'y a plus de mise à jour ni rien depuis des mois.

Un des reproches est que l'interface n'est pas du tout adaptée aux appareils tactiles (il faut double cliquer et parfois faire un clic droit)… En dehors de ça pas grand chose à reprocher. Je pense qu'il va tout de même falloir migrer si les developpements ne reprennent pas mais j'ai pas encore trouvé vers quoi.

J'ai déjà testé Ampache, Subsonic pour lequel je me suis même pris une licence d'un an, mpd, mais au final j'ai préferé Groovebasin.

Galeries photo

J'en ai deux en parallèle sur la même base de photos. La première basée sur SFPG en PHP mais sans base de donnée ni rien. Pas mal du tout. Ça marche sans broncher mais pas super moderne.

Puis j'ai découvert PhotoFloat qui est par contre bien plus moderne. Plus besoin de rafraîchir la page, ça charge quasi instantanément. Bien plus agréable à utiliser mais c'est en Python, faut générer la galerie à chaque fois qu'on rajoute des photos (générateur de site statique quoi). Pas de bol c'est plus trop maintenu (c'est le dev qui a aussi pondu les excellent Password-store et aussi Wireguard).

Cloud multi-services

Je me suis également monté un instance Sandstorm. C'est une plateforme de cloud assez magique qui vous permet de faire tourner des services web très facilement. Ce qui différencie Sandstorm de toute la concurrence (cozy, yunuhost, cloudron, …) c'est qu'ils ont une approche de la sécurité exotique.

Déjà il n'y a pas de mot de passe, ça fonctionne par tokens temporaires qui sont envoyés par mail. Ensuite ils ont une approche 1 document = 1 instance.

C'est à dire que si par exemple vous avez besoin d'un pad, sandstorm vous démarra une instance etherpad-lite. Si ensuite vous voulez ouvrir un second pad, sandstorm vous démarra une nouvelle instance indépendante d'etherpad-lite. Tout est fortement isolé.

Si vous partagez un document, vous obtiendrez une url unique que vous pouvez bloquer en écriture. Et chaque personne à qui vous partagerez ce grain (c'est le nom des applis) aura une adresse unique. Vous pouvez révoquer ces droits et tout.

C'est vraiment génial. Par contre il y a quelques désavantages : les applis doivent être légèrement modifiées pour s'intégrer dans Sandstorm et le temps d'accès à un document est plus long que la normale vu qu'il faut le temps que la dite appli soit démarrée mais ça reste largement tolérable car de l'ordre de 3/4secondes.

DNS

Avoir un nom de domaine c'est essentiel mais le gérer soit même c'est encore mieux ! J'utilise Knot qui est globalement assez simple et robuste. Il permet de faire du DNSSEC facilement en plus. Pas grand chose de plus à dire. Il sait se faire oublier.

Backup

J'utilise depuis très longtemps Rsnapshot qui permet de faire des backup incrémentaux en utilisant ce bon vieux rsync et de pousser ça via SSH. Mais je dois avouer que je commence à reluquer sérieusement Borg Backup qui sait chiffrer de lui même du coup je couplerai bien ça avec un fournisseur de stockage externe genre Wasabi. C'est dans la catégorie "Pour plus tard” sauf que la mort de mon NAS/serveur bouscule un peu plus les priorités.

Les services abandonnés

Voilà les services que j'ai actuellement. J'en ai eu pas mal d'autres que j'ai stoppé au fil du temps.

À un moment j'ai tenté de croire à xmpp mais au final… bof. J'ai tout de même utilisé ejabberd, prosody, movim. J'ai également fait mumuse avec Identi.ca mais c'était pas ma tasse de thé (bien que je commence à faire mumuse avec Mastodon depuis un an (sur octodon) ).

J'ai eu du Wordpress mais vite largué pour un simple fichier texte puis maintenant Hugo. J'ai utilisé Wok aussi pour faire du site web statique. J'ai presque utilisé Dokuwiki avant de me rendre compte que pour du perso c'est overkill, j'en ai vraiment pas besoin.

J'ai également utilisé très peu de temps un service de localisation qui permet de voir en live (quand une page web était utilisée où se trouvait la personne). Je retrouve pas le nom du service et au final je ne m'en suis servi qu'une fois ou deux.

J'héberge ponctuellement un serveur Quake 3 avec le mod CPMA mais ça ne dure rarement plus de quelques semaines.

J'ai utilisé de l'OpenVPN en perso aussi quelques temps avant de me rendre compte qu'un bête tunnel SSH est bien plus léger et tout aussi bien et avec bien moins de dépendances. Cela dit je pense me tourner vers du Wireguard bientôt.

J'ai essayé d'utiliser Funambol pour synchroniser des contacts et autre merdouilles avec le téléphone mais au final… bha ça me sert à rien. Je fais un backup manuel des contacts du téléphone tous les six mois et voilà… Je dois surement en oublier quelques-un.

J'ai hébergé du Mumble durant ma folle période gamer.

Avant de migrer sur du pur Weechat, j'utilisais ZNC qui est donc un bouncer irc sur lequel je connectais Weechat sur l'ordi et un client irc sur l'Android mais maintenant j'utilise un client weechat sur le téléphone aussi.

Pour les synchro de fichier, j'ai utilisé Syncthing pendant quelques temps mais son fonctionnement un peu trop p2p n'était pas forcément ce que je recherchais le plus mais surtout sa trop grande gourmandise et son côté service de Schrödinger qui marche ou ne marche pas m'a vite saoulé. Cela dit il y a eu un paquet de nouvelles versions désormais ptet que ces reproches n'ont plus lieu d'être.

Facebook Algo Complot

Bon si vous êtes ici, j'imagine que vous n'êtes pas sans savoir que Facebook n'est pas une plateforme neutre dans la distribution de "son" contenu.

Les personnes à qui vous êtes abonnés publient du contenu et Facebook décide d'afficher ou non ce contenu dans votre flux d'information. Ce choix est basé sur des algos fait maison complètement opaques. En cela je ne les blâme pas. C'est leur produit, ils font ce qu'ils veulent. Même si pour les créateurs de contenu ça peut devenir problèmatique, ça peut tout de même poser quelques soucis.

Une IA ça s'entraîne

Ce travail de sélection de contenu n'est bien évidemment pas fait à la main mais par un algorithme.

Cet algorithme tend de plus en plus vers une Intelligence Artificielle (bha oui c'est la mode). Facebook investit énormément dans l'IA d'ailleurs.

Donc une IA est tout de même un peu bête, pour fonctionner il faut lui donner des billes et lui dire si c'est bien ou pas. Bref de l'apprentissage.

Petite digression : Avez-vous déjà joué aux jeux Black&White, ils reposent sur le principe que vous êtes un dieu avec une créature que vous devez éduquer. Cette créature sera le reflet de l'apprentissage que vous lui procurerez et sera donc gentille ou méchante en fonction de vos choix.

Bref c'est un principe assez basique des IA.

Et si Facebook créait une IA diabolique ?

Facebook abreuve ses utilisateurs de contenu ciblés par l'IA. Mais quel est le but de Facebook ? Vendre des encarts publicitaires. Plus vous voyez ces pubs plus ils engrangent de pognon.

Et si l'IA se rendait compte que certains contenus génère bien plus d'activité sur le site, il y a fort à parier que l'IA favorise ce contenu à l'avenir (c'est son taff après tout). Et si ce contenu c'était un évènement malheureux comme un suicide ? Facebook se retrouve en ébullition pour transmettre tous les messages de soutiens et d'indignation. Le compteur de nombre de vue s'affolent.

L'IA pourrait se dire que ça augmente la rentabilité et que c'est bon pour le business.

Et si l'IA se rendait compte qu'en abreuvant certains de ses utilisateurs les plus populaires de messages déprimants et en isolant les gens de leurs amis réels les probabilités de suicide augmentent ainsi que le trafic ?

Ouai c'est un peu poussé mais est-ce que franchement faut écarter tout de suite cette théorie ? Ils ont déjà tous les outils techniques pour mettre en place un tel système.

Plus de trolls == plus de vues == plus de pognon

Sans aller aussi loin, on peut imaginer que le système pousserai juste les gens à se diviser.

Avoir des discussions enflammées sur Facebook génère bien plus de trafic que Tata Yvette racontant son dernier rêve durant la sieste.

Donc le réseau pousserait plus que de raison les contenus trolligènes afin que les gens se frittent plutôt que le contenu plus banal faisant moins réagir les gens.


Ha au fait, c'est pas uniquement valable pour Facebook mais aussi pour tous les autres réseaux sociaux à la mord-moi-le-nœud.

Quelques liens sur le sujet

La demoscene vol.3

C'est parti pour notre troisième excursion dans le monde de la demoscene après un ptit tour sur les textmodes.

Et comme d'habitude, si vous cliquez sur les images vous serez amené sur la vidéo Youtube de la démo mais regarder l'original est toujours mieux. Aujourd'hui pas de sujet précis mais juste une ptite sélection de démo que j'aime beaucoup.

La Revision 2018 s'est déroulé lors du week-end de Pacques mais je n'ai pas pu voir ce qui s'y est passé mais je serai à l'affût je vous promet.

Masagin

Commençons tout de suite avec une chouette démo.

Capture d'écran on l'on voit deux moines bouddhistes en dessin stylisé

Masagin by Farbrausch & Neuro

Cette démo est une invitation pour la NVScene 2008. C'est un type de démo pour annoncer une démoparty et donc inviter de nombreux groupes à y venir.

Elle est assez particulière car réalisée entièrement à base de SVG ce qui est assez rare dans le milieu. C'est d'autant plus surprenant que la NVScene est une démoparty à l'initiative de nVidia habitué à vendre des cartes graphiques pour leurs performances en 3D.

Elle sort donc vraiment du lot et sa musique est bien prenante. Et en fouillant le ouaib j'ai réussi à retrouver un ptit making-of.

Malgré ses dix ans son esthétique est toujours agréable de part son côté technique atypique.

Medium

Celle-là est déjà bien plus vintage mais à toujours une ptite place dans la liste de démos que j'adore.

capture d'écran de Medium montrant des formes abstraites

Medium by Einklang

Il y a vingt ans c'était une sacré bête avec sa synesthésie assez poussée et sa 3D pas dégueue. Et lorsque j'ai changé de PC à l'époque je me souviens que ça a été le premier truc un peu costaud que j'ai fait tourner dessus pour évaluer la puissance de la bête. C'est d'ailleurs surement pour ça qu'elle me marque autant celle-ci.

A Mind Is Born

Cette petite est à première vue assez moche mais en fait c'est un tour de force hallucinant.

Déjà elle tourne sur Commodore 64 une belle vieillerie sortie en 1982 cadencé à près d'1Mhz. Mais surtout elle ne pèse 256 octets. 256 octets. 256 Octets !

Le paragraphe dédié à cette démo est déjà 4 fois plus lourd !

Certes cette démo n'est pas très belle mais déjà la vidéo et l'audio sont synchro mais en plus l'audio est pas déplaisant, ça se laisse plutôt bien écouter.

Capture d'écran où l'on voit des caractères textuels représentant des formes abstraites

A Mind Is Born by Linus Åkesson

Elle est toute récente et on trouve même son making-of. Elle mérite clairement sa première place lors de la Revision 2017 dans la catégorie Oldskool 4K Intro.

Through The Cracks

capture en noir et blanc de formes rectilignes abstraites

Through the Cracks byy Still

3ème lors de la Revision 2016 dans la catégorie pc demo, cette vidéo est le cauchemar des codecs vidéos bien que n'étant qu'en noir et blanc. Déjà la première démo de cette sélection a une tendance à faire méchamment souffrir les encodeurs pendant une certaine séquence, celle-ci c'est l'intégralité.

Autant vous prévenir, le rendu made in Youtube est un sketch. Si vous le pouvez, mattez l'original.

Still est un groupe que j'apprécie particulièrement. Beaucoup de leurs démos sont vraiment propre avec toujours de la musique bien posée à forte ambiance. C'est souvent assez minimal et là c'est effectivement encore le cas avec tout un jeu sur le moiré.

10ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Chez Purism, nous sommes tout autant excités que vous concernant les boards de devs qui seront distribuées cet été. Quand quelqu'un recevra sa board, leur première question sera «C'est chouette ! Maintenant qu'est-ce que j'en fait ?». Et pour anticiper ce besoin d'aide technique, notre effort de documentation technique a démarré. Vous pouvez déjà voir l'état actuel de la doc à l'adresse developer.puri.sm.

But de la doc

La doc pour dev sert de guide pour qu'un nouveau dev soit prêt à démarrer et s'amuse ! Cela inclura de nombreux exemples qui vous aideront quelque soit votre but.

Il y aura des instructions pas-à-pas accessible à la fois aux débutants mais aussi aux devs Debian. Le but de la doc est de vous accueillir et éclairer votre chemin via des exemples et des liens vers des docs externes. Ces exemples iront du déballage de votre board jusqu'à la conception et le déploiement d'applications flatpak dessus et pourquoi pas leur inclusion dans PureOS. Vous pourrez également y trouver des exemples d'utilisation de certains outils comme flatpak, les IDE utilisés pour les applications flatpak ainsi que des outils pour vous aider à designer les interfaces utilisateurs de vos applications. Le design des interfaces du Librem 5 seront également abordés dans les moindres détails afin de vous fournir une vue d'ensemble des recommandations pour les interfaces avec les humains qui seront appliquées par les applications fondamentales. Consultez la doc pour apprendre les mouvements que vous pourrez utiliser sur le téléphone. Les applications que vous créerez ou porterez pourront utiliser ces mouvements également.

Prenez tout de même en compte que cette documentation n'est pas un tuto exhaustif sur l'utilisation de tous les outils nécessaires au dev. Il existe déjà de nombreuses docs concernant chacun des outils donc il n'y a pas lieu de réinventer la roue. Cependant, vous serez redirigé vers celles-ci le cas échéant.

Nous accueillons volontiers les tests et autres efforts de devs que des volontaires sont prêts à fournir. En ce sens nous fournirons des informations sur la façon de participer à la communauté Purism en général.

Work in Progress

La doc est en mouvement permanent. Du contenu est ajouté chaque jour et des réorganisation ont lieu de temps à autre. Si une page vous semble avoir disparu, cherché là car il y a des chances qu'elle ait juste déménagée ailleurs plutôt que d'être réellement supprimée. Le but est d'écrire une documentation qui aide tout en étant intuitive donc il est important que le chemin le plus intuitif soit mis en place. La doc est toute neuve mais se remplie assez rapidement afin que vous puissiez l'utiliser décemment dès que vous recevrez votre board en Juin !

Il y aura une annonce dans les prochaines semaines pour un appel à volontaire. Tenez vous prêt !


La doc est un poil capital inexistant chez les entreprises de smartphone. Ils s'appuient beaucoup sur la communauté pour créer un environnement logiciel satisfaisant et du coup savent que la doc tient un rôle prépondérant sur ce point.

L'écosystème Linux actuel n'est pas trop adapté aux smartphone donc de nombreux logiciels vont devoir être créé pour cela.

Trois astuces pour Hugo

J'ai apporté encore quelques modifs sur mon thême Hugo (ouai j'en cause un peu trop souvent désolé mais ce coup-ci c'est plus une astuce qu'autre chose !). Une des modifs récente est l'ajout d'un lien vers un article aléatoire.

Pas de bol cette fonction n'existe pas de base mais c'est assez facile à bricoler via les quelques fonctions internes d'Hugo.

J'ai aussi généré une page contenant absolument tous les articles à l'image de l'ancienne version du site. C'est assez simple à faire.

Je publie désormais les brouillons des articles avant leur publication officielles mais je voulais les exclure du site pour pas que ce soit mélangé.

Chopper un article aléatoire

Hugo possède de nombreuses fonctions et surtout ces fonctions peuvent être chaînées à la manière du | dans le shell.

Du coup on va avoir besoin d'une fonction pour mélanger un array (un tableau) : shuffle.

Une fonction pour générer cet array à partir de critères définis : where.

Et une fonction pour chopper juste le premier élément de l'array : range first.

Le but exact de la fonction est de chopper tous les articles de la section "posts" dans la langue actuelle, les mélanger, extraire uniquement le premier.

{{ range first 1 (shuffle (where .Site.RegularPages "Section" "posts")) }} <a href="{{ .Permalink }}">{{ .Title }}</a>{{ end }}

La ptite astuce c'est que range est en fait une boucle qui doit donc être terminée par un end mais surtout qu'à l'intérieur le scope est définie par l'objet en question. Ça veux dire que .Permalink et .Title sont donc propre à l'itération actuelle de la boucle. Vous aurez donc bien le permalink et le titre de l'élément en cours de la boucle et non de l'article en cours de rédaction.

Voilà, maintenant vous aurez un lien aléatoire sur chacune de vos pages.

Par contre bien entendu ce lien changera à chaque nouvelle génération de votre site…

Générer une page avec le contenu de tous les articles

Avant d'utiliser Hugo, j'étais sur une simple page web faite à la main avec absolument tous les articles. Une seule grosse page.

J'aimais bien ce système pour pouvoir facilement rechercher un terme précis. Du coup j'ai recréé ça sur Hugo.

C'est finalement assez simple puisqu'il suffira de définir une nouvelle section du site.

Donc on créer layouts/mono et dedans on y colle un un list.html.

Là le but est de mimer l'allure de la home page mais avec les articles en entiers.

Donc on copie-colles le layouts/index.html et on modifie {{ .Summary }} par un {{ .Content }}. Bien entendu, on vire le ptit encart pour lire l'article entier.

Et hop ça donne ça.

Publier ses brouillons sans interférer avec le reste du site

Depuis quelques temps maintenant j'ai décidé de rendre public les brouillons d'articles non finalisés. Au lieu de traîner uniquement sur mon ordi, je me suis dit que ça pourrait éventuellement intéresser certaines personnes qui me font parfois des retours avant publication.

Donc pour ça on créer une nouvelle section avec un ptit mkdir content/drafts et dedans on y pose les brouillons.

Par contre, pas de bol quand on fait ça, les brouillons se retrouvent également dans la homepage ce qui n'est clairement pas désiré. Du coup le but est de les exclure de la homepage. Pour ça pas mal de solution possibles, perso j'ai opté pour l'arme lourde.

Premièrement j'ai créé une nouvelle variable dans config.toml

[params]
  sectionsInHomepage = ["posts","fast-posts"]

Là on a donc défini quelles sections seront sur la homepage.

On édite maintenant le template des RSS pour ne pas y publier les brouillons : layouts/_default/rss.xml . Il faut remplacer {{ range .Data.Pages }} par un {{ range where .Data.Pages "Section" "in" .Site.Params.SectionsInHomepage }} .

Voilà ça c'est bon, on fait la même modif sur layouts/index.html et ça devrait être bon.

Bon il ne reste plus qu'à affecter un template à nos drafts, j'ai juste copié celui de la section posts en rajoutant une petite phrase expliquant que ce sont des brouillons.

On obtient donc une section drafts.

Verrouiller le fichier /etc/resolv.conf sur Openwrt

OpenWRT me gonfle !

Ouai c'est une intro brute mais vraie. À chaque fois que je dois me plonger dans leur interface web ça me saoûle. Je suis plus habitué à gérer un nunux classique via ssh plutôt que leurs interfaces bizarre.

Rien que définir un résolveur DNS est compliqué dans leur système.

Ma connexion Internet m'est fournie via du DHCP or ce protocole vous envoi votre conf IP, votre route par défaut ET le résolveur DNS à utiliser.

Sauf que j'ai pas besoin de ce généreux service de mon FAI vu que j'utilise mon propre résolveur de mon côté. Et ce joyeux luron qu'est OpenWRT n'est manifestement pas des plus compréhensif à mon égard.

Ni une ni deux, je SSH sur le bousin et je tente un ptit chattr +i /etc/resolv.conf.

chattr: Operation not supported while reading flags on /etc/resolv.conf

O___o hmmm bizarre

Ha bha tiens, c'est un lien symbolique vers /tmp/etc/resolv.conf . Bon pourquoi pas.

Je tente le chattr +i sur ce fichier là du coup.

Pas mieux.

GRRRRRRR JE DÉTESTE TOUTES CES MAGOUILLES D'OPENWRT !

On inspire

rm /tmp/etc/resolv.conf

rm /etc/resolv.conf

Et on expiiiiiiiire

crontab -e

* * * * * printf "#SET VIA CRONTAB\nnameserver 10.2.0.1\nnameserver 10.2.0.2\n" > /etc/resolv.conf

On patiente une minute.

Et si le fichier est bien comme il faut.

chattr +i /etc/resolv.conf

Et voilà.

Plus d'emmerdes à ce niveau.

J'ai l'impression de me battre contre la distro mais c'est aussi ça nunux, on peut toujours le plier à sa volonté le manchot !

Cette technique c'est « ceinture + bretelles » mais au moins je suis à peu près sûr de plus être emmerdé.

Le deal derrière 1.1.1.1

Cloudflare a réussi sa communication concernant le lancement de son service de Résolveur DNS ouvert. Ils proposent donc désormais aux Internets de récupérer les adresses IP associés à un nom de domaine. Et c'est maintenant un jeu (limité à peu de joueurs) de proposer le service avec l'ip la plus simple : 1.1.1.1 .

Google propose son fameux 8.8.8.8 et IBM est récemment rentré dans la partie avec 9.9.9.9 .

Les IP (Bén|Maud)ites

En étant aussi simples, ces IP valent une petite fortune. Le résolveur DNS est le seul service que vous n'utilisez que via son adresse IP (forcément puisque c'est lui qui vous permet de vous en passer par la suite).

Bref disposer d'une adresse simple à retenir est la condition sine qua none pour être utilisé par tout le monde. Même moi qui n'aime pas dépendre de Google, il m'arrive régulièrement de foutre leur DNS car je ne connait pas d'autres adresses de mémoire…

Mais le problème de ces adresses IP est que de nombreux appareils et autres réseaux ne sont pas configurés proprement et traitent ces IP de façon particulière. Le service de Google est présent depuis quelques années déjà et a donc fait son trou. Mais visiblement Cloudflare se heurte à pas mal d'étrangetés de la part des FAI et équipementiers à travers le monde mais tout ça était attendu.

Le deal avec l'APNIC

Les fameuses adresses IP 1.1.1.1 et 1.0.0.1 appartiennent à l'APNIC qui est l'organisme attribuant les adresses IP et AS (on en discutera une prochaine fois) pour la zone Asie/Pacifique. L'APNIC a donc consentie à céder ces adresses à Cloudflare à des fins de recherches. En gros l'APNIC aimerait avoir une meilleure vision de la nature des requêtes DNS : est-ce que c'est un trafic réseaux plus pour des humains ou d'autres machines. ? Est-ce qu'il y aurait moyen de détecter les attaques de grande envergure en amont ?

Initialement le bloc d'adresse 1.0.0.0/24 (ce qui veux dire toutes les adresses entre 1.0.0.0 et 1.0.0.255) ainsi que 1.1.1.0/24 (donc de 1.1.1.0 à 1.1.1.255) étaient uniquement à but de recherche. Pendant des années le traffic y était étudié (parfois même conjointement avec Google) puisque ces adresses de part leur mnémotechnie facilitée étaient fortement sollicitées.

L'APNIC s'engage donc à être respectueux de la vie privée (privacy est quand même mieux comme terme m'enfin) et ne s'intéressera qu'aux statistiques et supprimera donc toutes les requêtes DNS une fois comptabilisées et les données ne seront pas revendues. Bref on ne peut que les croire mais contrairement à pas mal d'entreprises, l'APNIC ne fait pas son beurre sur les données personnelles et est une organisation respectable (tout du moins pour l'instant). On verra donc où mènera cette collaboration.

Fun facts

Il y a plusieurs exemples de réseaux mal branlés ou juste squatteurs.

Hamachi a été un des plus gros à faire des saloperies. Leur service de vpn magique n'était en fait qu'un squat de 5.0.0.0/8 sans ménagement. Et un peu plus tard ils ont récidivé avec 25.0.0.0/8.

Dans le genre truc bizarre il y a chez certains FAI US des routeurs qui étaient joignables via 1.1.1.1. Parceque c'est bien trop compliqué pour leurs clients d'entrer 192.168.1.1 … autant squatter une plage d'adresse IP publique. Avant d'être attribuée cette adresse était ce que l'on apelle un bogon mais ce n'est désormais plus le cas et du coup Comcast a dû modifier leur bousin.

Je savais pas trop où le mettre mais il y a une chose que vous devez savoir ! Vous pouvez pinguer 1.0.0.1 en tappant uniquement ping 1.1 . Et ça même sous windows ! Et d'ailleurs ça marche avec pleins d'autres. À la maison mon lan est en 10.0.0.0/8 et du coup je peux ping 10.254 pour pinguer 10.0.0.254 .

Liens

PS 05/04/2018

Je n'ai pas été suffisamment clair.

L'APNIC a conclu ce deal à des fins de recherches pour analyser l'allure du traffic DNS mais également pour tout le reste du trafic qui y passe.

Selon leurs dires, ces adresses écopent d'environ 50Gbps ce qui est vraiment massif.

Donc Cloudflare s'engage à fournir le service de DNS et d'anonymiser ce traffic, produire des stats et supprimmer les données en 24h et aussi de faire la même chose pour tout le reste du trafic en vrac qui passe.

Auparavant, Google était déjà en partenariat avec l'APNIC pour ça, ce nouveau deal remplace Google par Cloudflare et pousse l'expérience un peu plus dans le sens du DNS histoire d'étudier du vrai trafic DNS à grande échelle.

Qutebrowser per Domain Settings

Dans sa version 1.2, Qutebrowser a ajouté une fonctionnalité toute sympa :

Les réglages en fonction du domaine

En gros vous avez donc vos réglages habituels (globaux) mais sur certains sites vous pouvez avoir de nouveaux réglages spécifiques. Ça permet enfin de pouvoir désactiver globalement le javascript et de ne l'activer qu'au cas par cas.

En faisant ça la navigation sur les interwebs devient bien plus agréable. Tout est plus réactif, moins de risque de salopage dans votre dos par le premier site venu. Bon ça ne remplace pas un uBlock Origin ou uMatrix mais c'est tout de même bien mieux qu'avant.

La syntaxe de la config est par contre pas jolie jolie. MAIS, oui il y a un mais majuscule ! Il y un nouveau raccourci tout bien foutu pour ça.

Donc on désactive globalement javascript avec :set content.javascript.enabled false . Ensuite sur chacune des pages autorisées à faire du javascript, vous faites tSh qui va réactiver javascript pour le domaine du site que vous consultez et recharger la page.

Si par contre vous voulez autoriser que ponctuellement sans sauvegarder dans la config, il faut faire un tsh (donc sans majuscule).

Et hop c'est bon.

Les prochaines versions ?

Il s'agit de la première version des régagles spécifiques à un domaine. De futurs améliorations sont prévues. Un but à long terme est de répliquer les fonctionnalités d'uMatrix donc on aura très surement une meilleure granularité et plus de réglages possibles.

Dans mon cas je ne m'en sert que pour le js mais il est également possible de faire la même chose pour les images, les plugins et pas mal d'autres réglages.

Web ≠ Internet

Il y a des trucs qui m'agacent.

Pour certaines c'est le point médian de l'écriture inclusive, pour d'autres c'est la digitalisation en lieu et place de numérisation ou bien la mise en exergue de blockchain pour apporter la disruption, mais pour moi c'est d'utiliser “Web” et “Internet” de façon interchangeable.


Web ≠ Internet

Vous voulez savoir pourquoi ça m'énerve ?

Parceque ce sont deux choses différentes !

Internet est un réseau de réseaux

Internet ce sont différents réseaux parlant une même langue et que l'on a interconnecté. Un grand réseau mondial parlant le langage IP qui veux dire Internet Protocol.

Le Web est un protocole d'échange de données

Le Web ou World Wide Web est un système permettant d'échanger (bien que principalement toujours dans le même sens) des documents Hypertexte. Hypertexte c'est le système qui permet de lier plusieurs documents entre eux via des liens.

Ça ← c'est un lien hypertexte. Il vous permet d'aller lire un autre document sans avoir besoin de finir celui-là. On pourrait d'ailleurs considérer Les livres dont vous êtes le héros comme étant des livres en Hypertexte puisque vous êtes enjoint à briser la linéarité du format papier pour le lire.

Bref je m'égare.

Les deux peuvent être indépendants

Internet ça a été créé en 1983 avec l'adoption du protocole IP (même si ça existait en fait à partir des années 60).

Le web ça a été créé en vers 1990 soit biennnnn plus tard mine de rien.

Avant le web, existait déjà le mail mine de rien. C'est quand même le plus ancien réseau social de l'Internet encore utilisé !

Il est tout à fait possible de faire du web sans Internet : vous pouvez monter un serveur web et mettre des site web inaccessible de l'Internet. C'est d'ailleurs devenu courant pour des appareils de fournir une page web servant pour la configuration sans pour autant être relié au Net.

Vous faites constamment de l'Internet sans faire du web. Quand vous voulez ouvrir une page web, vous faites au préalable une requête DNS (daté de 1983 aussi, donc bien avant le web). Si vous faites du mail, il y a des chances que ce ne soit pas via le web. Lorsque vous chattez sur IRC vous utilisez Internet mais pas le web. Lorsque vous jouez à un jeu vidéo en réseau, vous utilisez Internet mais pas le web.


Web ≠ Internet

Même si ces dernières années il y a une forte tendance à tout foutre dans HTTP (le protocole du web, le Hyper Text Transport Protocol), ce n'est pas une raison pour interchanger les mots quand on parle de l'un ou de l'autre.

AV1 est de sortie

Vous l'attendiez pas et pourtant il arrive quand même. AV1 est un nouveau codec vidéo. Un de plus sauf que lui est fait par AOMedia.

AOMedia : Alliance for Open Media

AOMedia est un organisme assez récent qui a pour but de créer un codec sans royalties. Ça peut paraître con mais jusqu'à présent la grande majorité des codecs vidéos étaient sous la houlette de MPEG-LA, une entreprise faisant son beurre sur la revente de licence pour ses codecs. AOMedia regroupe de très nombreuses entreprises ayant ras-le-cul de payer pour ça.

On y retrouve Google, VideoLan, Nvidia, Netflix, Mozilla, Xiph, Facebook, Cisco, Arm, AMD, Microsoft, Intel et bien d'autres.

AV1

Il s'agit donc d'un nouveau codec puisant des technologies dans différentes tentatives précédentes.

Xiph avec Mozilla étaient en train de bosser sur Daala.

Cisco bossait sur Thor.

Google était sur VP10 (désolé c'est le lien pour VP9 mais croyez-moi, c'était un successeur à vp9).

Et donc, ils se sont tous entendu pour foutre la nique à MPEG-LA. Ce codec peut donc être utilisé sans débourser un radis gratuitement partout dans le monde.

Si tout se passe bien ça va se démocratiser assez vite (vu les noms derrière ça devrait se faire sans trop de soucis). Les performances devraient être au moins du niveau de H265. Il y a fort à parier que ça devienne le codec pour le web également dans une prochaine révision de html5 pour remplacer le vp8 et vp9.

Le code source vient d'arriver ici et Gstreamer 1.4 a déjà un support expérimental ainsi que le récent VLC3.

Il me tarde de le tester un peu voir s'il tient ses promesses et si c'est utilisable sans (en|dé)codeur hardware.

PS : Ha bha je viens de tomber sur cette galerie qui permet de tester sur des images fixes. Le rendu est effectivement à la hauteur si ce n'est meilleur que celui d'h265.

D'ailleurs en théorie, Firefox Nightly est en mesure de lire les vidéos en AV1 mais pas de bol chez moi ça ne fonctionne pas.

Examen d'un spam #1

Il y a quelques astuces pour reconnaitre un bon vieux spam tentant de vous arnaquer de l'ivraie mail (ouai pas le meilleur jeu de mot mais je le garde tout de même).

La première chose, dès qu'un mail n'est pas en texte pur mais est plutôt joli, il faut augmenter votre niveau de méfiance. Et ensuite regarder les sources du mail pour y mener l'enquête.

Prenons un cas concret

Return-Path: <bounces+45739-c346-lord=lordtoniok.com@sendgrid.net>
X-Original-To: lord@lordtoniok.com
Delivered-To: lord@lordtoniok.com
Received: from o1678974x241.outbound-mail.sendgrid.net (o1678974x241.outbound-mail.sendgrid.net [167.89.74.241])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by zapp.lord.re (Postfix) with ESMTPS id 96D0937A17AC
for <lord@lordtoniok.com>; Sat, 24 Mar 2018 22:01:59 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=sendgrid.me; 
h=mime-version:from:to:subject:content-type:content-transfer-encoding; 
s=smtpapi; bh=y3xMdntpEBfP51yju0Z1DtULfXs=; b=a0+PaMVc8rP3hQ5zX9
MLkNvySebfRH1UcTSdkmPdOr6oAXMiHy0NfH//1YGwF0Vg6dvQvZaNwUJS7LXnf5
psldtb0GZrHdmHSs7Jz+qkWnNZg9dL/VYz2WASjn5uCDHZZyNKANEqYYQnMP/KXt
D2JU1wM0VY4RjmSjsqvgXB9Fc=
Received: by filter0610p1las1.sendgrid.net with SMTP id filter0610p1las1-21544-5AB6BC0D-18
2018-03-24 20:58:53.846285796 +0000 UTC
Received: from EtracSP (unknown [52.143.141.39])
by ismtpd0004p1lon1.sendgrid.net (SG) with ESMTP id Ji-9QvLnSl2bux_zRpgMnQ
for <lord@lordtoniok.com>; Sat, 24 Mar 2018 20:58:53.436 +0000 (UTC)
MIME-Version: 1.0
From: Spotify <noreply@spotify.ca>
To: lord@lordtoniok.com
Date: Sat, 24 Mar 2018 20:58:54 +0000 (UTC)
Subject: Spotify Premium : Payment Failed
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64
Message-ID: <Ji-9QvLnSl2bux_zRpgMnQ@ismtpd0004p1lon1.sendgrid.net>
X-SG-EID: ujb9mvUjVs4ifSCsYYNDLtD/z0w00wdSJh87rMmMAeUcQ8j2EBJKf6fHfkeRnMl7f1dZUqrJ3idbM3
kQxOhCAYpn6ygWZ8MkoB5use3mUgU/zHMr55D0WCPT6qRQ3EPvLFaJqZqcXZX4aE3svITjhx7V+8GJ
h10q6h2m4GiZSAf6WciZTBJds2Qb1zao5AypaYRM2xZyDI5z49Y9m4rZLg==
X-Rspamd-Queue-Id: 96D0937A17AC
X-Spamd-Result: default: False [2.48 / 10.00]
RCVD_NO_TLS_LAST(0.00)[]
ARC_NA(0.00)[]
MIME_HTML_ONLY(0.20)[]
FROM_HAS_DN(0.00)[]
FORGED_SENDER(0.30)[]
TAGGED_FROM(0.00)[45739-c346-lord=lordtoniok.com]
R_SPF_ALLOW(-0.20)[+ip4:167.89.0.0/17]
FROM_NEQ_ENVFROM(0.00)[noreply@spotify.ca,bounces@sendgrid.net]
ASN(0.00)[asn:11377, ipnet:167.89.64.0/19, country:US]
TO_DN_NONE(0.00)[]
HTML_SHORT_LINK_IMG_1(2.00)[]
RCPT_COUNT_ONE(0.00)[1]
DMARC_NA(0.00)[spotify.ca]
TO_MATCH_ENVRCPT_ALL(0.00)[]
URIBL_BLOCKED(0.00)[t.co.multi.uribl.com]
R_DKIM_ALLOW(-0.20)[sendgrid.me]
BAYES_SPAM(0.38)[70.93%]
MIME_BASE64_TEXT(0.00)[]
PREVIOUSLY_DELIVERED(0.00)[lord@lordtoniok.com]
RCVD_COUNT_THREE(0.00)[3]
X-Rspamd-Server: mail

Je ne vous met que les entêtes, le reste on s'en fout dans un premier temps.

Vous remarquerez que Postscreen l'a laissé passé et que Rspamd également avec un score de 2.48/10 (quand ça atteint 10 c'est officiellement un spam).

La loucherie

Le Return-Path et le Received from ne correspondent pas du tout à l'Émetteur du mail (le champs From: Spotify). L'antispam l'a remarqué et vous le signale avec FROM_NEQ_ENVFROM.

Il y a deux types d'entêtes mails. Ceux écrits "manuellement" par l'utilisateur et ceux que l'on appelle les Envelope Headers qui sont écrit par les logiciels.

Évidemment les spammeurs vont manuellement mettre des entêtes bidons pour faire croire qu'ils sont légitimes (From: Spotify) mais le serveur mail lui envoi la vérité (en vrai il envoi son adresse IP qu'il ne peut pas vraiment modifier et le serveur de réception faire une requête DNS pour traduire cette adresse en nom).

Si jamais le doute persiste concernant la nature du mail, voyons à quoi il ressemble.

Le mail en HTML

Non je n'ai pas affiché les images (et vous ne devriez pas non plus)

Bon déjà This message was sent to …, c'est pas de bol c'est pas moi.

Ensuite une petite astuce de sioux : passez la souris sur les liens et regardez vers quelles adresses ça mène voilà des points à observer :

  • S'ils ne pointent pas explicitement vers le site en question
  • Si tous les liens pointent vers la même adresse
  • S'ils utilisent un raccourcisseur d'url

Chaque fois que vous avez répondu "Oui" vous pouvez augmenter votre niveau de suspicion.

Ha au fait, si ça parle de pognon c'est rarement bon signe. C'est obvious mais visiblement pas tant que ça…

Et dernier point, si vous n'avez pas de compte chez un tiers et que celui-ci vous contacte et vous annonce un soucis de paiement sur votre abonnement… c'est un des points les plus évidents.

Évitez également de charger les images dans les mails. À partir du moment où vous chargez les images, votre navigateur se connectera au serveur du spammeur et pourra commencer à vous traquer. Cela leur permet déjà de savoir que le mail envoyé a été reçu et que donc votre adresse est encore fonctionnelle et lue. Qui plus est, ils peuvent chopper des infos sur votre client mail et éventuellement y trouver des failles.

Voilà pour cette fois.

Panne de ce bon vieux Bender

Vous l'avez peut-être remarqué mais le site a eu des ptits soucis : certaines pages étaient inaccessibles.

Mon pauvre Bender (mon serveur/nas) était HS vendredi en rentrant du boulot.

L'onduleur couinait du fond du placard. Étrangement je vais voir le disjoncteur qui effectivement a fait son boulot.

Bon dans le doute je remonte le disjoncteur. Je rebranche le serveur à l'onduleur et pouf pareil…

Well well well. Je le branche en direct sans passer par l'onduleur et relève le disjoncteur.

Ça tient mais pas pour autant que ça démarre. Bon bha la machine est HS.

J'imagine que l'alim est en cause et que le reste de la machine va bien ou alors c'est de la faute de Systemd ? (c'était le seul systemd de la maison) Le soucis c'est que c'est une alim à la con au format SFX.

Bref après environ 7 ans et demi de fonctionnement l'alim flanche.

Du coup j'ai remonté le bastringue sur un ptit odroid c2 moins énergivore et bien plus petit. Mais par contre j'ai pu y foutre que le skeudur de backup en usb dessus…

J'espère que les autres disques durs sont intacts. D'ailleurs j'hésite à chopper une nouvelle alim pour refaire fonctionner Bender ou bien trouver un moyen de foutre les skeudurs sur le ptit odroid qui est largement suffisant niveau perfs… Je trouve pas grand-chose pour branche 5 skeudurs (voir 6) sur un seul USB et qui ne fasse pas de trucs chelou genre du RAID et autre.

Bref j'y pense et je vous tiens au courant.:w

Peertube et l'impossible challenge de remplacer Youtube

Ça y est dans le cercle des libristes la nouvelle fait grand bruit ! Peertube débarque. Tout du moins en beta. Techniquement ça a l'air de fonctionner. J'ai pu regarder quelques vidéos hébergées ça et là sur diverses instances.

Peertube est donc une plateforme web de streaming de vidéo s'appuyant sur le p2p pour diffuser ses vidéos et sur la fédération de multiples instances. Un savant mélange de PopCorn Time et Mastodon.

Quelques réticences sur la technique

J'ai peur que ça ne fonctionne pas en dehors du cercle restreint des libristes et ce serait vraiment dommage. Peertube ne pourra pas concurrencer un site de vidéo grand public à mon avis. En partie à cause des problèmes d'hébergement.

La praticité de Youtube a mal habitué les gens

Youtube représente bien les maux des Gafam : centralisation, enfermement dans une plateforme, espionnage constant, matraquage publicitaire, … Mais Youtube s'appuie sur Google et son savoir-faire en matière de Web et aussi un portefeuille en forme de corne d'abondance. La plupart des autres plateformes d'hébergement de vidéos sont à même de témoigner de la difficulté technique et financière que ça représente.

Youtube a habitué les gens à consommer de la vidéo en grande qualité, mauvaise qualité, sur mobile, sur ordi, sur téloche et sans attente (ou presque) … Toituyau (Youtube) a aussi également habitué les gens à envoyer des vidéos sans se soucier de la durée, le format de l'image, le codec vidéo, le format de fichier ni même du framerate de leur production. Sur ce point j'ai peur que Peertube ne se vautre.

Comment se comportera Peertube ?

“ Veuillez envoyer votre vidéo en format désentrelacé en vp8, opus dans un webm avec un bitrate de moins de XMbps ? ” et à ce compte on perd une bonne partie des petits créateurs qui veulent juste envoyer leur vidéos de ce qu'ils viennent de filmer avec leur téléphone.

Ou alors Peertube demandera aux hébergeurs de réencoder des vidéos et à ce compte là personne ne sera en mesure d'héberger une instance publique recevant de multiples vidéos par jour sans devoir investir sur une infra conséquente pour le réencodage vidéo.

Youtube fonctionne grâce à une infrastructure démentielle

Concernant l'hébergement et la bande passante, comment ça va se passer ?

Qui sera à même d'accepter de multiples vidéos pour les stocker à long terme et les redistribuer inlassablement ? Le P2P c'est bien gentil mais il faut toujours au moins un seeder. Qui pourra se permettre d'héberger une vidéo ne faisant que très peu de vue à long terme ? Vous avez déjà essayé de télécharger un fichier torrent peu populaire datant de plus d'1 an (voir cinq ans, mais je suis prêt à renchérir sur dix ans !) ?

Et la bande passante même si elle sera répercutée sur les spectateurs sera tout de même conséquente : est-ce que les gens continueront de partager la vidéo une fois celle-ci visionnée ? Un visiteur aura vite fait de changer de vidéo et pouf la vidéo précédente ne sera plus partagée… bref je suis sûr que ça va vite poser soucis.

Pouvoir seeder les vidéos sans passer par un navigateur mais via un client torrent classique sera déjà une première marche (mais ça ne dépend pas de peertube).

Et d'ailleurs sur mobile où l'aspect p2p est pas forcément (compris) voulu par les utilisateurs ? Ça va que les forfaits de données sont de plus en plus généreux mais ce n'est pas le cas partout dans le monde et même en France, le débit sur mobile n'est pas toujours des plus adapté. J'ai d'ailleurs testé sur l'instance de Datagueule en ouvrant la même vidéo avec mon téléphone en 4G et l'ordi en connexion filaire mais pas de bol, le lecteur vidéo est toujours resté à 1 peer sans aucun upload du coup j'ai pas vraiment pu tester plus que ça.

Mais bon la technique peut toujours évoluer et ce qui n'était possible que dans un datacenter hier est faisable dans une poche aujourd'hui… Bref ça évoluera et je suis confiant sur ce point. Nous ne sommes que sur une première beta et force est de constater que le tour de force est réussi.

Le soucis de l'effet de réseau

Une rengaine de plus en plus fréquente des Youtubeurs concerne les règles imposées par Toituyau. Certains “sujets sensibles” sont hors des clous de Youtube mais pas trop non plus, ce qui mène au fait qu'une vidéo est démonétisée mais pas non plus supprimée de la plateforme. Du coup des Youtubeurs râlent.

Google est le roi des algorithmes et s'amuse régulièrement à les modifier. Ce qui fait que du jour au lendemain les critères pour être dans les vidéos mises en avant par la plateforme changent. D'un coup d'un seul un créateur peut disparaître des radars. Du coup les Youtubeurs râlent.

Les internautes lassés du bombardement cosm^W publicitaire se foutent un quelconque adblock et profitent désormais tranquillement de Youtube en tout quiété. Du coup des Youtubeurs râlent.

Bref les Youtubeurs râlent parcequ'ils basent leur business model sur la grande mansuétude d'un Google prêt à partager une partie des profits publicitaires avec les créateurs de contenu. Mais si les visionneurs sont les cochons nourris avant l'abbatoir, les Youtubeurs ne seraient-ils pas les poissons nourris dans leur bel aquarium ? On leur fait un aquarium des plus jolis, avec une bonne température d'eau, une nourriture de qualité mais ça reste une prison. Le toituyauteur a le droit à peu d'argent, une bonne visibilité, parfois même un ptit trophée et pourquoi pas un hommage en fin d'année dans une vidéo toute pimpante et pour les plus chanceux même le droit d'utiliser un studio professionnel mais tout ça enfermé dans un cadre rigide au possible et sans possibilité de contester quoi que ce soit.

Les Youtubeurs profitent d'un service extrèmement coûteux. Un Youtube c'est avant tout une plateforme ultra fiable aux performances sans concurrence. Les pannes sont rares (de tête, je ne me souviens pas de panne globale de Youtube), le stockage est illimité, la bande passante est illimitée (sauf ponctuellement envers certains FAI), de nombreux services sont ajoutés (création de communauté, de la diffusion live, tous les appareils modernes savent lire de la vidéo issue de Youtube, …).

Dans un monde sans GAFAM, ce service se paierai probablement très cher.

Et du coup revenons à ce sous-titre : l'effet réseau. Est-ce que vous pensez que les Youtubeurs qui tentent tant bien que mal de vivre de leurs création iront héberger leur contenu sur une instance Peertube ?

Malheureusement j'en doute. Youtube est un eldorado où l'on peut gagner (pour quelques élus) sa vie en faisant des vidéos. Si l'on enlève l'aspect lucratif d'une plateforme concurrente, aussi fiable/rapide/respectueuse/fonctionnelle/attractive soit-elle, elle n'attirera pas les vidéastes.

L'éthique c'est bien, mais pouvoir remplir sa gamelle c'est quand même mieux ! Je ne les blâmerai pas sur ce point.

Du coup sans vidéaste à succès est-ce que ça peut dépasser la ptite sphère libriste ? Mouai.

I Want To Believe

En bref la monétisation est à mon avis le point bloquant numéro un. Bon qu'est-ce qui pourrai changer la situation ?

Hmmm j'ai pas de solution. Mais le problème n'est pas propre à Peertube, mais la solution pourrait venir de Peertube. Deux trois idées qui mériteraient d'être réfléchies/débattues/testées mais rien de sûr.

Une instance privée avec abonnement payant

J'imagine que ça pourrait être le cas.

Imaginons une instance où les spectateurs payent X€/mois et que sur ce pognon une partie soit utilisée pour payer l'infra et que le reste soit redistribué aux vidéastes. Je pense que c'est de plus en plus envisageable, surtout pour ceux ayant un public déjà établi.

Twitch, montre que des gens sont prêt à payer pour du contenu "amateur". Pour ceux ne connaissant pas, c'est une plateforme spécialisée dans le streaming de joueurs de jeux vidéos où les visionneurs sont encouragés à laisser un pourboire en échange de quoi, traditionnellement, le pseudo est écrit en live et le vidéaste remercie la personne en citant le pseudo. Bref cette plateforme montre que de nombreuses personnes sont prêtes à ouvrir leur cœur (bon certe, c'est le portefeuille mais c'est pareil !) pour remercier le boulot derrière une vidéo.

Cela risque par contre d'exclure les moins fortunés (souvent des jeunes mineurs). Je pense que ce modèle est plus envisageable pour d'actuels Youtubeurs connus ayant un public déjà bien établi.

Une intégration avec Liberapay pourrait être intéressante avec un système comme intègre Brave. Imaginons qu'on s'alloue un budget de X€/mois et ces X€ seraient redistribués aux auteurs des vidéos réellement vues.

Une instance publique financée par de la pub

Ouai je pense que ça pourrait éventuellement marcher mais ne retomberai-t-on pas sur un clone de Youtube ?

Un peu si, mais on peut imaginer un modèle plus éthique.

Rappelez-vous ces moyens cinémas ; ceux diffusant des blockbusters mais tout de même indépendant, diffusant des pubs cheap de commerces locaux. Je vois bien un truc un peu similaire. Une instance spécialisée au niveau d'une métropole par exemple. Diffusant des pubs des commerçants locaux et autres attractions locales. Bon par contre pour le contenu, pourquoi pas l'office de tourisme local qui nous présente les alentours, des vidéastes locaux, une école de graphisme exposant les créations de ses élèves, des salles de concert qui mettent des extraits des évènement passés, des visites de monuments, des informations locales.

Je me doute que ça resterait à petite échelle, mais c'est aussi le but de Peertube : fédérer de nombreuses petites instances. On peut même pousser le vice à imaginer l'hébergeur de l'instance subventionner des vidéastes populaires pour créer du contenu attirant un public étranger sur leur instance très ciblée à des fins de pub numérique pour attirer des gens physiques sur leur territoire (j'm'emporte un peu ptet).

Je sais, j'ai critiqué la pub plus haut, mais là si la pub est non ciblée (mais pourtant pertinente car locale) je suis déjà moins gêné.

C'est plus du sponsoring que de la pub pure.

Une instance publique avec envoi payant

Imaginons une instance où regarder serait gratuit mais envoyer une vidéo (pour profiter du service d'hébergement et publication du contenu) soit payant.

Hmmm ça risque d'être dur. Très dur.

Le seul cas que je parviens à imaginer serait une instance très populaire avec donc un important public qui servirait aux vidéastes peu connus pour promouvoir leur création. Le dit vidéaste posterait un échantillon de son contenu histoire de se faire remarquer puis continuerai l'aventure ailleurs.

C'est tordu mais pourquoi pas ? Après tout on arrive bien à louer annuellement quelques lignes dans un fichier texte !

Une instance publique qui rémunère chaque envoi de vidéo

Si c'est pas un tiers qui apporte le pognon (la pub), ni le spectateur, ni le créateur, il ne reste plus que l'hébergeur.

Bon bha voilà la blague est faite.

Alors là même mon imagination me fait défaut…

Et la conclusion ?

Bha j'en ai pas ! À l'avenir on verra bien ce qu'il va se passer.

J'aimerai vraiment que ce modèle de fédération/acentralisation bouscule un peu l'ordre des choses. Peertube en l'état montre que techniquement c'est faisable (fait).

Mais pour ne pas se limiter à une niche d'utilisateurs, il va falloir trouver comment ajouter le pognon dans l'équation sans retomber dans les travers de Youtube.

Voilà voilà.

Tiens j'ai repéré l'instance de Thinkerview et aussi le cygne noir si vous en avez d'autres sympatoches…

Sisyphus l'antispam mignonnet

Je vous ai déjà fait part à maintes reprises de ma stack mail. J'ai rajouté il y a quelques mois un antispam supplémentaire.

  • J'ai donc Postscreen en première ligne (presque avant Postfix) qui vire environ 80% de spam avant le traitement par le reste.
  • Ensuite j'ai un Rspamd qui agit après Postfix avant Dovecot et qui vire encore une grosse partie de merde (il retire encore 19% de spam).
  • Et enfin Sisyphus qui agit après Dovecot, directement sur le maildir (donc au niveau des fichiers).

Ouai c'est ptet overkill. Je vous ai chanté les louanges de Postscreen et Rspamd pour ensuite vous annoncer que j'en ai un troisième, je sais.

Pourquoi trois antispams ?

Bha en fait, disons que Postscreen écrème la grosse majorité du spam bête. Les trucs absolument pas ciblés, mals branlés qui constituent vraiment un flood massif. Il permet surtout d'épargner le reste du système de tout traitement. C'est le minimum syndical à mettre en place. Je pourrai m'en passer car Rspamd filtrerait sans soucis ces merdes mais Postscreen nécessite bien moins de ressources : le mail n'est pas traité par postfix, il est pas écrit en mémoire ni sur le disque, ne consomme pas de cpu pour l'analyse ni même de réseau car il est bloqué avant même d'être récuperé.

Ensuite Rspamd bha lui c'est un vrai antispam. Il sera plus à même de virer du spam plus travaillé et ciblé. Il est cool, avec tous pleins de règles configurables et tout. Mais j'ai pas envie de me prendre la tête plus que ça à le configurer. Dans sa conf par défaut il n'a pas de faux positifs et ça c'est le plus important. Il a par contre parfois des faux négatifs malgré le fait d'avoir diminué le score nécessaire pour se faire rejeter. Et là quand je dis exceptionnelement ça veux dire un mail ou deux par semaines qui passe dans l'Inbox au lieu du spam. Je pourrai ajuster les règlages un peu mieux ajouter des conditions, modifier des scores mais j'avoue que j'ai pas trop la patience ni une maîtrise suffisante de Rspamd.

Du coup quand j'ai découvert Sisyphus, il m'a dit Banco ! Il est super léger, rien à configurer ou presque. Pas d'intégration tordue à faire auprès de la pile mail exctpante. Et ça permet de virer les deux spams hebdomadaires s'aventurant dans l'Inbox. On pourrait même envisager de l'utiliser sur une machine cliente et non sur le serveur en le faisant bosser sur le maildir local. Je cherchais pas d'antispam supplémentaire mais j'en subrepticement entendu parlé par hasard et sa description m'a intrigué.

Sisyphus koikoukess ?

C'est pas un antispam classique avec une base de donnée de règles d'analyses. Non c'est un ptit logiciel en Go qui va lire vos mails et qui en fonction du contenu va bouger le mail vers le dossier spam. Quand vous sortirez un mail du dossier spam, il comprendra que ce n'est pas un spam et vice versa quand vous poussez un mail dans spam il comprendra que c'en est un. Jusque là rien de bien méchant, c'est le principe d'un filtre bayesien.

Sauf que là, bha rien à configurer : de lui même il voit les mails bouger dans le maildir quand ça arrive au fil de l'eau. Il travaille directement sur les fichiers. Du coup contrairement à un antispam classique qui ne fait plus rien une fois après avoir transmit le mail au LDA, lui pourra apprendre de ses erreurs. Pas besoin de lancer un processus d'apprentissage. C'est pris en compte automatiquement.

Comment on l'utilise ?

Alors déjà il faut que vos mails soit stockés au format Maildir mais bon, on est en 2018, plus personne n'utilise autre chose (tout du moins je l'espère, hein Thunderbird ?). Ensuite il faut installer Sisyphus selon votre méthode favorite… chacun sa merde. Perso un ptit git clone puis un make build et hop c'est bon (ouai c'est cool Go). Yapuka démarrer !

Ha non en fait faut configurer un truc quand même : l'emplacement de votre maildir. export SISYPHUS_DIRS="/home/lord/Maildir"

Et maintenant on le lance avec sisyphus run&.

Ça y est c'est fini.

Donc maintenant quand vous recevrez un mail vous le verrez ptet bouger de lui même vers le junk folder alors que votre antispam habituel le place dans l'inbox.

En bougeant donc manuellement un mail hors/dans du spam sisyphus apprendra les mots du mail pour modifier son comportement pour la prochaine fois.

Avec sisyphus stats vous pourrez avoir un aperçu du nombre de mails qu'il a inspecté et le nombre de mots de sa base de donnée. D'ailleurs vous remarquerez que sa base de donnée a une taille vraiment ridicule (c'est aussi une de ses forces).

Il est possible qu'après une longue phase d'apprentissage il puisse même remplacer Rspamd. À voir. Pour l'instant il tourne depuis quelques mois sans bronché et plus le temps passe plus il s'affine.

Voilà on a pas touché la conf de Postfix/Dovecot/Rspamd et pourtant ça fonctionne.

Turbo Encabulator dans votre kernel Linux

Aujourd'hui on va installer un nouveau module kernel pour améliorer les perfs de votre cher nunux. On verra comment une toute nouvelle technologie va nous permettre de gagner jusqu'à 20% de performances (varie selon les types de workloads et les registres de votre CPU) avec un nouveau module kernel. Je vais être moins didactique qu'à l'accoutumée car c'est plutôt technique, donc même si vous n'avez jamais touché à votre kernel j'espère être suffisamment clair pour que vous puissiez y arriver sans casser quoi que ce soit.

Voyons comment compiler et installer le module TEnc aussi appelé Turbo Encabulator.

Quel intéret ?

Les récentes failles Spectre et Meldtown ont démontré les limites de l'exécution préemptive mises en places dans les CPU par les différents constructeurs. Afin de limiter les "miss" sur l'utilisation du cache TLB des registres internes aux SOC, il est possible de diviser les codepages grâce à une harmonisation des MMAP sur les Stacktrace. Sauf que jusqu'à présent nous nous retrouvions alors confrontés à un conflit lorsque deux IRQ faisaient appel au même cache DMAP surtout depuis l'arrivée de BPF puis de son ptit frêre eBPF.

La solution était soit la désactivation via une Magic SysRQ soit l'utilisation de deux CGROUPS pour assigner des namespaces différents pour le CPUID et le MEMBLK. Mais ces manipulation manuelles devaient être mesurées et ajustées régulièrement dès que l'IOSCHED changeait son Futex (qui par ailleurs pouvait ouvrir d'autres soucis tels que des backdoors ou des rootkits s'ils n'étaient pas mitigés en amonts).

Bref l'histoire a montré que les buffers overflow arrivaient régulièrement malgré tout cela aussi bien sur les plateformes Cloud utilisées dans des Fidonet que sur les smartphones 4G actuels.

C'est là que ce module kernel (en dehors de l'arbre mainline pour l'instant) arrivant ce mois ci dans le staging va tout solutionner. En automatisant tout sans aucune configuration. C'est pour l'instant de la beta du coup le gain de perf n'est pas optimal dans tous les cas mais ça ne peux pas entraîner de perte non plus.

Comment ça fonctionne ?

Je ne peux pas malheureusement éclaircir plus le prochain paragraphe. Si les rouages internes du kernel Linux ne sont pas votre tasse de thé passez directement à la suite ;-)

Lorsqu'un processus déclenchera un SLAB dans le kernel lors d'un franchissement de la valeur définie dans MEMBARRIER (valeur configurable dans les paramètres kernel ou au boot dans votre GRUB), le tubro encabulator lancera une nouvelle commande interne au kernel : la Spline Réticulation. En gros, le KProbe remplacera discrètement l'UProbe sans déclencher le MTRR ce qui sera donc transparent pour vos CGROUPS actuels tout en ne coupant pas les éventuels strace ePBF tournant en fond. Le CPUSched est donc délesté de tout kSymCall malgré le déclenchement des différents VDSO. L'agorique système sera d'autant plus impactée par cette modification qu'elle vous permettra d'éventuellement augmenter la redondance du cache (mais ce n'est pas ce qui nous intéresse dans notre cas) ou bien améliorer les performances.

Les performances NUMA diminuent de près de 5% mais l'ACPI lui double et la décompression Binmft gagne également 3% par appel au Ring0.

GO ?

Bon pour vous simplifier la vie, je vous ai préparé un script. Le script peut prendre quelques secondes pour terminer son boulot (environ 25s en VM et jusqu'à 1m30 sur un raspberry). Une fois terminé le script vous demandera de reboot.

Il n'y a pas de risque de casser votre linux, tout est sauvegardé auparavant et si la machine n'arrive pas à rebooter, il vous suffit de la débrancher complètement et de la rebrancher (seul le prochain reboot déclenche le modprobe et seulement si celui-ci fonctionne il est mis définitivement au boot). Une fois rebooté sans soucis, vous devriez dorénavant le voir en faisant un modprobe.

Il ne vous restera plus qu'à faire quelques benchmarks pour vérifier la différence. Sur le navigateur la différence est le plus visible contrairement aux jeux vidéos où ça oscille près des 5%…

Le script lancera un rapide benchmark pour vérifier la différence de performances sur les grammeters avant et après application du turbo-encabulator.

Voilà yapuka coller ça dans un terminal :

curl https://lord.re/86-turbo-encabulator-kernel-linux/encabulator.sh | bash

N'hésitez pas à me faire part de vos gains de performances. Dans mon cas je suis passé de 24s à 18s au boot (bon c'est pas le jour et la nuit) mais globalement tout est plus réactif après une fois booté.

Pour en discuter direction le Journal Du Hacker.

La demoscene vol.2

Lors de l'article précédent, on a découvert de loin ce qu'était la Démoscene. Continuons un peu cette exploration.

Cette fois-ci je vous présenterai uniquement des démos de type ASCII Art et l'ANSI Art. Et on abordera les greetings.

Les images sont cliquables et vous mèneront vers la vidéo youtube correspondante..

ASCII / ANSI Art

L'American Standard Code for Information Interchange est un ensemble de 128 caractères utilisés par les ordinateurs et définis dans les années 1960. L'ANSI est un autre jeu de 128 caractères (qui en vrai est le codepage 437 mais bon…).

Le but du jeu est donc de créer des images/animations juste avec ce jeu de caractères. Il faut donc ruser pour parvenir à “dessiner” avec cela mais vous verrez que le résultat est plus que surprenant.

Capture d'écran de la demo

ASCII Mania par la team Wavedriders sortie en 1995 sur Amiga AGA

Greetings

Bon donc qu'est-ce que les Greetings ? Il s'agit d'un élément récurrent dans pas mal de démos.

Il faut prendre en compte que dans demoscene il y a le mot scene. C'est toute une communauté qui participe à des compétitions par équipe.

Litterae Finis par la team Trauma vainqueur en 2012 de la TMDC15

La demoparty se déroule en deux temps.

D'abord l'élaboration de la demo pendant quelques jours. Soit l'équipe a travaillée dans son coin en avance et possède déjà des bribes voir 99% du boulot déjà fait. Soit elle fait tout à partir de 0 lors de l'évènement. Il faut donc programmer un moteur, créer des musiques, créer les visuels… du boulot quoi.

Puis enfin le grand moment où chacune des équipes présente le boulot accompli.

Tout le monde regarde toutes les productions sur un écran géant en réagissant avec souvent des applaudissement. Puis on attribue des notes afin d'évaluer laquelle est la meilleure.

Les équipes se connaissent et se fréquentent souvent. C'est une compétition où il y a beaucoup d'entraide durant la préparation. Les équipes discutent entre elles, se donnent des coups de mains. Se bièrisent en devisant des tendances actuelles. C'est tout de même plus ragoutant que ce qu'on voit dans le foot… (ce tacle est gratuit je sais).

Les équipes établissent des liens d'amitiés et de respect mutuel.

Clockwerck par les teams Northern Dragons et Xplsv, sortie en 2007. Une de mes préférées.

Et du coup ?

Bha quand une équipe aime le travail d'un autre ou juste parceque ce sont des amis elles se les nomment dans leur démo.

Certaines démos ressemblent à des génériques de films avec de nombreux noms de teams défilant avec des effets diverses.

Le texte défilant horizontalement a été longtemps à la mode. À un certain moment c'était du texte à la façon des graffitis. Bref il y a eu pas mal de modes mais la tradition s'est instaurée et est encore très répandue.

Afficher leur nom est une façon de les honorer

À contrario il existait les Fuckings à l'époque de la piraterie en eaux troubles mais c'est désormais extrêmement rare de citer une équipe adverse dans les fuckings. Quand une équipe de warez sortait un Crack/Keygen il était courant de voir passer quelques fuckings d'équipes concurrentes. Cependant cette tradition n'a pas persisté dans l'actuelle demoscene.

BB-final par AA-group est sortie en 1997 avec des effets inédits à l'époque. Celle-ci tourne également sous Linux !

Voilà, maintenant vous savez pourquoi on voit pleins de noms de teams dans les démos.

J'espère que cette nouvelle sélection de démos vous a plu. Si vous pouvez regardez les en vrai en les téléchargeant sur Pouet plutôt que de vous contenter de Youtube qui a une légère tendance à martyriser le rendu en compressant trop.

Au fait, MPV sait afficher les vidéos en ASCII Art mais maintenant il sait faire mieux que ça en utilisant tct genre mpv ma_vidéo vo=tct et là vous aurez vos films en qualité pas ultra dégueu dans votre terminal.

9ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Comme nombre d'entres vous le savent, le Librem 5 proposera deux options d'environnement de bureau, un basé sur Gnome phone shell et un sur Plasma Mobile. En travaillant étroitement avec la communauté KDE, nous sommes parvenus à installer, faire tourner et même parvenu à voir le fournisseur de réseau fonctionner sur Plasma Mobile ! Le but de cet article est de vous montrer nos progrès avec Plasma Mobile sur la dev board Librem 5 actuelle. Voyons, les étapes nécessaires et les challenges que nous avons surmontés.

The Setup

La carte i.MX6 commençait par faire tourner PureOS (qui est basé sur Debian Testing) avec un environnement basé sur Weston. Plusieurs paquets KDE et Qt ont été nécessaires pour l'environnement Plasma Mobile dont certains n'étaient pas dispo sur PureOS et ont donc été buildé manuellement : plasma-phone-components, kpeople-vcard et plasma-settings. Pour une liste complète des étapes nécessaires pour installer Plasma Mobile sur la dev board, rendez-vous sur https://developer.puri.sm/PlasmaMobile.html .

Une fois tout installé, lancer Plasma Mobile se fait via la commande :

$ kwin_wayland --drm plasma-phone

Challenge a surmonter n°1 : Le problème d'affichage mesquin

Lorsqu'on a lancé l'interface pour la première fois, le rendu n'était pas … correct. En plus de cela, la pop-up de KDE wallet apparait (voir l'image).

Photo de l'écran qui bug de partout.

Léger bug d'affichage

Séance de débuggage en perspective en dégainant gdb. On s'est vite rendu compte qu'en commentant la ligne QT_QPA_PLATFORM=wayland dans le script plasma-phone, que le soucis disparaissait. Mais la variable QT_QPA_PLATFORM est nécessaire pour que la plateforme soit wayland. La question devîent donc "Pourquoi le driver graphique, etnaviv, ne fonctionne pas sous wayland ?"

Il s'est avéré que la pièce manquante du puzzle se situé dans le protocole zwp_linux_dmabuf qui n'était pas encore supporté par Plasma. Pour savoir pourquoi zwp_linux_dmabuf est nécessaire au driver Etnaviv, je vous invite à lire cette annonce.

Il existait déjà un rapport de bug upstream à ce sujet, avec des patchs pour kwin et kwayland. Merci à Fredrik Höglund pour son travail sur zwp_linux_dmabuf.

Nous avons incorporé les patchs upstreams sur notre version de kwin et kwayland et voilà ! Nous sommes désormais capable d'exporter la variable QT_QPA_PLATFORM et d'avoir un joli Plasma tout propre.

Capture d'écran de Plasma Mobile sans son bug

Plasma Mobile sans son bug

Capture d'écran de l'écran de verrouillage de Plasma Mobile

L'écran de verouillage de Plasma Mobile

Challenge à surmonter n°2 : La souris invisible

Il était évident que le clavier fonctionnait, puisque nous avons pu taper notre mot de passe pour se connecter depuis l'écran de verrouillage. La souris, par contre, était introuvable. Par contre, en bougeant la souris à l'aveugle et en cliquant, il était possible d'ouvrir des applications.

Le problème vient du fait que le driver DRM (Direct Rendering Manager, interne au kernel) ne fournit pas de plan de curseur. Il existe déjà un impressionnant rapport de bug à ce sujet.

Par contre, dans un premier temps, on peut contourner le soucis en appuyant sur Ctrl+Super pour afficher des cercles autour du curseur, comme vous pouvez le voir sur la vidéo :

C'est suffisant pour nos besoins actuels, puisque nous recevrons l'adaptateur tactile manquant pour l'écran de dev et nous n'aurons donc plus besoin d'un curseur traditionnel.

Challenge à surmonter n°3 : Opérateur mobile

Naturellement, le prochain challenge est de passer un appel téléphonique. D'abord, la carte SIM doit être reconnue et les informations de l'opérateur mobile. Ceci nécessite des paquets supplémentaires dont certains ont dû se compiler hors dépôt. Pour que le Sierra Wireless MC7455 reconnaisse la carte SIM, il a fallu envoyer un code PIN, connecter le modem, raccorder les antennes. Puis, quand Plasma Mobile a démarré, on a pu voir le nom de l'opérateur et la force du signal dans le coin en haut à gauche !

Photo de l'écran montrant l'opérateur et la puissance du signal affiché dans le coin

La fierté d'afficher le nom de l'opérateur et la puissance du signal dans le coin !

À cause du modem installé actuellement sur notre board i.MX 6, nous n'avons pas pu passer d'appels. Mais pas de panique, le Librem 5 aura un modem capable de téléphoner ;-)

Une étape de franchie, 9000 restantes

Avec la communauté, Purism a progressé dans le support de Plasma Mobile sur le Librem 5. Il reste de nombreux efforts et la collaboration avec la communauté Plasma permettra d'avoir un environnement fonctionnel lors de la sortie du Librem 5.

Du 27 Février au 1er Avril, Todd et Nicole seront à l'Embedded World Electronics Supplier Trade Show à Nürnberg en Allemagne pour rencontrer de potentiels fournisseurs et tout particulièrement des représentants de chez NXP et du distributeur EBV Elektronik. En plus, nous avons eu de nombreux meetings avec des fournisseurs de composants WiFi, BlueTooth et de capteurs et nous avons également discutés avec des fabricants et designers de boards.

Cet évènement et ces discussions nous préparent pour notre prochain voyage à Shenzhen, le Silicon Delta de la Chine. Nous avons des rendez-vous avec différents fournisseurs intéressés pour collaborer avec nous sur le Librem 5 ainsi que d'autres de nos projets matériels. Nous aurons deux semaines intensives sous forme de marathon de rendez-vous pour définir nos choix matériels et le choix de fournisseurs pour notre projet.


Ha bel avancement ce coup-ci. Les avancées sur Plasma Mobile sont encourageantes. Encore et toujours des rendez-vous à droite à gauche pour trouver les fournisseurs.

La rapidité de déploiement des technos web

En scrutant un peu GoAccess, je me suis rendu compte que j'avais désormais plus de visiteurs en HTTP2 qu'en HTTP1.0 ou HTTP1.1.

HTTP2 est officiellement né en février 2015 et en seulement deux ans il est devenu le protocole majoritaire (tout du moins dans mon cas). J'ai environ trois visites en H2 pour 1 en H1.

C'est impressionnant de voir une telle vitesse de déploiement côté client. IPv6 ne peut pas en dire autant. Et la puissance de frappe de Google n'y est surement pas pour rien.

La cadence effrénée de sortie de son navigateur Chrome y est pour beaucoup mais pas uniquement.

En étant le moteur de recherche numéro un, il peut pousser tous les éditeurs de site ouaib à faire tout et n'importe quoi en brandissant la promesse d'un meilleur classement. Pour le bien et pour le pire (vous avez entendu parlé de la controverse AMP (pas l'éditeur de texte, hein) ?).

Le mois dernier, NGINX a ajouté le support de la fonction PUSH qui permet, à l'initiative du serveur, d'envoyer préventivement des fichiers non demandés par le client. Cette technique est pratique pour envoyer d'office votre feuille de style css, les quelques js nécessaires ou la favicon afin de limiter le nombre de requêtes nécessaires à l'affichage complet de la page.

Bref je foutrais ça en place dès que ça arrive dans le dépôt de ma distrib.

8ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Design report #4: applications symbiotiques

Le but à long terme de Purism a toujours été de faire des ordinateurs aussi pratique que respectueux de leurs utilisateurs. Les Librem sont une plateforme éthique et de ce fait ne devrait discriminer personne. Au contraire, ils sont fait pour être inclusifs. En d'autres termes, chacun peut trouver dans son Librem un outil pratique et sécurisé pour son utilisation du quotidien et donc l'accessibilité est une importante part de notre feuille de route concernant le design éthique.

Nous sommes conscient que le chemin sera long et que le Librem 5 représente de nombreux challenges donc nous devons établir de solides fondations qui favorise la praticité autant que possible.

Les applications des plateformes existantes sont en compétition pour attirer votre attention

Avec les smartphones actuels, vous avez généralement un ensemble de fonctionnalités réduites que vous pouvez agrandir en ajoutant diverses applications selon vos besoins. Habituellement ces applications sont propriétaires et sont designées autour d'un business model non éthique, d'où le fait quelles sont toutes en compétition permanente pour retenir votre attention et possèdent chacune leur fonctionnalités utilisable uniquement en leur sein.

Ceci amène son lot de redondance et de confusion en terme de fonctionnalité. Un exemple évident sont les applications de communication, où chacune possède sa façon de gérer les contacts, leur propre protocole de communication verrouillé et isolé et où une tonne d'application vous implémenter les mêmes choses dans le même but (passer des appels et envoyer des messages) en tentant d'être la plus flashy pour attirer et retenir le plus d'utilisateurs. Une image vaut mieux que mille mots :

Diagramme présentant la redondance des données et des fonctionnalité d'un écosystème d'application en compétition

Écosystème d'applications en compétition

Envisager un écosystème harmonieux d'applications

Dans le monde réel, les écosystèmes durables sont fait d'entités biologiques interagissants ensembles en harmonie ou symbiose. C'est ce qui rend la vie possible sur le long terme.

Le monde du logiciel Libre et Opensource, particulièrement les systèmes d'exploitation, sont similaires à un écosystème naturel. Dans ce monde, pour faire partie du système, vous ne pouvez pas vous isoler et protéger votre technologie (dans le sens restreindre son utilisation). Les business models et les intérêts sont complètement différents du monde du logiciel propriétaire. Les bonnes pratiques favorise la réutilisation et l'intégration, l'amélioration de l'expérience utilisateur, la réduction de la dette technique, l'amélioration de la qualité logiciel et la diminution du coût de dev avec un système "collaboratif" où différentes applications de différents auteurs sont faites pour travailler ensemble.

Le but est la fonctionnalité

L'idée derrière les recommandation de design de PureOS est de remplacer le concept d'application standalone, indépendante et en compétition avec les autres par le concept de petites applications, avec un seul but et favorisant l'intégration dans l'écosystème. Cela permettra d'obtenir une expérience unifiée au travers des différents appareils (et au delà). Ces petites applications peuvent être vue comme des «fonctionnalités» du système. 1 but = 1 fonctionnalité

diagramme présentant la symbiose d'applications en collaboration

Écosystème d'applications en collaboration

Pour cela, les grandes lignes des Human Interface Guidelines (recommandation pour les interfaces avec les humains) concernant les fonctionnalités seraient :

  • Ne pas voir chaque application comme indépendantes mais comme des «fonctionnalités» qui n'ont qu'un but et qui interagissent ensembles.
  • Une « fonctionnalité » est le garant de la sécurité de son flux de données . Ne faites partager les données de votre application qu'avec des fonctionnalités ou réseau «de confiance» et d'une manière sécurisée.
  • Faites que votre application ne fasse qu'une chose (un client mail n'est pas un agenda, ni un répertoire).
  • Faites que votre application dépende de fonctionnalités existantes (un client mail doit s'appuyer sur un répertoire existant et sur un agenda existant).
  • Éviter les redondances. N'essayez pas de réinventer les applications existantes. Améliorez-les à la place.
  • Préconfigurez vos applications par défaut. Faites en sorte que ça fonctionne dès l'installation.

Avantages

Du point de vue de l'utilisateur, les fonctionnalités d'un appareil sont facilement identifiable car elles sont mises en avant par une application à but clairement identifié. Par exemple, l'application "Appel" est faite pour téléphoner, qu'importe la technologie derrière (ex : Matrix, téléphonie classique, VoIP). L'application "Messagerie" est utilisé pour envoyer des messages instantanés, qu'importe le protocole sous-jacent (ex : Matrix, SMS, XMPP). L'application "Contacts" est utilisée pour manipuler et stocker les informations de vos contacts utilisable par l'application "Appel" et "Messagerie".

Du côté des dev, sont aussi simple que possible, les cas d'utilisations sont limités et toute logique non liée au but principal de votre application est déléguée à un autre programme ce qui rendra votre application plus simple à designer, implémenter et maintenir.

Les données appartiennent à l'utilisateur, pas à l'application

Dans ce système d'application collaborant entre elles, où les applications interagissent les unes avec les autres en harmonie, les données ne sont plus limitées à la logique de l'application. Les applications agissent comme des services, ou des « fournisseurs de données » pour les autres. Les données naviguent d'une application à une autre, d'un appareil à une autre, d'un réseau à un autre.

Ce concept implique une séparation forte entre les données et les fonctionnalités où les données appartiennent uniquement à l'utilisateur. Les applications qui les manipulent sont les garants de leur intégrité et de leur sécurité.

Complément :

Ce sont des recommandations, représentant une vision globale. Ces recommandations sont là comme un moyen pour guider le design des applications et pour suggérer l'application de bonnes pratiques en général. Étant donné une qu'une distribution GNU/Linux comme PureOS est une plateforme ouvert où des milliers d'applications sont disponibles indépendamment (tant qu'elles respectent votre liberté !), vous n'êtes pas obligés de vous y conformer pour pouvoir distribuer votre application vers Debian et PureOS. Qui plus est, ces plans sont un but à long terme qui n'est pas garanti d'être présent «immédiatement» dès la disponibilité de notre plateforme, …


Bon pas trop d'avancement dans cet article mais ils exposent leur vision de l'écosystème qu'ils veulent atteindre. On doit donc s'attendre à des applications officielles assez simples (KISS) mais interopérantes. J'ai un peu peur que les applications soient trop simplistes même si le principe est sympa. Bon, par contre ils préviennent que ça sera pas forcément complet dès la sortie du système.

Créer un blog statique Hugo de A à Y

Je vois que ces derniers temps Hugo commence à attirer de nouvelles personnes. Du coup, pourquoi pas vous proposer un article un peu plus en profondeur sur ce que j'ai compris d'Hugo. Je vous ai déjà fait un retour sur mon utilisation d'Hugo mais là ça va plus être sous le capot.

Je vais vous montrer comment faire ses premiers pas pour se monter un blog simple comme le mien avec un thème fait maison.

Facts

Tout d'abord voilà un ensemble de facts que j'ai accumulé. - Hugo n'est pas un moteur de blog mais un générateur de site web statique. Vous pouvez en faire autre chose qu'un blog. Et du coup par défaut il ne fait pas forcément un blog. Par défaut d'ailleurs il ne fait pas grand chose comme vous le verrez.

  • Hugo fonctionne avec des sections. Vous pouvez avoir une section blog, une autre pour des articles, encore une autre pour des recettes de cuisines et une dernière pour les livres que vous avez lus. Chaque section peut être “indépendante” dans le sens où vous allez appliquer un template différent.

  • Un thème Hugo n'est pas juste une couche graphique. Un thème Hugo peut définir la structure de votre site. Il est difficile de faire quelque chose non prévu par le thème sans le retoucher. Et changer de thème une fois que votre site en utilise un particulier ne se fera pas en un claquement de doigts.

  • Créer un thème peut être un peu ardu la première fois si vous n'avez jamais pondu de html/css.

  • Créer un thème est relativement aisé, surtout si l'on repars d'un thème existant que l'on tord jusqu'à décider de repartir de 0 avec ce que l'on veux exactement.

  • Hugo gère super bien les sites multi-langues pour peu que vous traduisiez le contenu.

  • Migrer de Wordpress à Hugo n'est pas chose aisée.

  • Comme tous les générateurs de sites statiques, Hugo pond des sites facilement hébergeable, très performants et sans soucis de sécurité.

  • Hugo a des mises à jour très régulièrement qui apporte de nouvelles fonctionnalités souvent dispensables. Pas la peine de rusher les mises à jour : il n'y a pas de risque de faille de sécurité exploitable depuis votre site ouaib.

  • Hugo fournit des messages d'erreurs globalement assez clair si vous vous lancer dans la création d'un thème. Il vous indiquera généralement les caractères qui lui posent soucis (tel fichier, telle ligne).

  • La doc d'Hugo est super bien foutue. Toutes les fonctions sont documentées, souvent avec des exemples, parfois même des vidéos.

  • La collection de thêmes est plutôt conséquente. Méfiez-vous, beaucoup de thème utilisent des fonts externes, des JS externes, du facebook/twitter…

  • Hugo génère par défaut un flux RSS tronqué. Il est aisé de trafiquer le flux RSS pour qu'il soit complet, ne contiennent que les X derniers articles…

  • Hugo possède un serveur web intégré vous permettant de tester votre site ouaib en live quand vous faites des modifs. Il peut même vous emmener directement sur la page ayant été modifiée automatiquement dès que vous changer un fichier.

Bon après ces quelques remarques globales, attaquons nous à la création d'un blog basique ainsi que son thème.

Créer la structure de votre site

Bon, sur votre machine personnelle, on va créer un dossier blog et maintenant tout se fera à partir de ce dossier. hugo new site ./ Et voilà votre dossier peuplé de nouveaux dossiers.

  • archetypes : contient les éléments qui seront automatiquement rajouté quand vous créerez un nouvel article
  • config.toml : fichier texte où se trouve la configuration de votre site
  • content : contiendra vos articles
  • layouts : contient les squelettes des pages qui seront générés
  • static : contiendra les données statiques ajoutées à votre site (les images,js, css,…)
  • themes : où vous pourrez mettre les différents thèmes Hugo

Créer un article

Afin de pouvoir expérimenter au plus vite, on va déjà créer un article bidon pour votre site.

Au préalable, on va créer une section blog : mkdir content/blog. Désormais tous vos articles de blog on les rangera dans ce dossier.

Créons l'article : hugo new blog/welcome.md . La chose à prendre en compte c'est que vous ne placez pas explicitement votre nouvel article dans content, il le fait de lui même. Quand vous utilisez la commande hugo new, ça sera automatiquement dans content.

Maintenant ajoutons du contenu à l'article : vim content/blog/welcome.md Et là vous devriez vous retrouver avec déjà quelques lignes dans votre article.

---
title: "Welcome"
date: 2018-03-07T12:15:24+01:00
draft: true
---

Ces données proviennent en fait du fichier archetypes/default.md fournit par défaut. Dans le jargon on appelle ça le frontmatter. Tout ce qui se trouve entre les --- (ou +++ en fonction du format). Donc par défaut le titre de votre article sera tiré du nom du fichier donné par la commande hugo new. La date correspondra à la création du fichier et par défaut votre fichier est à l'état de brouillon. Par défaut, Hugo ne génère pas les pages à l'état de brouillon. Pour la suite, mettez draft: false.

Vous pouvez rédiger en dessous votre article en utilisant la syntaxe MarkDown.

Bon après avoir ajouté un peu de contenu à cet article on va commencer les choses sérieuses : générer une page web !

Configuration

Donc pour générer votre site web, il vous suffit de taper : hugo

                    | EN
+-------------------+----+
  Pages             |  4
  Paginator pages   |  0
  Non-page files    |  0
  Static files      |  0
  Processed images  |  0
  Aliases           |  0
  Sitemaps          |  1
  Cleaned           |  0
Total in 21 ms

C'est tout de même mignon ce petit tableau récapitulatif ! Bon alors premièrement, votre site est probablement pas en anglais donc va falloir lui dire qu'il se goure.

Allez, voyons le config.toml

baseURL = "http://adresse.de.votre.site/"
languageCode = "fr-fr"
DefaultContentLanguage = "fr"
title = "le nom de votre site"

On pourra se contenter de ces réglages pour le moment. Et du coup si vous relancez la commande hugo vous verrez que vous générez désormais du français !

Paramètres fait maison

Hugo n'est pas chiant, vous pouvez rajouter des paramètres qui vous serviront pour votre thème, en plus des paramètres existants. Pour cela il suffit de faire ça sous la forme :

[params]
   mon_param_a_moi = "machin"

Vous pourrez les utiliser via .Site.params.mon_param_a_moi mais on verra ça mieux un peu plus loin.

Génération

Après avoir généré votre site, vous devriez voir un dossier public contenant quelques sous-dossiers et fichiers :

   public
   ├── blog
   │   └── index.xml
   ├── categories
   │   └── index.xml
   ├── index.xml
   ├── sitemap.xml
   └── tags
       └── index.xml
       3 directories, 5 files

La section blog a été créé avec dedans un index.xml, le dossier categories est automatiquement créé et contiendra les différentes catégories de vos articles de blog. sitemap.xml est le sitemap de votre site automatiquement généré par Hugo pour vous permettre d'être bien vu par les moteurs de recherche. tags est à l'image de categories et sera rempli tout seul au fur et à mesure. Tous les index.xml sont des flux RSS.

Mais du coup … je comprends pas … elles sont où les pages web ?

Pour l'instant vous n'avez pas donné d'instruction à Hugo sur la façon de générer les pages. Du coup en bon fainéant… il a rien foutu.

Layouts

Pour les moins anglophones, le layout est l'agencement des pages. En gros c'est le squelette HTML de vos pages que vous allez demander à Hugo de remplir avec le Markdown de vos articles.

On va commencer par le minimum absolu.

Dans layouts/index.html :

<html>
  <body>
    Yoplaboum !
  </body>
</htm>

Je vous avais prévenu c'est vraiment peu. Maintenant on régénère via hugo et on voit qu'on a désormais public/index.html qui existe. Et comme par hasard il contient exactement la même chose que définie dans le layouts/index.html.

Ajoutons la magie d'Hugo : Toujours dans layouts/index.html :

<html>
  <body>
{{ range .Data.Pages }}
    <h1>{{ .Title }}</h1>
    {{ .Content }}
{{ end }}
  </bdy>
</html>

Et maintenant refaites un ptit coup de hugo et observez votre nouvel public/index.html

<html>
  <body>
    <h1>Welcome</h1>
    <p>coucou</p>
  </body>
</html>

Voilà, votre tout premier résultat tangible. Voyons ce qu'il s'est passé.

{{ range .Data.Pages }} indique à Hugo d'itérer sur toutes les pages de contenu que vous avez créé. Donc dans notre cas uniquement le fichier content/blog/welcome.md. Il s'agit d'une boucle qui s'exécutera pour chacun des items jusqu'à la fermeture qu'est {{ end }}.

Et dans cette boucle on récupère le {{ .Title }} qui est donc le title que vous avez mis dans le frontmatter de l'article. Et enfin {{ .Content }} est le rendu du MarkDown se trouvant hors du frontmatter de l'article.

C'est pas bien compliqué.

Partials

Hugo vous permet d'utiliser des morceaux de HTML que vous allez pouvoir inclure par la suite.

mkdir layouts/partials et ensuite éditons layouts/partials/header.html

<!DOCTYPE html>
<html lang='{{ .Site.Language.Lang }}'>
  <head>
    <title>{{ .Title }}</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
    <meta name="description" content="{{ .Desription }}">
    <meta name="keywords" content="{{ range .Params.Tags }}{{   }},{{ end }}">
    <meta name="author" content="{{ .Params.author }}">
    {{ .HugoGenerator }}
    <link rel="stylesheet" href="{{ .Site.BaseURL}}css/style.css">
    <link href="{{ .Site.RSSLink }}" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}">
    <link rel="icon" type="image/x-icon" href="{{ .Site.BaseURL }}favicon.ico">
  </head>

{{ .Site.Language.Lang }} sera remplacé par la langue de la page en question. Si vous avez la même page dans différentes langues cette variable sera ajustée en fonction.

{{ .HugoGenerator}} sera remplacé par la version de votre ptit Hugo.

Plusieurs fois vous trouverez {{ .Site.BaseURL }} c'est la variable définie dans config.toml à la racine de votre site.

Bref maintenant yapuka inclure ça dans votre layout : layouts/index.html en ajoutant juste

{{ partial "header.html" . }}

Un ptit coup de hugo et on observe le résultat. Le partial est inclus dans votre page web avec ses variables qui sont bien remplacées. Il nous reste encore un détail à voir et vous serez à même de vous débrouillez comme de grandes personnes.

List/Single pages

Hugo repose sur deux principaux types de pages. Les list pages et les single pages. Les single pages sont les pages affichant un item d'une section (dans notre cas un article de blog). Les list pages sont les pages listant les items d'une section (tous les articles du blog).

Jusqu'à présent, dans notre exemple, nous n'avons travaillé que la home page du site en bidouillant layouts/index.html. On va donc générer la page pour un article de blog.

mkdir layouts/blog puis éditons layouts/blog/single.html

{{ partial "header.html" . }}
<body
  <header>
    <h1><a href="{{ .RelPermalink }}">{{ .Title }}</a><h1>
    <p class="meta">{{ .Date.Format "02/01/2006" }}</p>
  </header>
  <main>
    {{ .Content }}
  </main>
</body>
</html>

Bon ça reste assez simple (notez comme j'amène de nouveaux éléments que progressivement…). {{ .RelPermaLink }} est le lien vers l'article. {{ .Date.Format }} lit le paramètre date de l'article et le met au format "02/01/2006". J'avoue que cette désignation est assez étrange mais bon vous trouverez ici plus d'explication sur les formats possibles.

Impatients de voir le résultat ? hugo puis là vous aurez encore plus de fichiers \o/

public
├── blog
│   ├── index.xml
│   └── welcome
│       └── index.html
├── categories
│   └── index.xml
├── index.html
├── index.xml
├── sitemap.xml
└── tags
    └── index.xml
    4 directories, 7 files

Vous avez maintenant un dossier blog avec à l'intérieur un index.html qui se trouve être votre single page de l'article. Vous y trouverez comme prévu ce que vous avez mis dans layouts/blog/single.html.

Il ne reste donc plus qu'à faire la list page de la section blog :-)

layouts/blog/list.html

{{ partial "header.html" . }}
<body>
  <main>
  <h1>Mon blog moche</h1>
  {{ range .Data.Pages }}
    <header>
      <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
    </header>
    <article>
      {{ .Summary }}
    </article>
  {{ end}}
  </main>
</body>
</html>

Peu de nouveauté. {{ .Summary }} ne vous sortira pas l'article en entier mais juste le début. Une fois votre site généré vous aurez désormais un public/blog/index.html.

Petite pause dans l'apprentissage

Bon on a un truc qui marche pas trop mal. Plus qu'à raffiner.

Déjà pour se simplifier la vie, dans un autre terminal lancez hugo server --navigateToChanged -F -D. Cette commande lance le ptit serveur web interne d'Hugo en générant les article avec une date dans le futur (-F) et les articles en brouillons (-D). Une fois lancée, ils vous indiquera quelle adresse ouvrir dans votre navigateur (généralement http://localhost:1313). À chaque modification, vous serez redirigé vers la page éditée.

Encore pour se simplifier, on va améliorer archetypes/default.md pour y rajouter quelques infos intéressantes :

+++
Author = "Lord" (enfin si vous voulez m'attribuer tout votre mérite)
Description = ""
Categories = ["",""]
Tags = ["",""]
title = "{{ replace .Name "-" " " | title }}"
date = {{ .Date }}
draft = true
+++

Voilà, la description vous permettra de remplir la balise correspondante de la page, et Tags également ce qui améliorera sensiblement le SEO.

Bon on test ?

Créez un second article sur votre blog avec hugo new blog/le-second-article.md puis éditez-le pour y mettre un peu de contenu.

Si tout va bien, votre frontmatter (les métadonnées en haut du fichier contenant votre article) devrait être pré-rempli.

Peaufinnage

La page d'acceuil

Bon c'est pas mal mais du coup vous remarquerez qu'on a fait une connerie au début : quand on a commencé à faire le layout, on a fait layouts/index.html qui est votre homepage comme un sagouin.

Pour l'instant votre page d'accueil liste tous vos articles mais les affiche en entier ce qui est vite indigeste. Le plus simple est de juste copier layouts/blog/list.html et de le mettre à la place de layouts/index.html et ça sera plus cohérent.

Liens vers les articles suivant/précédent

C'est assez simple à ajouter automatiquement. On édite layouts/blog/single.html pour rajouter après l'article :

  <footer>
    {{ if .PrevInSection }}article précédent : <a href="{{ .PrevInSection.RelPermalink }}">{{ .PrevInSection.Title }}</a>{{ end }}
    {{ if .NextInSection }}article suivant : <a href="{{ .NextInSection.RelPermalink }}">{{ .NextInSection.Title }}</a>{{ end }}
  </footer>

Le if n'affichera que s'il existe un article précédent/suivant.

Un peu de style

Bon pour l'instant c'est pas super beau. Il va vous falloir dégainer votre plus joli CSS et le coller dans les ressources statiques. Donc mkdir static/css puis éditez static/css/style.css à votre convenance. Là c'est pour votre pomme.

Vous pouvez vous contenter de peu de règles écrites à la main plutôt que de forcément partir vers du Bootstrap.

Un flux RSS complet

Le template de génération de flux RSS par défaut ne place que le {{ .Summary }} d'un article. Pour le modifier il va falloir modifier le layout par défaut : mkdir layouts/_default/ et éditer layouts/_default/rss.xml

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>{{ if eq  .Title  .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
    <link>{{ .Permalink }}</link>
    <description>Recent content {{ if ne  .Title  .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
    <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
    <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
    <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
    <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
    <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
    {{ with .OutputFormats.Get "RSS" }}
        {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
    {{ end }}
    {{ range .Data.Pages }}
    <item>
      <title>{{ .Title }}</title>
      <link>{{ .Permalink }}</link>
      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
      <guid>{{ .Permalink }}</guid>
      <description>{{ .Content | html }}</description>
    </item>
    {{ end }}
  </channel>
</rss>

Faire un lien entre articles

C'est un peu une base du web de faire des liens entre les pages. Faire du web sans y coller des liens hypertexte est un non-sens. Bref. Pour pointer vers un autre article il suffit d'utiliser cette syntaxe :

[ceci est un lien]({{ < ref "/blog/welcome" > }})

Alors ?

Bha alors vous avez une base fonctionnelle pour un blog statique pondu par Hugo. C'était pas la mère à boire. Et normalement avec tout ça vous pouvez déjà pas mal vous en sortir. Une prochaine fois on verra comment héberger le bousin ;-)

Les GLSA de chez Gentoo

J'ai réalisé que je parlais pas assez Gentoo sur ce blog. C'est pourtant de loin la meilleure de toutes les distributions Linux.

Trèves de trolleries, Gentoo c'est bien (entre autre) parcequ'on peut tester vite fait son système pour voir si on a de potentielle faille dans le système.

GLSA

Gentoo n'est pas une distro avec une immense équipe de dev mais est tout de même pas mal lotie. Et du coup il y a de multiples équipes spécialisées dont une pour la sécurité. Et cette équipe de sécurité publie les GLSA pour Gentoo Linux Security Advisories.

Les GLSA sont publiées régulièrement et permettent d'être alerté assez rapidement de failles importantes. Pour les suivre il y a plusieurs moyens. Personnellement je suis leur flux RSS via Nib.

GLSA-Check

Mais bon dans le doute j'utilise glsa-check qui est un petit outil présent dans gentoolkit (un ensemble d'outils spécifiques à Gentoo).

Un ptit coup de glsa-check -l (une fois par jour) vous listera toutes les failles publiques qui vous touchent (donc en fonction des logiciels installés). S'il vous trouve quelque chose, vous pouvez premièrement avoir plus d'info avec glsa-check -d XXXXX-XX. Vous saurez quand a été dévoilée la faille, quels sont les paquets affectés et dans quelle version, quel est l'impact et surtout comment s'en démerdouiller.

Et vous pouvez aussi directement voir avec glsa-check -f XXXXX-XX pour que, de lui même il applique le correctif nécessaire (généralement mettre à jour un paquet précis).

Ce petit outil est assez peu connu et pourtant très pratique pour avoir un aperçu rapide de l'état des mises-à-jour de sécurité d'une gentoo. Ce n'est biensûr pas un outil infaillible mais permet déjà d'éviter le pire. Ça ne remplace bien entendu pas une mise à jour globale du système via emerge -uDnav @world.

Tiens d'ailleurs si vous voulez nourrir un peu votre agrégateur de flux rss, Debian publie aussi ses DSA.

7ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE et le projet Matrix. Ils sont assez transparent sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Librem 5 est un gros projet. Comme vous le savez, les gros projets semblent insurmontables jusqu'à ce qu'on les décomposent en de multiples briques logiques. Comme s'il s'agissait d'un puzzle, notre équipe s'est organisée pour commencer à assembler les pièces. C'est enivrant de partir d'un morceau initial, de travailler dessus et soudain… après un peu de temps, une solution apparait et tout s'aligne presque magiquement.

Dans nos précédents articles nous avons décrit ce que nous avions commencé à faire et ces premiers efforts portent déjà leurs fruits lors de notre hackfest d'une semaine à Siegen en Allemagne où notre équipe logicielle s'est rendue. En plus de moi même (Nicole Faerber - Mobile Development Lead), nous ont rejoins Bob, Heather, Pedro, Dorota, Adrien, Guido et Todd.

Photographie de l'équipe travaillant sur leurs ordinateurs

Photographie de l'équipe discutant

Compositor et Shell

L'un des composants le plus importants de l'interface utilisateur du téléphone est le compositor Wayland et le shell. Le compositor coordine l'affichage des surfaces, qui se trouvent être les fenêtres des applications et le shell fournie une interface utilisateur simple pour démarrer cet applications comme par exemple le widget de contrôle du réseau, la luminosité, la rotation etc. Pour plusieurs raisons après avoir évalués de nombreuses options avec les mainteneurs upstreams (amonts), nous avons pris la décision de développer un compositor basé sur Wlroots et Rootston. Guido travaille ardemment sur ce point et les résultats obtenus durant cette semaine sont bluffant.

Nous avons donc désormais un compositor complet fonctionnant sur la dev board à base de i.MX6 basé sur Wlroots et Rootston avec un embryon de shell pour téléphone (Phosh) permettant de manipuler les fenêtre, mise en plein écran, un début de menu de contrôle permettant la rotation de l'écran en redimensionnant les fenêtre à la volée.

Tout cela fonctionne sur une SBC i.MX6 qui est suffisamment performante pour ce dont on a besoin. Cela permet également de valider nos choix fonctionnels. Le shell, Phosh, n'est qu'à l'état de “preuve de concept” mais permet déjà de lancer quelques applications. On peut donc déjà lancer de multiples applications via notre shell. Nous pouvons désormais nous atteler à compléter le shell et appliquer le travail fait par notre équipe de designers.

Applications GTK+ adaptives (“responsives”)

Un des challenges majeurs d'écrire des applications graphiques est de designer une UI de sorte à ce qu'elle puisse s'adapter à différentes tailles d'écran, géométries et résolutions. Le téléphone est un cas extrême car il a un grande résolution dans un tout petit format (environ 5 pouces) et est principalement utilisé en mode portrait "mais tu peux l'utiliser en paysage” et tu peux y raccorder un écran externes bien plus grand… mais tu veux utiliser les mêmes applications dans tous ces cas de imgs. *la, les interfaces graphiques doivent s'adapter à leur environnement. On a vu ces principes adoptés dans le design des sites web ces dernières années sous le terme de “responsive design”.

Cependant nous appelons ça adaptive design, ou applications adaptives. Non pas pour se démarquer mais parce que “responsive” est un terme avec de nombreuses significations, particulièrement dans le domaine des logiciels ou ce terme signifie parfois «performant». Un logiciel responsive est un logiciel qui réagis quasi instantanément contrairement à un logiciel classique qui ne répond plus.

Pour le moment, la grande majorité des applications ne sont pas faites pour cette utilisation. Nous nous sommes donc penché sur le sujet et Adrien commença à développer un widget GTK+ qui devrait solutionner ce problème tout du moins simplifier grandement la création d'applications adaptives et le portage d'applications existantes vers cette technologie. Le widget d'Adrien permet d'afficher/cacher d'autres widgets en fonction de la taille de la fenêtre et de sa géométrie. Pour tester son système, Adrien a modifié Gnome Contact pour qu'elle utilise sa nouvelle "boîte responsive" et il s'avère que cela marche bien comme vous pouvez le constater sur cette vidéo :

L'application contacts est simple dans sa conception tout du moins pour son interface. La prochaine étape pour Adrien sera de tester son widget sur un client email. Stay tuned!

Méthodes d'entrées (Input methods)

En dehors du compositor, du shell et de l'agencement de l'UI, un des points les plus critiques d'une suite logicielle pour téléphone est la gestion des méthodes d'entrées. Presser un bouton et lire du texte est une chose mais vous voulez être capable d'entrer du texte et ceci requièrent quelques composants logiciels complexe à faire communiquer entre eux mettant en scène le compositor ainsi que le toolkit graphique utilisé par les applications. Dorota a planché sur cela et a connectés les différents protocoles et plugins et a désormais un prototype basé sur le protocole d'Input Method de Wayland, le clavier virtuel de Weston, un plugin GTK ainsi qu'une application de test recevant le texte :

Vous pouvez voir voir le texte entré sur le clavier virtuel s'affichant dans l'application de test. En plus de cela, Dorota est parvenu à établir une méthode pour afficher/cacher le widget d'entrée de texte en fonction du focus etc. Tout devrait fonctionner aussi bien avec une application Qt mais ce n'est pas le cas. Dorota s'affaire donc à régler cela. Nous sommes confiant quant au fait de faire fonctionner cela avec Qt.

Le protocole utilisé n'est pas lié au clavier virtuel de Weston, il peut être utilisé avec d'autre méthode d'entrée ce qui permettra donc de développer/adapter d'autres méthodes facilement.

Téléphonie

La dernière fois nous vous présentions le premier SMS envoyé depuis la dev board via le modem à une autre appareil mobile et nous vous promettions de bosser sur les appels téléphoniques. Bob a donc poussé les recherches à ce sujet et commencent à comprendre les entrailles d'oFono et Télépathy. Nous n'y sommes pas encore complètement mais le chemin nous apparait de plus en plus clairement. L'avantage de rechercher et de prendre le temps de comprendre l'interface et le code est que nous serons plus à même d'y brancher notre dialer (composeur de numéro de téléphone) et établir une communication.

Documentation, SDK

Maintenant que notre pile applicative est moins confuse, il est important de centraliser les connaissances et de documenter le tout. Ces dernières semaines, Heather s'est attelé à cette tâche. Non seulement elle documente les efforts de dev actuels, mais en plus elle intègre les bribes de développement dans ce qui deviendra à terme un émulateur et SDK pour les nouveaux devs. Nous voulons fournir un IDE pour les nouveaux devs qui dans un futur pas si lointain devrait permettre de développer pour tous les appareils Purism, laptop ou téléphone. Nous souhaitons être ouverts à différentes technologie de programmation, que ce soit des langages comme le C, C++, Python ou bien des toolkits comme Qt ou GTK+. Nous savons pertinemment que tout ne fonctionnera pas à 100% lors du lancement mais c'est notre but et nous nous employons en posant les fondations. Heather travaille actuellement avec Gnome Builder car il supporte une grande variété de langages et toolkits et permet de lui même de créer des paquets Flatpak. Elle travaille également sur des stratégies de déploiement accessibles pour que les devs puissent déployer directement une application du Builder vers une machine virtuelle pour le Librem 5 ou directement sur un kit de dev ou bien le téléphone ou bien vers un Flatkpak qui puisse être partagé.

Ce travail est capital pour les utilisateurs du SDK qui recevront les SBC en Juin. Avant ça nous lanceront un site web complet dédié à PureOS et au Librem 5.

Hardware

Alors que notre équipe hardware n'a pas pu nous rejoindre à Siegen, nous avons reçus nos premiers kits d'évaluation à base d'i.MX 8M la semaine dernière et avons pu commencé à tester avec les logiciels et pilotes. Nous avons également une prometteuse source pour la fabrication, nous aurons une visite d'usine d'ici à la fin Mars.

Photographie d'une dev board reliée à un oscilloscope.

Les pièces s'assemblent les unes aux autres

De nombreuses pièces de notre immense puzzle s'emboitent pour prendre forme. Nous avons les bases de notre UI (compositor, shell), nous avons prouvé une technique pour adapter les applications aux challenges que posent les différents écrans (boite responsive), nous pouvons entrer du texte, la pile téléphonique devient moins confuse et nous avons une toute une plateforme naissante pour les devs d'application PureOS.

Nous sommes exaltés de la quantité de progrès faits en si peu de temps. Restez branchés, de nombreuses choses arrivent…


Comme dit dans leur conclusion, en si peu de temps les progrès sont remarquables. Surtout du côté de l'interface utilisateur. C'est assez bluffant. Cependant la partie téléphonie parait tellement abscons pour le moment que ça en devient un peu inquiétant. Je trouve la date de juin pour les devs boards assez optimiste également mais bon.

Au fait, j'héberge les images sur mon serveur mais pas leurs vidéos qui seraient trop volumineuses pour chez moi, désolé.

Nouveautés dans l'émulation Playstation

La Playstation première du nom est l'une des quatre consoles de jeux vidéos que j'ai pratiqué à l'époque.

Pas mal de jeux m'ont marqués et c'est donc avec nostalgie que parfois je dégaine un émulateur pour y rejouer.

Pour les malheureux pas au courant, un émulateur est un logiciel mimant le fonctionnement d'une machine. Un logiciel qui remplace donc une machine.

Un émulateur peut même se permettre le luxe d'améliorer l'expérience originale en ajoutant de nouvelles fonctionnalités. On peut par exemple sauvegarder/charger à n'importe quel moment. Jouer avec d'autres périphériques que ceux d'origines. On peut même parfois améliorer les graphismes.

C'est d'ailleurs ce point qui va m'intéresser ici car il y a du nouveau depuis peu de temps.

Double coup de pied dans les madeleines (de Proust)

Quand vous déballerez pour la première fois votre émulateur pour rejouer à ce bon vieux jeu, vous allez vous prendre deux violents coups de pieds dans les madeleines.

Le premier en entendant le son caractéristique du bios affichant ce logo orangé de Sony. Celui-là est agréable.

Le second va être bien moins agréable quand le jeu se lancera et que vous mesurerez le décalage entre vos tendres souvenirs et … la bouillie de pixels dégueux de la réalité.

Ouai la nostalgie améliore grandement les souvenirs.

Les graphismes playstation ont pris un sacré coup de vieux. Les textures sont pas fines mais ça encore ça va. Par contre vous allez vite remarquer que les textures bougent dans tous les sens bizarrement. Et non ça ne vient pas de l'émulateur car la console originale avaient cette même tremblote.

Et puis de nombreux jeux ramaient sévères.

Et puis … wow ces pixels. La console dans le meilleur des mondes peut sortir un maigre 640*480. Et subir ça en 2018 c'est pas la joie.

Émulons et/ou améliorons ?

Du coup il existe deux écoles dans le monde de l'émulation.

  • L'émulation la plus fidèle. En utilisant des émulateurs qui vont jusqu'à émuler chacun des composants de la console.
  • L'émulation haut niveau. Prêt à arrondir les angles et également à ajouter de nouveaux effets pour améliorer l'expérience.

Je suis plutôt du second bord. Je ne pense pas que moderniser techniquement les jeux les dénature dans la limite du raisonnable. Donc voyons comment faire pour résoudre chacun des reproches que je fait.

Déjà pour les jeux Playstation le meilleur émulateur actuel est par chance un émulateur opensource rattaché au projet Retroarch. Il s'agit de Beetle PSX HW qui est un fork de Mednafen par Retroarch. Retroarch est une collection d'émulateur avec une interface commune et toute une configuration commune fonctionnant via des cores. Chaque core émule une machine et est soit fait par l'équipe de retroarch soit un émulateur opensource légèrement modifié pour s'intégrer à retroarch.

Dans notre cas Beetle PSX HW est un fork de fork. Au départ il y avait Mednafen qui est un émulateur multi console opensource pas mal du tout mais sans interface. Puis Retroarch et Mednafen ont collaborés pour pondre Beetle PSX qui est donc un core retroarch pour l'émulation de la playstation. Et enfin un ultime fork a été créé pour rajouter le HW qui signifie Hardware. C'est à dire que la partie graphique n'est plus calculée par votre CPU mais votre GPU qui est amplement plus adapté à cette tâche. Ça permet de gagner en perf mais surtout de pouvoir jouer avec quelques raffinements bien sympatiques comme une bien meilleure résolution.

Améliorons le rendu

capture d'écran de Crash Bandicoot en résolution d'origigne

On va passer de ça

capture d'écran de Crash Bandicoot avec des graphismes améliorés

À ça

Cet article n'est pas un tuto pour Retroarch mais juste une ptite aide pour trouver les bons réglages pour Beetle PSX HW. Si vous ne savez pas comment modifier les réglages et tout RTFM.

Toutes les options se trouvent dans le Quick Menu de Retroarch, une fois avoir démarré le jeu.

Premièrement, on augmente la résolution autant que faire se peut. Si votre ordi est suffisamment puissant n'hésitez pas à faire monter à 8x la résolution initiale. Au delà je ne vois pas la différence mais vous pourrez dire aurevoir aux pixels disgrâcieux.

Ensuite on active le PGXP. Cette option au nom barbare permet de corriger les approximations que fait la playstation pour afficher des textures sur des objets 3D. Ça enlève l'effet dégueulasse des textures biscornues qui gigotte quand la caméra se déplace. Cette option est assez intensive en ressource mais est un must. Cette technique est relativement récente puisqu'elle a débarquée il y a près d'un an dans le monde de l'émulation playstation et apporte une sacré différence de rendu. Donc on le passe en memory+cpu et on active les deux options qui vont avec. On obtient un rendu proche de ce qu'on est habitué désormais. Je vous ai fait un petit avant/après pour bien voir la différence. Admirez les lignes droites une fois activée. Et c'est franchement plus flagrant en mouvement.

La prochaine option est l'augmentation de couleurs. On passe donc les couleurs en mode 32bpp et on passe le dithering pattern à internal resolution. Avec ça les dégradés seront plus lissés. Bon ça fait pas de miracle non plus, les textures d'origines ne seront pas modifiées pour autant.

D'ailleurs en parlant de texture, certaines personnes aiment les lisser via le texture filtering mais là c'est question de goût. Personnelement je suis habitué au classique bilinear qui est un peu flou mais au moins ça ne modifie pas outre mesure le rendu.

La dernière option sympatoche mais non des moindres est toute neuve (une semaine, donc il vous faudra mettre le core beetle psx hw à jour et relancer retroarch) : le GTE Overclock. GTE est le gpu de la psx. Donc là ça va être quitte ou double : soit le jeu va s'emballer soit tout sera nickel mais avec plus de fps. Certains jeux galèrent à pousser ne serait-ce que 20fps, là vous pourrez éventuellement en avoir 60 grâce à ça. Chaque jeu nécessitera un réglage différent cela-dit. Les jeux les plus tardifs sur la consoles généralement le gèrent mieux mais c'est tout de même au cas par cas. (Alien Resurrection fait des merveilles) D'autres jeux par contre ont les FPS fixés à une certaine valeur (par exemple les Final Fantasy pendant les combats sont fixés à 15FPS) ce qui du coup n'aura aucune influence.

 

Voilà amusez-vous bien !

D'ailleurs si vous voulez tester quelques jeux sympas il y a les Crash Bandicoot, ainsi que le Crash Team Racing qui est toujours aussi agréable à jouer. Wipeout 2097 est pas mal. In The Hunt pour shmupper à bord d'un sous-marin. MDK est toujours aussi… étrange. Herc's Adventure n'a pas trop mal vieilli. Mais mon chouchou reste Final Fantasy 8.

Retour sur le reverse proxy du blog

En septembre dernier, je vous avais parlé de la mise en place d'un micro-cache nginx en reverse proxy et du coup je voulais vous faire un petit retour.

Depuis cet article je n'ai pas changé la config en dehors de la durée du cache que j'ai augmenté récemment à dix minutes.

Bon déjà niveau entretien, rien à faire. Tout fonctionne comme voulu sans aucune intervention. Le seul truc qu'il m'arrive de faire de temps à autre c'est de vider manuellement le cache quand je fait des modifs et que j'ai pas envie d'attendre l'expiration du cache pour voir les résultats. Mais bon un simple *rm /var/www/lecache/* sur le reverse proxy et c'est torché.

D'ailleurs, je ne l'avais pas précisé dans l'article initial mais le cache se trouve en vrai dans un tmpfs c'est à dire dans la ram. Il n'est pas stocké réellement sur le système ce qui permet de gagner un poil en perf. Dans mon cas j'ai limité le tmpfs à 100Mo ce qui est plus que suffisant pour acceuillir l'intégralité du blog (qui ne fait que 12Mo).

Bref

Petit rappel vite fait du principe d'un cache

Le client (toi le lecteur) va demander à afficher une page.

Le reverse proxy va recevoir cette requête et va voir si la page est dans le cache. Si elle n'est pas là, il se connecte à l'upstream pour lui demander la page.

Le proxy envoi la page au client et la place dans son cache.

Pendant la durée de validité de la page, le proxy ne se connectera plus à l'upstream et enverra directement la page en cache.

Comment je collecte et lit les stats de mon site ?

Vous avez peut-être remarqué que mon site est plutôt … minimaliste. Il s'affiche particulièrement bien dans les navigateurs en console et j'espère de ce fait qu'un screen reader saura s'en débrouiller. En dehors des rares articles avec des illustrations, l'affichage d'une page du blog nécessite seulement trois requêtes : une première pour la page en elle-même. Une seconde pour le CSS. Et une dernière facultative pour le favicon.

Je n'utilise pas de javascript ou image bidon pour traquer mes visites.

La seule chose que je fait pour connaître le traffic de mon site est donc de lire les logs du serveur web. Je m'aide du logiciel GoAccess qui propose une interface console toute mimi et colorée. Mais ça reste tout de même rudimentaire comparé à un Google Analytics ou un Piwik. Cela dit, pour mon usage c'est largement suffisant.

Ce n'est qu'un blog perso. En dehors de la satisfaction de voir que des gens le lisent, je ne tire aucun profit de mon site.

Impact du reverse proxy sur l'upstream

Mon upstream est un tout petit Atom D510 de 2011 qui pourrait largement tenir la faible charge des visites de ce blog.

Mon reverse proxy est également une toute petite machine. C'est mon routeur, un Turris Omnia, avec un container lxc pour le reverse proxy nginx.

Pour voir à quel point l'upstream est soulagé il suffit de comparer les logs de l'upstream et du reverse proxy sur la même période et comparer.

Je constate une nette différence (surtout depuis le passage d'1s à 10minutes) entre les logs.

Sur les “journées molles” la différence est minime alors que sur les journées fastes le proxy arrive à écouler les deux tiers du traffic sans contacter l'upstream.

J'ai également coupé plusieurs fois l'upstream sans provoquer de coupure du site vu de l'extérieur (par contre le turris est devenu le spof, je n'ai pas plus de redondance).

Des chiffres !

Sur Février par exemple :

Upstream Proxy
Total requests 56389 131813
Unique Visitors 12848 19894
Log Size 9.93MB 22.61MB
Bandwidth 4.35GiB 7.55GiB

La demoscene vol.1

Connaissez-vous la demoscene ?

On va partir du principe que non.

La demoscene est un art consistant à créer des animations et de la musique par le biais d'un ordinateur avec une forte contrainte : le temps réel.

Contrairement à la création d'une vidéo, une démo est calculée en live par la machine qui l'exécute. Le résultat final est proche d'une vidéo sauf que la machine ne lit pas un fichier vidéo mais exécute un programme qui génère les images et le sons à l'image d'un jeu vidéo.

D'ailleurs de nombreux artistes travaillant dans l'industrie vidéoludique sont issus ou bien participe également à la demoscene.

La demoscene est toute une communauté d'artistes avec de fortes connaissances informatiques.

Origin story

Bon je vais être bref parcequ'il vous suffirait de faire un ptit tour sur kikipedia pour avoir plus d'exhaustivité. En gros ça a débuté dans le milieu du warez vers le début 80. Les pirates de logiciel apposait leur marque de fabrique en ajoutant au programme une petite animation avec parfois même un peu de musique. Petit à petit la demoscene s'est émancipée de la piraterie mais sachez qu'il existe une catégorie dédiée : les cracktros.

Puis dans les années 90 le phénomène a décollé avec la création des démoparty qui sont des rassemblements de ces artistes où le temps d'un week-end une compétition est organisée à qui créera la plus impressionnante des démos. Mais au delà de la compétition, il faut également y voir l'émulsion d'une communauté qui s'entraide et se juge afin de s'améliorer. Les équipes produisant les meilleures compo sont acclammées par la foule lors de la diffusion sur écran géant du fruit d'un rush de 3 jours avec peu de sommeil et peu de nourriture saine. D'ailleurs les lanparties se sont d'abord greffées au demoparty avant de devenir indépendantes.

De la contrainte nait le génie

Non content de devoir être capable de générer la vidéo et l'image en temps réel, il existe également des catégories dans la demoscene qui imposent des contraintes supplémentaires.

Le matériel

Premièrement certaines démo ne visent pas les ordinateurs dernier cri mais visent des machines assez anciennes tel que les Commodore 64 sortis en 1982. D'autres démos visent également le ZX Spectrum également sorti en 1982. Les Atari ont également leur lot de démos. Tout comme les consoles de jeux vidéos qui ont quasiment toutes droit elles aussi à des démos.

De taille

De nombreux artistes choisissent de restreindre la place occupée par leur production (c'est le terme officiel). Là encore plusieurs catégories. Une des plus connues est la 64K mais également la 4K. Ça correspond donc à 64Ko et 4Ko.

C'est peu, vraiment peu. Pour comparaison, la page d'accueil de mon site fait déjà 120Ko (et c'est pourtant déjà léger par rapport à d'autres sites). Et dans ces 64K on y cale généralement 3 minutes d'images et de musiques. Un mp3 de 3 minutes pèsera déjà dans les 3Mo soit 500 fois plus que les 64K de la démo.

Il existe même des démos jusqu'à 32octets mais là c'est vraiment minimaliste on va dire. Mais la performance est tout de même à saluer.

Vous serez d'ailleurs probablement bluffé par des démos de 4K.

Mais du coup ça ressemble à quoi ?

Il y a de tout. C'est une forme d'art et comme dans tous les arts… bha il y a de tout.

De l'abstrait, du réaliste, du moche, du beau, du grand, du stupéfiant, de l'humoristique, du mélancolique…

Généralement l'accent est mis sur la synesthésie et on retrouve des motifs récurrents en fonction des modes.

Bon tu nous en montre ?

Alors ce que je vais faire est contre-nature. Je vais vous donner des liens vers youtube d'enregistrements de démos. Mais gardez bien à l'esprit que youtube n'a qu'un enregistrement, si vous voulez voir l'original, le rendu ne sera pas forcément tout à fait similaire (tout comme voire une photographie de la Joconde ne pourra jamais transmettre toutes les subtilités de l'original).

Allez c'est parti pour une mini-sélection de démo que j'apprécie en tentant de varier pour une première sélection. Je ferai d'autres articles moins explicatifs avec plus de démos une prochaine fois.

Thought Process - TMP

Capture d'écran de la demo Thought Process par TMP

Un couloir sans fin mais coloré

Elle est toute récente. Elle tient dans 4Ko. C'est une démo moderne sympatoche. On y retrouve des traits typiques actuel comme l'occlusion ambiante (les ombres dans les coins) et des effets de lumières à peu près réaliste.

Logon's run -

capture d'écran de Logon's Run on l'on voit des cubes multi-colores en 3D

Logon's Run en Live durant la Revision 2017

Profitez des réaction du publique lors de sa première présentation. Là c'est également du 2017 mais typé Old-School donc sur un Amstrad CPC avec de la 3D, ce qui, pour la machine, est un tour de force.

We Stand Divided - Cocoon

capture d'écran de We Stand Divided montrant une sorte de ruban rectangulaire avec du texte dessus

C'est ty pas mystique et intriguant ?

C'est une de mes favorite. Elle date de 2015, tourne sur PC sans contrainte de taille. Elle a une très forte synesthésie et j'ai du mal à l'expliquer pourquoi mais me fascine toujours. Par rapport aux deux premières on est dans un style carrément différent, avec une grosse atmosphère et moins de contraintes donc un rendu plus poussé avec des modèles complexes. Le groupe Cocoon est français et a un sacré portfolio à son actif, je vous en posterai d'autres, soyez-en sûr.

Lapsus - Maturefurk

capture montrant une image fixe très stylisée

On pourrait dater la démo approximativement rien qu'à ce screenshot

Ici, je vous présente une démo de 2000 pour que vous goûtiez un peu la mode de l'époque. On sent un style très différent. Personnelement j'aime pas trop trop mais bon ça a tout de même un certain charme daté. On sent qu'à l'époque mettre une "jolie" image était la mode, ça ne se fait quasiment plus maintenant. La 3D commence à être très présente mais rarement texturée.

Voilà pour cette première fournée. Je vous prévoit d'autres articles pour vous en présenter d'autres.

Des liens ! DES LIENS !

La Terrible Dependance Envers les Registrars

Purism vient de subir une importante panne de leur infrastructure réseau. Leurs sites web étaient injoignables.

La cause ? Visiblement leur nom de domaine était injoignable. Après investigation leur infra DNS était pourtant nickel.

Chez le registrar

Le souci provenait de leur registrar. Pour info le registrar c'est l'entité qui vous loue votre nom de domaine (non non ça ne s'achète pas). En téléphonant à leur prestataire ils n'ont rien appris de plus : leur domaine utilisant le TLD (la partie la plus à droite du domaine) .sm, il faut attendre la disponibilité de l'expert *.sm*…

La panne a eu lieu au milieu de la nuit californienne, il a fallu attendre le petit matin que l'expert .sm du registrar américain débarque.

Une fois celui-ci arrivé, il a vérifié et pu déclarer que chez le registrar tout était OK et que du coup il faut remonter au cran au-dessus.

Chez le registre

Au-dessus de registrar il y a le registry ou registre dans la langue de Yann Le Pentrec.

.sm est donc le TLD de Saint Marin qui se trouve donc en Europe. Le registrar doit donc attendre les heures d'ouverture européenne du registry…

Purism a pris les devants et a contacté en direct le registry pour se rendre compte de la raison de la coupure :

Le registrar n'a pas payé les droits d'enregistrement.

Hahahahaha j'imagine la joie des équipes de Purism lorsqu'ils ont appris cela.

Bref, retour de flamme chez le registrar et tout rentre dans l'ordre.

Conclusion ?

Le choix du registrar a des conséquences direct sur la disponibilité de votre infra réseau.

Vous aurez beau avoir de la redondance de partout via du RAID, des VM en haute disponibilité, toute une infra réseau multi-homée, dans de multiples datacenter, votre nom de domaine et votre registrar seront toujours un SPOF (single point of failure) inévitable.

Purism a fait le choix de prendre un second nom de domaine chez un autre registrar sur un second TLD malheureusement c'est pas parfait : si les gens se connectent à votre domaine principal sans essayer le domaine de secours… bha vous avez pas de secours.

Le choix du registry a des conséquences direct sur la disponibilité de votre infra réseau.

Tout comme pour le registrar, le choix du registry (et donc du TLD) est capital. Prendre une extension juste sur des critères esthétiques peut se révéler une future faille et n'est pas sans conditions d'utilisations mais ça je vous en reparlerai plus tard.

Même en hébergeant ses propres serveurs DNS et en les gérant au poil, on est pas à l'abri d'une connerie des couches inférieures.

Le calendrier fixe ou CAL13

Le Calendrier Fixe ou Calendrier positiviste voir CAL13 est un système système calendaire différent de notre système actuel.

Il repose sur des semaines de 7 jours.

Et sur des mois de 4 semaines.

Donc tous les mois font 28 jours.

L'année est composée de 13 mois.

On rajoute un jour épagonème (wow ce que ce mot est classe ! si seulement je pouvais m'en rappeler pour épater la galerie) du nouvel an qui n'est pas compté dans tout ça et on obtient bien nos 365 jours par an.

À quoi ça ressemble ?

Voilà le calendrier typique de tous les mois. Et vraiment tous les mois.

 Lun   Mar   Mer   Jeu   Ven   Sam   Dim 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

Les avis divergent concernant l'emplacement de ce nouveau mois et même sur le nom a leur donner tout comme le choix du premier jour de la semaine.

Les propositions populaires le placent entre Juin et Juillet et l'appelent Sol. Et la semaine commencerait soit le lundi soit le dimanche.

Avantages

  • On sait tout de suite quel jour est le 24 du mois.
  • Tous les mois ont le même nombre de jours et semaines.
  • On a un jour férien supplémentaire en début d'année.
  • On a un jour férien supplémentaire les années bisextiles.
  • Synchronisation avec le cycle lunaire.
  • Synchronisation avec le cycle menstruel moyen.

Origines

Pas mal de monde souhaite abandonner l'actuel calendrier Grégorien.

La première proposition émanerait de Hugh Jones en 1745. Un certain Auguste Comte aurait émit l'idée en 1849. L'idée est aussi venue à Moses B. Costworth au début du vingtième siècle.

Pourquoi c'est pas adopté ?

Le calendrier actuel marche suffisamment et l'adoption d'un nouveau serait compliqué. C'est l'éternel inertie qui empêche les choses d'avancer. C'est la même histoire pour l'adoption du système métrique aux US.

L'entreprise Kodak l'a tout de même utilisé de 1928 à 1989… ce devait être une sacré galère d'avoir un calendrier interne différent du monde extérieur.

Mais en plus de révolutionner le calendrier actuel d'un point de vue historique il deviendrait difficile dater ce qu'il s'est déjà passé.

Quitte à choisir un nouveau calendrier cessons d'utiliser une pseudo date de naissance (que l'on sait fausse) comme point de référence (non Jésus n'est pas né le 1 janvier 0 (ni le 25 Décembre)). Le Calendrier Holocène se base sur le début de la civilisation humaine comme référence soit environ -10 000.

5ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE et le projet Matrix. Ils sont assez transparent sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


De retour du FOSDEM

Être au FOSDEM 2018 était une tuerie ! On a obtenu pleins de vos retours concernant ce que nous avons déjà accompli et ce que nous visons. Ces retours constructifs nous permettent d'être ce que nous sommes et nous motivent ! Ça nous permet de mieux concentrer le développement. En plus de cela, nous sommes impressionnés de l'appréciation de la communauté du Logiciel Libre. Nous savons que les relations entre les entreprises (même affiliées au Libre, telle que Purism) et la communauté du Logiciel Libre est toujours un équilibre délicat : L'équilibre entre la transparence, l'ouverture et le Libre d'un côté et générer un revenue pour soutenir le developpement de l'autre côté. Vos retours positifs du FOSDEM et l'engouement général pour nos projets sont toujours agréables à entendre.

Nous nous efforçons pour que des produits éthiques basés sur du Libre et de l'OpenSource deviennent une réalité. Ce n'est pas “juste un boulot” pour l'équipe de Purism; nous aimons tous ce que nous faisons et croyons réellement envers le bien fondé de notre but. Vos retours sont le moteur de notre motivation pour travailler encore plus dur. Merci beaucoup !

Avancées logicielles

Comme expliqué précédemment, nous avons reçu des i.MX 6 QuadPlus de test. Donc voilà quelques photos :

Photographie de la board raccordée à un écran

À droite, vous pouvez voir la carte Nitrogen avec la carte modem installée. Sur la gauche un écran affichant la page web Purism et en dessous une fenêtre de terminal d'où a été lancé le navigateur web. Remarquez la carte Micro SD pour une idée de la taille :

Photographie de l'écran avec une carte micro SD apposée dessus

La fenêtre de terminal fait environ la taille de 3 cartes Micro SD ! Ça démontre clairement le fait qu'il y a pas mal de travail nécessaire pour adapter les applications aux écrans à haute résolution et les rendre utilisabless avec les doigts. Dans la photo suivante on a posé 1 €uro et sommes passés sur l'affichage de la console :

L'écran avec une pièce d'un euro sur la console

Concernant le logiciel, nous travaillons à faire marcher la base du framework sur le matériel que nous avons à disposition. Une pièce essentielle est le middleware qui manipule le modem pour passer les appels et envoyer/recevoir les SMS. Pour cela nous nous appuyons sur oFono car c'est également utilisé par KDE Plasma. Nous avons un premier jalon à partager :

Capture d'écran montrant l'envoi d'un sms depuis le prototype

C'est le tout premier SMS envoyé via oFono depuis la carte iMX et le modem vers un smartphone classiques où la capture d'écran a été prise. Nous sommes donc sur le bon chemin ici avec un système qui commence à fonctionner sur de multiples systèmes comme Plasma Mobile ou un future environnement mobile Gnome/GTK+.

Le SMS a été envoyé par un script python utilisant l'API DBus d'oFono. Au préalable, les pilotes kernel pour le modem ont dû être activés puis il faut démarrer ofonod qui autodétecte le modem. Ensuite le modem doit être démarré et connecté (online-modem). Une fois fait, envoyer un SMS se résume à :

  purism@pureos:~/ofono/test$ sudo ./send-sms 07XXXXXXXXX "Sent from my Librem 5 i.MX6 dev board!"

Le script en lui même est très simple et intéressant. Simuler la réception d'un SMS peut également se faire avec une commande de ce genre :

  purism@pureos:~/ofono/test$ sudo ./receive-smsb 'Sent to my Librem 5 i.MX6 dev board!' LocalSentTime = 2018-02-07T10:26:19+0000 SentTime = 2018-02-07T10:26:19+0000 Sender = +447XXXXXXXXX

L'évolution de la fabrication d'appareils mobiles

Nous construisons un téléphone, donc la partie matérielle est un élément crucial. Dans notre dernier article de blog, nous parlions de la recherche de partenaire pour la fabrication. Puisque nous ne fabriquons pas un énième smartphone basé sur un SOC Qualcomm mais que nous partons de zéro, nous nous attelons à effectuer tous les choix de design ainsi que des partenaires de fabrication. Cette phase de travail supplémentaire est entièrement dépendante envers le marché du téléphone mobile et de son évolution de ces dernières années. Voyons ça.

Aux balbutiements des smartphones, le processeur central était séparé du modem cellulaire qui implémentait dans son firmware tous les protocoles réseaux nécessaires pour faire fonctionner l'interface radio − d'abord GSM, puis UMTS (3G) and désormais LTE (4G). Ces protocoles et l'interfaçage radio sont devenus si complexe que la puissance de calcul nécessaire ainsi que la taille du firmware a grossi. Les actuels modems 3G/4G utilisent des firmware de l'ordre de 60 Mo ou plus. Stocker et faire tourner ces firmwares est rapidement devenu problématique (nécessite également plus de RAM).

Les smartphones ont généralement ont généralement un second cœur de CPU pour le système d'exploitation et les applications interagissant avec l'utilisateur. Ça signifie que le smartphone possèdent deux systèmes de RAM, un pour le baseband et un pour le CPU. Cela signifie également deux systèmes de stockage pour le firmware : un pour pour le CPU et un pour le baseband. Comme vous pouvez l'imaginer, faire marcher tous ces composants et faire rentrer tout ça dans un appareil au format restreint nécessite énormément de ressources de dev et de fabrication.

La montée en puissance des smartphones bas de gamme

Il y a énormément de pression sur le prix des smartphones. Sur le marché, on retrouve des smartphones simples à des prix inférieurs à 100$.

L'arrivée des puces combinant le baseband radio et le CPU sur un seul a permis de réduire massivement les coûts. Maintenant, la RAM et le stockage peut être mutualisé. Les deux puces ne sont plus qu'une seule ce qui réduit les coûts de production pour les fabricants de puces ce qui se répercutent sur les fabricants via réduction les nomenclatures (BOM). Ça permet d'économiser une grande puce pour le modem, une puce de flash pour le firmware du modem ainsi que la ram dédiée au modem. Non seulement ça baisse le prix des composants mais également fait gagner de la place sur le circuit imprimmé (PCB) ce qui permet de fabriquer des téléphones plus petits et plus fins. Aujourd'hui, nombreux sont les constructeurs à vendre ce type de chipsets − comme Qualcomm, Broadcom et Mediatek pour en citer quelques-uns.

Ces puces ont radicalement changé le marché du modem baseband. Il était alors courant de trouver sur le marché des modems baseband seuls. Mais depuis la montée en puissance des puces combinés, le besoin de modems séparés s'est drastiquement réduit. On trouve toujours ce type de puces mais celles-ci visent désormais les appareils M2M (machine to machine, pas les appareils pour humains) avec de faibles débits et ne gérant pas la voix ou bien seulement sur des formats inutilisables dans notre cas comme le miniPCIe ou bien M.2. La conséquence directe pour nous est le choix restreint de modem baseband indépendant.

Ce que ça signifie pour les OEM, ODM ou les DIY

Toute cette consolidation du marché a un impact sur l'éventail de choix. Quasiment tous les smartphones actuels des OEM/ODM sont basés sur des puces combinés; c'est tout ce dont ils sont capables. Plus personne ne fait de smartphone à baseband séparée désormais et ceux le faisant ne sont ni OEM ni ODM. Nos choix sont d'autant plus restreints que nous n'utiliserons pas de matériel avec des firmwares propriétaires sur le CPU (ce que nous verrons plus loin). Les fabricants ne sont pas familiers avec les i.MX6 ou i.MX8 et ne veulent pas s'y risquer. Notre liste de partenaires potentiels se réduit donc à peau de chagrin.

Toutefois, nous avons quelques partenaires prometteurs que nous continuons à évaluer. Nous sommes plutôt confiant sur le fait de pouvoir suivre notre cahier des charges initial pour le Librem 5. Nous voulons juste partager avec vous les challenges à surmonter et pourquoi notre équipe est la meilleure pour ce plan. Pour continuer les négociations avec des fabricants et fournisseurs, Purism ira à l'Embedded World, l'un des plus gros salons de l'embarqué se tenant à Nürnberg en Allemagne début Mars. Et comme d'habitude, nous vous tiendrons informé de l'avancement !

Bonnes nouvelles concernant notre prototype

Nous avons patiemment attendu l'arrivée de l'i.MX 8M suite aux prévisions de NXP. En parallèle, nous avons bien avancé sur la partie logicielle en utilisant des carte d'évaluation i.MX6 QuadPlus de chez Boundary Devices, plus précisément la NITROGEN6_MAX (Nit6Qp_MAX) qui est la carte la plus proche de la future i.MX 8M. Nous avons une image Debian Testing fonctionnant sur le banc d'essai pendant que l'équipe de PureOS prépare une image PureOS spécifique pour ARM et ARM64.

Sur ces cartes d'évaluations nous avons toutes les interfaces nécessaires pour le dev :

  1. Wifi
  2. Entrée/Sortie Vidéo
  3. USB en entrée
  4. Console série et socket carte SIM en miniPCIe pour un modem
  5. Sierra Wireless MC7455 3G/4G miniPCIe modem qui est simplement un modem USB au format miniPCIe
  6. Un superbe écran branché via HDMI. 5.5" AMOLED en full-HD nativement en portait.

Cette configuration matérielle nous permet de commencer le dev logicielle en parallèle de l'avancement sur le matériel jusqu'à l'arrivée de l'i.MX 8.

Prochain élément sur la todo-list : passer des appels !


Bon pas énormément d'avancement depuis la dernière fois mais cela dit ils rassurent côté matériel.

Ils veulent suivre le cahiers des charges établi pour le crowdfunding.

On devrait avoir plus d'infos côté software j'imagine. Leur prototype en place ils vont pousser Gnome/KDE pour rendre les interfaces plus doigts-friendly.

Virer les cookies d'un site précis dans Qutebrowser

Je vous ai déjà chanté les louanges de mon cher Qutebrowser mais ce coup-ci on va passer sous le capot.

Alors que je démarre la bête et qu'il restaure la session habituelle (mail, musique, rss et affaires courantes) : SURPRISE ! Mon instance Tiny Tiny RSS m'affiche un message bien moche. En gros soit un header est foireux (j'en doute) soit le cookie envoyé par le navigateur est trop gros et du coup fout la merde. La seconde option est la plus plausible.

Du coup il faut tripotter les cookies de Qutebrowser. Pour l'instant il n'y a pas de moyen officiel de se servir dans la boîte à cookies et d'y piocher allègrement ceux qu'on veux. Donc allons voir un peu les entrailles de la bête pour bouffer ce délicieux cookie.

Personnellement j'utilise le moteur QtWebengine du coup les cookies sont planqués dans une base sqlite dans : ~/.local/share/qutebrowser/webengine/cookies.

On ne peut donc pas ouvrir le fichier avec un éditeur de texte et éditer à l'arrache. Dépoussiérons les vieilles notions apprises lors des cours de Base de Données.

Bon commençons par le début :

sqlite3 ~/.local/share/qutebrowser/webengine/cookie

Là on ouvre la base de données et on se retrouve dans un shell avec des commandes propre à sqlite.

Tiens ! .help apparemment peut nous aider !

Chouette il n'y a pas trop de commandes et c'est plutôt bien expliqué.

Bon à vue de nez on doit pouvoir trouver des infos intéressantes via .tables

Ouai c'est pas mal. On a donc la table cookies et la table meta. Un ptit coup de select * from meta; nous apprend qu'on s'en fout complètement de cette partie et qu'on trouvera ce qu'on est venu trifouiller dans l'autre table.

select * from cookies; et là on voit notre longue liste de cookies ! On va se régaler avec tout ça.

On repére que les lignes contiennent d'abord un nombre. Serait-ce un index ? Puis le nom du site visiblement. Puis d'autres champs pas spécialement compréhensibles.

Comment trouver à quoi correspondent les différents champs ?

On fouille on fouille.

Hmmm

.schema

Haa là c'est plus clair. Le premier champs est donc la creation_utc (donc c'est pas un index), le second host_key et ensuite des champs propre au cookie lui même (comme secure, httponly, last_access_utc, has_expires,…).

Bon bha pour Tiny Tiny RSS je peux dégager intégralement le cookie.

On peut donc lancer un joli :

delete from cookies where host_key = "le_domaine_a_jarter";

Et hop, on relance Qutebrowser pour tester.

C'est bon ça marche \o/

TL;DR

sqlite3 .local/share/qutebrowser/webengine/cookies
delete from cookies where host_key = "your_domain";

Méta-actu du blog

Bon bha voilà après deux mois je fais un petit retour sur les avancées du blog.

Rythme

Je pense avoir réussi à prendre un bon rythme. Ce n'est plus du tout un effort. Ça me vient vraiment naturellement. Je prends vraiment du plaisir à rédiger pour le site.

Distinguer les posts classiques et les fast-posts a été une bonne décision qui m'offre plus de spontanéité.

Layout

J'ai un poil édité le layout du site.

Premièrement j'ai ajouté la date de dernière modification d'un article (s'il y a eu modif). C'est manuel pour le moment mais peut-être qu'à terme je baserai ça sur la vraie date d'édition du fichier.

Ensuite j'ai corrigé les couleurs des fast-posts dans les listes d'articles. Pour celles et ceux ne l'ayant pas remarqué (ouai vous les lecteurs de rss par exemple), les fasts-posts ont une teinte légèrement bleutée. Hé bien cette teinte n'était pas appliquée dans les listes d'articles.

Les listes ? Ouai c'était à moitié pété mais j'ai réparé les listes. Quand vous cliquez sur les tags d'articles (genre meta, hugo, blog qu'on retrouve dans ce post), ça vous mène sur une page listant tous les articles de cette catégorie. Et bha vous l'aviez probablement pas vu mais c'était pété et c'est réparé. J'ai donc bidouillé mon thème hugo (ouai c'est pas forcément le meilleur endroit pour faire ça mais bon…). Un jour viendra je publierai mon thème quelque part.

Après j'ai profité du fait que les catégories fonctionnent pour rajouter des tags aux articles existants histoire que la fonctionnalité ait un peu d'intérêt.

CSS

Dans le registre de l'esthétique j'ai fait quelques ajouts/modifs dans le CSS.

Mis un peu de style dans la date de modifs des articles.

J'en ai profité également pour un peu styliser les <hr> qui passent de l'immonde au passable.

J'ai indenté les listes qui ne l'était pas du tout et du coup dépassait légèrement sur la gauche.

J'ai également centré les images qui ne l'était pas et qui du coup dés-harmonisait le tout.

Et enfin j'ai stylisé les <table> qui servira pour un très prochain article.

Comment je m'y prends ?

J'ai toujours un ou deux articles sous le coude en attente de modifs avant de parution.

Ça me permet de laisser quelques jours à froid l'article et d'y retourner avant de publier. J'ai du coup, à mon goût, une meilleure finition des articles.

Auparavant, je créais l'article et le publiais dans la foulée. Et quelques heures/jours après je voulais toujours modifier des trucs bénins ou non. En laissant l'article en attente quelques jours et en m'y repenchant dessus avant de le publier, j'arrive à le relire. Ça me permet de voir tout plein de fautes et de tournures de phrases foireuses.

Je rajoute/enlève du contenu qui me convient que moyennement. Et tout ça sans pénaliser le rythme de sortie, car je fait un roulement. Bref c'est une ptite astuce qui améliore le contenu sans impact négatif.

Et niveau outils ?

Bon comment se présente une séance de rédaction ?

  1. cd ~/www - c'est là où je stocke mes fichiers sources
  2. hugo new posts/xx-titre-du-post.md - pour créer le fichier avec les méta-données pré-remplies
  3. amp - pour démarrer amp et rajouter le texte
  4. hugo server --navigateToChanged -F -D --disableFastRender - en parallèle pour voir les modifs en live
  5. git add content/posts/xx-titre-du-post.md - pour ajouter le nouveau fichier dans le dépôt git du site
  6. git commit !$ -m "[BLOG] ajout article xx titre du post" - pour prendre en compte et mettre un commentaire dans le dépôt git
  7. git push - pour sauvegarder le dépôt et par la même occasion publier le site sur le serveur.

Il y a peu de manipulations et c'est assez rapide.

Et si vous montiez votre blog ?

Amp : un ptit éditeur de texte à la vi

J'utilise vi et ses dérivés depuis si longtemps que j'ai désormais une petite partie de ses commandes inscrits dans la mémoire musculaire. C'est toujours amusant de voir des étudiants qui galèrent et hallucinent devant ma relative agilité alors que je n'ai pourtant qu'un niveau relativement faible en vimerie. Bref ces derniers temps j'ai entendu parlé d'un nouvel éditeur de texte. Amp.

La fiche technique me parle pas mal : léger, taillé pour la console, inspiré par vi, une configuration par défaut moderne et bonus de la hype : c'est en rust.

Du coup ni une ni deux je git clone et je compile.

Arrivée dans amp

Austère comme j'aime :-)

Bon et sinon ? Il va falloir lire un peu la doc parceque là c'est inspiré de vi mais les commandes ne sont pas pour autant du copié/collé de vi. La migration (si elle se fait) va être un peu douloureuse.

Commandes en vrac pour se débrouiller un minimum

  • Ouvrir un fichier : espace puis c'est du fuzzy search à partir du dossier courant.
  • Fermer le fichier actuel q
  • Sauvegarder s
  • Passer en mode insert i
  • Bouger dans le fichier jump mode j
  • Chercher search mode /

Bon je pense que c'est un peu le minimum à savoir dans un tout premier temps.

Bon et ça ressemble à quoi en vrai ?

Et bien à ça :

Capture d'écran de l'interface d'amp

L'article en cours de rédaction (remarquez les fautes)

Bon alors déjà ça ressemble plus à ce qu'on est habitué à voir. Des lignes numérotés, de la coloration syntaxique (hmmm on en reparle un peu plus loin), une barre de status en bas indiquant le mode, le fichier en cours et parfois même d'autres infos.

Pas de quoi casser trois pattes à un canard.

Réapprendre

Bon je l'utilise un peu plus pour voir un peu comment il s'utilise. Je me heurte assez fortement à mes habitudes vimmiennes. Il me faut tenter de ne pas penser à vi mais à cette nouvelle philosophie. Un peu plus de lecture de doc et du coup je me rend compte qu'il faut un peu plus utiliser des modes. Et surtout il faut regarder un peu les raccourcis par défaut.

Command mode

Et là je découvre le command mode (que l'on atteint via 0). Du fuzzy search (oui oui encore !) pour trouver un peu toutes les commandes existantes. Toutes les commandes possibles y sont répertoriées et donc vous pouvez les débusquer assez simplement.

Jump mode

Plutôt que d'ajouter de nombreux mots-clé pour se déplacer, ils utilisent une sorte de hint mode qu'on retrouve dans qutebrowser. C'est à dire que lorsque vous êtes dans ce mode, amp va placer un peu partout des lettres jaunes dans votre texte. Vous entrez les deux lettres placées à l'endroit où vous voulez placer le curseur et hop le tour est joué. Une image ?

Capture d'écran illustrant le jump mode

Avant le jump mode

Capture d'écran illustrant le jump mode 2

Une fois dans le jump mode

Comme vous pouvez le constater il y a les lettres en jaune qui sont rajoutées un peu partout. Du coup il vous suffit de tapper celle qui vous intéresse et hop votre curseur s'y téléporte.

Trouver tous les raccourcis

Dans le command mode entrez application::display_available_commands, ce qui vous listera toutes les commandes et application::display_default_keymap pour afficher tous les raccourcis. Ça devient vite indispensable lorsqu'on débute avec amp.

Bon donc au bout d'une semaine voilà un peu mon ressenti.

Ce qui me plaît

C'est rapide. Bon c'est pas non plus extraordinaire qu'un ordi de 2018 ne rame pas pour éditer du texte mais c'est toujours agréable. Amp s'ouvre direct, les changements de modes sont instantannés, la recherche de fichier est sacrément réactive. Bref c'est snappy !

La config par défaut qui est bien branlée. J'adore vi mais franchement la config par défaut est un peu légère tout de même. C'est quand même à la limite de l'utilisabilité par défaut. Et franchement c'est un peu dommage pour un logiciel qui a le gigantesque avantage d'être dispo sur tous les os que j'accepte de toucher. Là on se retrouve avec de la coloration de base, l'indication des modes clairement affiché, une barre de status utilisable. La base minimale est utilisable directement. Je dois avouer que je sais même pas s'il y a un fichier de configuration. J'ai pas eu besoin d'aller le regarder pour faire mumuse pour le moment.

C'est un projet en début de dev avec du coup beaucoup d'activité sur le repo. De nouvelles features arrivent. Les bugs se font chasser assez vite (et il y a du boulot). C'est assez sympa cette sensation de voir le logiciel s'améliorer chaque jour et de voir ces ptites améliorations continuelles arriver. Et du coup c'est même assez facile de contribuer au logiciel. Sa documentation est pour l'instant… assez spartiate. J'ai d'ailleurs contribué un peu à son amélioration et je continuerai probablement un peu.

De l'audace dans la réinterprétation de vi. C'est déroutant au début et au final on trouve de sacrément bonnes idées. Le jump mode est génial, c'est dans la même philosophie que QuteBrowser du coup je suis pas perdu.

Le command mode est génial. Alors je vais avoir l'air de débarquer mais ce mode est génial et fait cruellement défaut à vi (je sens qu'on va me dire qu'en fait ça existe…). Il paraît que cette fonctionnalité est de base dans emacs mais je n'ai jamais vraiment poussé emacs. Je veux cette fonctionnalité partout maintenant !

Ce qui me plaît moins

C'est un projet en début de dev. Et du coup il y a des bugs. La doc est très légère. C'est un atout mais c'est un peu rebutant pour certains. J'arrive tout de même à m'en accomoder.

C'est pas un clone de vi. C'est également un atout mais un poil problèmatique quand on doit surpasser sa mémoire musculaire et que l'on réflêchit à "comment effectuer telle action ?". Le truc qui m'irrite le plus sont le G et gg de vi qui ne fonctionnent pas. Je le fait tellement instinctivement que devoir faire autrement me déroute quelques secondes. (J et K si vous les cherchez)

Les quelques bugs que j'ai rencontrés

Bon rien de vraiment insurmontables, certains sont déjà corrigés (ou presques) d'autres sont déjà rapportés. Pas de gros bugs qui crashent (tout du moins j'en ai pas rencontré) mais par exemple, vous ne pouvez sauvegarder votre fichier que s'il y a une ligne vide à la fin.

Ou bien si vous le lancez à la racine d'un dossier contenant beaucoup de fichier, il va tenter de tous les scanner pour faire le fuzzy search par la suite. Il va donc se bloquer pendant quelques secondes (voir minutes).

Un truc plus étrange c'est lorsque le curseur atteind le bas de la fenêtre, la fenêtre ne défile pas et du coup vous n'avez plus qu'à tapper à l'aveuglette. Il vous faut donc scroller manuellement avec , et m. Une habitude à prendre.

Le bug le plus chiant au final c'est la coloration syntaxique comme vous pouvez le voir sur les différents screenshots. Elle est complètement foireuse pour le markdown, à l'agonie pour le xml, le html par contre est presque bien geré. En gros les caractères spéciaux (d'échappement souvent) la mette à la peine. N'étant pas codeur ça ne m'impacte pas trop mais j'imagine que pour quelqu'un vraiment habitué ça peut être complètement paralysant.


TL;DR

Amp est vraiment sympa mais un peu jeune. À surveiller de près. Je pense continuer à m'en servir pour bloguer et autre.

Vi gardera toujours l'avantage d'être disponible partout du moindre busybox à la bonne grosse gentoo des familles… Mais amp peut devenir une alternative sympatoche.

Réponse à Franck Ridel concernant DuckDuckGo

Je viens de lire cet article de Franck Ridel. J'allais initialement commenter sur le JDH mais ma réponse commençait à être un poil long, donc je le fais ici.


Quels sont les reproches envers Google ?

Google a un business plutôt efficace d'ammassage et de revente de données privées. C'est un fait établi que je ne nierai pas. Il est également reproché à Google de collaborer avec la NSA (mais pas forcément de bon cœur).

Le souci de Google est sa position un peu trop omniprésente sur le mobile et l'Internet en général. Éviter Google sur Internet est un sport de haut niveau.

Que propose DuckDuckGo ?

Contrairement à Google leur business model est radicalement différent puisqu'ils ont juste deux moyens de gagner de l'argent. Quelques pubs dans les résultats (uniquement basé sur la recherche en cours) et des liens affiliés.

DuckDuckGo base une bonne partie de sa communication sur le fait qu'ils respectent la vie privée. Ils ne collectent pas de données personnelles ni les revend.

Qu'à déclarer le patron de Qwant à propos de DDG ?

Il a annoncé que DDG hébergeait ses services sur Amazon et que par conséquent les gentils fonctionnaires de la NSA/CIA/FBI peuvent tout simplement aller piocher chez amazon pour récupérer des données.

Ça c'est absolument vrai.

Mais ce qu'il ne dit pas c'est que pour Qwant c'est pas vraiment mieux. Les machines sont probablement hébergées en France. Il doit donc se plier aux lois françaises et Européennes. Est-ce vraiment mieux ?

Il pousse à l'amalgame pour discréditer DDG. DDG ne s'est jamais vanté de ne pas collaborer avec la NSA (/…) mais juste de respecter la vie privée.

Quelle menace ?

Éric Leandri pousse donc à l'amalgame des menaces concernant la vie privée.

Il faut bien distinguer deux choses :

  • Collecter/analyser/recouper des données et les revendre pour du pognon à n'importe qui.
  • Se faire voler des données issues de recherche web par une organisation étatique.

Ce sont deux concepts diamétralement opposés qu'on ne peut pas faire passer pour la même chose.

Premièrement la portée des données n'est pas la même. DDG ne peut donner que quelques mots-clés de recherche, votre adresse IP, et les informations leakées par votre navigateur. Google pour sa part peut y ajouter des informations concernant votre appareil (surtout si c'est un android ou un chromebook), la localisation ultra précise via les AP wifi, les mails que vous avez lu juste avant cette recherche et que vous enverrez ensuite, le trajet que vous avez parcouru ensuite, … bref à peu tout.

Ensuite la personne qui récupère les données… Google se fera un plaisir de revendre vos infos pour quelques menus dollars. Ce qui est reproché à DDG c'est que les données seront récupérées par la CIA/NSA. Je veux pas vous faire peur mais vous passerez pas outre la CIA/NSA dès que vos paquets IP toucheront le sol étasunien (voir un peu ailleurs aussi).

Et je pose une vraie question :

Est-ce plus grave que mes données soient interceptées par les US que par la France ?

Réellement je ne sais pas quoi penser. Je suis pas spécialement sûr de préférer que mes données soient lues par des services français. Je ne pense pas être particulièrement que les services français soient moins regardants que ceux US.

Parceque oui, en France aussi on surveille les Internets des Français.

Bref Qwant ou DDG ?

Bha ça revient au même.

Le peu de données qu'ils possèderont sur moi iront chez les espions français et usiens mais bon… on peut malheureusement rien y faire.

Et les autres solutions proposées ?

Voyons un peu les alternatives citées :

  • Startpage : Mouai c'est du résultat Google donc ça revient au même niveau interception que Qwant et DDG.
  • Metager : Idem.
  • Searx : À peu près pareil. Surtout si on utilise une instance personnelle et qu'on l'utilise seul ou presque : les données seront d'autant moins anonymes.

DDG n'est pas qu'un méta-moteur

Ils ont démarré effectivement comme étant juste une surcouche de Bing le côté respect de la vie privée en plus. Ils ont depuis évolués et possèdent un bot crawler pour créer leur propre index désormais. Ils ont donc des résultats bien de chez eux désormais.

−−−−−−−

PS :

J'ai échangé brièvement par mail avec Kapush et après avoir eu son accord, voilà sa réponse :

Lecture intéressante mais qui fait la même omission que l'article initial.

  1. Qwant est hébergé chez Equinix en banlieue nord de paris
  2. Equinix est une entreprise californienne
  3. D'après la loi US, Le patriot act s'applique à toutes les entreprises étatsuniennes.

Conclusion Qwant est soumis à exactement le même problème que duckduckgo au niveau de la capture de données par les agences gouvernementales US.

La subtile différence est que les USA n'ont pas de loi obligeant à la collecte et rétention des données de connexions, tandis que la France en a.

Du coup si duckduckgo fait ce qu'ils disent et ne collecte pas les données sur leurs usagers alors il n'y a tout simplement rien à venir prendre. C'est le modèle utilisé par certains fournisseurs de VPN basés aux USA.

Dans le cas de Qwant pour le moment ils jouent sur le fait que selon eux ils ne sont ni éditeur, ni hébergeur pour contourner l'obligation de collecter/conserver les données. Comme expliqué dans cette interview: https://www.nextinpact.com/news/97572-dans-coulisses-qwant-interview-deric-leandri.htm

Aussi intéréssant à mentionner par rapport à la pique "duckduckgo c'est rien qu'un métamoteur pour bing", comme tu le fais remarquer ils ont leur propre crawler et ils utilisent aussi d'autres source mais surtout Qwant aussi utilise Bing https://www.nextinpact.com/news/103652-les-liens-moteur-qwant-avec-microsoft-bing.htm

3ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE et le projet Matrix. Ils sont assez transparent sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref voilà l'article :


Le Librem 5 et l'actualité récente

Ces derniers temps, pas mal de news assez alarmistes ont fait l'actualité. De nombreuses failles de sécurité ont été trouvées au seins même des processeurs. Elles ne touchent pas uniquement Intel mais également en partie AMD et quelques cœur ARM. En même temps, certains de nos contributeurs ont fait entendre leurs inquiétudes à propos du futur de NXP (fabricant du processeur envisagé pour le Librem 5) en vue d'une potentiel acquisition par Qualcomm. Certains se sont donc demandés : "Est-ce que le Librem 5 est affectés par ces bugs également ?" et "Est-ce que Purism parviendra à obtenir des puces i.MX 8 comme prévu ?", donc répondons à ces interrogations.

Épargné par Spectre/Meltdown

Pour le moment nous sommes quasiment sûr d'utiliser une des puces de la nouvelle branche i.MX 8 de chez NXP pour le Librem 5. Plus précisément nous nous orientons vers l'i.MX 8M qui comprends 4 cœurs ARM Cortex A53. Selon ARM, ces cœurs ne sont pas affectés par les failles Spectre et Meltdown, ce qu'ARM a résumé dans leur bulletin de sécurité.

Donc pour le moment on est presque certains que le Librem 5 ne sera pas affecté cependant nous continuerons à surveiller de près la situation car des nouveautés font surface régulièrement. À ce propos nous sommes heureux de vous annoncer que nous avons un nouveau consultant pour assister notre équipe sur les questions de sécurité du matériel ansi que des questions tel que : "Est-ce que le CPU est affecté par Spectre/Meltdown ou non ?".

La possible acquisition de NXP par Qualcomm : pas un soucis

Les rumeurs comme quoi Qualcomm serait intéressé par un rachat de NXP courent depuis quelques temps. Comme nous allons utiliser une puce NXP comme processeur principal (de la famille I.MX 8) nous sommes au courant et nous intéressons de près à cette histoire.

Qualcomm est leader pour les gros volumes de puces grand public alors que NXP vise le marché industriel à faible volume. Il en résulte une approche radicalement différente concernant le support, particulièrement du logiciel libre. Alors que NXP est habituellement tourné vers l'ouverture de ses spécifications techniques, Qualcomm est au contraire fermé. Cela se reflète particulièrement sur le support du kernel Linux des puces des constructeurs respectifs. La question est : Comment est-ce que le support des logiciels libres et la disponibilité des informations concernant les SOC NXP perdurera s'il y a acquisition ?

Tout d'abord, il est peu probable que le deal est lieu. Qualcomm a vécu une année 2017 plutôt rude donc ils ne sont pas forcément dans une position financière leur permettant d'acheter une autre entreprise. Ensuite, il y a également des rumeurs comme quoi Broadcom pourrait en fait racheter Qualcomm. Après, les organisations mondiales de contrôles anti-monopole mènent des investigations afin d'approuver ou non une fusion. Il y a à peine quelques jours, l'organisme de contrôle des monopoles européen a accepté une fusion mais avec de lourdes conditions. Par exemple, Qualcomm devrait donner de nombreuses licences gratuitement concernant certains de ses brevets, etc. Enfin, NXP est tenu par de nombreuses obligations : la façon dont NXP vise les petits et moyens clients les rendant dépendants; changer radicalement d'attitude blesserait ses clients et porterait lourdement atteinte à la réputation de Qualcomm et entraînerait également une perte de part de marché.

On imagine donc que la fusion n'aura pas lieu de si tôt et n'impacterait probablement que peu les i.MX 8. Si la fusion s'opérait, seuls les futurs produits seraient impactés.

Le développement

En plus de travailler à l'obtention de kit de développement i.MX6QuadPlus pour travailler dessus, l'équipe téléphone est activement en train de chercher et évaluer les logiciels qui formeront la base de nos développements pour les prochains mois. Nous sommes parfaitement conscient de l'énorme quantité de travail à accomplir et des responsabilité que nous endosserons. Parmi nos recherches, nous avons contacté l'équipe Gnome human interface design team avec qui nous avons discuté design et implémentation. Par exemple, nous avons commencé à implémenter un widget prototype qui permettrait d'adapter bien plus simplement l'interface existante des applications desktop vers le téléphone voir d'autre style d'interface utilisateur. Nous aimerions parvenir à faire en sorte qu'une application puisse s'adapter à l'appareil sur lequel elle tourne. C'est toujours un objectif lointain, mais on y travaille ardemment. Nous rencontrerons également les membres de Gnome au FOSDEM pour discuter de possibles évolutions et objectifs de design ainsi que de possibles collaborations.

Le travail de dev pour KDE/Plasma sera également fait par leur propre équipe d'interface. Purism supportera leurs efforts en leur fournissant du matériel et de la documentation au fur et à mesure de l'avancement du téléphone. Cela permettra à KDE/Plasma de fonctionner normalement sur le Librem 5 dès la sortie. Pour mieux comprendre l'avancement avec Gnome et KDE, vous pouvez consulter cet article de blog.

Nous avons également testé et évalué différents compositeur et interface de bureau que nous pourrions utiliser comme interface pour le téléphone. Nous visons un environnement uniquement Wayland pour se débarrasser de l'héritage X11 autant que faire se peu afin de profiter d'une meilleure sécurité et de meilleures performances. Après discussions avec les mainteneurs Gnome des interfaces et compositeurs, nous ferions peut-être mieux de créer un nouveau compositeur (utilisé et soutenu par Gnome) afin d'éviter le fardeau d'X11.

Du côté application, nous avons créée une impressionnante liste d'applications que nous pourrions modifier pour permettre au téléphone d'atteindre les objectifs de la campagne (de crowdfunding) et nous avons plus restreint les piles de middlewares. Nous sommes toujours en cours de réflexions/évaluations donc nous n'entrerons pas plus dans les détails pour le moment. Nous aborderons bien sûr tout cela un peu plus tard dans un futur article.

Rencontre avec les fabricants de puces

Comme le choix du CPU est quasiment pris, nous allons rencontrer NXP et d'autres fabricants de puces à l'Embedded World À Nürnberg en Allemagne à la fin du mois. C'est très encourageant car cela fait maintenant des mois que nous travaillons à établir des liens direct avec NXP. Nous allons enfin rencontrer nous rencontrer en personne lors de la conférence. La recherche pour le design et les partenaires de fabrication prend plus de temps que prévu. Notre équipe d'ingénieurs hardware et notre équipe logiciel (particulièrement bas niveau et ingénieurs kernel) ont commencé à créé une nomenclature (Bill Of Material) matériel et également un "plan" d'un éventuel PCB. Mais il s'avère que beaucoup de constructeurs rechignent travailler avec des i.MX 8M car c'est un CPU/SOC tout nouveau. Nous avons cependant de prometteuses pistes et de bons contacts donc nous explorerons cela.

L'équipe Librem 5 sera au FOSDEM

Au fait, une bonne partie du staff de Purism sera au FOSDEM ce week-end du 3 au 4 Février. En plus des équipe design et marketing, les équipes PureOS et Librem 5 seront également là. Nous aimerions vous rencontrer ! Des représentants Purism seront là pour répondre à toutes vos questions et porteront un tshirt Purism pour que vous les reconnaissiez facilement.


Et voilà :-)

Bref, ils rassurent à propos des failles Spectre/Meltdown.

Ce qui est intéressant c'est qu'ils expliquent un peu plus leurs collaborations avec Gnome et KDE. Ils adoptent un développement bien plus ouvert que ne le fait Google avec Android. C'est dommage que cet article ne parle pas de Matrix mais ça sera probablement pour une prochaine fois.

Comme d'habitude avec ce genre de projet, on apprend que ça prend un peu plus de temps que prévu sur le plan matériel mais visiblement leur choix de cpu est à peu près arrêté. Bref ça avance !

Multi layout claviers simultanés pour Xorg

J'aime beaucoup les claviers. Et il m'arrive régulièrement d'en brancher plusieurs sur l'ordinateur… en même temps. Ça n'a que peu d'intérêt mais j'aime bien. Ma petite collection grandit petit à petit. Mon clavier principal est en bépo légèrement trafiqué tandis que la plupart de mes autres bestiaux sont en azerty plus traditionnel voir quelques-uns en qwerty. Du coup j'ai configuré Xorg pour avoir une configuration un peu hors du commun :

  • Mon clavier traditionnel est en bépo, azerty et qwerty
  • Les autres claviers sont en azerty, bépo, qwerty
  • La touche Ctrl droite sert de touche Compose
  • Ctrl-Alt-Backspace tue la session Xorg
  • Maintenir Shift-droite et Shift-gauche simultanément change de disposition

Voilà le cahier des charges que je voulait.

Bon du coup pour faire ça on va éditer le fichier /etc/X11/xorg.conf . Certaines distributions ont remplacées ce fichier par un dossier contenant plusieurs fichiers. Dans ce cas cherchez quel fichier contient ce qui a attrait à evdev…

Section "InputClass"
    Identifier "evdev keyboard catchall"
    MatchIsKeyboard "on"
    MatchDevicePath "/dev/input/event*"
    Driver "evdev"
    Option "XkbLayout"      "fr,fr,us"
    Option "XkbVariant"     "oss,bepo, "
    Option "XkbOptions"     "compose:rctrl,terminate:ctrl_alt_bksp,grp:caps_toggle"
EndSection

Section "InputClass"
    Identifier "Custom Keyboard"
    MatchIsKeyboard "on"
    MatchDevicePath "/dev/input/event*"
    MatchVendor "Lord_Corp"
    Driver "evdev"
    Option "XkbLayout"      "fr,fr,us"
    Option "XkbVariant"     "bepo,oss, "
    Option "XkbOptions"     "compose:rctrl,terminate:ctrl_alt_bksp,grp:caps_toggle"
EndSection

Voilà tout.

Comment ça marche ?

Et bien Xorg est composé de multiples "drivers" ou modules, dont un nommé evdev qui est chargé de scanner tous les appareils d'entrées et de les configurer. Du coup il va piocher dans /dev/input/ et va regarder chacun des fichiers présents correspondants à tous les appareils d'entrée détectés par votre kernel.

En fonction du type d'appareil (clavier/souris/tablette tactile/…), il va appliquer des configurations différentes. Il fait cela via les règles de type catchall.

Par chance on peut lui dire d'appliquer des règles différentes à des appareils spécifiques en rajoutant des conditions pour match. Dans mon cas, il recherche Lord_Corp dans le champs Vendor fourni par l'appareil. Donc vous pouvez mettre le petit nom de votre appareil à vous.

Comment je trouve le Vendor de mon appareil ?

Facile : xinput --list --long

Filmmenu, un ptit script pour lancer un film

Un ptit article rapide aujourd'hui pour vous présenter filmmenu. J'ai un NAS à la maison avec pas mal de disques durs et du coup pas mal de partitions. J'ai pas fait de RAID dessus (pas besoin) ce qui fait que mes données sont éparpillées entre les différentes partitions.

Toutes les données sont bien rangées dans un disque différent sauf les films qui sont répartis sur plusieurs partitions. Du coup quand je cherche un fichier particulier je sais jamais trop où le chercher. Je me suis donc fait un ptit script.

#! /bin/sh
DB="/var/db/filmmenu"
if [ $(mountpoint -q /mnt/bender) ]
then
        timeout 3 i3-nagbar -m "/mnt/bender n'est pas mount ! Un ptit coup de sshfs au préalable"
        exit
fi
if [ -r $DB ]
then
        if [  $(date -r "$DB" +%s) -lt $(date +%s --date '45 days ago') ]
        then
                timeout 4 i3-nagbar -t warning -m "DB de plus de 45 jours, update !"
        fi
                exec mpv "$(cat "$DB" | dmenu -i -l 10 -lh 40 -fn 'Droid Sans Mono-15')"
  exit
else
        printf "Création de la DB\n"
        timeout 3 i3-nagbar -t warning -m "Création de $DB, on vous prévient quand c'est fini"
        find /mnt/bender/stockage/*/films/ > "$DB"
        timeout 3 i3-nagbar -t warning -m "$DB créé, c'est tout bon. Vous pouvez relancer la commande"
fi

Je lance ce script avec un ptit Alt è dans i3. Voilà ce qu'il fait :

Mountpoint vérifie tout d'abord que le NAS est bien mount au bon endroit. Si c'est pas le cas il pond un i3-nagbar qui est un programme lié à i3 qui met une barre en haut de l'écran contenant le message qu'on lui donne.

Ensuite on teste l'existence du fichier contenant la liste des films. S'il existe on teste voir s'il a été mis à jour il y a plus de 45 jours.

En fonction de ça on créer le fichier ou bien on le met à jour en lançant un simple find qu'on balance dans un fichier texte sinon, on le donne à manger à dmenu qui créer une barre permettant de sélectionner le film à lire. Et enfin mpv récupère lit le fichier voulu.

Rapide & Simple

Mozilla annonce commencer à restreindre les nouvelles fonctionnalités aux pages chargées via HTTPS

Dans sa quête pour un web plus sûr, Mozilla vient d'annoncer qu'une bonne partie des nouvelles fonctionnalités de Firefox ne seront utilisables qu'uniquement sur des pages web accédées via HTTPS.

Autant je suis favorable à l'utilisation de HTTPS au maximum, autant ce n'est pas forcément possible de l'utiliser absolument partout.

Il existe de nombreux cas où HTTPS n'est pas utilisable. Trois exemples qui me viennent, mais on doit pouvoir en trouver d'autres :

  • Si le serveur n'a pas accès à Internet, faire de l'HTTPS est compliqué voire impossible. (Sisi on peut faire du web sans être sur Internet)
  • Si la machine cliente n'a pas moyen d'être à la bonne date l'HTTPS n'est pas possible non plus. (de nombreux appareils n'ont pas d'horloge interne fonctionnant sans courant comme les raspberry)
  • Quand on se connecte à une machine plus très à jour avec une version pas si vieille que ça d'openssl mais tout de même trop vieille et donc incompatible…

C'est d'ailleurs pour cette raison que contrairement aux recommandations actuellement à la mode, je ne redirige pas le trafic HTTP vers son équivalent HTTPS. C'est un choix que je laisse au client. Au visiteur de choisir s'il veut bénéficier de plus de sécurité ou non.

Bref j'espère que Mozilla n'ira pas plus loin en retirant des fonctionnalités actuelles aux pages non sécurisées.

Le respect des licences logicielles est moins fort que le buzz nostalgique du rétro gaming

Pouwah ! Quel titre !

Cette semaine le CES a trusté mes RSS. Tel constructeur qui fait une démo d'un prototype bancal, Netflix qui s'invite avec une fausse startup pour faire de la pub, la FrenchTech qui cherche désespérémment à parader… le CES habituel. Et dans l'amas de news, il y en a une qui m'a titillé. Une compilation des news au sujet de l'ultra Gameboy.

Sympa non ? Tous ces sites professionnels tenus par des journalistes. C'est pas un joli boulot qu'ils ont fournis là ?

Bon alors déjà c'est rarement relayé mais ce qui a été montré n'est qu'un prototype. Les specs annoncés n'étaient pas celle présentées dans la bête mais peu de site l'ont signalé. Ensuite le nom. Presque aucun site n'a pris la peine de dire que Ultra Gameboy n'était pas le nom définitif. Faut pas se voiler la face, Nintendo n'autorisera pas qu'on galvaude son nom aussi facilement.

Ce que je trouve encore plus dommage c'est qu'aucun site n'a jugé bon de nous dire comment fonctionnait la bête ! Et c'est pourtant un poil assez crucial pour du matos. Est-ce un pcb de gameboy originale recyclé ? C'est du fait maison parfaitement compatible avec la Gameboy originale ? Ou bien (et c'est ce que je pense) est-ce de l'émulation ?

Pour info le constructeur Hyperkin commence à se faire un ptit nom avec ses appareils. Mais il faut aussi voir qu'ils se font un ptit nom au sein de la communauté de l'émulation pour leur non-respect des licences Opensource auprès de Retroarch comme on peut le voir dans ce blog post et sa suite.

Retroarch est un projet opensource d'agglomérats d'émulateurs opensource. Le but est de fournir un système multi-plateforme (ça tourne sur pas mal de consoles modernes, sur un peu tous les OS PC modernes (ou non)) pour proposer une interface unifiée vers de multiples émulateurs appelés Cores. C'est un système modulaire très performant avec une communauté vraiment vivante faisant grandement évoluer la scène retrogaming en améliorant énormément tout l'écosystème des émulateurs mais j'en parlerais plus une autre fois. Bref c'est un acteur majeur du retrogaming opensource. Pas des rigolos sortis de nulle part.

Hé bien les pauvres gens de ce projet en appellent aux journalistes pour médiatiser leurs déboires avec les nombreux petits constructeurs sortis de nulle part s'amusant à vendre du matériel utilisant leur code illégalement. Bien que lancé fin décembre 2017, il n'y a pas eu beaucoup de relais dans la presse comme on peut le voir avec le battage médiatique de l'Ultra Gameboy. La presse spécialisée s'est jetée en masse sur l'info publiée par Gizmodo pour ne faire que citer les mêmes maigres infos en boucle sans jamais etayer leurs articles, sans s'être un poil informé sur le constructeur ou sur les entrailles de la bête. Ça ne prend guère plus de quinze minutes pour un utilisateur de moteur de recherche… BRAVO la presse informatique…

Bon voilà pour le coup de gueule contre tous les sites de merdes qui ne font que ré-enrober des news pour publier au plus vite (et ça ne va pas s'améliorer avec tous les bots de rédaction de news)(sur le coup Ars Technica m'a déçu, eux qui font un travail vraiment plus poussé habituellement).

Maintenant pour ceux que ça intéresse un peu, sachez donc qu'Hyperkin a très probablement adoré cette couverture médiatique à moindres frais, mais à mon avis tente de la jouer plus réglo ce coup-ci : - Ils sont bien entendu au courant des griefs de Retroarch à leur sujet. Je ne suis pas au courant de toute l'affaire ou autre, mais je pense que Ultra Gameboy était probablement le nom du projet interne qu'ils ont utilisé mais que le produit final s'apellera autrement pour pas fâcher Big N (parce que fâcher une communauté de dev sans le sous on s'en fout mais une grosse boîte populaire remplie de pognon c'est ptet moins le fun). - En cherchant quelques minutes de plus, on peut voir qu'Hyperkin s'est payé une licence Higan qui est un multi-émulateur développé par Byuu et publié sous GPL-v3.

Bref je vais tabler sur la bonne foi d'Hyperkin et tout foutre sur le dos des journalistes.

PS 18/02/2018 :

Un article intéressant qui aborde ça chez Eurogamer.

PS 09/03/2018 :

Bon bha on a du nouveau sur cette affaire. Donc en gros l'entreprise qui revend les émulateurs au fabricant est Datapower Development Limited. On apprend aussi que l'arrêt de la revente de snes9x au profit de Higan par Byuu est pas innocente.

TwinAphex (le fameux Mr Matteis, dev de snes9x entre autre) aurait discuté avec Byuu le dev de Higan. Ces personnes se connaissent plutôt bien car ils collaborent régulièrement auprès de leurs différents projets opensource. Et donc Byuu s'est vu proposé un contrat d'utilisation de Higan que financièrement il ne pouvait refuser mais il a du coup décidé de forcer Datapower Dev… à ne plus jamais utiliser snes9x.

Bref, des retournements de situations ! Vivement le prochain épisode.

La mort de Vimperator : comment meurt un logiciel opensource

Et voilà que Vimperator vie ses derniers instants. Le changement d'API de firefox lui aura été fatal. Je sais pas pourquoi mais il y a un (tout) petit pincement au cœur quand je vois cette fermeture de l'issue github qui aurait pu le sauver.

C'est absolument pas une surprise. Ça fait plus d'un an qu'on est au courant que ça va mourir mais voilà c'est fait. Du coup la seule cérémonie consiste en la fermeture d'une issue. Le repo sera toujours là pour les archives du web. Un témoignage d'une belle époque.

Mais bon qu'on se rassure son héritage est bel et bien vivant. Toute une petite communauté d'addons similaires s'est créé et prend son envol. Qutebrowser profite de la fin de Vimperator pour récupérer de nombreux utilisateurs. Tout ne sera donc pas en vain et au final l'écosystème complet n'est donc que plus fort. La mort d'un logiciel libre peut donc être un bon engrais pour les autres. Bon bha au final c'est pas si triste alors !

Utiliser ZSH à la façon de VI en réduisant les inconvénients

Vi et Emacs ont inspiré et inspirent encore pas mal les devs car ils ont posés deux bases d'expériences utilisateurs qui ont depuis le temps prouvé leur efficacité. Ils s'appuient tous les deux principalement sur l'utilisation du clavier mais abordent le problème différemment.

  • Emacs s'appuient sur des raccourcis claviers nécessitant tous pleins de doigts pour appuyer simultanément sur diverses touches : Ctrl-Alt-Shift-Altgr-x …
  • Vi lui utilise des modes : un mode pour entrer des commandes, un mode pour écrire, un mode pour faire le café …

Ce sont donc deux approches différentes mais pourtant efficaces. Il est par contre assez difficile de passer de l'une à l'autre car elles nécessitent tout de même un temps d'apprentissage et d'adaptation assez long, bien que l'on puisse se contenter de nager en surface et donc de ne pas en profiter à fond.

Bref généralement au bout de quelques années de pratiques on acquière pas mal de mémoire musculaire et on se retrouve parfois frustré de pas pouvoir utiliser ça partout. Par exemple je ne supporte plus d'utiliser un navigateur web qui ne suit pas la philosophie de vi (d'où ma migration vers qutebrowser). Mais du coup : saviez-vous que même votre shell préféré (ZSH ! mais bon bash aussi et fish aussi…) peut mimer vi.

ZLE KEYMAP VIINS

L'avantage du mode vi est que l'on va pouvoir éditer les lignes de commandes comme dans vi, c'est à dire utiliser la plupart des raccourcis de vi en mode normal : x pour virer un caractère, r pour remplacer un caractère, ciw pour changer le mot actuel… pleins de raccourcis permettant de gagner pas mal de temps.

ZSH est modulaire. Le module s'occupant de la ligne de commande est ZLE : ZSH Line Editor. Et ce module utilise des keymaps qui sont des ensembles de raccourcis claviers déclenchant des actions. Il existe un keymap emacs, des keymaps vi (qui correspondent aux différents modes) et un keymap safe qui n'est pas éditable/supprimable. Il vous est possible d'en créer d'autres ou bien juste de modifier les existants. Bon du coup le but du jeu va être de foutre le keymap par défaut de ZLE en viins (vi insert). Donc dans /etc/zsh/zshrc et on y colle un

bindkey -v 

Et voilà c'est fait vous êtes désormais en mode viins par défaut. Bon du coup si vous appuyez sur ECHAP, vous vous retrouverez dans le mode normal de vi.

Améliorations

Le premier truc un poil chiant c'est que le changement de keymap ne se fait pas instantanément. Il y a un timeout de 0.4s qui est un poil trop long. Pour le réduire, il vous suffit d'exporter la variable KEYTIMEOUT à 1 par exemple pour avoir que 0.1s d'attente lors d'un changement de keymap, ce qui est devient de suite plus tolérable.

Un autre truc un peu chiant c'est qu'on ne sait pas dans quel mode on se trouve mais j'ai trouvé une astuce sur le blog de Doug Black qui consiste à faire une petite bidouille qui va bien pour afficher le mode Normal. Je l'ai à peine modifié pour aller dans mon /etc/zsh/prompt.zsh :

function zle-line-init zle-keymap-select {
    VIM_PROMPT="%{$fg_bold[yellow]%} [% NORMAL]%  %{$reset_color%}"
    RPS1="${${KEYMAP/vicmd/$VIM_PROMPT}/(main|viins)/} $LAST_COMMAND_DURATION s"
    zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select

Quelques explications : déjà RPS1 est la variable contenant le prompte de droite. D'abord on a défini la variable VIM_PROMPT qui définit l'affichage désiré pour le mode normal (en jaune c'est sympa) puis une double substitution made in zsh qui remplace le nom du keymap par la variable VIM_PROMPT sauf si le mode actuel est main ou viins. Je colle ensuite $LAST_COMMAND_DURATION qui est la variable qui contient la durée de la dernière commande exécutée.

Adaptons à nos besoins

Du coup là on a pas fait grand chose de bien méchant. On a choisi un keymap et modifié le prompt, rien de bien tordu. On peut tout de même apporter quelques modifications pour ajouter de nouveaux raccourcis. On va donc en profiter pour virer les ptits inconvénients du keymap de vi : les emmerdes pour se déplacer normalement avec les flèches et plus.

Retournons dans /etc/zsh/zshrc et ajoutons/trafiquons quelques raccourcis.

#Pour pouvoir utiliser les flêches haut et bas pour chercher les commandes dans l'historique
bindkey "^[[A" history-substring-search-up
bindkey "^[[B" history-substring-search-down
#Pour pouvoir utiliser Orig et End sur le clavier pour aller en début/fin de ligne (plus pratique)
bindkey "^[[7~" beginning-of-line
bindkey "^[[8~" end-of-line
#Pour utiliser les flêches de gauche et de droite pour se déplacer normalement
bindkey "^[[D" backward-char
bindkey "^[[C" forward-char
#Pour utiliser Suppr
bindkey "^[[3~" delete-char

Et voilà vous avez des vimmeries ainsi que des raccourcis plus classiques sur le même keymap.

Une faille de sécurité béante touchant tous les cpu Intel

Les monocultures ont de nombreuses fois prouvé qu'elles étaient un risque et pas uniquement dans l'informatique. En agriculture c'est pareil… faire pousser uniquement une seule espèce de plante est risqué. Le jour où une maladie ou bien un insecte/animal un peu gourmand s'abat sur vous, vous perdez absolument tout. Bha là c'est pour les processeurs qui prennent cher.

Monopole d'Intel

Depuis plusieurs décennies Intel a une position de leader qui par moment ressemble à un monopole. C'est le cas depuis dix ans. Alors qu'AMD sort enfin la tête de l'eau en 2017 avec sa nouvelle architecture Ryzen après près de dix ans de désert, Intel est quasiment seul sur le marché des serveurs (gamme Xeon) et ne laisse que des miettes à AMD sur le laptop/desktop. Et d'ailleurs depuis 6 ans, les gains de perfs des CPU Intel sont vraiment faibles. Mon ordinateur actuel a déjà 7 ans et n'est toujours pas vraiment dépassé (mais bon c'est un autre débat). Mais du coup ce monopole est donc une monoculture des cpu à architecture amd64.

Et donc ?

Bha apparemment il y aurait une faille de sécurité assez sévère trouvée très récemment. Les informations ne sont pas encore complètement publiées de partout, il y a un embargo. En gros elle impacterait tous les ordinateurs embarquant un cpu Intel récent (de ces dix dernières années).

Cette faille serait carrément dans l'architecture même du cpu. Un correctif logiciel pour le kernel Linux existe mais le fix ne serait pas sans conséquences. On parle de pertes de performances de 5 à 50% sur certains syscalls.

Les informations complètes seront diffusées un peu plus tard une fois que les correctifs auront été poussés un peu partout.

L'information comme quoi AMD ne serait pas impacté est arrivé dans un second temps (un second patch à vrai dire).

Logo officiel de l'attaque Meltdown

Mais c'est grave ?

Ouai vraiment grave. Cette faille serait exploitable à pleins de niveaux. Les systèmes virtualisés sont également impactés. Même du javascript dans un navigateur pourrait faire des saloperies apparemment.

Du coup bha même une machine perso serait exploitable via une page web. Tous les hébergeurs de machines virtuelles sont probablement en train de flipper et patcher à droite à gauche.

Comme dit précédemment pour l'instant on a pas tous les détails mais comme à chaque fois, on ne sait pas si la faille est déjà utilisée dans la nature.

Logo officiel de l'attaque Spectre

Et du coup faut faire quoi ?

Bha dès que le patch arrive pour votre OS, vous l'installez sans réfléchir.

Et pour la prochaine fois, vous prenez du AMD histoire de renverser un peu le monopole d'Intel. Leur nouvelle gamme fait jeu sensiblement égal avec Intel voir se débrouille mieux en nombre de cœurs.

Un peu de lecture supp :

Quelques liens pour approfondir le sujet. Pas de français pour le moment.

PS :

Ha bha visiblement il y a des soupçons de délit d'initiés chez Intel qui monte : le PDG d'Intel aurait revendu le maximum d'actions il y deux semaines alors que l'affaire n'était pas encore médiatisée. Il y a des risques qu'aujourd'hui Wall Street soit mis au courant de l'histoire et que l'action Intel baisse considérablement.

Pour info, Windows est également touché et va être patché aussi.

Pour l'instant ce ne sont que des suppositions de failles mais de nombreux indices étayent l'histoire. L'embargo sera levé ce jeudi midi.

PS2 :

4 janvier 2018 : Bon bha on a un nom et un site : L'attaque se nomme Meltdown et Spectre et son site confirme à peu près tout ce qu'on savait sauf que c'est toujours vague concernant les processeurs affectés. Apparemment AMD pourrait être victime de la faille ansi qu'ARM. En fait la plus grande surprise vient du fait que c'est deux failles.

PS3 :

5 janvier 2018 : On sait également que c'est effectivement exploitable via javascript et que les navigateurs s(er)ont patchés pour limiter les risques mais pas complètement supprimmer le risque. Bref, c'est la merde.

Doom et ses Mods

Voilà Noël approche et du coup probablement quelques jours de congé/wacances. Quel est le meilleur passe-temps en ces périodes de mièvreries et chansons ringardes ?

Jouer à Doom en 2017

Doom a toujours été un jeu à part pour moi. Il y assurément une part de nostalgie car c'est l'un des plus anciens dont je me souvienne. J'y ai joué très jeune. Et je n'ai jamais cessé d'y revenir de temps à autre. Doom 1 et Doom 2. Jusqu'à il y a peu j'avais jamais fait les extensions officielles. Je n'avais non plus jamais été voir du côté de la scène des mods. Et OMG quelle erreur. Il y a une cargaison énorme de contenu fait par des fans. La qualité est variable mais l'avantage d'un jeu aussi populaire et aussi moddable, c'est qu'au bout de vingt ans on trouve beaucoup d'excellent contenu. Que ce soit des maps par-ci par-là ou bien carrément des TC (Total Conversion) ou des modifications plus subtiles.

Le jeu jouit d'une popularité certaine, d'une part pour ses qualités intrinsèches de jeu vidéo (gameplay ultra nerveux, ambiance sympa, feeling addictif,…), mais également pour son côté technique. À sa sortie le jeu était une claque graphique qui poursuivait la tradition naissante d'Id de faire des jeux techniquement à la pointe. Mais en plus de ça, ils ont libéré le code du moteur du jeu quelques années plus tard. Et ont toujours poussé le développement de mods.

Quand on démarre Doom, on sait que dans les trente secondes qui suivent on sera dans la partie en train de s'amuser. C'est un plaisir instantané, on se fait pas trop chier avec une histoire, des temps de chargements, des mécaniques de gameplay faussement poussées. Tout est fait pour s'amuser tout de suite. L'action est frénétique et le feedback direct. Avec l'âge j'ai de moins en moins de temps à consacrer aux jeux-vidéos du coup quand j'ai peu de temps j'aime pouvoir tout de suite me retrouver dans cet état d'esprit. Et avec l'opulence de contenu additionnel gratuit et de qualité c'est le summum.

Entrée de NERVE avec Project Brutality et l'UVD

Entrée de NERVE avec Project Brutality et l'UVD

Les moteurs

Le moteur ayant été opensourcé, il y a eu des tas de réimplémentations du moteur. Certaines plus poussées que d'autres. Quelques-unes en ont profité pour pousser de nouvelles fonctionnalités d'autres s'évertuent à rester le plus près possible du moteur d'origine s'amusant même à reproduire les bugs. Petit tour non exhaustif des moteurs libres existants :

  • ZDoom et GZDoom sont les moteurs les plus populaires. Le gros de la communauté s'est attroupé sur eux. GZDoom a poussé le moteur vers OpenGL (le moteur d'origine n'utilise que le cpu d'où le rendu particulier). Ils sont parmi les plus compatibles avec Doom et les mods de la communauté.

  • Zandronum est un fork de GZDoom (qui est aussi un fork de ZDoom) qui a poussé le côté multiplayer un peu plus que les autres. C'est le second plus populaire. De par sa popularité, sa compatibilité avec les mods est excellente (mais pas parfaite non plus). Je l'utilise de temps à autre pour le multiplayer.

  • Doomsday Engine est un moteur un peu différent des autres. Il propose une interface toute mimi moderne bien foutue toussa. Après c'est pas spécialement ce que je recherche mais ça peut plaire.

  • Chocolate Doom est le moteur le plus proche de l'expérience originale. Perso ça ne m'intéresse pas spécialement mais si vous voulez une expérience des plus authentique c'est celui-là qu'il faut prendre.

Voilà pour le tour, j'ai principalement choisi GZDoom. J'aime le fait qu'il tente de moderniser le feeling sans pour autant révolutionner les graphismes. On retrouve une sensation de FPS moderne dans les déplacements : le strafe, la visée libre, c'est vif tout en ayant les bons vieux graphismes qui ont un charme certain.

Malmené par un Overlord dans le second niveau de NERVE

Malmené par un Overlord dans le second niveau de NERVE

Les WAD

Les WAD sont les fichiers que l'on donne à manger au moteur. Ils contiennent les assets du jeu, c'est à dire les textures, les sons, musiques, maps, campagne, ennemies, les armes… tout quoi. Il faut distinguer deux types de WAD : les IWAD et les PWAD.

  • Les IWAD sont autonomes. Ce sont les jeux complets comme Doom, Doom2, Heretic … La plupart ne sont pas opensource mais se trouvent pour une bouchée de pain sur GOG ou ailleurs. En libre vous trouverez Freedoom qui recréer des assets pour jouer librement avec un moteur libre.
  • Les PWAD sont des Patchs. Ils nécessitent l'utilisation d'un iwad pour fonctionner. Il peut s'agir d'une simple map, de musique ou d'une campagne complète voir une TC (total conversion). La communauté fait des miracles ici.

Il faut bien voir que l'on peut cumuler les pwad simultannément et que l'ordre de chargement a une importance.

Capture d'écran d'une partie de Doom sur la map17 du mod Hellbound

Petit aperçu de la map Starport de HellBound

Les mods intéressants

Un des plus populaire est le fameux Brutal Doom qui se charge de moderniser le gameplay et de rajouter des armes, des ennemis et même désormais une campagne super sympa. Le jeu devient plus nerveux et encore plus amusant. La version 21 est sur le point de sortir avec des ajouts de véhicules (oui oui !). Vu le nom vous devez un peu vous douter mais le mod se targue de proposer un peu de gore. Ça démembre, déchiquète, mutile à tour de bras. Vous pourrez même prendre possession d'un démon pour plus de fun… Ce mod a gagné de nombreux prix depuis des années, son auteur continue de pousser son bijoux depuis des années. Il s'attèle à des variantes telles que Brutal Doom 64 et évoque un éventuel Brutal Hexen !

Un ptit nouveau pousse le concept de brutal doom encore plus loin : c'est le Project Brutality. Ils ont ajouté encore de nouvelles armes, la possibilité d'en avoir deux simultanées, quelques taunts supplémentaires. Des ennemis plus coriaces et variés (mention spéciale à l'imp qui peut désormais s'accrocher au plafond, c'est le must). Un système de progression dynamique dans les ennemis et les armes. Bref c'est Brutal Doom++. La version 3 est sur les rails, elle proposera visiblement sa campagne officielle.

Il existe des mods plus restreints ne cherchant qu'à modifier des détails plus petits. Par exemple UDV est un mod qui change le HUD pour avoir un truc un peu moins moche. Il est adapté à brutal doom et project brutality pour afficher toutes les nouvelles armes et munitions. Je vous montrerai le résultat un peu plus bas :-) . Pour que ça fonctionne il faut penser à ne pas mettre l'affichage fullscreen (ingame pas la fenêtre elle-même).

Un peu de musique ? Ouai ! Doom Metal Soundtrack vol 4. Des remix sympatoches des musiques originales.

Capture d'écran du mod Pirate Doom

Changement radical d'ambiance dans Pirate Doom

Les campagnes

Quelques campagnes plus ou moins sympa. Celles-ci sont jouables avec Brutal Doom ou Project Brutality ainsi qu'UVD.

Hell on Earth Starter Pack est la campagne officielle de Brutal Doom. Il s'agit de map modernes qui se passent un peu sur terre un peu en enfer. Perso j'aime bien même si c'est globalement assez simple mais on retrouve des choses qu'on ne trouve pas ailleurs.

Ensuite il y a No Rest for the Living aussi appelé NERVE. Ces maps sont super bien branlées avec des passages secrets et un level design particulièrement travaillé. Cette campagne est vendue avec Doom3 BFG edition. Cette campagne se fait assez rapidement mais dans la joie.

Une campagne faite par un amateur mais pourtant d'une excellente qualité : Hellbound. Les maps ont été faites sur de très nombreuses années et n'ont pas forcément de continuité les unes entre les autres mais globalement ça se tient. On y retrouve des atmosphères assez différentes. J'ai adoré la map Starport.

Une campagne prometteuse mais pas terminée est Don't Play With Hell - Black Edition. Seules quelques maps sont terminées mais WOW. Ce sont des maps modernes qui sont radicalement différentes de ce qu'on voit ailleurs. Les graphismes sont uniques : on retrouve énormément de plans inclinés (ce que le moteur d'origine ne sait pas faire) ce qui est surprenant pour un habitué de Doom. Je n'ai pas terminé la black edition qui se veux carrément un jeu complet en solo. Pour l'instant c'est vraiment sympa. Il y a un travail de scénario, de mise en scène vraiment poussé. Ça pourrait être Doom 3 mais en 1996. C'est plus lent que du Brutal Doom mais plus rapide que du Doom 3. Ils ont repris les Glory Kills du Doom 2016. Dans son genre c'est très probablement ce qui se fait de mieux.

Les Total Conversion

On passe aux Total Conversion qui ne se jouent du coup pas avec Brutal Doom ni Project Brutality.

Sortez le rhum et choquez les balancines ! On va accoster sur Pirate Doom. Bonne ambiance pour un mod qui commence comme une simple blague et qui se révèle étonnamment bon et dépaysant.

Votre ordinateur est tout juste assez puissant pour Doom mais pas assez pour Half Life ? Ça tombe bien Mr Freeman ! Paranoid est fait pour vous. C'est tellement bien fait qu'on s'y croirait vraiment. Il faut s'y reprendre à deux fois pour voir la supercherie.

Dans un style encore complètement différent on a Urban Brawl qui vous balance dans une bande dessinée. Le cell shading est finalement plutôt bien adaptée. Le rendu graphique est plutôt surprenant. Il faut au moins voir le rendu.

Comment qu'on y joue ?

Allez vite fait un mini tuto. Le mieux c'est de commencer par vous procurer doom2.wad (trouvable sur GoG et souvent en promo à 5€ ou moins). Ensuite vous installez GZDoom. Selon votre distro la suite va différer : sous gentoo il va vous falloir poser vos wad dans /usr/share/doom-data mais après c'est pas obligatoire. Ensuite créez vous un script contenant la liste de vos wad à charger dans le bon ordre :

#! /bin/sh
/usr/bin/gzdoom \
	/usr/share/doom-data/Project\ Brutality\ 2.03.pk3 \
	/usr/share/doom-data/hud/UDV_v1.62_A_BASE_GZDoomOnly.pk3 \
	/usr/share/doom-data/hud/UDV_v1.62_B_ADD_IN_Mod_ProjectBrutality.pk3 \
	/usr/share/doom-data/DoomMetalVol3.wad \
	/usr/share/doom-data/DoomMetalVol4.wad \
	/usr/share/doom-data/NERVE.WAD

Et voilà, vous lancez et ça marche :-)

Et après ?

Bha franchement vous pourriez vous pencher sur Heretic puis Hexen qui utilisent le même moteur (avec de légères modifs tout de même). C'est plus Heroic Fantasy mais ça reste des FPS vraiment agréables à jouer. Si vous êtes plus orienté action-rpg vous pouvez tenter Strife mais personnellement je n'ai pas ce jeu… Si vous n'en avez pas assez, vous trouverez de très nombreux WAD sur les Internets : fouillez du côté des Cacowards qui chaque années célèbrent les meilleures créations de la communauté.

Le drama Firefox de la fin 2017 : SpyGlass

Mozilla aura eu une sacrée année. Depuis l'arrivée de Chrome et son marketing sauvage (rappelez vous les spots vidéos, les pubs physique dans tous les coins un peu civilisés, sans parler des pubs sur toute la panoplie de site ouaib de Google…) les parts de marché de Firefox se sont peu à peu étiolées. Mais Mozilla commence visiblement à se réveiller et ses efforts portent leurs fruits.

Désormais Mozilla sort des versions “oxydées” de Firefox (ça veut dire avec de plus en plus de morceaux écrits en rust (rouille… oxydé… bref, ce terme n'est pas de moi et il est semi-officiel)) et bouscule l'architecture de son navigateur pour le meilleur mais forcément avec un peu de casse. Bref les anciennes API pour les extensions sont dégagées ce qui va permettre une meilleure stabilité des nouvelles extensions. Qui plus est ça permet une meilleure sécurité globale du navigateur et permet de virer les vieilles rougnes d'addons pas vraiment à jour potentiellement pleines de failles. C'est un drama certains car pas mal d'utilisateurs se retrouvent le bec dans l'eau sans leur extension chérie (et certains ont pris la décision de quitter Firefox pour un autre navigateur utilisant la même nouvelle api que Firefox (ironic). Moi le premier j'ai plus vimperator et j'ai du coup fui sur un autre navigateur permettant de garder ces fonctionnalités. Mais au final le drame ultime de la fin 2017 n'est pas ça !

SpyGlass

Mozilla a installé, dans le dos de ses utilisateurs, une extension qui par défaut ne fait rien. Mais si par mégarde, les utilisateurs modifiaient le about:config alors cette extension peut commencer à ajouter des headers et autres références à Mr Robot. Un drame sans commune mesure !

Sérieux, si vous paniquez parce qu'une extension a été installée mais non activée sans votre consentement il faudrait prendre un peu de recul et voir que vous avez installé un navigateur qui (dans la majeure partie des cas) se met à jour tout seul, donc en ajoutant du code que vous pouvez probablement pas voir (contrairement à l'apparition d'une extension), probablement pas virer (contrairement à une extension).

Pire encore, si votre réaction dans ce cas est d'aller vers un navigateur non opensource vous vous exposez à exactement la même chose à chaque nouvelle version et que personne ne peut vérifier en regardant le code…

Certe le comportement de Mozilla n'est pas clean. Faire ça sans en parler c'est pas la meilleure idée qui soit. Mais c'est franchement sans conséquence et sans commune mesure avec du logiciel proprio.

 


PS

Mozilla a apparemment commencé à communiquer dans sa base de connaissances.

Drivers graphiques AMD 2017

En 2007, AMD a adopté une nouvelle stratégie concernant les drivers de cartes graphiques de sa récente acquisition, ATI. Ils ont en effet décidé d'aider le développement de drivers opensource en fournissant énormément de documentation qui s'est révélée précieuse.

Quelques années plus tard ils ont poussé encore plus loin en donnant même du temps à quelques-uns de leurs devs pour participer aux drivers opensource.

Encore quelques années plus tard ils ont même adopté une nouvelle architecture où le driver proprio et le driver opensource partagent une part commune dans le kernel permettant de mutualiser les efforts.

Et qu'est-ce qu'ils viennent de faire il y a trois jours ? Et bhé ils viennent d'opensourcer leur implémentation de Vulkan (l'api graphique à la mode). Il y a donc désormais deux implémentations opensource possibles pour les cartes graphiques AMD. L'historique a été développé depuis deux ans maintenant. Elle est fonctionnelle mais ses performances ne sont pas encore optimales. La nouvelle made in AMD devrait avoir de meilleure performance cependant elle ne sera pas intégrée à mesa.

Ils ont également fourni une nouvelle version de leur driver avec un installeur permettant de facilement choisir quels morceaux on veut utiliser (proprio ou opensource). Franchement, qu'espérer de plus ? (nVidia ? ça serait gentil de faire pareil).

Et chez Gentoo ?

J'ai récemment changé de carte graphique, je suis passé d'une bonne vieille radeon 6950 à une radeon rx580, la seule chose à faire sur ma ptite gentoo a été de changer le /etc/portage/make.conf pour y changer la variable VIDEO_CARDS="amdgpu radeonsi , un ptit emerge -uDnav @world et poser le firmware dans /lib/firmware et d'ajouter les noms de fichiers dans /usr/src/linux/.config :

CONFIG_EXTRA_FIRMWARE="amdgpu/polaris10_ce_2.bin amdgpu/polaris10_ce.bin \
amdgpu/polaris10_k_smc.bin amdgpu/polaris10_mc.bin amdgpu/polaris10_me_2.bin \
amdgpu/polaris10_me.bin amdgpu/polaris10_mec2_2.bin amdgpu/polaris10_mec_2.bin \
amdgpu/polaris10_mec2.bin amdgpu/polaris10_mec.bin amdgpu/polaris10_pfp_2.bin \
amdgpu/polaris10_pfp.bin amdgpu/polaris10_rlc.bin amdgpu/polaris10_sdma1.bin \
amdgpu/polaris10_sdma.bin amdgpu/polaris10_smc.bin amdgpu/polaris10_smc_sk.bin \ 
amdgpu/polaris10_uvd.bin amdgpu/polaris10_vce.bin"

Et voilà, une recompil du kernel et après c'est tout bon…

Les fast-posts

Et voilà j'inaugure une nouvelle section sur mon site ouaib. Les fast posts. Ces derniers temps j'écris de plus en plus de contenu sur mon site et j'essaye de faire du contenu de meilleure qualité. Les articles deviennent un peu plus longs et nécessitent un peu plus de taff du coup.

Vous avez aussi probablement remarqué que j'ai pas mal augmenté le rythme de parution. En fait au début c'était un peu un effort et maintenant ça va bien plus facilement. Mais du coup j'aimerais écrire un peu plus souvent et régulièrement mais si je ne fais que des articles de plus en plus longs et complexes à rédiger bha ça va au final ne plus être aussi simple d'écrire. Bref vous voyez mon désarroi actuel. Donc je vais faire des fasts posts où ça sera beaucoup plus court et du coup où je réagirai probablement plus à l'actualité.

Pour l'instant je sais pas trop comment vraiment les différentier du reste. J'ai fait quelques modifs du thème que j'utilise et je ferai encore d'autres modifs dans les semaines à venir.

NIB : Mon assistant personnel IRC

Je vous présente NIB mon assistant personnel. Il me simplifie la vie depuis quelques années maintenant. J'y gère des todo, j'y fais un peu de supervision, un peu de self monitoring manuel également et il possède même quelques commandes réseaux.

J'ai une forte addiction à l'irc. J'y suis connecté 24h/24 depuis près de vingt ans ans maintenant. Je consulte jamais mes mails mais irc plusieurs fois par heure. Dès que je démarre mon ordi, je me reconnecte sur ma session ssh où tourne mon fidèle tmux/weechat. C'est ma cyber-forme de communication première (désolé blog mais ouais tu passes après). Bref si je dois avoir un assistant personnel faut qu'il soit accessible sur irc. J'y ait accès sur mon ordi, sur n'importe quel ordi via le web ou directement depuis mon téléphone via client weechat-android tournant constamment aussi.

Choix techniques

Je ne sais pas coder, tout juste lire quelques lignes de codes pour m'en dépatouiller pour tenter de débugguer un peu à droite à gauche mais guère plus. J'ai donc bidouillé du script shell pour fabriquer mon bot irc.

Il existe pas mal de bots irc déjà dans pas mal de langages différents mais bon j'ai pas envie d'avoir du vieux code pas forcément à jour ou bien des softs avec quinze milles dépendances et surtout j'ai envie de m'amuser à faire ça. Un truc léger et pas forcément rempli de fonctionnalités. Du coup bha du script shell c'est à peu près universel, un client irc facilement hackable et les commandes inotify pour aider. On tartine ça de commandes sorties de coreutils et pouf. Voilà tout ce qui est nécessaire. En bonus on peut rajouter tmux c'est quand même plus pratique.

Au final c'est très économe en ram (la vm consomme 14Mo là tout de suite) en CPU 4 Minutes de CPU par jour environ soit bien moins de 1% de CPU en moyenne et ça rentre dans moins de 100Mo de skeudur. C'est donc virtuellement hébergeable partout. Perso je le fais tourner dans un container sur mon routeur.

Le client IRC choisi est ii. C'est un client irc assez minimaliste fait par les braves gens de Suckless. Il se connecte au réseau irc voulu ainsi qu'au salon de discussion voulu et vous ouvre des FIFO dans lesquels vous enverrez le texte. Pour lire le salon vous ouvrirez le fichier texte qu'ii crée. C'est assez primitif au premier abord mais ça permet d'utiliser les logiciels de son choix pour lire/écrire c'est pas mal. C'est du coup ultra simple à scripter. Un simple echo coucou >> irc.geeknode.org/#lesalon/in et hop.

Une partie du boulot du bot est fait par le bot lui même mais pas uniquement. Le bot est également en écoute sur un port et envoi sur IRC tout ce qui arrive sur ce port. Ça permet de recevoir du texte depuis l'extérieur (Ça fait même un cheap honey pot).

Fonctionnalités

Lecture de RSS

En plus d'être addict à IRC je suis un gros utilisateur des flux RSS. Ça permet de suivre de très nombreux sites sans les consulter un par un. J'héberge une instance Tiny Tiny RSS qui est est un excellent aggrégateur de flux en web. Il est particulièrement adapté pour gérer énormément de flux et les catégoriser. J'ai une catégorie particulière où je suis les sorties de nouvelles versions de logiciel et également les failles de sécurité. Ce flux est donc assez important. Du coup chaque nouvel item de ce flux est rebalancé sur IRC via le bot histoire de vite faire les mises à jour (ou pas). Pour cela j'utilise rsstail qui pioche le flux géneré par ttrss. On dépend donc de rsstail.

Monitoring ping

Je gère quelques machines persos mais également des machines associatives dont certaines nécessitent un uptime plutôt correct. Je fait donc chaque minute un test de connexion TCP et/ou UDP sur les services critiques. En cas d'échec, le bot affiche le service qui est injoignable. Je fait ça chaque minute ce qui me permet de voir les downtimes assez rapidement et ainsi voir combien de temps ça dure. Pour faire ce teste j'utilise une fonction assez peu connue du shell : echo >/dev/tcp/la_machine/le_port) &>/dev/null . Et bien entendu je récupère (ou non) un code d'erreur en retour. Si ça échoue, j'attend quelques secondes et je lance une seconde tentative, ça évite d'avoir des erreurs pour des micro-interruptions. 0 dépendance pour ce module.

Vérif des backup

Le boulot n'est pas fait par le bot lui même mais directement sur le serveur de backup qui ne fait que transmettre le texte.

Un simple cron lançant régulièrement un tout petit script qui vérifie si le dossier du dernier backup journalier existe. Et ensuite qui vérifie que ce dossier n'est pas plus vieux qu'un jour. Basique mais suffisant. Et bien sûr si c'est pas le cas, une alerte vers le bot. Une dernière petite fonctionnalité est l'affichage de la taille du dernier backup. Ça me permet de voir vite fait si la valeur est cohérente ou pas. Ça ne me demande moins de dix secondes d'attention par jour. Pas de dépendance introduite par ce module.

Gestion de todo

Un petit script qui ajoute/supprime des lignes dans un fichier texte. Une ligne par truc à faire. Un cron qui affiche la todo tous les jours deux fois par jours. Avec ça je me sens "oppressé" du coup je la vide aussi vite que possible. Un simple todo add truc à faire et hop c'est ajouté. C'est tout à base de echo et while read. Pas de dépendance en dehors des coreutils classiques.

VoD perso

Mon NAS est connecté au net. Du coup parfois quand je suis pas dans mon LAN et que j'ai envie de matter une vidéo dispo sur mon NAS je dois chercher la vidéo. Ouais ouais le NAS est pas super bien rangé, il y a des trucs à droite à gauche (séparé sur plusieurs disques). Du coup je me suis fait une ptite commande qui va simplement find|grepper dans tous les dossiers de stockage pour trouver la vidéo désirée et qui me sort le lien. Ce coup-ci on a besoin de ssh (ainsi que la configuration d'un utilisateur et de ses clés) comme unique dépendance.

Monitoring perso

Je fais du monitoring manuel. La consommation de gaz/élec/eau que je relève manuellement une fois par semaine et je graph ça. Pour le relevé je balance ça dans le bot et c'est lui qui met en forme et balance ça dans un fichier csv. Ensuite j'ai une ptite page web avec du JS qui lit le fichier CSV et qui génère un très joli graph. Je graph aussi la conso essence de la bagnole (et le prix au passage) ainsi que le poids des habitants de la maison (chat compris). Donc là c'est principalement du sed et un ajout dans un fichier csv via ssh. La seule dépendance externe est encore une fois ssh.

Téléchargement

Ouai des fois j'ai un besoin urgent de télécharger un fichier. Je lui donne l'url et il s'en débrouille. Rien de bien méchant, un wget et hop. Toujours pas de dépendance.

Monitoring de sessions

Gérant plusieurs machines ouvertes sur le net, j'ai des serveurs SSH à droite à gauche bien évidemment. Même si tant que possible j'essaye de faire en sorte que la conf des SSHD soit bonne, on n'est à l'abri de rien. Du coup dès qu'une session est ouverte je reçois l'information de la provenance de la connexion ainsi que l'utilisateur. Ça permet de voir en live qui se connecte où. C'est génial ( "Tiens qui c'est ce Lord qui vient de se connecter sur mon routeur ?" ). Ça permet de réagir assez vite en cas de compromission ou tout simplement après coup de voir qui s'est connecté il y a six mois sur telle machine ? On voit également en live les backup se faire via ssh. On peut facilement détecter un backup qui se passe mal (une connexion qui ne dure que 5 secondes au lieu des 40 minutes habituelles par exemple).

Cette partie n'est en fait pas gerée par le bot lui même. C'est juste sur les machines surveillées, un script qui s'exécute à la connexion pour envoyer la notif au bot. Soit on fout la commande dans le sshrc qui est executé à l'établissement de la connexion réussie. Soit (et je préfère) carrément dans PAM ce qui permet d'avoir la connexion ET la déconnexion. On envoi ça via un simple netcat même si je pourrai le faire via un echo >/dev/tcp/ . Pas de dépendance sur le bot par contre un script à mettre en place sur chacune des machines surveillées et donc installation de nc.

Crypto-monnaies

J'ai un peu de crypto monnaies et je tente de grapher un peu combien ça vaut. Et surtout je mine à mon rythme du Monero l'hiver pour chauffer l'appart. Du coup je récupère la balance de mon wallet, le cours du monero, le hashrate actuel et avec un chouilla de calcul je sors la valeur en €uro de mon ptit portefeuille. C'est principalement du curl | jq et les calculs avec awk (ouais c'est pas l'outil le plus intuitif mais ça fonctionne et ça évite de rajouter un paquet supplémentaire au container. Donc toutes les trentes minutes le bot relève les infos, annonce les résultats et envoie ça dans un csv via ssh pour être graphé. Là on introduit pas mal de dépendances : curl, jq, awk et ssh.

Quelques détails d'implémentation

Le code est en bash et non en sh pure. Je sais plus exactement pour quelle raison. J'ai tenté d'utiliser le plus possible de variable en début de fichier.

J'ai découpé en multiples fonctions qui s'exécutent parallèlement. Le bot utilise de nombreuses boucles qui tournent constamment.

  • La première boucle vérifie que ii tourne. Si ce n'est pas le cas elle va le relancer et se reconnecter au salon. Ça permet en cas de relancement du bot ou de plantage de ii de se relancer mais en vrai ça n'arrive jamais. Par contre lorsque le bot se fait kill (parfois ça flood un peu trop), ii s'arrête. Du coup la boucle relance le truc.
  • La seconde boucle vérifie que nc tourne et écoute les connexions entrantes. Nc envoie tout ce qu'il reçoit dans un fichier que j'ai appelé buffer. Ce buffer permet de conserver tous les messages si jamais le reste du bot est en carafe (sait-on jamais).
    • La troisième boucle est celle qui lit le buffer et envoie les lignes vers l'irc avec un ptit délai entre chaque ligne pour éviter le flood. Elle vide également le buffer. C'est un fifo fait main.
  • Il y a ensuite une quatrième boucle qui s'amuse à lire ce qu'il se passe sur irc et dans certaines conditions va parser ce qui se raconte (en gros si c'est pas le bot lui même qui parle.
    • Une autre boucle encore qui lit ce qu'il se passe dans le shell ayant lancé le bot. Histoire de pouvoir lancer des commandes interactivement. Ça sert rarement mais parfois c'est utile. J'ai aussi bidouillé des scripts qui envoie des commandes à tmux pour "écrire interactivement" avec le bot. Bidouillage quand tu nous tiens.
    • J'ai la boucle de monitoring réseau qui tente d'établir les connexions réseau chaque minute.

Donc voilà au moins six boucles en bash qui tournent. Si ça c'est pas du multiprocess qui tue…

J'ai ensuite chacune des commandes qui est une fonction appart. Une fonction d'initialisation qui lance tout ça. Une fonction pour killer tout mais en vrai certaines fois ça kill pas tout du coup je relance le container chaque nuit pour éviter de trop accumuler. C'est crade mais pas critique dans mon cas.

Et voilà ça fait un script bash un petit peu tordu de 400 lignes mais au final il tourne sans aucun soucis depuis des mois. Ptet qu'un jour je le réécrirai en rust ou en go (wink wink).

Voilà le monstre



#! /bin/bash

ircnetwork=""
ircport=""
ircchan=""
ircdir="/home/lord/irc"
chanout="$ircdir/$ircnetwork/$ircchan/out"
chanin="$ircdir/$ircnetwork/$ircchan/in"
buffer="$chanin"buf
realnick="nib"
selfnick="<$realnick>"
launcheddate="$(date)"
rss_url=""

bold="\e[1m"
normal="\e[m"
bleu="\e[0;34m"
violet="\e[0;35m"
rouge="\e[0;33m"

trap "Send 'Je vais me pieuter!';printf 'Extinction suite à signal\n'; KillAllJobs; exit 0 " 2 3 15

KillAllJobs(){ 
	jobs -p
	jobs -p | xargs kill -9;
}

Send(){
  printf "\x033[BOT-%s]\x0f %b\n" "$(date +%H:%M:%S)" "$1" | fold -b -w 500 >> "$buffer"
}
SendNoFormat(){
  printf "%s\n" "$1" | fold -b -w 500 >> "$buffer" &
}
Log(){
  printf "%s - %b\n" "$(date '+%d/%m %H:%M:%S')" "$1"
}

Init(){
	Log "==============="
  Log "\e[0;32m   Lancement\e[0m"
	Log "==============="

  Iiloop
  iiloop_pid=$!
  Log "$violet Démarrage du bot$bold [1/5]$bleu iiloop_pid: $iiloop_pid $normal"
  Ncloop
  ncloop_pid=$!
  Log "$violet Démarrage du bot$bold [2/5]$bleu ncloop_pid: $ncloop_pid $normal"
  Rssloop
  rssloop_pid=$!
  Log "$violet Démarrage du bot$bold [3/5]$bleu rssloop_pid: $rssloop_pid $normal"
  Pingloop
  pingloop_pid=$!
  Log "$violet Démarrage du bot$bold [4/5]$bleu pingloop_pid: $pingloop_pid $normal"
  Debufloop
  debufloop_pid=$!
  Log "$violet Démarrage du bot$bold [5/5]$bleu debufloop_pid: $debufloop_pid $normal"
  Chaninputloop
  chaninputloop_pid=$!
  Log "$violet Démarrage du bot$bold [6/5]$bleu chaninputloop_pid: $chaninputloop_pid $normal"
}

Debufloop(){
# Utilisation d'un fichier tampon pour les fois où on est pas connecté et qu'on arrive pas à balancer dans la fifo d'ii.
  [ ! -f "$buffer" ] && touch "$buffer"
  while true;
	do
	  inotifywait "$buffer" -e close_write,modify > /dev/null 2>&1
	  while read buffered_line;
		do
		  printf "%s\n" "$buffered_line" >> "$chanin"
			sleep 0.5
		done < "$buffer"
		> "$buffer"
	done &
}
Rssloop(){
  while true;
	do
		Log "\e[0;36mRelancement de rsstail\e[0;m"
		Send "\x037[RSS]\x0f Relancement de Rsstail."
    rsstail -u $rss_url -n 0 -z -P -l |while read -r x;do printf '\x037[RSS] %s\n' "$x" >> "$buffer";done
	done &
}
Pingloop(){
  while true;
	do
	  TcpPortTest "xxxx" "22"
	  TcpPortTest "xxxx" "80"
	  TcpPortTest "xxxx" "443"
	  UdpPortTest "xxxx" "1194"
	  TcpPortTest "xxxx" "80"
	  TcpPortTest "xxxx" "80"
	  TcpPortTest "xxxx" "443"
		sleep 60
	done &
}
Ncloop(){
	while true;
	do
    if pgrep ncat >/dev/null 2>&1
		  then sleep 5
		else
      Log "Relancement de ncat"
			Send "Relancement de ncat"
      ncat -l -p 4321 -k >> "$buffer" &
	  fi
	done &
}
Iiloop(){
	while true;
	do
	  if pgrep ii >/dev/null 2>&1
		then sleep 2
		else
	    Log "Relancement d'ii"
	    ii -s $ircnetwork -p $ircport -n $realnick -f $realnick &
		  sleep 1
		  printf "/j %s\n" "$ircchan" > $ircdir/$ircnetwork/in
		fi
          sleep 1
	done &
}
Parsemsg(){
case $1 in
      #### HELP ####
      "help"|"aide"|"commandes"|"commands") Send "Bonjour, Je suis ne suis qu'un humble bot. Voici mes quelques commandes dispos : \x032dl, dig\x0f, \x032ip, iloth, up, film, rss\x0f, \x038debug, reboot, exit\x0f et voilà ! C'est tout !";;

      #### BOT ####
      "restart"|"rehash"|"reboot") Send "Reboot du bot" && break ;;
    	"exit"|"quit"|"ctrlc"|"ta gueule") Send "Désolé de vous décevoir patwon. La seule solution est le seppuku." return 1;;

      #### COMMANDS ####
	"rss") Send "SendRss" && SendRss &;;
	dig*) Dig "$1" &;;
	up*) Up "$1" &;;
	film*) Film "$1" & ;;
	todo*) Todo "$1" & ;;
	dl*) [ "$nick" == "<Lord>" ] &&	Dl "$1" & ;;
	plot*) Plot "$1" & ;;
	coin*) Coin "$1" &;;

      # INFOS #
      #### IP ####
      "ip") Send "IP : Choix possibles: \x2lord\x0f, \x2iloth\x0f, \x2lan";;
    	"ip iloth") Send "XXXXX";;
      "ip lord") Send "XXXXX";;
    	"ip lan") Send "XXXXX";;

      #### DEBUG ####
      "debug") Send "date: $date | time: $time | nick: $nick | msg: $msg" && Send "commandes disponibles:\x02 color, pid\x0f. Lancé depuis $launcheddate.";;
			"color") CouleurIndex ;;
			"pid") Send "iiloop_pid: $iiloop_pid" && Send "ncloop_pid: $ncloop_pid" && Send "rssloop_pid: $rssloop_pid" && Send "pingloop_pid: $pingloop_pid" && Send "debufloop_pid: $debufloop_pid" && Send "Chaninputloop_pid: $chaninputloop_pid" ;;
    esac
}

Chaninputloop(){
  tailf -n1 $chanout | while read -r date time nick msg; do
  if [ "$nick" = "$selfnick" ]  #On ignore ce que raconte le bot lui même
    then continue 
  else
	  Parsemsg "$msg"
  fi
  done &
}

Interactiveloop(){
	while read userinput
	do
		if [[ "$userinput" == /* ]]
		then
			Parsemsg "${userinput:1}"
		else
		  Send ": $userinput"
	  fi
	done
}

Kill(){
	if [ -e /proc/"$1" ]
	then
    Log "$rouge Kill $2: $1 $normal"
		disown $1
	  kill $1
	  wait $1
	  Log "$rouge $2 killed $normal"
	fi
}
CouleurIndex(){
	for ((color_index=30;color_index<=39;color_index++)) do
	  Send "\x0$color_index Couleur $color_index"
	done
}
SendRss(){
  rsstail -u $rss_url -1 -n 5 -z -P -l | for ((rss_index=0;rss_index<=7;rss_index++)) do 
    read -r x;
		printf "\x037[RSS] %b\n" "$x" >> "$buffer"
		sleep 1;
  done 
}
Dig(){
	digargs="$(printf "%s" "$1" | cut -c 5-)"
	[ ! -z "$digargs" ] && Send "$(dig +short $(printf "%s" "$1" | cut -c 5-))" || Send "Syntaxe: C'est la même que dig, tout simplement"
}
Up(){
	upargs="$(printf "%s" "$1" | cut -c 4-)"
	if [ -z "$upargs" ];
	then Send "syntaxe: up domaine port . ex: up lord.re 80"
  elif TcpPortTest $upargs;
	then
	  Send "\x039[PING]\x0f$upargs est UP !"
  fi
}
TcpPortTest(){
  if (! echo >/dev/tcp/$1/$2) &>/dev/null
	then
	  sleep 5
		(echo >/dev/tcp/$1/$2) &>/dev/null || Send "\x039[PING]\x0f Ping KO vers \x02$1:$2\x0f"
		return 1
	fi
}
UdpPortTest(){
  if (! echo >/dev/udp/$1/$2) &>/dev/null
	then
	  sleep 5
		(echo >/dev/tcp/$1/$2) &>/dev/null || Send "\x039[PING]\x0f Ping KO vers \x02$1\x0f"
	  return 1
	fi
}
Film(){
	filmargs="$(printf "%s" "$1" | cut -c 6-)"
	Send "Film: $filmargs"
	Filmresults="$(ssh nib@10.0.0.1 "find /stockage/*/films | grep $filmargs -i")"
        if [ $( echo $Filmresults | wc -l ) -gt 10 ]
	then
	  Send "Trop de résultats pour : $filmargs"
		return 0
	else
          Send "ok"
          while IFS= read -r resultat
          do
            echo $resultat | sed 's/ /%20/g' | sed 'XXXXX' | sed 's/\/films//'
          done <<< $Filmresults
        fi
}
Todo(){
	set $1
  [ ! -f "ircdir/todo" ] && touch "$ircdir/todo"
  if [ -z $2 ]
	then
	  index=1
		while read -r todoitem;
		do
		  Send "$index - $todoitem"
			let "index++"
		done < "$ircdir/todo"
		[ $index -eq 1 ] && Send "Rien à faire \o/"
		return 0
	fi
	if [ "$2" == "add" ]
	then
	  shift 2
	  Send "Ajout todo : $*"
		printf "%s - %s\n" "$(date '+%d/%m %H:%M:%S')" "$*" >> "$ircdir/todo"
	elif [ $2 == "del" ]
	then
	  Send "Suppression de l'item : $3"
		sed -i "$3d" "$ircdir/todo"
	elif [ $2 == "flush" ]
	then
	  Send "Vidage de la todo"
		> "$ircdir/todo"
  else
	  Send "Mauvaise syntaxe : todo add, todo del, todo flush ou bien todo."
	fi
	return 0
}

Plot(){
	set $1
	[ ! -f "ircdir/plot" ] && touch "$ircdir/plot"
	if [ -z $2 ]
	then
		index=1
		while read -r plotitem;
		do
			Send "$index - $plotitem"
			let "index++"
		done < "$ircdir/plot"
		Send "Syntaxe : [action] (données)"
		Send "Syntaxe : action : add / send / del / flush / info"
		Send "Syntaxe : catégories : conso / poids / voiture"
		Send "Syntaxe : ex : plot add [données]"
		Send "Syntaxe : ex : plot info (catégorie)" 
		Send "Syntaxe : ex : plot send [catégorie]"
		Send "Syntaxe : ex : plot del numéro"
		Send "Syntaxe : ex : plot flush"
		
		[ $index -eq 1 ] && Send "Rien à valider"
		return 0
	fi
	if [ "$2" == "add" ]
  then
		shift 2
		Send "$#"
		if [ $# -gt 0 ]
		then
			Send "Envoi de : $*"
			printf "%s" "$(date '+%d/%m/%y')" >> "$ircdir/plot"
			while [ $# -gt 0 ]; do
				printf ",%s" "$1" >> "$ircdir/plot"
				shift
			done
			printf "\n" >> "$ircdir/plot"
			Send "Pensez à [plot send si c'est bon]"
		else
			Send "Pas assez d'arguments :-("
		fi
	elif [ "$2" == "send" ]
	then
		if [ "$3" == "conso" -o "$3" == "poids" -o "$3" == "voiture" ]
		then
			cat "$ircdir/plot" | ssh nib@10.0.0.1 "cat >> /var/graph/$3.csv" && Send "Données ajoutées dans $3. Merci ;-)"
			> "$ircdir/plot"
		else
			Send "Mauvaise catégorie."
		fi
	elif [ "$2" == "del" ]
	then
		Send "Supression de l'item : $3"
		sed -i "$3d" "$ircdir/plot"
	elif [ "$2" == "flush" ]
	then
   		Send "Suppression des plots en cours"
		> "$ircdir/plot"
	elif [ "$2" == "info" ]
	then
		Send "Pour la conso : Gaz Élec Eau"
		Send "Pour le poids : Peluche Bab Lrd"
		Send "Pour la voiture : Km Litre Prix"
	else
		Send "Mauvaise syntaxe : plot add, plot del, plot send, plot flush ou bien plot info."
	fi
	return 0
}

Dl(){
	set $1
	[ -z "$2" ] && Send "Syntaxe: dl URL" && return 0
	Send "Bon bha je vais télécharger $2"
	wget --quiet -c -P XXXX "$2"
	Send "Dl de $2 fini. Enjoy."
return
}

Coin(){
	set $1
	balance="$(curl --silent --insecure 'XXXX' | jq -r '.stats.balance')"
	hashrate="$(curl --silent --insecure 'XXXX' | jq -r '.stats.hashrate')"
	balance=$(awk "BEGIN {print $balance / 1000000000000}")

	hashrate=${hashrate%?}
	unit=$(echo $hashrate | cut -c $((${#hashrate})))
	if [ "$unit" = "K" ] ;
	then
		echo "*1000"
		hashrate=$(awk "BEGIN {print $hashrate * 1000}")
		hashrate=$(awk "BEGIN {print $hashrate * 1000}")
	fi

	xmreur="$(curl --silent --insecure 'https://api.cryptonator.com/api/ticker/XMR-EUR' | jq -r '.ticker.price')"
	btceur="$(curl --silent --insecure 'https://api.cryptonator.com/api/ticker/BTC-EUR' | jq -r '.ticker.price')"
	pognon=$(awk "BEGIN {print $balance * $xmreur}")
	#output irc
	Send "\x038[COIN]\x0f - $(date '+%d/%m/%y %H:%M:%S') - $balance XMR @ $hashrate KH/s - XMR-EUR : $xmreur ce qui fait $pognon €     - BTC-EUR: $btceur \n"
	if [ "$2" == "send" ]
	then
		printf "%s,%s,%s,%s,%s,%s\n" "$(date '+%d/%m/%y %H:%M')" $balance $hashrate $xmreur $pognon $btceur | ssh nib@10.0.0.1 "cat >> /var/graph/coin.csv"
	fi
	
	return 0
}

main(){
  ### Pré-init #################################################################
  # Si le bot est lancé avec des arguments, ceux-ci sont envoyés sur le chan, si pas d'argument on lance le bot.
  if [[ ! -t 0 ]];
  then
    if [[ ! -z "$1" ]];
  	then
      while read -r pipedtext; do SendNoFormat "| $* $pipedtext"; done
    else
      while read -r pipedtext; do SendNoFormat "| $pipedtext"; done
  	fi
  exit
  fi
  if [[ ! -z "$1" ]] && [[ -t 0 ]];
    then
  		if [[ "$1" == /* ]]
  		then
  			#on utilise une variable intermédiaire pour virer le premier /, ça ne fonctionne pas sur $* ou $@
  		  lavar=$@
  			Parsemsg "${lavar:1}"
  		else
  		  Send "> $*"
  	  fi
  	  exit
  fi
  [ "$EUID" = "0" ] && printf "Merci de ne pas lancer le bot en root. Ciao.\n" &&	exit 
  ###############################################################################

  Init
  Interactiveloop
  Log "Redémarrage du bot"

  Kill "$iiloop_pid" "iiloop"
  Kill "$ncloop_pid" "ncloop"
  Kill "$rssloop_pid" "rssloop"
  Kill "$pingloop_pid" "pingloop"
  Kill "$debufloop_pid" "debufloop"

  exec "$0"
}

main $*

Partout où vous voyez XXXX j'ai planqué des infos sensibles.

PS : Merci Gof et Mortbise pour la correction ;-)

Ma Wishlist logicielle : Vol1

Ma liste au père nowel 2017 niveau logiciel. Je sens que ça va pas être exaucé mais qui ne tente rien…

||| : Le magic pipe

Il y a un truc qui me gonfle. Et ça me gonfle sévère : constamment, j'ouvre pleins de terminaux. Et souvent ça se fini en ssh à droite à gauche. Avec parfois des rebonds. Parfois sur des machines qui n'ont même pas accès au net (des vm toussa toussa).

Bref. Et là vous devez transferer un fichier entre deux terminaux… c'est espacé de juste quelques pixels et pourtant c'est injoignable !

FRUSTRATION

On ferme les yeux.

On inspire.

On retient ses larmes.

On lance une session tmux.

On se maudit.

On se reconnecte aux différentes machines.

On en chie pour enregistrer le scrollback buffer en priant que tout rentre dedans.

Vous voyez le topo. Donc en gros le fonctionnement : cat mon fichier ||| et dans une autre console ailleurs ||| > mon fichier . Ça parait super irréaliste. Mais franchement ce serait pas la joie ? Ça pourrait être geré au niveau de tmux par exemple ou encore un poil en dessous au niveau du terminal (s'il a un fonctionnement avec un daemon).

Ce serait tellement pratique de pouvoir faire ça.

Escape Sequence OpenSSH avec transfert de fichiers

Il m'arrive régulièrement de me connecter à une machine via SSH et là paf faut que je lui transfère un fichier. Je trouve ça dommage de devoir ouvrir un nouveau term, une nouvelle connexion pour le SCP.

Ma solution serait d'utiliser les fameuses séquences d'échappements d'OpenSSH (mais si vous savez ! Par exemple ~. pour déconnecter. Allez voir le man.). Actuellement on peut modifier les tunnels existants sur la connexion mais guère plus intéressant.

L'ajout de la possibilité d'engager un transfert de fichier dans la connexion existante (c'est permis par le protocole en lui même) serait vraiment classe. Genre ~u qui vous permet d'uploader un fichier vers le serveur SSH et ~d pour downloader un fichier. J'en demande pas plus ;-)

Apprendre au kernel linux à scanner les devices via BTRFS

Désormais heureux propriétaire d'un Raid6 BTRFS (ouai j'aime vivre dangeureusement), j'ai malheureusement dû me faire un initramfs pour pouvoir monter la partition racine. Tout ça parcequ'il faut que BTRFS scanne tous les devices avant de pouvoir monter le raid. Bon j'en ai profité pour ajouter quelques fonctionnalités supplémentaires mais bon ça fera un prochain article.

Bref si le kernel pouvait effectuer un scan de tous les devices avant de monter une partoche, ça serait parfait.

Qutebrowser

Voilà quelques mois maintenant, j'ai migré sur Qutebrowser. C'est un ptit navigateur peu connu qui ne se démarque pas par son moteur de rendu (encore qu'en fait si !). Il a la particularité de pouvoir tourner avec plusieurs moteurs de rendu différents. Il se distingue surtout par son interface utilisateur qui se veux absolument pas intuitive mais c'est clairement sa force.

MoteurS de rendu

Il propose en effet plusieurs moteurs. Tout d'abord le bon vieux webkit, tout du moins dans sa déclinaison Qt. Mais celui-là est sur le déclin et devrait disparaître à terme. Il y a ensuite webkit-ng qui est le successeur de webkit. Bon j'avoue c'est un peu pareil… Et puis il y a également qt-webengine. Haha !

Vous le connaissez pas celui-là ! Et en fait il s'agit de Blink, le moteur de chrome/chromium mais légèrement retouillé pour Qt. Donc bon c'est quand même un dérivé de webkit mais plus moderne. Bref. Selon votre distribution, vous pourrez (ou pas) choisir le moteur de rendu à utiliser. Perso j'utilise qtwebengine.

L'interface

Tout l'intéret de QuteBrowser est son interface utilisateur. Elle est inspirée par des addons Firefox ne pouvant pas être reproduit via la nouvelle API de Firefox 57 : Vimperator et Pentadactyl. L'idée de l'interface est de virer le plus possible l'interface graphique et d'utiliser massivement le clavier. Exit les boutons, aurevoir la barre d'adresse, ciao la souris !

Toutes vos interactions se feront donc au clavier. Le seul élément d'interface restant est la status bar en bas qui contient l'adresse de la page actuelle ainsi, que la position actuelle dans la page (en haut, à 10% du haut, tout en bas, bref pour savoir si vous pouvez descendre encore) ainsi que le numéro d'onglet de la page actuelle.

capture d'écran de l'interface de qutebrowser

Interface de qutebrowser

Comme vous pouvez le voir, c'est dépouillé.

Tout se fait donc avec des raccourcis claviers mimant le fonctionnement de vim. Donc le fameux hjkl (que je n'utilise pas) pour se déplacer. Le G et gg pour aller en fond de page ou au début.

Un système très important c'est le f qui va vous permettre de hinter les liens. C'est à dire que chaque lien de la page va se voir attribuer un repère que vous aller taper pour l'ouvrir. Dans mon cas j'ai modifié le comportement par défaut pour utiliser le mode number (:set hints.mode number). Il me suffit donc d'appuyer sur f puis d'entrer quelques lettres du lien en question, s'il n'y a pas d'ambiguité, la page s'ouvre. Si plusieurs résultats sont possibles chaque résultant restant aura un numéro attribué qu'il me suffira d'écrire :

capture d'écran de l'interface de qutebrowser

Activation du hint

capture d'écran de l'interface de qutebrowser

Une fois tappé home

Ça peut paraître lent et contre-intuitif au début mais au bout d'une heure ou deux c'est au final très rapide. Surtout si l'on est déjà vimiste.

Utilisation

Éditer du texte

Tout comme vim, qutebrowser est modal. Par défaut vous êtes en mode normal. Si vous vous mettez dans un champs de texte (via f par exemple), Qute devrait de lui même passer en -- INSERT MODE -- mais parfois c'est pas le cas (merci js) du coup faut l'activer en appuyant sur i. Pareil si vous êtes sur une page web utilisant des raccourcis claviers il faudra passer en mode insertion.

C'est bien gentil mais bon si on doit éditer du texte un peu long pour un wiki ou votre webmail, que ne rêve pas d'utiliser vim directement (ou éventuellement emacs (ouai ou nano)) ? Et bha c'est possible avec ^e dans un champs de texte. Ça lancera la commande d'édition où vous pouvez mettre ce que vous voulez. Personnellement je lance un terminal avec vim. Une fois le texte édité, vous enregistrez/quittez et hop ça apparait magiquement dans qute ! (vous pouvez choisir quel éditeur avec :set editor.command '["alacritty", "-e", "vim", "{}"]' ).

La status bar

Tout comme vim, vous pouvez y lancer des commandes en commançant par : . Par exemple pour modifier un réglage c'est :set content.javascript.enabled false . En sachant qu'il y a de l'autocomplétion plutôt efficace.

C'est aussi elle qui va vous permettre de taper une recherche/adresse. Soit vous lancez la commande :open soit vous tappez o qui fait la même chose. Si vous voulez éditer l'adresse de la page actuelle c'est O. Par défaut ça effectuera une recherche sur le moteur par défaut.

Recherche

Par défaut si vous entrez une adresse qui en fait n'est pas une vraie url, qute vous enverra sur la page de recherche correspondant à ce que vous avez tapper dans le moteur par défaut.

Vous pouvez cependant rajouter des raccourcis vers d'autres moteurs de recherche. Par exemple :open w linux vous enverra sur la page wikipedia de linux, :open y slayer vous enverra vers les résultats youtube de Slayer. Pour obtenir ce résultat voici le réglage à mettre dans :set url.searchengines '{"DEFAULT": "https://duckduckgo.com/?q={}", "w": "https://fr.wikipedia.org/w/index.php?search={}", "y": "https://www.youtube.com/results?search_query={}"}'

Réglages

Vous pouvez modifier tous les réglages via :set le.nom.du.réglage . C'est vraiment super sauf quand vous savez pas trop comment s'apelle le réglage en question. Si l'autocomplétion ne trouve pas ce que vous voulez vous pouvez vour rabattre sur l'adresse particulière : qute://settings où vous trouverez tous les réglages existants.

Les onglets

Les onglets dans qute s'apellent des buffers (comme dans vim). Comme déjà raconté en 2012, je n'utilise plus d'onglets mais des fenêtres toutes indépendantes que je gère au niveau de mon WM. Pour ça Qute est très conscilient avec :set tabs.tabs_are_windows qui est l'option la plus explicite :-)

Conclusion

C'est franchement un bon navigateur qui remplace sans trop de soucis vimperator. Certaines fonctionnalités sont pas encore là mais 90% des fonctionnalités sont là. Faut bien garder à l'esprit que c'est un navigateur assez jeune et dont le dev est aussi assez jeune. Par contre la communauté autour du projet grandit petit à petit.

Les évolutions futures sont prometteuses. Le dev principal souhaite donner la possibilité d'avoir des réglages différents par domaines. Le but à terme est de recréer un uMatrix pour Qutebrowser. C'est pile poil ce qui me fait le plus défaut depuis l'abandon de firefox.

Le dev est d'ailleurs très accessible sur irc et j'ai déjà discuté avec lui d'une éventuelle possibilité de migrer vers le moteur de rendu servo. Selon lui c'est possible mais c'est pas du tout dans les objectifs actuels.

Ce navigateur est une bonne bouffée d'air frais face aux mastodontes et montre qu'il existe des alternatives crédibles.

 

Astuce concernant les vidéos

Personnelement j'aime pas spécialement regarder des vidéos dans le navigateur mais je suis un gros consommateur de vidéo en ligne, que ce soit des sites de replay ou plus classiquement youtube voir twitch. Ce que je fait c'est qu'une fois une page ouverte contenant une vidéo intéressante, j'utilise la touche m pour filer la page à MPV afin qu'il s'en débrouille pour m'afficher la vidéo.

J'ai également ajouté un mode de hint où la page choisie ne s'ouvre pas dans qute mais est directement passée à MPV, du coup ça m'évite d'ouvrir la page puis de la filer à MPV. Pour ça j'ai choisi Fm.

:set bindings.commands '{"normal": {"F": null, "Fm": "hint links spawn --detach mpv {hint-url}", "m": "spawn --detach mpv {url}"}}'

Guide ultime du serveur DNS v1

Bon bon ces derniers temps je trifouille pas mal mon DNS. Pour les deux du fond qui viennent de se réveiller le DNS c'est l'annuaire de référence de l'Internet. Mais en fait c'est très réducteur de dire ça. En vrai le DNS c'est un système de base de données qui peut faire tout un tas de truc et pas uniquement convertir des noms en adresse IP. Allez, c'est parti pour le DNS Méga Guide 2017 !

Bon il y aura quelques redites de précédents articles sur le sujet mais le but ici est d'aborder à peu près tout histoire d'être exhaustif.

D'où ça vient ?

Historiquement lorsqu'on voulait contacter une machine sur le réseau Internet, il fallait connaitre son adresse. Le nombre de machine du réseau grandissant, un fichier texte était échangé pour trouver les autres machines du réseau. C'était très manuel mais peu efficace. Et là : PAF le DNS. Bref une base de donnée distribuée/répliquée/déleguée mondiale.

Le DNS est un arbre qui fonctionne par délégation. Typiquement www.lord.re devrait en vrai se dire www.lord.re. (remarquez le point à la fin). C'est un chemin qui se lit de droite à gauche.

  • Donc on a la racine . tout à droite, c'est geré par l'ICANN.
  • Ensuite .re qui est le TLD (Top Level Domain, aussi apellé extension d'un nom de domaine), c'est non plus geré par l'ICANN mais délegué à l'AFNIC (qui gère les domaines français dont le .re qui est le domaine de la Réunion).
  • Puis on trouve .lord qui n'est plus geré par l'AFNIC mais par moi (car je le loue auprès d'un registrar).
  • Et pour finir www qui pointe vers le serveur que je gère également, mais j'aurai pu le délégué à quelqu'un.

Bon maintenant on va aller beaucoup plus loin par la pratique. On va donc monter un serveur DNS faisant autorité sur votre nom de domaine.

Se prendre un nom de domaine et lancer son serveur

Bon déjà on achète pas un nom de domaine, mais on le loue pour un à dix ans auprès d'un registrar (revendeur autorisé). La plupart des registrars proposent d'héberger le service DNS chez eux mais franchement… on préfère le faire soit-même !

Auprès de votre registrar vous aurez donc à remplir les Glue Records. C'est ce qui lie votre serveur DNS à votre domaine auprès du niveau supérieur. En gros c'est ce qui va permettre aux gens de contacter votre serveur DNS. Donc il va falloir indiquer le nom du serveur DNS ayant autorité sur la zone ainsi que son adresse IP. Une fois fait vous n'aurez quasiment plus rien à faire auprès de votre registrar. Dans mon cas le serveur DNS est zapp.lord.re qui a pour IP : 62.210.201.160 .

Bon maintenant installer son serveur DNS… Débrouillez-vous. Dans mon cas j'ai non pas choisis le vénérable Bind mais le brave Knot que je trouve bien plus sympa. Il vous simplifiera la vie au niveau de la configuration et gère DNSSEC tout seul comme un grand. Knot est fait par les gens de Nic.cz qui gèrent donc les noms de domaine tchèques .cz . Ce sont les mêmes gens qui ont fait le logiciel Bird qui est un logiciel de routage libre. Ils ont aussi fait les Turris dont l'Omnia qui est mon routeur actuel. Ce sont des fanas du réseau et de l'Opensource. Des gens biens. Ils poussent à fond la démocratisation de DNSSEC car ils ont fait des extensions pour les navigateurs afin de vérifier le DANE des sites que vous consultez.

Confer Knot DNS

Bon déjà on l'installe et ensuite on créer le fichier de conf. Il est ultra simple et logique je vous le mets dans sa quasi-intégralité ici :

server:
    user: knot:knot
    listen: [ "0.0.0.0@53", "::@53" ]
log:
  - target: /var/log/knot.log
    any : info
acl:
  - id: acl_localupdate
    address: 127.0.0.1
    action: update
control:
    listen: knot.sock
remote:
  - id: localupdate
    address: 127.0.0.1
template:
  - id: default
    storage: /var/lib/knot/zones
    acl: [ "acl_localupdate" ]
    kasp-db: /var/lib/knot/kasp
zone:
  - domain: lord.re.
    file: lord.re
    dnssec-signing: on
    dnssec-policy: default

Tout est bien rangé dans sa section, acl contient les règles d'accès (pour modifier), template permet d'appliquer des règlages similaires à plusieurs zones, et zone va contenir toutes vos zones (Thx Cpt Obvious). Bon du coup maintenant vos fichiers de zones vont devoir se fouttre dans /var/lib/knot/zones. Knot va générer de lui même les clefs et chiffrer votre zone DNSSEC.

Gérer la redondance

Monter un serveur DNS secondaire.

Cette partie sera ajoutée un peu plus tard ;-)

Publication DNSKEY ou DS record chez le registrar

La seule chose qu'il vous reste à faire auprès de votre registrar va être de publier votre DS record ou la DNSKEY de la KSK chez votre registrar. Dis comme ça, c'est effrayant mais c'est pas bien compliqué. Cette opération permet de terminer la chaîne de confiance nécessaire à DNSSEC. Selon les registrar il va vous falloir soit le DS soit le DNSKEY complet.

  • Pour obtenir le DS : keymgr lord.re list vous listera toutes les clés actives. Il faut repérer la KSK et noter son tag. Et maintenant keymgr lord.re ds 42754 (42754 étant le tag vu à la commande précédente). Et là vous devriez voir trois enregistrements. Votre registrar vous en demandera un, il s'agit en fait de la même chose mais selon trois méthode de hash différent et là, plus c'est long meilleur c'est pour votre sécurité.

  • Pour obtenir le DNSKEY un simple keymgr lord.re dnskey 42754 et voilà.

Vous devrez réiterer cette opération à chaque renouvellement de la KSK (à faire manuellement une fois tous les deux ans voir une fois par an). En gros DNSSEC s'appuie sur deux types de clés : la ZSK qui signe votre zone. Celle-ci a une taille relativement faible. Du coup on la change constamment (une fois par mois par défaut). Mais du coup pour pas se faire chier à la transmettre au registrar chaque mois, on utilise une autre clé, la KSK. La KSK signe la ZSK. Et on publie uniquement la KSK au registrar. Celle-ci est plus longue et est changée beaucoup moins fréquemment.

À partir de maintenant vous n'entendrez parler de votre registrar que pour renouveller votre nom de domaine avant son expiration :-).

Que mettre dans sa zone ?

On peut mettre tout un tas de truc, commençons par l'indispensable :

  • SOA : Le Start of Authority est indispensable puisque c'est lui qui défini qui est le maître de la zone, le mail de contact et les valeurs d'expiration. Dans mon exemple :

    lord.re.          3600    IN      SOA     zapp.lord.re. lord.lord.re. 2015033233 3600 7200 3600 180
    

Donc le serveur master (ayant autorité) est zapp.lord.re., le mail de contact est lord.lord.re. (remarquez la syntaxe étrange car l'arobase est remplacée par un point (il y a surement moyen d'avoir des adresse mail non parseable)). Vient ensuite le serial 2015033233 qui doit être incrémenté à chaque modification (vous oublierez et aurez des surprises) et les valeurs d'expirations.

  • MX : Le Mail eXchange indique le(s) serveur(s) de réception des emails. On peut en mettre plusieurs et indiquer des priorités c'est pas mal. Vous pouvez bien entendu faire pointer ça vers d'autres domaines que le votre (héberger vos mails sur mx.truc.machin et pas forcément dans votre zone).

    lord.re.                2600    IN      MX      10 zapp.lord.re.
    

    Là on voit que le serveur de mail est sur zapp.lord.re et qu'il a la priorité 10.

  • NS : Le Name Server indique les serveurs DNS ayant autorité sur la zone. Généralement on pointe vers un nom de machine et faut que ce nom de machine ait un enregistrement A valide (l'ouroboros, m'voyez).

    lord.re.                3600    IN      NS      zapp.lord.re.
    

    Le nameserver de ma zone est aussi zapp.lord.re.

  • A et AAAA : Il s'agit de l'enregistrement le plus classique. Vous liez un nom de machine à une adresse IPv4 (A) ou IPv6 (AAAA).

    lord.re.                600     IN      A       92.167.84.9
    

    Et enfin on voit que lord.re. pointe vers l'ip 92.167.84.9.

Bon généralement on se contente de ça je verrai les enregistrements plus exotiques plus loin.

Modifier sa zone

Il existe trois façon de modifier sa zone DNS.

  1. La première est la moins élégante : éditer le fichier de zone et dire à Knot de recharger la zone depuis le fichier. Franchement pas terrible. En plus faut bien penser à incrémenter le serial. Je vous le recommande surtout pas.

  2. La seconde est celle que j'utilisais pendant longtemps et que j'ai déjà décrit en Mars 2015 qui consiste à utiliser nsupdate (ou sa version made in knot, knsupdate). C'est bien, la syntaxe est pas trop affreuse mais franchement je m'en souviens jamais, je me retape mon article à chaque fois ou presque.

  3. La dernière est plus récente et passe directement par knotc pour faire faire les modifs de la zone.

1 : Édition à la barbare

On ouvre le fichier /var/lib/knot/zones/lord.re. On fait les modifs en faisant gaffe à la syntaxe, on incrémente le serial. On teste la syntaxe de la zone avec knotc zone-check lord.re et enfin on recharge avec knotc zone-reload lord.re. Voilà voilà.

2 : (k)nsupdate à l'interactive

On lance knsupdate ce qui va vous ouvrir un shell interactif.

    server 127.0.0.1 (ouai on pourrait l'utiliser à distance avec un peu de crypto)
    zone lord.re.
    update add|del lechamps 600 A 1.2.3.4 (selon si on veut ajouter ou supprimmer)
    send

Et voilà. C'est assez simple. On peut foutre les commandes dans un fichier texte à donner à manger à nsupdate également. Ça permet de scripter le truc même si la troisième méthode est meilleure pour scripter.

Et si vous voulez le faire à distance il va falloir d'abord sécuriser le truc :

  • 1) Créer une clé pour authentifier
  • 2) Renseigner cette clé dans la conf
  • 3) Donner les droits à cette clé de modifier la zone
  • 4) Utiliser cette clé à distance
  • 5) Profit

Voilà le détail des étapes:

  • 1) keymgr -t nom-de-la-clé
  • 2) À mettre dans votre /etc/knot/knot.conf

      
    	key:
      - id: nom-de-la-clé
        algorithm: hmac-sha384
        secret: euisrneuisrnesuinesunresuirnesiaunesiaurentauisretauisr

  • 3) On donne le droit à cette clé de modifier votre zone :

      
      acl:
      - id: update-via-ma-cle
        key: nom-de-la-clé
        action: update
    	zone:
      - domaine: lord.re.
        …
        acl: update-via-ma-cle

  • 4) nsupdate -y hmac-sha384:nom-de-la-clé:euisrneuisrnesuinesunresuirnesiaunesiaurentauisretauisr

  • 5) Voilà voilà

3 : knotc à l'authentique

Tout va se faire via la commande spéciale knot :

    knotc zone-begin lord.re
    knotc zone-(un)set lord.re. truc.lord.re. 600 A 1.2.3.4 (que vous pouvez répéter autant de fois que le voulez)
    knotc zone-diff lord.re. (c'est optionnel mais ça permet d'avoir un résumé des modifs qui seront appliquées)
    knotc zone-commit lord.re.

et voilà c'est pris directement en compte.

Comment questionner le DNS ?

Bon l'outil pour envoyer des requêtes et lire les réponses DNS le plus sympa est dig (ou kdig pour la version made in knot). Donc un ptit dig lord.re vous sortira :

; <<>> DiG 9.11.2 <<>> lord.re
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13708
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;lord.re.                       IN      A
;; ANSWER SECTION:
lord.re.                600     IN      A       92.167.84.9
;; Query time: 13 msec
;; SERVER: 10.0.0.254#53(10.0.0.254)
;; WHEN: Wed Oct 11 19:03:54 CEST 2017
;; MSG SIZE  rcvd: 52

Bon ça raconte quoi tout ça ? Les trucs importants sont le status: NOERROR qui vous indique dans ce cas que c'est bon. Vous trouverez souvent du NXDOMAIN qui veut dire Non eXistant Domain, bref ça n'existe pas (l'erreur 404 http quoi) et également le SERVFAIL qui indique un souci du serveur.

Ensuite les flags sont sympa surtout le ad qui indique que la chaîne DNSSEC est valide.

On trouve ensuite la QUESTION SECTION qui montre quelle était votre requête et la ANSWER SECTION qui est la réponse obtenue. On voit ensuite le temps qu'a mis la réponse à arriver ainsi que le serveur consulté.

Vous pouvez indiquer quel serveur utiliser en ajoutant @8.8.8.8 par exemple. Vous pouvez également demander un autre type d'enregistrement en le spécifiant et vous pouvez également demander une réponse validée par DNSSEC. exemple : dig lord.re @8.8.8.8 +dnssec MX ou dig @8.8.8.8 +dnssec lord.re MX (c'est plus logique dans cet ordre je trouve).

Avec ça vous couvrez la majeure partie des utilisations.

Les utilisations moins conventionelles

Traditionnellement on utilise donc plus souvent le DNS comme un simple annuaire pour traduire des noms en adresse IP. Mais on peut également se servir du DNS pour d'autres choses.

Un usage assez courant est le système de DNSBL : DNS Black List. C'est un système qui consiste à créer une liste noire de machines. C'est très utilisé dans les systèmes antispam. En gros on consulte un serveur DNS spécifique, en lui demandant quel est l'adresse de machine.qui.spamme.com ? et il répond avec une adresse IP de la forme 127.a.b.c avec a, b et c qui correspondent à des valeurs prédéfinies. Si c'est différent de 0 il y a des chances que ce soit du spammeur. C'est un système au final très basique mais rapide et très léger à implémenter.

Voyons plutôt voir comment nous on peut s'en servir. Petit à petit on a rajouté pas mal de nouveaux types d'enregistrements dans le DNS dont certains vraiment très utiles voir indispensables.

Les enregistrements concernant SSH : SSHFP

Lorsque vous vous connectez à un serveur SSH, il envoie son empreinte lors de la connexion. Cela vous permet de vous assurer que vous vous connectez à la bonne machine : si l'empreinte a changé par rapport à une session précédente votre client SSH va vous l'afficher. Le souci est donc lors de la première connexion : Comment être sûr que la première connexion est sûre ? Et bien en publiant l'empreinte dans votre zone DNS par exemple ?

L'empreinte SSH de votre serveur peut donc être collée dans un enregistrement SSHFP. Pour la générer, sur le serveur SSH lancez la commande ssh-keygen -r lord.re.

lord.re IN SSHFP 1 1 1516af909e7de59af0e4b7cbaefb81c5ddf36b70
lord.re IN SSHFP 1 2 f144fd71beb47a02cc904e305cc35c6ffe034e67b92aa54d1e382c1c1900a104
lord.re IN SSHFP 2 1 83664295d1e46c80cc3ba7865294cbd1649f6350
lord.re IN SSHFP 2 2 c1c1de2b19e6d4e451a9057a3ccc40a53ca29b69c7e2dd006ff4e8884c062ee6
lord.re IN SSHFP 3 1 1929f7d32788a5884d862d2c28a226c73fd62944
lord.re IN SSHFP 3 2 990dfb4b2f3486fb6bf5e5e5a3dd02344da6f42ce5b02992385dfbde30c5d24d
lord.re IN SSHFP 4 1 493848772bcb5b6225424e58e5274984d825f01a
lord.re IN SSHFP 4 2 335d5e9ec2d901b7ffd693fe614f73e4ad0afa40c72d9867dadfd155016c0029

Vous obtiendrez les enregistrements tout bien formatté à coller dans votre zone. Maintenant il est conseillé de dire à votre client SSH de vérifier la présence de SSHFP, donc dans /etc/ssh/ssh_config ajoutez l'option VerifyHostKeyDns yes (ou ask). Voilà un bon moyen simple d'améliorer un chouilla la sécurité de SSH. Faites le pour tous vos serveurs SSH.

Les enregistrements concernant TLS : CAA et TLSA

Là on double le nombre de champs utiles !

CAA

Comme vu il y a peu, les enregistrements CAA permettent d'empêcher la signature de certificats pour votre domaine par une autre CA que celle que vous voulez. Je le considère comme indispensable désormais. Il ne vous protègera pas d'attaque étatique (qui ont les moyens de forcer une CA à outrepasser ça) cependant pour tout ce qui est plus classique c'est une excellente défense. Bref, trois entrées dans votre zone :

lord.re.                600     IN      CAA     0 iodef "mailto:lord-x509@lord.re"
lord.re.                600     IN      CAA     0 issue "letsencrypt.org"
lord.re.                600     IN      CAA     0 issuewild "letsencrypt.org"

La première ligne indique un mail à contacter en cas de comportement suspicieux. La seconde indique quelle CA est autorisée à signer des certs classiques alors que la troisième quelle CA est autorisée à signer des certificats de type wildcard (les certificats qui fonctionnent pour tous les sous-domaines).

TLSA

Pour TLSA c'est un poil plus complexe. Il s'agit d'une des applications de la norme DANE (ou DNS Authentication of Named Entities) qui consiste à publier le certificat (ou son hash) d'un service utilisant TLS. En gros DANE pourrait permettre de se passer des CA en plaçant la confiance non plus dans un tier mais dans le DNS. Malheureusement c'est implémenté à peu près nulle part. Cependant on peut conjuguer les CA et TLSA pour accroitre la sécurité. Donc on créer un certificat, on le fait signer par une CA et on le publie dans sa zone DNS. On peut donc l'appliquer à n'importe quel service utilisant TLS : http, smtp, imap, irc, … bref à peu près tout.

Bon là on va pas se faire chier, on va faire comme tout le monde et utiliser le générateur que tout le monde utilise.

  • Donc là vous entrez les différents champs (3/1/1)
  • Vous collez le certificat (pas la clé privée !)
  • le numéro de port du service en question (443 pour https par exemple)
  • le protocole utilisé (tcp pour https)
  • le nom de domaine concerné par le certificat (www.lord.re par exemple ou juste lord.re)

Et pouf le bouton generate vous filera la jolie ligne à ajouter à votre zone. À noter que pour être conforme à DANE, il faut impérativement que votre zone soit validée via DNSSEC (c'est pas mon cas pour lord.re, pour une sombre histoire de registrar qui veux toujours pas accepter le DS record, bref -___- ).

Les enregistrements concernant les mails : SPF, DKIM, DMARC, STS et OPENPGPKEY

Ici c'est la folie. Le mail étant un des plus vieux protocoles d'Internet, il y a pas mal de trucs qui s'y sont greffés pour combattre le spam et aussi améliorer l'authenticité des mails. Commençons gentiement.

SPF

C'est le plus simple de la bande. Celui-là spécifie quelles sont les machines/ip qui sont autorisées à envoyer des mails en provenance de votre domaine. En théorie si vous avez une configuration classique, les seules machines qui enverront du mail en provenance de votre domaines seront les machines déclarées en MX.

Il existe un champ de type SPF mais il est consideré obsolète (dommage), il faut placer ça dans un champs TXT.

lord.re.                600 IN  TXT "v=spf1 mx -all"

Ça veut dire les MX sont autorisés et tout le reste doit être jeté (le boulot de l'antispam). Rien d'autre à faire pour ça.

DKIM

Le Domain Keys Identified Mail est un système de signatures cryptographiques qui va signer le mail et ses entêtes. Les serveurs SMTP traitant le mail vont donc devoir vérifier que ça coïncide avec la clé publiée dans le DNS. En gros ça empêche que le message et ses entêtes soient modifiés et cela atteste que c'est bien votre serveur qui sont à l'origine de ce mail.

Ce coup-ci il va falloir configurer votre pile mail pour qu'elle signe vos mails. Je vous laisse vous débrouiller pour ça (hors scope de cet article, mais sachez que rspamd sait très bien faire cela). Bref vous allez donc avoir une clé publique que vous allez publier dans un TXT avec cette allure :

default._domainkey.lord.re.     3600    IN      TXT     "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC06MC2/9/YtSn9BS09oMN26UdKO6DMGlCWYsodQ8P+t2CzsSzqUJxaszJmWZglqZyXRjaCMAFUoOF7GiyhXhqM4rSLGxaPHfrLK7f9YlJYAnqdhzEJdEjP8/vkJoMTJxINP9gEBi+wGSGEhoha514NHHtZ4g+QbJZliahwAjl0BQIDAQAB"

Donc les serveurs mails qui recevront vos mails avec les entêtes DKIM vérifieront votre champ DNS qui va bien pour vérifier que c'est ok. Mais rien n'indique ce qu'ils doivent faire si ça ne correspond pas.

DMARC

Ha bha le voilà le truc qui va indiquer aux autres serveurs que faire de vos mails si le SPF et/ou le DKIM déconne. DMARC est donc complémentaire aux deux précédents. C'est encore un enregistrement de type TXT qui a cette gueule

_dmarc.lord.re.    600 IN TXT "v=DMARC1;p=none;pct=100;rua=mailto:lord-dmarc@lord.re;ruf=mailto:lord-dmarc@lord.re;sp=none;adkim=s;aspf=s"

C'est plutôt explicite :

  • le p=none indique la politique que doivent adopter les autres serveurs vis-à-vis de vos mails. Avec none, c'est indifférent. Si vous êtes absolument sûr de vos règlages vous pouvez mettre quarantine voir reject pour que ça soit carrément rejeté.
  • Le rua et ruf vous permet d'être contacté par les serveurs mails pour recevoir des rapports
  • Et enfin adkim=s et aspf=s indique que vous voulez une vérif stricte du spf et dkim, c'est-à-dire que le nom doit être parfaitement le même (le mode r pour relaxed permet d'émettre depuis un sous-domaine contrairement au strict).

Mon conseil c'est de commencer pépère avec une politique à none et si dans six mois vous avez pas de soucis, de monter d'un cran en passant à quarantine et pourquoi pas plus tard à reject. Si c'est pas bon, vous risqueriez de vous tirer une balle dans le panard !

STS

Celui-là c'est un ptit nouveau. Il est pas encore vraiment sorti de l'œuf à vrai dire, mais il est prometteur mais un peu chiant à mettre en place car il dépend du DNS mais aussi d'un serveur web… Ouai il va falloir mettre du json dans .well-known de votre serveur web. C'est pour ça que je l'ai pas encore mis en place mais je pense le faire à terme.

Donc en gros celui-là permet de spécifier comment doivent réagir les serveurs mails se connectant aux votres concernant la crypto : vous pouvez exiger de refuser la connexion si ce n'est pas chiffré. C'est donc vraiment très intéressant d'un point de vue protection de la vie privée de vos mails.

Ça a cette allure _mta-sts.lord.re. IN TXT "v=STSv1; id=20160831085700Z;". En gros ça donne un numéro de politique à suivre. Ensuite il faudra aller piocher dans le json à quoi correspond la politique correspondant à cet id. À mon avis ça aurait pu tenir dans le DNS toussa mais bon…

OPENPGPKEY

Celui-là non plus je ne l'utilise pas (en fait je ne chiffre pas du tout mes mails). Mais il permet de publier sa clé publique dans sa zone DNS. C'est un peu mieux que d'utiliser un serveur de clé publique. N'utilisant pas le truc j'approfondierai pas plus mais il existe ce générateur.

Conclusion des mails

Pour résumer on se protège du spoof grâce à DKIM et SPF. On s'assure de l'intégrité de ses mails via DKIM et DMARC. On s'assure(ra) que personne ne puisse lire les mails grâce à STS (en dehors des serveurs émission/réception) et on s'assure même que les serveurs eux-mêmes ne puissent lire le contenu grâce à PGP. Voilà notre stack mail est blindée.

Conclusion globale ?

Ouai vite fait une ptite conclusion. Le DNS contient des données qui sont publiques mais dont l'authenticité est de plus en plus critique. Modifier des requêtes DNS (enfin les réponses) à la volée pour modifier une clé PGP ou SSHFP ça pourrait avoir des conséquences assez désastreuses. C'est pour ça qu'il est indispensable de déployer DNSSEC sur votre domaine. Avec knot c'est vraiment simple. D'ailleurs est-ce que votre résolveur DNS actuel valide DNSSEC ?

Liens utiles :

Gérer ses dotfiles simplement avec git

Ça fait plusieurs fois que je vous tease sur ce sujet donc voilà je me lance. Je vais vous expliquer ma façon de gérer mes dotfiles. C'est un sujet assez récurrent chez les linuxiens et visiblement tout le monde à sa ptite façon de faire.

Certains font une soupe à base de lien symbolique dans tous les sens histoire de tout centraliser dans un seul dossier plus facilement copiable. D'autres utilisent des scripts ou softs exprès pour gérer ça comme par exemple GNU Stow. D'autres plus barbus adoptent un système basé sur du Makefile (et c'est finalement pas si crado que ça). Personnelement je ne voulais pas devoir apprendre à utiliser un autre soft. Je veux pas devoir installer un soft exprès pour ça. Je veux pas me faire chier avec des liens symboliques à faire moi même. Je veux un truc versionnable pour pouvoir revenir en arrière en cas de connerie.

Git à la rescousse

Une solution complète est d'utiliser Git. Comme ça on versionne, on synchronise facilement et puis on peut même se faire des branches pour avoir des variations sur différentes machines. Mais du coup la question qui se pose est comment on le fout en place ? Est-ce qu'on fout tout son /home/ dedans mais du coup ça va contenir à la toque de fichiers qu'on a pas forcément envie de fouttre dedans ? Et puis surtout le plus problèmatique c'est qu'on va se retrouver avec tous les dossiers de git bien moches (description, HEAD, hooks, logs, refs,…) bref pas envie que ça trône là.

La commande git qui tue

git --git-dir=/home/lord/.myconf --work-tree=/home/lord

Voilà la bête. À mettre dans un alias (par exemple config). Donc en gros toutes les saletés de git sont stockées dans /home/lord/.myconf et du coup ça devrait être propre.

Comment qu'on s'en sert ?

Bon première chose à faire c'est ajouter les fichiers que vous voulez gérer avec config add .ssh/config pour prendre un seul fichier ou bien config add .ssh pour prendre tout le dossier (attention si vous mettez vos clés privés dedans ça a des implications au niveau de la sécurité, je vous recommandes de ne pas inclure vos clés privées dedans (personnelement je ne le fais pas)).

Ensuite on vérifie l'état du bousin avec config status :

lord@hermes ~ %config status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
  (use "git push" to publish your local commits)
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        new file:   .config/mpv/scripts/fix-sub-timing.lua
        new file:   .ssh/config
        new file:   .ssh/known_hosts
Untracked files not listed (use -u option to show untracked files)

Ensuite il faut commit leur état actuel. Je vous recommande de faire des commits différents pour chaque fichier (tout du moins chaque fichiers logiquement groupés entre eux). Donc config commit .ssh/config .ssh/known_hosts -m "[SSH] ajout de .ssh/config et .ssh/known_hosts" .

lord@hermes ~ %config commit .ssh/config .ssh/known_hosts -m "[SSH] ajout de .ssh/config et .ssh/known_hosts"
[master 35259ea] [SSH] ajout de .ssh/config et .ssh/known_hosts
 2 files changed, 271 insertions(+)
 create mode 100644 .ssh/config
 create mode 100644 .ssh/known_hosts

Bon bha c'est fait. Si par mégarde vous avez mis des fichiers que vous ne voulez pas dans votre repo il va vous falloir config rm --cached .ssh/id_rsa . Le point important est le --cached qui ne supprimera pas le vrai fichier mais juste le fichier du repo. Méfiance.

Hey mais tu m'apprends à utiliser git ?! Ouai bha un tout petite peu. C'est surtout pour convaincre ceux qui ne sont pas dev, que de faire un chouilla de git c'est pas trop compliqué et que c'est super puissant comme outil.

Bon et comment on altère le passé ?

Bon déjà comment trouver la modif qui foire ? Déjà pour voir les commits c'est avec config log vous y verrez la date, le numéro de commit et le message. Si vous voulez voir ce que contient un commit config diff xxxxxxxxx. Si c'est trop confus et que vous voulez voir les modifs d'un fichier précis dans le commit config diff xxxxxxx votre/fichier.

Vous avez trouvé le commit foireux et vous voulez annuler ? Le mieux c'est de faire un config revert xxxxxxx. Vous voyez l'intéret de fractionner vos modifs dans plusieurs commits ? Plus vous ferez des ptites modifs dans un seul commit plus ce sera simple de revenir en arrière.

Si vous voulez juste voir dans quel état vous étiez à un moment donné, config checkout xxxxxxxxx est votre ami. Vous serez dans le mode dit DETACHED HEAD. Par simplicité, évitez d'y faire des modifs. Pour revenir dans l'état courant lancez un config checkout master . Et voilà.

Sachez qu'il existe les commandes reset et aussi le reset --hard mais c'est assez dévastateur. Renseignez-vous bien avant de les utiliser.

Mais du coup comment je sync ça ailleurs ?

Pendant longtemps j'ai pas synchronisé le cafoutch mais désormais je le fait dans un soucis de backup principalement. Mais ça peut servir pour utiliser sur de multiples machines. Désormais j'utilise un gogs (autohébergé via sandstorm) qui me permet d'avoir une ptite interface web mignonette. Du coup j'ai deux repos : un de backup et le gogs. Le but de l'article n'est pas de voir comment héberger ça donc sur ce point débrouillez-vous. Une fois l'hébergement solutionné il vous suffira donc dans votre repo local d'ajouter les repos distants.

Pour ajouter mon gogs j'ai donc config remote add gogs https://xxxxxxxx et pour ajouter mon backup config remote add origin ssh://xxxxxxx.

Pour y envoyer les commits il faut penser à config push gogs et config push origin. Voilà tout simplement.

Pour récupérer d'éventuelles modifs distantes on lance un config fetch suivi d'un config status encore une fois pour voir si on est retard par rapport à HEAD. Si c'est le cas, on lance un config pull. Et voilà.

Donc pour résumer avant toute chose on fetch pour s'assurer qu'il n'y a pas de modif, s'il y en a on pull et sinon, si on fait des modifs on pull. Ça couvre à peu près tout.

Et donc le plus important comment ajouter le barda sur une nouvelle machine. On se place dans le /home/votre_user. Là il va malheureusement falloir tout virer mais bon vous pourrez remettre les trucs après. Donc on commence par refouttre l'alias du début. Et puis on fait un config init ., suivi d'un config remote add origin VOTREREPO, ensuite un config pull origin (qui risquera de prendre un peu de temps et pour finir config checkout master. Pouf vous avez tout vos fichiers.

Pas aussi simple que ça en l'air ton machin

Bof non franchement ça va assez bien. Au final c'est de l'utilisation assez basique de git. J'aborde pas les branches car j'en utilise pas mais c'est pas trop compliqué non plus. Et ça vous permettra d'avoir une branche spécifique par machine (si jamais vous voulez pas exactement la même chose de partout).

Enregistrement DNS de type CAA pour protéger votre TLS

La mouvance actuelle de chiffrer de plus en plus de contenu est vraiment une bonne chose. Un peu plus de sécurité pour tout le monde c'est parfait. Surtout si c'est bien fait sinon c'est complètement contre-productif. Letsencrypt a énormément contribué à la démocratisation des certifs x509 pour le TLS grâce à son protocole bien efficace et aussi ses tarifs imbattables.

Certificate Transparency

Comme de nombreuses CA (Autorité de Certifacition : les organismes "de confiance" qui signent les certificats x509 qu'on leur soumet) désormais, Letsencrypt participe au Certificate Transparency. Il s'agit d'un log publique remplie par les CA où elles annoncent tous les certificats qu'elles signent. En gros avec ça vous ne pouvez plus prendre de certificat discrètement sans que ça ne se sâche.

Si jamais une CA sérieuse (ça veux dire à minima qu'elle participe à Certificate Transparency) signe un certificat, elle le publiera donc dans le log ce qui permettra donc de voir quand est-ce qu'il y a un nouveau certificat et émis par quelle CA. Avec ce système il est donc possible de savoir qu'un certificat a été émis, par quelle CA, et quand. Donc vous allez pouvoir savoir si un certificat a été émis dans votre dos.

Vous trouverez ici tous les certificats signés par Letsecrypt.

CAA

Le Certificate Transparency c'est donc déjà une bonne première étape mais il y a mieux ! Il est désormais possible d'indiquer quelle CA est autorisée à signer des certificats pour un domaine. Depuis Septembre 2017, les CA ont l'obligation de vérifier qu'elles sont autorisées à signer vos certificats via l'enregistrement DNS de type CAA.

C'est donc dans le DNS que l'on va indiquer quelle CA peut signer vos certificats. Si elle n'est pas présente dans le CAA, une CA ne pourra pas signer des certificats. C'est donc une énorme amélioration de la sécurité.

Mise en pratique

Bon donc dans votre zone DNS vous allez simplement ajouter lord.re. CAA 0 issue "letsencrypt.org" et hop. Seul letsencrypt peut désormais signer vos certs.

C'est tout. Si vous voulez du wildcard il faut une autre ligne : lord.re. CAA 0 issuewild "letsencrypt.org" bon c'est plutôt logique. Vous pouvez mettre plusieurs ligne CAA bien entendu si vous voulez utiliser plusieurs CA différentes.

Il est également possible de spécifier une adresse mail de contact pour être averti par la CA se faisant envoyer bouler : lord.re. CAA 0 iodef "mailto:truc@votrema.il" et zou.

On supercharge encore plus DNS et on est toujours aussi dépendant des CA

Le DNS contient de plus en plus d'informations sensibles. On peut déjà y mettre des clés publiques SSH, on y met des hash de vos certificats et maintenant on y place également les CA avec lesquelles vous collaborez. C'est donc de plus en plus un élément sensible dans la chaîne de sécurité. DNSSEC est donc de plus en plus indispensable. Sa démocratisation est indispensable. Les registrar doivent s'adapter et les logiciels également pour prendre en compte ce protocole.

Le rôle des CA est toujours aussi central. Une CA malveillante pourrait ne pas publier certains certificats dans le log publique… Elle pourrait également ne pas prendre en compte l'enregistrement CAA… Leur rôle est toujours autant basé sur la confiance et il est de plus en plus nécessaire de pousser l'adoption de DANE. Il est triste que cette norme ne gagne pas plus d'adoption générale :-( Ce serait-ty pas chouette que TLSA et CAA soient implémenté par tous les navigateurs ?

Microcache nginx pour améliorer les perfs et diminuer le downtime

Depuis que mon serveur ne me sert plus de routeur il m'arrive de le couper de temps à autres. Et pourtant mon site reste accessible. J'ai en fait, sur mon routeur, installé un container avec un nginx qui tourne et qui proxy. Les connexions se font donc via le nginx du routeur qui sert de cache quand le vrai serveur ne répond pas. Mais histoire de ne pas avoir de contenu pas à jour mais toujours d'une fraîcheur exemplaire je me contente d'un cache de maximum 1seconde.

1s de cache

Oui oui une seconde suffit. Bon dans mon cas c'est overkill car mon site est statique mais pour des sites dynamiques à fort trafic c'est clairement valable. Fournir un contenu vieux d'un seconde n'est généralement pas gênant. Par contre la différence de perf est assez énormissime.

Mais au delà de ça, si on rajoute deux trois options de configuration, vous pourrez vous prémunir des downtime (ce que je recherchais surtout).

Bon on va définir le_cache qui va être l'endroit où seront stockées nos données en cache : proxy_cache_path /var/www/cache keys_zone=le_cache:1m max_size=20m inactive=10d use_temp_path=off;

Bon sur la machine qui va vous servir de proxy vous allez dans la conf du bel nginx /etc/conf/nginx/nginx.conf vous ajoutez la conf du vhost:

server {
        listen 80;
        listen 443 ssl http2;
        server_name www.lordtoniok.com lordtoniok.com bender.lordtoniok.com www.lord.re lord.re bender.lord.re _;
        include ssl.conf;
        ssl_certificate /etc/ssl/acme/lord.re/fullchain.pem;
        ssl_certificate_key /etc/ssl/acme/private/lord.re/privkey.pem;
        location /.well-known/acme-challenge {
            alias /var/www/acme;
        }
        location / {
                proxy_cache le_cache;
                proxy_pass http://10.0.0.1;
								proxy_cache_lock on;
                proxy_cache_use_stale updating error timeout http_502 http_503;
                proxy_cache_valid 200 1s;
                add_header X-Cache-Status $upstream_cache_status;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
							#	proxy_buffering off;
        }
}

La magie se trouve dans le proxy_cache_use_stale qui fait en sorte d'envoyer le cache si le serveur upstream ne répond pas.

Désormais je peux couper le serveur sans que ça ne se voit. Ça peut permettre de mettre à jour l'esprit libre. Sur un site dynamique ça peut énormément booster les perfs sans trop de détriments (surtout avec juste 1s de cache).

Le proxy_buffering off; n'est peut-être pas adapté à votre cas mais si je ne le met pas, lorsqu'un bienveillant internaute tente de récupérer un fichier un poil gros (plus de quelques Mo) bha ça déconne de partout car la machine a peu de ram, donc ça rentre pas en ram, donc nginx tente de fouttre ça dans le cache, mais comme j'ai restreint le cache à 20Mo… bha si ça rentre pas dedans ça merdoie et ça n'envoi plus les données. Voilà voilà. Donc là je l'ai mis en commentaire car cet exemple n'est qu'un morceau de ma conf complète mais je voulais quand même vous présenter cette option.

Substring History Search dans ZSH

Les shells de nos chers unices sont de merveilleux outils qui permettent d'interagir avec nos OS. C'est mon interface principale. Je l'utilise constamment et pour tout. J'utilise très peu de logiciels graphiques. Un navigateur, un terminal et un lecteur vidéo. Voilà tout.

Par contre je dois avouer que j'ai pas une super mémoire et du coup j'ai parfois du mal à me rappeler de certaines commandes. C'est d'ailleurs pour ça que j'utilise Foldcat comme vu il y a quelques temps. Par contre ça ne fait pas tout encore. J'ai donc une botte secrète.

Historique des commandes

Le shell garde en mémoire toutes les commandes que vous lancez. Vous avez alors un fichier history ou zhistory qui traine dans votre /home. Dans pas mal de shell vous pouvez chercher dans cet historique avec Ctrl-r , c'est pas mal. Mais c'est pas non plus la panacée. On va ajouter un ptit script à notre cher ZSH pour le rendre superbement efficace sur ce point. Donc on va fouttre ce fichier /etc/zsh/zsh-history-substring-search.zsh en place puis on va faire en sorte qu'il soit utilisé. Pour ça on édite /etc/zsh/zshrc pour y placer un petit source /etc/zsh/zsh-history-substring-search.zsh si possible vers le début du fichier (là où on source tous les scripts pour bien ranger).

Il ne nous reste plus qu'à affecter une touche pour déclencher l'action. On édite encore /etc/zsh/zshrc et ce coup-ci vers la fin (où on range soigneusement tous les keybinds) bindkey "^[[A" history-substring-search-up et bindkey "^[[B" history-substring-search-down et voilà. ^[[A correspond comme vous le savez à la flêche du haut et donc ^[[B évidemment à celle du bas.

Mise en pratique immédiate.

On ouvre un nouveau shell pour que ce soit pris en compte (ou alors on source mais franchement on est flemmard jusqu'au bout). On commence à rédiger une commande genre hugo ne , puis on fait flêche du haut et là pouf votre commande se complète. Si la commande qui arrive est pas la bonne, on continue d'appuyer en haut ou en bas. Et voilà.

C'est vraiment efficace, surtout que l'on peut rentrer n'importe quel morceau de la commande recherchée, pas forcément les premiers caractères. Ça mériterait d'être dans tous les shells par défaut !

Unmount son root sans reboot

Vous avez jamais voulu démonter la partition racine de votre ptit nunux ? Non ? Pourquoi faire ?! Bhaa je sais pas moi, par exemple faire des opérations sur votre partition racine (redimensionner/changer le filesystem/réparer le fs). Sauf que bon en temps normal vous ne pouvez pas démonter la partition racine puisque votre OS est sur cette partition.

Par chance, nous vivons dans une époque merveilleuse où l'on possède tous pas mal de Giga de ram ce qui rend l'opération possible et même assez simple. Allez on y va !

Couper tout ce qui tourne

Pour pouvoir démonter votre partoche il va falloir couper tous les processus faisant des accès disques (lsof va être votre ami). Cette étape peut être faite au tout dernier moment avant le grand saut pour impacter le moins possible l'uptime de vos services.

Si vous avez suffisamment de ram vous pouvez même vous débrouiller pour ne pas couper ou juste relancer les processes mais c'est un poil plus touchy. Surtout si vous avez des données qui sont susceptibles d'être modifiées pendant que ça tourne.

Recréer son userland en ram

Bon donc le but du jeu ça va être de se créer une partition racine mais dans la ram. Donc déjà première étape, on se créer un point de montage mkdir /ramroot et ensuite on y monte du tmpfs avec mount -t tmpfs none /ramroot .

Là ça y est, tout ce que vous collerez dans /ramroot ne sera pas sur votre skeudur mais dans votre ram.

Là, deux choix s'offrent à nous : votre partition racine peut être contenue dans votre ram (c'est le plus simple) ou bien vous n'avez pas assez de ram et du coup va falloir recréer de 0 ( j'aborderai pas ce point mais en gros soit vous ne prenez que le strict nécessaire de votre rootfs, soit vous n'avez qu'à pécho un rootfs sur les interwebz ).

Bon donc cp -ax /{bin,etc,sbin,lib32,lib64,lib} /ramroot puis pour s'économiser de la ram mkdir /ramroot/usr suivi de cp -ax /usr/{bin,sbin,lib32,lib64} /ramroot/usr . Voilà on a tout l'userspace !

Tout ? Non. Il manque plus que les montages "bizarres".

Bon bah mkdir /ramroot/dev /ramroot/sys /ramroot/proc pour créer les points de montage. Par contre là vu que ça existe déjà sur votre disque dur, on va juste "binder" avec mount --rbind /dev /ramroot/dev puis mount --rbind /proc /ramroot/proc et mount -t proc none /ramroot/proc et là c'est tout bon.

Le grand saut

Bon bah vous avez un bien bel userspace de dispo dans votre ramdisk. On peut donc se décider à migrer dedans.

Premièrement mkdir /ramroot/oldroot va accueillir notre skeudur. Et maintenant la commande miraculeuse.

pivot_root /ramroot /ramroot/oldroot

Et là votre racine est désormais votre ramdisk. Maintenant vous pouvez umount /dev/sda2 et admirer votre dur boulot.

Vous pouvez faire ce que vous vouliez faire désormais. C'est beau, hein ? Au final c'est diablement simple et super efficace.

Revenir

Vous voulez revenir sans rebooter ? Easy vous n'avez qu'à mount /dev/sda2 /oldroot et enfin pivot_root /oldroot /oldroot/ramroot et pouf vous voilà hors de votre ramdisk de retour sur votre partoche.

Refonte complète du site

Ça faisait un bail que j'avais pas trop touché au site (blog ?). Ça fait depuis quelques années qu'il ne s'agissait que d'un simple fichier index.html que j'éditais à la mano dans vim. Une seule et unique page avec tout le contenu. C'était plutôt élégant techniquement et pratique. Mais ça a aussi quelques limites. La première c'est que j'avais pas de flux rss. C'est un peu la honte. Étant moi même présentement présent un très grand utilisateur des reusseusseu ça me tiraillait. D'autant plus que je ne publie absolument pas régulièrement sur le site. Il se passe régulièrement de nombreux mois sans que je ne prenne la plume puis soudainement il va m'arriver d'écrire coup sur coup quelques articles (comme actuellement). Le rss brille dans cette situation : on consulte le site, on aime le contenu, on choppe le rss, puis le site dort pendant quleques mois et d'un coup pouf à l'improviste ça apparait dans l'agrégateur.

Bref j'ai craqué

J'ai tenté un outil ou deux pour générer manuellement le rss mais c'était soit hébergé ailleurs (coucou feed43) soit assez crado soit fallait que je me motive à pondre du xslt des familles. Et puis bon ça me trottait un peu quand même dans le crâne de tester les nouveaux cms statiques à la mode actuellement. J'ai un peu reluqué l'offre actuelle. Je connaissais un peu wok et pelican mais celui qui me faisait de l'œil c'était hugo. Je sais pas trop pourquoi d'ailleurs. Étant un lecture plutôt assidu d'HackerNews (hn pour les intimes) je dois avouer que je suis légèrement éclaboussé par la hype de rust et go. Et hugo est en go. Et le go c'est sympa ! C'est facile à compiler/installer. Pas d'emmerdes avec les dépendances. C'est performant et coup de bol il y a un ebuild (pas super à jour mais bon pas trop à la bourre non plus) dans gentoo.

Bon ça donne quoi ?

Bon alors on suit le guide officiel dans la doc :

  • Étape 1 : installation. Easy c'est packagé dans gentoo. next.

  • Étape 2 : Création d'un nouveau site. Heuuu ça tombe bien je veux faire un site ! Bon en vrai c'est une commande hugo new site le_nom_du_site

  • Étape 3 : Choisir un thême. On va voir la gallerie. Il y a pas mal de choix. J'en trouve un sympa. J'installe à coup de git. Erf il utilise js et pleins de trucs externes. Bon m'en contente pour l'instant

  • Étape 4 : Ajouter du contenu. Logique. La commande est hugo new nom/du/fichier.md . Puis on édite ce fichier dans notre éditeur de texte favoris (vim, what else ?).

  • Étape 5 : Customiser le thême. Pas bête mais j'ai dit que je verai après, donc j'ai vu plus tard.

  • Étape 6 : . Quoi ?! Pas de sixième étape ? Ha bha non la doc s'arrête là. Bon en vrai il faut modif le config.toml pour y modifier l'install. Et enfin il faut générer pour publier à grand coup de hugo. Voilà.

Ça donne quoi du coup ?

Bha franchement j'aime bien. Ça permet d'utiliser du markdown pour rédiger. Je suis pas vraiment fan du markdown mais bon je pense que je chopperai le coup de main. On peut modifier le site ouaib assez facilement, changer de thême super simplement. La génération est très rapide (moins d'une seconde). Ça gère les catégories et les tags (je les utilise de la même façon). Donc pour le lectorat c'est quand même plus agréable : le site est plus moderne. Pour l'instant je suis conquis. À voir dans la durée.

D'ailleurs ce post a été écrit il y a un mois et j'ai mis une date de publication dans le futur pour voir.

Et tu parles pas du nouveau design ?

Haha merci titre de me rappeler d'en parler ! Bon bha voilà j'ai refait un nouveau design. Donc au début j'était parti sur un thême existant (redlounge) et je pensais le modifier un peu. Mais au final quand j'ai vu qu'il fallait du js toussa toussa j'ai changé d'avis. Du coup j'ai regardé un peu son code voir comment c'était branlé et au final pour ce que je voulais faire ça allait être diablement simple.

Ni une ni deux je commence à trifouiller un truc simple dans la même charte graphique que l'ancien site (le fameux design4.css) mais je voulais en profiter pour adapter mon site aux grands écrans. Depuis peu j'ai un écran 4K et j'en ai marre des sites pas super adaptés. Donc je veux un truc qui s'adapte aux téléphones, aux ordis habituels et à la 4K. Je veux pas une usine à gaz.

Bon je commence à partir vers du flexbox, le truc un peu à la mode pour simplifier les designs flexibles. Ouai c'est vrai que ça a l'air sympa. C'est pas mal de pouvoir réordonner l'ordre d'affichage dans le css. Mais bon c'est quand même plus adapté aux sites plus complexes. J'ai pas besoin d'aussi complexe. En gros je veux une sidebar qui se fouttent à l'horizontal en haut quand l'écran est petit. J'ai donc testé sur un truc à base de column (la propriété css3). Mouai c'est pas bien pour organiser un layout, pas du tout fait pour. C'est bien pour ranger du texte mais pas plus.

Au final j'ai utilisé une ruse. Un div en position:fixed pour la sidebar et un autre div qui est juste décalé de la taille de la sidebar. Et quand l'écran est plus petit je fais plus de position:fixed et voilà. Et j'ai mis plusieurs tailles de font en fonction de la taille. Bref vous voyez le résultat actuellement.

Voilà j'apporterai probablement des modifs par-ci par-là j'imagine.

Foldcat : se rappeler de quelque chose quand on rentre dans un dossier

Vous avez une mémoire de poisson rouge comme moi ? Ça vous arrive d'installer des trucs un peu exotiques et de pas vous souvenir comment ça fonctionne. Du coup vous allez dans le dossier en question et là vous fouillez à coup de ls / tree / --help. Pas mal mais et si on avait un ptit truc qui venait nous aider.

Foldcat : le chat du dossier

Votre chat vous passe dans les panards quand vous entrez dans une pièce ? Ouai bha le script qui va suivre va faire pareil. Quand vous entrerez dans un dossier bam, le script va vous sauter au visage.

On va apprendre à ZSH à nous afficher du texte quand on rentre dans un dossier. Ce petit bidouillage fonctionne avec ZSH mais j'imagine que si vous maîtrisez bash, vous devriez pouvoir le recréer sans trop de difficulté.

Bon alors on va commencer par éditer /etc/zsh/zshrc parceque comme ça tout le monde aura droit à cette merveille. Dans ce fichier on va juste mettre un ptit source /etc/zsh/prompt.zsh . Jusque là c'est easy.

Maintenant créons ce /etc/zsh/prompt.zsh et dedans on y fout ça :

function preexec() {
	# on initialise timer pour chronométrer les commandes et oldpwd pour foldcat
  timer=${timer:-$SECONDS}
  oldpwd=$(pwd)
}
function precmd() {
  # reset le background en noir
  /bin/echo -e "\033]11;#080808\007"

  # déclenchement de foldcat. Penser à modifier le chemin de foldcat.db où vous voulez le mettre
  if [ "$oldpwd" != "$(pwd)" ] ;
  then
    /bin/grep "$PWD " /home/lord/.config/foldcat/foldcat.db | cut --delimiter='"' -f2;
  fi

  # affichage de la durée d'execution de la dernière commande
  if [ $timer ]; then
    timer_show=$(($SECONDS - $timer))
    export RPROMPT="%F{cyan}${timer_show}s %{$reset_color%}"
    unset timer
  fi
}
 # bon là c'est juste la customisation du prompt
autoload -U colors
colors
PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg_no_bold[yellow]%}%1~ %{$reset_color%}%#"

Le ptit foldcat.db

Là c'est ultra simple. Perso je l'ai foutu dans ~/.config/foldcat/foldcat.db comme ça c'est tout bien gitté avec tous mes fichiers de conf (je vous raconterai un jour je vous le promet).

/home/lord "Home sweet home" ouai ça sert à rien
/home/lord/www "site ouaib géneré par hugo. Pour publier : hugo new posts/XX-bla-bla.md ; vi content/posts/XX-bla-bla.md ; hugo ; Penser à gitter" petit aide-mémoire des familles

Et voilà le genre de contenu. C'est ultra simple, pas trop de risque de faire des conneries. Ça s'édite dans vim. On peut mettre des commentaires.

Guide d'utilisation d'IRC : niveau 5

Guide pour ircop : Protéger son réseau

Cette partie est plus un mémo personnel qu'un guide général. C'est très spécifique à l'ircoperie de Geeknode…

Premier rappel : globalement on évite les operoverride (utiliser des commandes d'op, lorsqu'on est pas op sur un chan. La modération des chans n'est à priori pas du ressort des ircop.

Gérer les relous

La plupart des relous peuvent être calmés par un /gline lerelou 1h cependant si le relou en question revient constamment un moyen très efficace est le /tempshun lerelou il pourra toujours écrire/interagir sauf que personne ne recevra ses daubes. Il ne s'en rendra pas compte. Cela dit, certains clients bizarrement foutu se retrouvent en ping timeout et du coup ça recommence…

Pour les spammeurs occasionnels qui viennent, balancent leur message puis disparaissent quelques heures/jours, il faut passer par un spamfilter. Ça marche à base de regex toussa de ce genre /spamfilter add -simple cpnNPq kill|shun|gline - le_nom_du_spam_filter le_spam

Admins habituel

  • Problème d'auth : C est capricieux avec l'envoi des mails, du coup généralement les mails de mot de passe perdus n'arrivent jamais. La technique est donc de /msg C oper superadmin on pour passer en mode berzerk puis /msg C oper forceauth bidule .
  • Suppression d'un gline : il est préferrable de d'abord les lister avec /stats G. Ensuite pour supprimmer un gline c'est simplement /gline -le@gline . Et voilà

Guide d'utilisation d'IRC : niveau 4

Guide pour op : Protéger son salon

Tout fier de votre casquette d'op, vous vous demandez comment protéger votre fief des abrutis spammeurs/emmerdeurs ? Haha voilà un ptit guide pour défendre votre chez vous.

Enregistrez votre salon

C'est la toute première chose à faire auprès de C avec /msg C chan register #votresalon, ici pas de mot de passe, par contre il faut que vous soyez identifié pour que ça fonctionne (comme toute la suite). En faisant ça, vous deviendrez le fondateur du salon (founder). Il ne peut y avoir qu'un seul fondateur qui pourra être assisté par des proprios (owners).

Gérer vos utilisateurs

C'est un très vaste sujet qui pourrait suffire à un article dédié mais on va survoler et donner quelques clés.

Il y a deux modes de gestions : soit avec des flags, soit avec des niveaux. Les flags sont le moyen le plus simple à privilégier à moins de vraiment vouloir du tordu. Il s'agit d'une simple liste d'utilisateur et pour chacun vous indiquez les accès de l'utilisateur.

Par exemple dans le salon #truc, vous voulez que l'utilisateur Lord soit op : /msg C chan access #truc Lord +oO. Désormais quand Lord rejoint #truc il pourra devenir op (+o) et il sera automatiquement op (+O). C'est pris en compte immédiatement. C'est donc un peu de boulot de remplir la liste des accès d'un salon mais c'est tout de même assez flexible et évite de se taper ça manuellement par la suite.

La liste des accès possibles se trouve via /msg C help chan access flags. Il est à noter que ça ne fonctionne qu'avec les utilisateurs enregistrés (ouai va falloir pousser vos utilisateurs à s'enregistrer pour profiter de ces raffinements).

Si vous êtes déconnecté et qu'aucun op n'est dispo mais que vous avez les accès requis pour l'être, il va vous falloir récupérer les accès. Donc pour op quelqu'un (ou vous même) il faut /msg C chan op #lechan lepseudo . Bon c'est pas mal mais si on a pas mal de monde à traficoter c'est long. Là on peut faire un /msg C chan resync #lechan pour que tous ceux qui ont un accès de configuré retrouvent leur accès. Rapide et efficace.

Les options

Bon bha maintenant que vous avez votre petite équipe d'utilisateurs/op de bien gérée, il va vous falloir modifier deux trois options. La première option intéressante est le private qui permet de planquer quelques informations sur le chan, le second est le secure qui permet de voicer/opper uniquement les utilisateurs identifiés et éventuellement protectops qui empêche les ops d'être déoppé. /msg C chan set #lechan loption on

Les modes d'accès

Il y a pas mal de modes pour les salons, cette partie va être un gros morceau. À commencer par les "modes d'accès" tels que vhoq (voice/hop/op/owner) mais ceux-là on les a déjà abordé.

Il y a également le mode b qui est en fait la liste des bans du salon.

Une fonctionnalité peu connue mais qui peut être utile est le mode I qui est une liste permettant aux gens présents sur celle-ci de joindre le chan même quand il est en mode i (inviteonly).

Les modes indispensables

Dans les modes basiques mais indispensables on retrouve le trio ntT ainsi que le s et le k.

  • n permet de bloquer les messages en provenance de personnes extérieures au salon (ouai sur irc, de base, vous avez le droit d'envoyer un message à un salon sans forcément y être).

  • t quant à lui bloque les modifications du topic aux membres de niveau h ou plus alors que le T bloquer les "notices de salon" (qui sont un moyen exotique d'irc pour afficher des messages sur le salon (généralement vous n'en voudrez pas)).

  • s permet de déclarer un salon comme étant secret. C'est à dire qu'il n'apparait pas dans les whois des utilisateurs et qu'il ne sera pas listé lors d'un /list.

  • k permet de mettre un mot de passe (key) à un salon. Bon finalement, un ptit dernier pour la route, si vous êtes en milieu hostile, vous pouvez choisir de n'accepter que les gens utilisant du chiffrement via le mode z.

Les modes "défensifs"

Bon passons aux modes pour se défendre des gentils vilains.

  • Le premier mode (le plus connu) est le m pour modération. Une fois activé, seuls les gens de niveau "+" ou plus pourront parler sur le salon. Les casses pieds se retrouvent ainsi bouche bée.

  • Il existe également le mode M qui est une variante qui est similaire sauf que les personnes identifiées même non voicées peuvent également parler.

  • À coupler avec le mode i où seuls les gens recevant une invitation (via la commande /invite) pourront joindre le canal (d'ailleurs si vous êtes à la porte et que vous voulez une invitation, faites un /knock #lesalon). Ces trois modes permettent de réagir à la majorité des attaques simples.

Les modes contre les bots

Les attaques de bots sont un peu plus relou. Généralement ça consiste en de très nombreux "utilisateurs" qui rejoignent puis quittent immédiatement avec un message ou non, ceux qui vont changer de pseudo constamment, ceux qui vont flooder le salon. Il y a plusieurs solutions pour ça.

  • c ce mode bloque tout ce qui est formatage du texte comme le gras/italique/couleurs.

  • l ( L minuscule pour ceux qui ont une font pourrie ), permet de limiter le nombre de personnes connectées au salon.

  • On bloque les hordes de knock avec le mode K (ouai ce genre d'attaque relou existe très rarement mais ça s'est déjà vu).

  • Pour contrer les changements de pseudo c'est le N.

  • Le R permet de limiter les join aux seuls membres enregistrés auprès des services (redoutable).

  • Le dernier mode intéressant et l'un des plus complexes (ça reste soft quand même) est l'antiflood f. Il permet de définir des règles et du coup possède une syntaxe différentes des autres. Typiquement /mode +f [5t]:15 signifie qu'à partir de 5 lignes de textes en 15 secondes, la personne sera kickée. Pas mal de possibilité pour ce mode sont à voir sur sa page de doc officielle ou bien directement depuis votre client irc via /quote helpop chmodef.

Bon voilà pour ce que vous pouvez faire en tant qu'op sur un salon. C'est pas exhaustif mais ça permet de pouvoir réagir dans pas mal de situations.

Concernant Geeknode : ces derniers temps on a ajouté quelques modules pour se protéger des lourdingues.

  • Le premier est l'anti-amsg. Les amsg sont des messages qui sont envoyés sur plusieurs