KDE, la migration plasma 5

Quelques notes non publiées avant la migration.

Gwenview, à l’ouverture d’une photo, il met 3h pour charger la photo suivante car il doit (surement) lire toutes les autres photos du dossier, en effet, c’est instantanée dans un dossier avec peu d’images, très long dans un dossier avec beaucoup d’images.

Gwenview qui bug après l’affichage d’une photo « mal formée » (segmentation fault).

Dolphin, la touche F1 pour l’aide ouvre la page d’aide dans Kate car c’est un fichier d’aide en HTML… très pro… très open source.

Dolphin, qui à chaque lancement, oublie mes préférences. Bordel, je ne veux plus de confirmation pour la suppression des fichiers.

Puis il y a eu la migration. C’est la migration vers quoi exactement ? C’est suite à cette annonce, je me suis dit que cela devait être suffisamment stable pour faire le grand saut. C’est donc une migration de plasma 4 vers plasma 5.5.4 début février, puis 5.5.5 début mars. KDE Frameworks et les logiciels de la suite KDE sont eux toujours mis à jour en rolling release.

Pourquoi plasma n’est pas mis à jour en rolling release ? car c’est un composant clé de KDE, c’est l’espace de travail. Une migration peut donc être bloquante, c’est un bon point d’Arch linux de ne pas la forcer.

La migration a corrigé les deux bugs avec Dolphin. Cela n’a rien changé pour Gwenview, il bug toujours sur certaines photos (ce qui est normal, cf ci-dessus), et il met toujours autant de temps pour charger la photo suivante: 3 secondes dans un dossier de 185 fichiers, par contre en le fermant et relançant tout va plus vite (merci le cache).

La migration a heureusement ajouté de nouveaux bugs. Commençons par le plus chiant: un beau segmentation fault quand j’utilise la barre de recherche d’application du menu KDE, très gros point noir.

Ensuite, le fonctionnement du son a changé à l’insu de mon plein gré, alsa a été remplacé par pulseaudio. Je ne m’en serait pas rendu compte si je n’avais pas eu de problème. Maintenant, une seule application simultanément ne peut émettre du son. Je ne peux pas avoir une vidéo dans mon navigateur et une vidéo dans mon player multimedia. La seconde vidéo lancée sera bloquée par la première, et, à la fermeture de la première, la seconde est immédiatement débloquée. COOL.

J’ai trouvé une solution, mais putain de bordel de merde, quitte à faire migrer sur pulseaudio, ils auraient pu mettre les bons réglages !

Puis à nouveau un bug très chiant:

# xlsclients -la
Maximum number of clients reachedxlsclients: unable to open display « :0 »

Cela me le fait avec mplayer, smplayer exactement. Impossible d’ouvrir de nouveaux fichiers. Niveau message d’erreur, aucun bien sûr, ceux-ci ne sont pas gérés, il ne faut pas rêver. Dans smplayer, il faut prendre l’initiative d’aller voir dans les « journaux », le cheminement est le meu « Options » puis « Journaux » et enfin « mplayer ». Madame michou est ravie qu’il soit nécessaire de faire tout cela pour découvrir pourquoi la vidéo ne charge pas, et surtout pourquoi en fait la vidéo actuelle continue de tourner (heureusement, elle n’utilise pas linux). En effet, si smplayer lit une vidéo, en cliquant sur une autre dans Dolphin, rien ne se passe, la vidéo continue d’être lue sans l’interrompre, ni charger la nouvelle, comme si l’ordre de chargement de la nouvelle vidéo n’était pas envoyée. D’où ma critique sur l’absence de message d’erreur, c’est un peu se foutre du monde de ne pas être capable d’indiquer qu’une vidéo n’a pas été chargé.

Bref, ce bug se produit parce qu’il y a trop de connexion sur le serveur X. C’est con, je n’avais malheureusement presque aucune application en cours d’exécution. La magie réside dans KDE qui est de la merde. Après quelques recherches où j’ai découvert la commande xlsclients ci-dessus, censée aider dans ce genre de problème mais qui ne sert à rien en fait, j’ai trouvé des cas de bug similaire dans chromium mais le problème provient bien de KDE et de Klauncher. Ce qui est logique puisque c’est Klauncher qui doit lancer l’application quand on ouvre un fichier dans Dolphin. Du coup un kill de klauncher résout le problème… jusqu’à la prochaine saturation. Merci KDE.

Ensuite, encore un bug ultra chiant, le menu K (l’équivalent du menu démarré): quand je clique dessus, le menu s’affiche puis disparait immédiatement avec le beau fondu de fermeture. La solution, est de faire un click sur le bureau (droit ou gauche peu importe), et là ça remarche. Ca ne remarche qu’une fois, si je le ferme, le bug se produit à nouveau, je dois cliquer encore sur le bureau pour que ça remarche.

Fun fact: ce bug concerne en fait toute la barre des tâches: l’horloge avec la calendrier, l’icone du son avec kmix, etc. Ce bug est moins pire que le segmentation fault de la barre de recherche car le menu est quand même utilisable, mais il est très dérangeant.

D’autres cochonneries se sont glissées, en particulier quelqu’un a décidé qu’il ne serait plus possible de verrouiller automatiquement son écran au delà de 99 minutes. Merci de décider pour moi ce qui est bien, 99 étant une limite pas du tout arbitraire et très réfléchie. J’en tombe dans l’insulte, bande de connards.

C’est dans « Configuration du système > Comportement de l’espace de travail > Verrouillage de l’écran > Verrouiller l’écran automatiquement après », on notera le problème d’ergonomie qui affiche une zone de saisie de 3 kilomètres pour limiter la saisie à 2 caractères, bravo ahahah. Car non, ça ne fait pas plus beau en long. A cela, quand on ajoute un troisième caractère, il n’y a aucun message d’erreur, une info-bulle pour indiquer le min/max aurait été la bienvenue, car j’ai vraiment cru à un problème d’interface au début parce que jamais j’aurai pensé qu’un abruti limiterai la saisie à 99 minutes. Ou encore, pour toutes valeurs au dessus de max, alors utiliser la valeur max. Exemple, la valeur est 25, si j’ajoute un 1 pour faire 125, alors la valeur devient 99, au lieu de rester à 25 comme actuellement.

Je me souviens quand je développais sous Delphi, il existait un composant qui s’appelait TSpinEdit. J’ai testé (merci wine) avec un programme que j’avais compilé en 2006, donc il y a 10 ans de cela, en mettant une valeur supérieur à max, alors la valeur devient max, on comprend tout de suite qu’on a dépassé la limite, même chose avec la valeur minimale. Alors je me demande POURQUOI DIX ANS PLUS TARD (et je suis gentil car ça existait il y a plus de dix ans) ce comportement n’est pas un standard d’ergonomie ? Es-ce un problème de Qt ? (version 5.5.1 d’après la fenêtre A propos du logiciel) Leur composant est pourri ? Ou es-ce la faute des dev de KDE qui font de la merde ? Ca me gonfle ces petits détails ergonomiques qui montrent l’absence totale de qualité. Même Firefox, avec un input type number, affiche les bords du champ en rouge quand on dépasse pour indiquer un problème, ce qui me surprend car c’est sans CSS particulier et ce n’est pas du tout standard.

Pour revenir sur la dimension de la zone de saisie, à titre d’exemple: « Configuration du système > Réseau > Configuration > Cache > Taille du cache disque » est un champ à 2 caractères dont la taille est adaptée à 2 caractères. Quand on veut, on peut. D’ailleurs je ne comprends pas trop cette option, un cache disque limité à 99 KiB max ? C’est très peu mais comme je ne sais pas à quoi cela s’applique… Firefox ? je ne pense pas vu qu’il possède ses propres options, Chromium ? pareil j’espère. Par contre j’espère que les préférences SSL sont correctement prise en compte par Chromium, pour Firefox je sais qu’il possède ses propres options SSL cet idiot, c’est cool de configurer deux fois les choses Mozilla. Oh wait, ces options doivent être pour Konqueror… ou pas, je viens de vérifier, Konqueror possède ses propres options de cache (et de taille du cache). Exclusivité KDE: les options qui ne servent à rien.

Autre problème, à l’écran d’accueil, cela indique à présent la « langue » du clavier, mais si ce n’est pas du tout clair car c’est écrit « Configuration », mais voici pourquoi j’ai déduit que c’était la langue du clavier. Quand j’ai commencé à taper mon mot de passe, c’est passé en « fr ». Du coup je me suis dis que ça doit être la langue du clavier, car qui irait choisir la langue de la session avant de se connecter ? Quand un compte est créé sur le système, l’utilisateur choisit sa langue et c’est terminé, il ne va pas la changer à chaque connexion (au mieux on change son environnement de bureau à la connexion, comme choisir entre Gnome ou KDE/Plasma, ça c’est utile). Bref, j’ai supposé à tort que c’était la langue du clavier. Du coup quand j’ai vu « fr » je me suis dis que mon clavier a été détecté comme FR et j’écris en azerty. Donc la toute première fois après la migration, je commence à taper mon mot de passe, il me dit qu’il est invalide, j’essaie encore au cas où je me serai trompé, même problème. Je me dis « putain de merde »… puis comme j’utilise le bépo, je me suis dis que je vais tenter en bépo, et ça a marché.

Afficher la langue et la disposition du clavier ça a clairement du sens et même Windows le fait. Mais afficher la « Configuration » c’est vraiment débile, surtout quand on ne peut pas la changer: j’avais « us » initialement et quand j’ai tapé mon mot de passe c’est passé en « fr », mais pas possible de remettre « us ». CA ME SAOULE CETTE INCOHÉRENCE. Et pour couronner le tout, impossible de saisir un nom d’utilisateur, donc impossible de vérifier le layout du clavier. clap clap KDE. Je n’ai pas testé mais si il y a 30 utilisateurs sur la machine, j’espère qu’il ne faut pas scroller pour se chercher dans la liste…

Pour finir sur cet écran d’accueil, il y a un bouton « Actualiser », comme on en trouve dans les navigateurs. Je passe le curseur dessus, AUCUNE INFO-BULLE, je tente en cliquant dessus en pensant que ça va remettre à zéro l’écran de sélection d’utilisateur (et le mot de passe saisie). Pas du tout, cela fait un redémarrage sans confirmation. Merci KDE, on pensera à l’info-bulle la prochaine fois ? Ou bien ca coute trop cher en ces temps de crise ? Ce n’est pas comme si le libellé et les traductions n’existaient pas déjà vu que le même bouton est dans le menu K, mais avec une icône différente, il ne faut pas déconner (mais cela dépend du thème, je ne devrai pas leur jeter la pierre pour ça).

D’ailleurs en redémarrant avec ce bouton, j’ai eu un bug: A stop job is running for Session c2 of user xxx (duration / 1min 30s). Ce n’est pas un bug de systemd mais bien de la manière dont le reboot est lancé… avec ce bouton dans l’écran d’accueil ça fait de la merde, avec le même bouton quand on est dans une session ça marche nickel. Merci KDE.

Pour résumer, je suis énormément déçu de cette nouvelle version. A cela les bugs que j’avais avec kate/kwrite n’ont pas été corrigé (xvkbd), bref, c’est une vraie catastrophe. On parle d’un environnement de bureau, merde, pas d’une application codé par Kevin qui n’a pas travaillé les info-bulles ou qui n’a pas utilisé les bons composants pour saisir les donnés (l’input number) ou encore qui ne sait pas faire de segmentation fault… c’est un travail très brouillon, ça ressemble à Michel dans son garage qui a fait son petit environnement du bureau pour lui tout seul et ça lui convient.

Mon usage très basique qui consiste à surfer sur Internet me permet de survivre, j’abuse des raccourcis pour palier au bug du menu K qui se masque, mais je n’arrive pas à comprendre comment KDE en est arrivé à ce point, tombé tellement bas.

A vrai dire, le fait que le menu K bug me fait difficilement tenir le coup. La recherche d’une alternative est en cours, d’un OS alternatif, et comme je ne supporte pas Gnome/GTK, ça sera vers Windows que je me tournerai (je m’étonne moi-même!). Windows 10, dont je repousse au plus tard la migration car cet OS a fait beaucoup de bruit, mais je ne doute pas que je saurai le bidouiller pour limiter la casse.

Concernant GTK, ça me fait grave chier d’avoir des applications qui se comportent différemment dans un même environnement. Firefox utilise GTK, quand on clique quelque part dans la barre de scroll, ça positionne le contenu directement à la position du click, tandis qu’avec les autres applications (Chrome/Kate par exemple), cela décale la position du contenu d’un écran vers la position du click. C’est TRÈS chiant quand on utilise une application GTK et l’autre en Qt en même temps. Ah, c’est con, ça correspond à mon usage basique avec Internet: Firefox et Chrome.

J’ajouterai que j’ai dans l’ensemble des ralentissement incompréhensibles. Mais face aux autres problèmes, cela n’a pas trop eu de poids dans ma décision de quitter linux. J’aime résoudre les problèmes, j’aime bidouiller, mais l’accumulation me décourage d’une part, et me montre surtout que je perds mon temps vu la piètre qualité des logiciels.

Je doute que ces problèmes soient liés à mon matériel, et ils sont reproductibles dans une session vierge. Cette baisse constante de qualité est dommage et aura eu raison de moi. Ceci n’est finalement que la continuité des problèmes évoqués dans mes précédents billets.

Je ne peux m’empêcher de penser à une citation du forum arch linux dans un de mes précédents articles où je parlais déjà de plasma 5 et de la transition qui était en cours:

I am a litle sad to see that each time a new version of the desktop (any desktop…) is released, we have something bugy for a year or two before it become stable. As a consequence, we are left most of the time with beta software.

A year, or two… or three xD Cela fait un an déjà, dans deux ans ça sera peut-être bon, mais ça sera trop tard pour moi. Surtout que comme indiqué dans la citation, il y aura surement quelque chose de nouveau encore, et le cycle recommencera.

Changement d’ABI, cassons les logiciels sans tester ni réparer

Une bonne news comme on les aime: https://www.archlinux.org/news/c-abi-change/. Mais qu’est-ce qu’une ABI ? Comme si c’était évident pour tout le monde. C’est Application Binary Interface.

Ok, l’interface binaire va changer mais l’ancienne est toujours fonctionnelle. Et puis le principe de l’open source est d’avoir justement le code source pour pouvoir tout recompiler en cas de besoin comme c’est le cas actuellement.

Ca tombe bien, TrueCrypt a été recompilé pour cette raison. Manque de bol, le logiciel ne fonctionne plus du tout.

C’est trop cool de mettre à jour un logiciel sans le tester. Ce n’est pas parce que ça compile que ça marche. 20 jours plus tard, problème toujours pas résolu.

Si le rapport de bug propose des solutions bizarres, le plus simple est le rollback puisque l’ancienne ABI existe toujours:

# cd /var/cache/pacman/pkg/
# pacman -U truecrypt-1:7.1a-2-x86_64.pkg.tar.xz

Ca, c’est fait.
Linux de merde. Ou plutot distrib de merde ? Ou encore Antonio Rojas (packageur) de merde ? Ou bien Rémy Oudompheng (le mainteneur, donc responsable) de merde ? « Monde de merde ». A coté, les problèmes de mises à jour de Windows 10 c’est du pipi de chat.

KDE, on continue…

Supprimer un fichier en lecture seule avec la touche « Suppr » n’affiche aucun message d’erreur dans Dolphin, ni Gwenview. Il ne se passe strictement rien, comme si c’était buggé.

Gwenview laisse d’ailleurs les options « Trash » et « Delete » visibles, mais rien ne se passe en cliquant dessus. Dolphin, pour une fois, grise correctement ces options là du menu.

C’est un peu comme les options de droits d’accès d’un fichier, il y a:

  • Can Read & Write
  • Can Read
  • Forbidden

Surement incompréhensible pour un débutant… déjà pourquoi il y a des majuscules à Read et Write. Mais surtout, pourquoi ne pas remplacer « Can Read » par « Read only » (« Lecture seule »). Et « Forbidden », qui n’a que peu de sens pour l’Owner.

Le plus drôle est quand on clique sur les droits avancés, en français, le titre des colonnes est « l », « é », « e » au lieu de « r », « w », « x ». Bien que stupide car « é » et « e » sont trop ressemblant, l’affichage des droits dans le tableau reste malheureusement en anglais avec « rwx ». Dit autrement, l’internationalisation est ratée.

Bref, gros problème d’expérience utilisateur encore.

KDE, la fin d’une époque

Voici les bugs ces derniers temps:

Dolphin: incapable de surveiller la création de fichier dans le dossier actuellement affiché. Je télécharge un fichier avec Chromium, il faut que je fasse F5 pour qu’il soit visible (même au bout de plusieurs secondes d’attente)

Dolphin: peut ouvrir un fichier compressé comme un dossier, mais ouvrir un des fichiers à l’intérieur ne fonctionne pas. Ni Gwenview, ni Kate, ni les autres applications car le fichier ouvert correspond au protocol « tar », le chemin est « tar:/path/to/file.gz/path/to/file/data.txt »…
Même problème avec le protocole MTP utilisé par les téléphones et appareils photos… malgré kio-mtp de KDE, dans Dolphin, je ne peux pas ouvrir de fichier car le chemin utilisé est « mtp:/path/to/file/… que les applications ne supportent pas… ou plutot « The process for the mtp protocol died unexpectedly ». Retour à la vieille technique de copier le fichier dans un dossier temporaire pour ensuite l’ouvrir, la lose.

Mi-2015 passé et j’ai un système d’exploitation incapable de gérer le protocol MTP correctement. A noter que l’erreur d’ouverture du fichier je l’ai obtenu grâce à Okular, car Gwenview et KolourPaint s’en branlent complétement et n’affiche aucun message d’erreur, on sent les développeurs bien branleurs à en faire le moins possible, ou ultra débutants. Ah le libre, ah oui ça sucks. Le début de la fin de KDE peut-être.

Dolphin: Pourquoi, mais pourquoi dans le menu contextuel d’un fichier HTML, pour « Ouvrir avec » j’ai 3 fois Chromium et 2 deux Kate dedans. Sérieux, je n’ai jamais touché à ce truc, comme est-ce possible… Prochainement un CCleaner version linux ?

Dolphin: pas de barre de progression à l’ouverture d’un zip… un zip de 150 Mo, je ne savais pas si cela avait planté ou si c’était en cours de chargement…

Dolphin: Le tri par « Type » dans Dophin est une blague… Pour reproduire le bug, j’ai trois types:

  • « plain text » pour les fichiers « *.txt »;
  • « backup file » pour les fichiers « *~ »;
  • « PHP script » pour les fichiers « *.php »;
  • « HTML document » pour les fichiers « *.html ».

Je voulais supprimer tous les fichiers de backup d’un dossier, je vais donc trier par Type, et je m’attends à ce que « backup file » soit en tête de liste (ou en fin de liste en fonction de l’ordre de tri). Ce n’est pas le cas à cause des majuscules (les minuscules sont après les majuscules). C’est presque un problème de « locale », mais non.

VLC: fait lagger un jeu sous wine en lisant une musique ogg

ark: ne permet toujours pas de choisir le niveau de compression (suite à la suppression de l’UI de 7z, j’ai du remettre ark), surement car c’est juste une interface pour plusieurs programmes lancés en ligne de commande, MAIS, cela ne l’empêche pas de connaitre le paramètre du niveau de compression pour chaque programme (et de proposer seulement les niveaux disponibles).

Firefox: Impossible de renommer un fichier dans la boite de dialogue Ouvrir… Firefox qui utilise une boite de dialogue Ouvrir différente de KDE (gnome surement).

Dolphin: bug critique qui m’a poussé à publier cet article: redimensionner une colonne dans le mode de vu « détail » fait planter l’application.
https://bbs.archlinux.org/viewtopic.php?id=201550

Beaucoup de Dolphin dans cette liste. Le gestionnaire de fichiers, l’élément le plus important dans un système d’exploitation, complétement à la ramasse dans KDE. La qualité de KDE s’est fortement dégradé au point que je songe à changer de desktop.

Kate, bugs forever

Kate (version 5.0.0 mai 2015, Kde framworks 5.9.0), qui comprend rien quand un fichier contient de trop longue ligne, monsieur m’ouvre le fichier qu’en lecture seule car son buffer est trop petit (4096). Il me propose débilement d’augmenter la limite temporairement, que c’est zentil. NON MAIS OÙ ÇA S’EST VU ÇA ? J’en ai utilisé des éditeurs de texte sur Windows, aucun ne m’a affiché ce genre de message, aucun, car c’est DÉBILE, bien sur que je vais l’augmenter trouduc, sur quelle planète les développeurs vivent ???

Ne parlons même pas de la LENTEUR de la frappe, un pauvre fichier json d’une seule ligne de moins de 8 Ko, la saisie de texte LAG (parce que je suis un ouf, j’édite sur la même et unique ligne de texte). CA LAG comme pas possible, je n’ai jamais vu ça sur Windows. Putain Kate sérieux, je n’ai jamais autant critiqué un logiciel de ma vie (cf tous les autres articles de mon blog, je devrais faire une catégorie Kate…). Je suis dans un fichier de 4 391 caractères composé d’une seule ligne, l’édition n’est pas fluide du tout, on sent le logiciel pensé pour fonctionner avec de courtes lignes.

Pour rappel, on parle quand même d’un bête éditeur de texte avec coloration syntaxique de base. Le genre d’application qui existe depuis la nuit des temps, qu’il en existe des tonnes en open source, et que cela nécessite pas une conception ni des algos ultra évolués. Putain de merde quand même, vivre ça en 2015, il y a que KDE pour faire ça.

KDE devrait virer tous les devs qui y ont contribuer, en voici la liste (c’est l’avantage du libre):

  • Christoph Cullmann, non de dieu, sacré mainteneur mon coquin, son rôle principal est de maintenir les bugs à jour, marque de fabrique du logiciel;
  • Anders Lund, spécialisé dans la conception de bugs complexes et innovants;
  • Joseph Wenninger, moins doué que le précédent, sa méthode consiste à glisser de simple usleep() dans le code, très pratique pour justifier un soudain gain énorme de performance pour les prochaines releases et prouver qu’on a travaillé dur;
  • Hamish Rodda, les bugs, c’est sa passion, actuellement au poste de designer de mauvaises expérience utilisateur, son pari a été gagné avec Kate.

Je pense que la palme d’or va pour Matt Newell, testeur, qui a validé que les bugs se comportaient comme prévu. Merci à toi, mec.

Pour rigoler, j’ai ouvert un autre fichier json, de 150 KB cette fois-ci. Outch. J’ai le retour à la ligne dynamique d’activé, quand on édite de grande ligne, c’est bien pratique. Déjà, la sélection rame à mort, car j’ai voulu sélectionner une ligne pour savoir combien de caractères par ligne il y avait… après avoir réussi à sélectionner une ligne, le nombre de caractères sélectionnés n’est pas affichés… ahahah, je ne savais pas que ça existait encore des éditeurs qui ne proposait pas ça, merci Kate de m’avoir faire rire.

Donc, il y a 110 caractères par lignes, la ligne unique du fichier est donc affichée sur plusieurs lignes, cela fait donc un peu plus de 1 300 lignes à afficher. Sauf que la barre de scroll ne tient pas du tout en compte de ce nombre de ligne affichée, j’ai donc une barre de scroll qui sert à RIEN, en scrollant, je vais à la fin de la ligne. La barre de scroll fonctionne par ligne réelle dans le fichier et non par ligne affichée… WOOT. Je disais quoi tout à l’heure ? Ah oui, que c’est un logiciel pensé pour fonctionner avec des lignes courtes… On parle quand même d’un éditeur de texte… La désactivation de la coloration syntaxique ne change évidemment rien au lag (au moins on sait que ça ne vient pas de là).

Lamentable, LAMENTABLE pour un logiciel BASIQUE: afficher et colorer des lignes ce n’est pas la fin du monde, la « techno » existe depuis 100 ans si je puis dire. LAMENTABLE également car c’est un logiciel clé de KDE, une honte.

En bonus, l’aspect modulaire de KDE fait que cette merde d’éditeur de texte est une librairie réutilisable par d’autres applications: KatePart. En particulier, c’est réutilisé par KDevelop. L’aspect modulaire est une bonne chose, sauf quand ce qui est réutilisé est de la merde en barre. Cela pourri tous les logiciels qui s’en servent.

Fuck Kate, Fuck KDE.

Système de paquets

En faisant le tri, je découvre à la surprise générale que j’ai un dossier ~/.thumbnails/normal/ avec 11 200 fichiers pour 550 MB, à en faire crever Gwenview (qui peut donc rejoindre digikam). C’est là l’originalité de linux, on ne sait pas trop où est quoi, c’est le gros bordel avec tout dans le dossier home sous forme de fichiers cachés (berk). Cela aurait pu au moins être dans ~/.cache/thumbnails, merde! Même mieux, ~/.tmp/cache/thumbnails.

L’adoption d’un standard permet à n’importe quel administrateur (ou utilisateur d’ailleurs) de purger un dossier sans risque de perdre des données. Par exemple, le dossier ~/.tmp pourrait se vider sans problème, sans réfléchir. Encore faut-il que les développeurs sachent aller au delà de leurs complexes et cesser de penser qu’ils sont seuls au monde.

Du coup, pour connaitre quels sont les dossiers/fichiers qui prennent le plus de place, j’ai décidé d’installer KDirStat. Un magnifique logiciel qui scanne tout dossier pour ensuite afficher un beau graphique.

J’utilise l’équivalent windows au travail, un pur régal. Sur linux… ahahahaahah. Si sur windows j’avais pu utiliser exactement le même logiciel pour windows XP et windows 7, sur linux, il m’est impossible d’installer KDirStat.

Sur la page du paquet de ma distribution, il y a deux dépendances: kdelib3 et optipng. Si la seconde est facile à résoudre, la première est la plus drôle:

# pacman -S kdelibs3
erreur : impossible de trouver la cible : kdelibs3

Un commentaire récent m’indique que je ne suis pas le seul dans ce cas:

Comment by rajuk 2015-05-13 09:20
Fails to build, unable to satisfy kdelibs3 dependency.

Ouaip, magnifique système de dépendances. Ce magnifique système où un logiciel qui évolue empêche tous les autres logiciels qui n’ont pas été migré de fonctionner, ça c’est la classe.

C’est surtout le gros problème de linux, si il n’y a plus de mainteneur, le logiciel cesse d’exister.

Fuck linux ?

KDE: la merde est de retour

Cela faisait longtemps que je n’avais plus eu de couille avec les mises à jour. C’était trop beau pour durer. KDE est passé à la version 5.6 début janvier. Le temps que ça arrive dans ma distribution (Arch linux), je fais la mise à jour fin janvier, et c’est la catastrophe.

Tout d’abord, c’est devenu moche. Le theme Oxygen ne peut plus être utilisé. Ca c’est fait.

Seconde chose qui se remarque très vite, la perte des préférences. Konsole n’a plus la police que j’avais choisi, et je ne suis pas le seul à avoir remarqué cela. Autre changement notable pour Konsole, c’est qu’à présent les onglets ne se restaurent plus au redémarrage. Je ne sais pas si il y avait une option avant, mais en tout je ne trouve rien dans les options actuelles.

Ensuite, le classique PC qui rame, comme d’habitude, c’est surtout après avoir lancé Firefox, avec l’expression typique: « oh non ils ont encore fait les bourrins chez Mozilla ». Le gestionnaire des tâches me montre le réel coupable: baloo qui s’est réactivé. Pas de problème, j’en avais déjà parlé, j’ai simplement à relancer les mêmes commandes. Ceci est la routine, rien de dramatique, mais cela vaut la peine de le signaler car cela s’ajoute à la pile de problèmes et cela peut facilement être la goute qui fait déborder le vase.

Dans la même session, Dolphin qui plante, à chaque fois, chaque jour au moins une fois. Première fois de ma vie que je le vois planter. Un bon gros freeze sans raison, je ne faisais rien dedans, l’application était en arrière plan tranquille, puis je retourne dessus et plus rien… Fantastique.

Peu de temps après, la découverte que vagrant ne fonctionnait plus (il faisait parti de la mise à jour). Dans un projet sous vagrant, impossible de lancer la machine virtuelle. Une recherche m’a permis de résoudre ce problème, la machine virtuelle était bloquée dans le GRUB, cool.

Peu de temps après toujours, car on ne découvre pas tous les bugs d’un coup, ce serait trop facile, je constate que j’ai perdu la préférence du nombre de lignes scrollées avec la molette de la souris. C’est revenu à la valeur par défaut de trois, au lieu de plus de 10. Je n’aime pas scroller pendant des heures pour rien. Pas de problème, je retourne dans les préférences configurer cela… sauf que c’est déjà sur la bonne valeur, de 12 lignes (Mouse wheel scrolls by). Ce n’est donc plus pris en compte par Kate et Konsole, et surement d’autres logiciels. Encore une belle régression.

À ce moment là, j’ai vu une autre belle régression dans le panneau de configuration (System setting), les info-bulles scintillent lorsque l’on passe d’une icone à l’autre. Comme si il y avait un fondu, mais raté. J’en ai fait une vidéo tellement que c’était drôle, ce genre de bug en 2015 ? C’est possible ? LOL. Soyons gentil, on dira que c’est ma carte graphique qui suck, avec des drivers qui suck, alalala (mais non, c’est bien un bug).

On en arrive au crash du serveur X. Alors je ne sais pas trop si ce n’est pas kwin qui a plutôt fait de la merde au point de faire monter X à 100% du cpu et conduire au crash. Mais ça a crashé, première fois également que je vois ça. Fort heureusement, contrairement à Dolphin, le serveur X ne crash pas tous les jours (ouf, il crash très rarement heureusement).

Encore une régression dans Kate, quand on déplace un texte sélectionné, la sélection se positionne sur les caractères suivants au relachement du click. Au mieux on fait en sorte que la sélection disparait, mais on ne sélectionne pas du texte qui n’a rien avoir… Cela enchaine les fails pour Kate, cela me fait penser à mon très vieux billet relatif aux problèmes de conception. Cela doit donc toujours être la même équipe de bras cassés qui s’occupe de ce logiciel.

Puis il y a le bug ultra bloquant, xbindkeys ne fonctionnait plus. Et il ne fonctionne toujours pas d’ailleurs, au point que ça va bientôt être bloquant si je n’ai pas de solution. Pour résumer, Xbindkeys permet de lier une touche (ou combinaison de touches) à une commande. Cette même commande peut générer des touches, ainsi on peut lier une touche à une touche, ou une touche à une action. Dit autrement, cela fait gagner un temps monstrueux et c’est un confort non négligeable. Il est possible de faire la même chose sur Windows, mais je préfère la manière de faire de linux… du moins je préférai.

Après plusieurs tentative pour Xbindkeys, je découvre que le bug ne se produit que sur Kate et Kwrite, c’est con, mes macros concernent justement les éditeurs de texte (et donc ces deux logiciels). C’est donc un très bel enchainement de fails pour Kate: 1 bug bloquant plus 2 gênants.

Un dernier mot pour Konsole, il plante également par moment, en tuant donc tous les processus lancés dedans. Une autre grosse régression, il n’est plus possible de déplacer les onglets de session (dans Konsole toujours, oui oui, c’est bien une régression sévère… bon d’accord, une régression juste chiante). Je n’ai jamais autant adorer utiliser linux…

Si j’ai eu des bugs un peu dans tous les sens, je blame en particulier KDE qui sort une mise à jour sans tests poussés. Mais je me souviens à présent pourquoi cela faisait longtemps que je n’avais plus eu de bugs. Je n’installais jamais les mises à jour de KDE le jour de leur sorti, j’attendais toujours qu’ils fassent leur mise à jour de bugfix. Dit comme ça, Linux fait comme Windows, cela prend les utilisateurs pour des béta testeurs.

Es-ce le prix à payer pour être à jour ? Non clairement pas, je me paie ces bugs à cause des développeurs qui font de la merde. Sérieux, des fois je regarde leur code source, j’ai juste envie de vomir, le nom des variables suffit pour avoir peine pour eux, à se demander pourquoi à chaque nouvelle génération de développeurs tout est ré-écrit.

Déjà que c’est moche de base, si en plus c’est buggé. FUCK KDE. Les fautifs sont ceux qui sortent les logiciels buggés, ce n’est pas à cause de la distribution qui les fournis sans avoir débuggé la merde upstream (mais parfois la distribution ajoute des bugs en voulant fournir un beau bureau intégré, mais ce n’est pas le cas d’Arch linux dont le but est de modifier au minimum les logiciels).

Bref, j’écris ce billet en retard car il y a eu tellement de bugs que je le gardais de coté pour le remplir au fur est à mesure… mais j’ai tout simplement jeter l’éponge. Es-ce là la contre partie d’une distribution en rolling release ? La distribution fait son travail, j’ai des logiciels à jour, le problème est réellement des développeurs qui sortent des logiciels non terminés sous prétexte d’une migration progressive.

Pour terminer, une citation du forum de ma distribution car je ne suis pas le seul (et ni fou)

I am a litle sad to see that each time a new version of the desktop (any desktop…) is released, we have something bugy for a year or two before it become stable. As a consequence, we are left most of the time with beta software.

Je partage exactement le même sentiment.

Git stash: perdre du code, c’est possible

Parfois on pense naïvement que certains logiciels sont vraiment sûrs. C’est faux et on l’a vu avec OpenSSL (heartbleed, etc), une librairie critique. A présent c’est à git de me décevoir, célèbre logiciel de gestion de source.

Le bug est simple, vos fichiers sont perdus, un comble pour un logiciel de versioning de fichiers. La commande en question est git stash à utiliser when you want to record the current state of the working directory and the index, but want to go back to a clean working directory).

Après un git pull foireux, je me dis que je vais stasher mon code. ERREUR, car j’étais dans un cas particulier où git stash détruit magnifiquement les fichiers sans avertissement. Voici la procédure de reproduction du bug:

$ git --version
git version 2.2.1
$ mkdir test
$ cd test
$ git init
Dépôt Git vide initialisé
$ # création d'un fichier nommé "important"
$ echo "initial" > important
$ cat important 
initial
$ git add .
$ git commit -m "init"
[master (commit racine) 2847f2d] init
 1 file changed, 1 insertion(+)
 create mode 100644 important
$ # puis soudain, erreur de logique humaine, un fichier se transforme en dossier
$ rm important
$ mkdir important
$ # creation d'un fichier woot.txt dans important
$ echo "super important" > important/woot.txt
$ cat important/woot.txt 
super important
$ # le temps passe et un jour... git stash
$ git stash
Saved working directory and index state WIP on master: 2847f2d init
HEAD est maintenant à 2847f2d init
$ git st
Sur la branche master
rien à valider, la copie de travail est propre
$ # ensuite on restaure nos données
$ git stash pop
Suppression de important
Sur la branche master
Modifications qui ne seront pas validées :
  (utilisez "git add/rm ..." pour mettre à jour ce qui sera validé)
  (utilisez "git checkout -- ..." pour annuler les modifications dans la copie de travail)

        supprimé :        important

aucune modification n'a été ajoutée à la validation (utilisez "git add" ou "git commit -a")
refs/stash@{0} supprimé (9dcc39966175d918f30bb21bfbe11c9e6e8ab5ca)
$ # et BIM, tout a disparu
$ ls -a
.  ..  .git

Le dossier important n’existe plus, il n’était d’ailleurs pas versionné. A noter que git stash -u ne change rien sur la perte de données:

$ mkdir test02
$ cd test02
$ git init
$ echo "initial" > important
$ git add .
$ git commit -m "init"
$ rm important
$ mkdir important
$ echo "super important" > important/woot.txt
$ git st
$ git stash -u
$ git stash pop
$ ls -a
.  ..  .git  important
$ cat important
initial

Évidemment, c’est totalement con de transformer un fichier en dossier. Sauf dans le cas d’un lien symbolique vers un dossier qui se transforme en un vrai dossier, exemple:

$ mkdir test02
$ cd test02
$ git init
$ mkdir dir1
$ ln -s dir1 dir2
$ echo "initial" > dir1/important
$ git add .
$ git commit -m "init"
$ unlink dir2
$ mkdir dir2
$ echo "super important" > dir2/woot.txt
$ git st
$ git stash
$ git stash pop
$ ls -a
$ .  ..  dir1  .git

La logique humaine est incompréhensible sur le pourquoi du comment on se retrouve dans ce cas, au point de se dire que c’est à cause d’une mauvaise utilisation, mais je ne pense pas, un logiciel de gestion de version se doit de gérer tous les cas, mais surtout il se doit impérativement d’informer l’utilisateur en cas de perte de données possible.

Dans mon cas personnel, c’était un dossier « test », avec heureusement presque rien dedans. Sur un repository de longue date, on oublie facilement qu’un lien symbolique a été transformé en dossier, et on fait confiance au stash qui est censé tout sauvegarder (sauf les untracked, sauf si c’est demandé, dans ce cas comme on a vu, le untracked ne restaure pas les bons fichiers ensuite).

C’est un cas que je qualifierai de très exceptionnel, mais il est arrivé. Perdre des données c’est possible. J’ai quand même cherché pour savoir si j’étais tout seul, mais il semblerait que non, avec TortoiseGit, dont la conclusion est:

I’m able to reproduce this with git version 1.7.10.msysgit.1 as well as on Linux, so please report this upstream to the git mailing list. Thank you.

Même si le cas ne semble pas trop identique (cela concerne des fichiers ignorés), le problème est le même: perte de données. Moi qui utilisait git stash très souvent avec une grande confiance, à présent un backup du working directory sera effectué pour éviter toutes mésaventures sur du vrai code.

Cela me rappelle la fiabilité de linux avec cet article, où au lieu de couper/coller des fichiers, je devais, suite à un bug, copier/coller puis supprimer une fois que tout était bon pour éviter la perte de données… rebelote avec git, faire un backup avant de lancer une commande de « backup »… ahahaha, mais c’est vraiment triste pour linux en fait.

Firefox: Mauvaise communication

Firefox 34 possède la possiblité de faire de la communication en temps réel directement dans le navigateur en proposant son propre service de WebRTC: Firefox hello. Tout content de voir cela dans la release note, je me suis dis que je vais aller tester cela.

Je clique sur le lien de la release note pour en savoir plus. Je ne vois toujours pas comment m’en servir, je ne vois rien de nouveau dans l’interface Firefox.

Je clique sur le lien de cette même page, et je vois enfin une capture d’écran qui m’indique où se trouve la fameuse icone. Sauf que… je n’ai pas ça moi. Moi je n’ai rien.

J’ai peut-être raté un truc en lisant en diagonale (après tout je m’en tape du bla bla, je veux juste m’en servir merde). En lisant les pages ci-dessus, je n’ai trouvé aucune information supplémentaire.

Cela commence à gonfler. Firefox qui met en avant sa killer feature avec tout ce buzz, mais elle est introuvable… WTF. J’ai bien la dernière version pourtant.

C’est parti pour une recherche sur un moteur de recherche, je tombe sur le lien suivant de la kb. Si le bouton n’est pas visible, il faut donc l’ajouter soi-même. Super, essayons… ah, le bouton est introuvable dans la personnalisation. Je retourne lire l’aide, et je vois:

If you don’t see the Hello button in the Additional Tools and Features drawer, please check back in a few weeks. The feature is being made available to users on a gradual basis to ensure that our server infrastructure is able to keep up with the load.

WHAT THE FUCK. L’idée c’est donc: « on va buzzer sur cette feature, mais on va fruster les utilisateurs en l’activant petit à petit ».

On constatera que l’aide française est plus cool:

Si le bouton Hello n’est pas disponible dans le panneau Outils et fonctionnalités supplémentaires , allez dans about:config et changez le paramètre Loop.throttled pour false. Vous pouvez toujours recevoir des appels d’un utilisateur Hello entre-temps.

L’aide française nous donne la solution pour quand même activer Firefox Hello, tandis que l’aide anglaise nous laisse frustré.

Sachant déjà que la majorité des personnes n’iront même pas consulter l’aide, Firefox passe juste pour un navigateur buggé. Au hasard de mes recherches, il semblerait que c’est seulement 10% des personnes qui ont cette option active… c’est ridicule! 9 personnes sur 10 vont se demander où est cette satanée option.

Bref, comme quoi on peut se rater sur autre chose que du code. Les choix totalement débiles en communication, ça existe. Ce qui est surprennant, c’est que je n’ai vu que très peu de sites de news parler de ce problème.

Heartbleed, OpenSSL, Heartbeat

Mon problème récent avec le kernel linux et/ou les drivers nvidia me fait penser à Heartbleed et Shellshock. Je m’étais abstenu d’en parler ici tellement que ces failles ont bien été expliqué et ont montré à quel point la négligence de qualité existe, en particulier pour OpenSSL.

OpenSSL, un logiciel que j’ai déjà abordé dans un de mes articles, dont le titre est « Quand on code avec les pieds ». J’en avais conclu que les gens en avait marre de patcher OpenSSL et cherchent une alternative, et ce, bien avant Heartbleed.

Avec Heartbleed, même ceux qui n’ont jamais regardé le code d’OpenSSL ont reçu un message clair: OpenSSL est réellement codé avec les pieds. Créer une alternative n’est pas facile, des entreprises se sont mises à faire des dons pour améliorer le tas de merde, mais ça restera un tas de merde, toujours difficilement compréhensible mais avec moins de failles surement.

Concernant Heartbleed, les explications écrites par des journalistes qui ne comprennaient rien étaient souvent vagues ou erronées. Il existe même un hall of fame des pires erreurs journalistiques à ce sujet qui démontre très bien qu’un journaliste de nos jours ne mérite aucune crédibilité aveugle (finalement comme tout sur Internet, mais aussi à la télévision).

Du coup, pour comprendre j’ai consulté la RFC (ou ce lien, je ne sais plus), le but est de faire un keep-alive de la connexion TCP pour éviter une nouvelle connexion et donc une renégociation longue et couteuse en CPU de la connexion sécurisée. Bref, un PING/PONG basique, à titre d’exemple, c’est ce qu’IRC fait déjà depuis des années, SSL ou non puisque le ping/pong est au niveau applicatif. Avec Heartbeat, l’application n’a pas à se soucier du ping/pong puisque c’est réalisé par la couche SSL.

Comme sur l’IRC, quand un client fait un PING, le client transmet une chaîne arbitraire dans la requête et le serveur répond avec cette même chaîne arbritaire. Le contenu de cette chaine arbitraire n’a de sens que pour le client, il peut s’en servir pour suivre l’évolution des réponses du serveur, mais pas obligatoirement. Par exemple sur l’IRC, un usage bien connu est de calculer la latence avec le serveur en utilisant l’heure comme chaîne arbitraire (et on mesure ainsi le temps que le message a mis pour être envoyé et reçu).

C’est exactement la même chose avec Heartbeat (à quelques détails prêt) le client envoie des données arbitraire, et le serveur répond avec ces mêmes données. Rien de sorcier, c’est expliqué très simplement ici, sauf que contrairement à l’IRC qui est exclusivement du texte, en SSL c’est du binaire, et là, « c’est le drame« .

Une erreur de débutant de base, dont le principe bien connu dans le web est: ne jamais faire confiance aux données que le client transmet. Si le client dit qu’il a envoyé une chaîne aléatoire de 64KB, il vaut mieux en être sûr avant de lire ces 64KB qui n’existent peut-être pas.

On disait que l’open source est plus sûr car il y a des gens qui relisent le code et tout et tout, foutaise! Relire du code de merde ça ne fait plaisir à personne, déjà quand on est payé à faire ça c’est chiant, alors faire ça bénévolement et bien, je vous laisse imaginer.

A part suivre l’évolution du code et relire chaque commit, c’est impossible de partir dans un code source à la recherche de bug. C’est impossible pour un bénévole qui n’a aucun autre intérêt que de se faire chier à faire un rapport de bug qui peut être refusé et ensuite se faire traiter comme une merde (au moins Google paie bien pour trouver des bugs dans Chrome). Par contre, quelqu’un qui aurait un intérêt à exploiter un logiciel, lui il va passer du temps à la recherche de faille et on peut compter sur lui pour ne pas les signaler.

D’ailleurs, voici le commit qui a introduit le bug. Très pénible à lire, ce qui me choque le plus c’est la grosse duplication de code entre les fonctions dtls1_process_heartbeat(SSL *s) et tls1_process_heartbeat(SSL *s) qui ont exactement la même signature et font la même chose. Comment une telle chose peut être acceptée ? Ne serait-ce qu’en terme de maintenance derrière. Qu’il existe deux fonctions avec deux noms différents car c’est deux protocoles différents, OK, mais derrière le même code peut être utilisé.

Mais pour avoir déjà travaillé avec OpenSSL pour KvIRC, et pour avoir déjà lu des avis dessus, il est clair que ce projet doit mourrir. C’est juste rédhibitoire, rien que le style de codage est un non sens mais ça c’est une question de goût.

En dehors de la technique, il y a des râleurs qui pensent encore que l’open source c’est être redevable quand on en profite à fond pour en faire du fric. En effet, OpenSSL ne récolte pas beaucoup d’argent, mais c’est leur choix de ne rien demander en retour (l’open source n’est pas tout le temps gratuit). Je comprends les personnes qui se trompent sur l’open source (et gratuit), car quand on construit un outil gratuitement et qu’une autre personne utilise cet outil pour faire des millions, la conscience pousse à être reconnaissant envers l’outil. Mais ils sont dans l’erreur, d’autant plus que ce n’est pas forcément un choix puisqu’un commercial ou qu’un PDG n’a pas connaissance de l’utilisation d’outils open sources gratuits.

Personnellement, je ne donnerai jamais d’argent à des personnes qui codent avec les pieds et feront gaspiller tout l’argent en maintenance.

Pour revenir sur linux de manière générale, quand il n’y a pas d’entreprise derrière un projet, quand des bénévoles sont impliqués, en particulier quand ils sont étudiants et donc débutant, il est particulièrement important de comprendre que la négligence est vite arrivée, avec une qualité médiocre. On l’a vu dans ce blog avec Katepart, on le voit avec OpenSSL, et on le verra encore et encore. La question qui se pose est de savoir si …. c’est le prix à payer de la liberté ?