Réflexion informatique - De l'Obésité des développeurs
Non, ne croyez pas que je verse dans la grossophobie, même vis à vis de nos amis développeurs de logiciels, applications et sites. Mais je m’interroge vraiment sur l’obésité qui règne dans ces produits et qui participe à cette obsolescence programmée…par les logiciels et OS.
Mon collègue Lord rappelait récemment les origines de la scène Demo et traitait des compétitions 4K et 64K, soit donc développer des démos tenant dans 4 et 64 kilo-octets. Comme tout cela paraît loin et pourtant on touche au génie pour contourner cette contrainte. Et moi, quand je vois un lecteur de musique ralentir et se couper sur un Core i5 gorgé de gigahertz alors qu’on ne fait que du Word ou utiliser un navigateur, je me dis qu’il y a vraiment un gros problème. Qu’on ne me dise pas que c’est le seul système d’exploitation le coupable, on a des symptômes similaires sur des distributions GNU/Linux “out of the box” (que je traduirais par clé en main, visant le grand-public).
Rien que la taille moyenne d’une page web laisse songeur. On a multiplié la taille moyenne par 4 de 2010 à 2016 mais c’est dès 2008 que la taille a explosé pour passer du kOctet au MegaOctet avec les apparitions des feuilles de style, des scripts de toute sorte, et surtout des images pas forcément désirées, souvent peu optimisées pour le chargement. La plupart des images présentes dans les sites sont pachydermiques et utilisent parfois des formats inadaptés. On peut penser que c’est basique mais le développeur n’est pas un graphiste. Et le graphiste, il s’en fout trop souvent de ces détails techniques donc on est très vite dans le n’importe quoi. Je ne parle même pas des problèmes de bande-passante, de formats de vidéos qui ne cessent d’évoluer, d’être imbriqués dans des surcouches, des players. L’apparition du mobile et la nécessité de prévoir une version spécifique à ce média n’a pas amélioré les choses. Les sites mobiles ont pratiquement la même taille aujourd’hui, et on peut parfois avoir des redondances dans les images, et objets ou … de l’illisibilité sur Desktop.
Sauras-tu trouver l’intrus?
Sauf que pour afficher des sites de quelques méga-octets, on consomme des centaines de méga-octets de mémoire vive, du cache, du temps processeur pour interpréter le code HTML, les scripts… Aujourd’hui, sur un mobile, j’ai très vite 500Mo de cache et il y en a bien les 2/3 dédiés au navigateur quand le navigateur ne fait que 100Mo. Le cache qui est sensé améliorer le chargement des pages devient un ralentisseur de l’ensemble du système : Un comble. Lorsque je lance Opera Android, qui est loin d’être le plus gourmand, j’ai 80Mo qui se barrent au démarrage. La page mobile de France-info, c’est encore 80 Mo de perdus. Même résultat pour Firefox ,Chrome qui même non lancé, reste déjà présent en mémoire du fait de son imbrication dans le système. Et j’ai utilisé un filtre antipub…Sur le figaro, sans pub c’est 90Mo qui se barrent je ne sais où avec une vidéo qui se lance, en plus pour faire fuir 30 à 80 Mo de plus. Et lorsqu’on ferme une page, tout ne revient pas à zéro avec quelques dizaines de Mo qui tardent à revenir. Sur Dekstop, c’est encore bien pire, même avec la résolution ridicule de mon PC sous Debian. Là, je suis désolé, mais il y a foutage de gueule. Le problème n’est-il pas à aller voir dans la profusion de standards foireux à gérer pour afficher tout ça et donc de bibliothèques converties à la va-vite ?
Aujourd’hui, Google nous sort des inventions débiles toutes les semaines et les navigateurs doivent suivre, comme Microsoft en son temps. Et je ne parle même pas du format AMP, le moyen de tout contrôler… Je me souviens d’un développeur dénonçant ce délire il y a 2 ou 3 ans. Aujourd’hui on nous sort des versions de navigateur au minimum tous les mois et pas que pour corriger des bugs et des failles de sécurité. Il n’y a déjà pas grand monde pour tester mais là, c’est le temps qui manque. Quand on arrive déjà à avoir la fonctionnalité, il n’y a aucune volonté de l’optimiser. Il faut sortir le produit, vite et le hardware fera le reste. Il y a tellement de turn-over dans le hardware que de toute façon, ça passera. Sauf que non, ça ne passe plus. Je ne changerai pas de terminal, mobile ou destktop pour juste un navigateur ou des sites web qui font moins bien qu’avant et n’apportent rien en fonctionnalités utiles. Rien que m’intégrer par défaut des outils comme Pocket dans un navigateur, cela tient du délire quand les chargements restent anormalement lents (désolé, j’ai laissé tombé Firefox Android aussi…). Et s’il n’y avait que le web…
Un jeu mobile qui tourne en résolution 720, c’est très vite plus de 800Mo et plus proche des 2Go de données! On ne va quand même pas me dire que c’est à cause de la diversité des résolutions, matériels. Les jeux consoles, sous prétexte de résolution HD se chiffrent maintenant en dizaine de gigaOctets. Les mises à jours, qui en plus tombent quelques jours après la sortie, mettent plus d’une heure à être chargées. Et pourtant le hardware n’est pas varié. Quand autrefois on prenait le temps de sortir les tripes de la machine, aujourd’hui il faut sortir du jeu dans les périodes clés, une suite de licence, tout le temps et sans jamais prendre le temps de tester et de sortir un produit correctement fini. Il n’est pas forcément étonnant de voir le succès du retrogaming car justement on a un produit léger, toujours amusant, fiable. Évidemment, le développement a changé avec des équipes plus grandes, des moyens plus importants et personne ne peut créer un jeu tout seul dans son coin comme dans les années 70-80, surtout quand il faut faire du multi-plateforme. Autrefois on savait qu’un studio avait peaufiné une des versions par rapport aux autres, maintenant j’ai l’impression qu’elles sont toutes baclées.
Les systèmes d’exploitation eux-même sont devenus des monstres. Un windows 95 d’il y’a 23 ans, ça tenait sur un CD soit 700Mo. Puis il a fallu passer au DVD quand une distribution GNU/linux, c’est tout de suite de l’ordre du GigaOctets, pour ne pas dire 2. Android, c’est souvent plus de 6Go de pris à l’installation, quand ce n’est pas carrément 10Go! Sur Windows 10, c’est au moins 15Go après installation. OSX, c’est 14,5Go. Ma debian, ça doit bien faire environ 4Go installé avec au moins l’ensemble des logiciels utiles. Mais que fait-on de tout ça? Et quand je pense qu’on essaie encore de fourguer des mobiles avec 8Go de mémoire, des pc avec 32Go. On ne va pas me dire que c’est tous les spywares officiels de Microsoft, Apple et Google qui font la surcharge et je ne vois pas quelle fonctionnalité marquante expliquerait le doublement de l’espace. Il y a du superflu, de la redondance, du vieux code moisi reconduit…Et ne parlons pas de certains pilotes dont le téléchargement seul prend 500Mo.
Souvenir du passé…
Mais une des raisons vient sans doute d’environnements de développement** très intégrés**, qui sont là pour faciliter la vie du développeur mais pas forcément pour optimiser le code pour la performance. Le simple éditeur de texte avec son compilateur, c’est bien loin car il faut aussi gérer des bibliothèques multiples, des objets dont on ne maîtrise pas toujours bien le fonctionnement. Ces environnements sont devenus eux aussi énormes. Quand je me suis remis à la programmation d’instruments de mesure, j’ai été dégouté de voir les piètres performances de ce que je trouvais pour faire du pseudo-temps réel. Attaquer le plus directement le hardware n’est plus possible, ce qui explique les ralentissements de toutes sortes. On passe par de grosses bibliothèques unifiées qui veulent tout faire et ne font finalement pas grand chose de bien. De là à se dire qu’il y a une grosse perte de savoir faire, il y a un grand pas que je franchis.
Le gros c’est beau aussi comme la Vénus de Willendorf
Dans ma boîte, il y a du Microsoft à tous les étages, à en dégoûter un responsable sécurité. Et donc il y a des fans de** Visual Basic** au point qu’il y a des formations internes. J’ai des collègues qui s’y sont essayé… Ils n’ont aucune base de programmation, pour certains. Aucune présentation de la logique du produit, à peine de l’interface. On les fait utiliser “l’enregistrement de macro” dans un Excel et on montre directement du code non commenté en plus! Tout ce qu’il ne faut pas faire … Ce qui m’a rassuré, c’est que je n’étais pas le seul à être choqué de cela. J’ai toujours cette habitude d’essayer de décrire les séquences par des phrases en français, de construire ensuite les briques du projet, de commenter tout ce que je fais, voir de laisser des instructions. On m’a appris comme cela dans les années 90, quand j’ai tâté du C. Et encore à cette époque, on cherchait à faire performant, parce que en plus, nous n’avions pas le dernier cri en matière de machine pour être performant. C’était une bonne école, finalement. Quand on pense qu’aujourd’hui on a des processeurs capables de faire en parallèle une somme considérable de calculs… Les priorités ne sont plus les même et on te sors du gros code qui tâche. J’en ai même vu me faire des sites avec du HTML made in MSWord, le truc tellement dégueulasse que ça pèse un âne mort. J’aime les ânes vivants et j’ai tout repris avec du bon vieil éditeur de texte pour diviser tout ça par 10. Dans le même genre, le service sécurité de ma boîte envoie un sondage qui passe par un player plus que douteux qui renvoie de multiples messages de sécurité alors qu’en plus on a déjà des outils en interne pour faire ça…
Le premier OSX…
Aujourd’hui, la réalité c’est qu’on a du mal à recruter des gens compétents. Je connais des auto-didactes plus compétents que des diplômés, parce que justement on envoie faire des formations inutiles, mal faites, sponsorisées. Mais il doit bien y avoir des gens plus indépendants, pédagogues pour reprendre les bases qui n’existent souvent pas. Ces bases, ce sont à la fois la compréhension des hardwares, leur structure, les cycles d’horloge, les piles, l’algorithmique et toute la logique qui va dans le sens de l’économie de moyen. Que l’on voit aujourd’hui des petites machines accessibles pour s’initier, c’est vraiment une aubaine mais s’il n’y a personne pour inculquer dès le départ les bonnes pratiques, c’est mort. Or aujourd’hui ce que je vois, ce sont des pubs sur les environnement de développement Microsoft ou Google, des contrats avec ces sociétés de la part des grosses institutions gouvernementales.
Après ce constat amer, je pourrais être simplement dégouté de l’informatique, dans le sens large du terme. Je crois pourtant que l’on peut se sortir de tout cela en revenant aux fondamentaux. Il faut déjà sortir de ces environnements promotionnés par les Google, Microsoft etc…Irais-je jusqu’à dire qu’il faut refuser ces évolutions de standard qui vont à l’inverse du besoin réel? Utopique… Car quand on développe un site, une application, c’est pour qu’elle soit sur les plateformes de vente, qu’il soit en tête des moteurs de recherche et il y a un beau petit chantage sournois de ces grosses sociétés. On a bien réussi à se débarrasser de Flash, on doit bien pouvoir se débarrasser du reste. Tout ça commence par la prise de conscience en amont que faire du code dégueulasse, ralentir tout, ce n’est pas rendre service à un client, ce n’est pas se rendre service quand on a des pannes. Imposer les notices et les commentaires c’est déjà la base sinon le temps perdu derrière sera encore pire. On se retrouve très vite à avoir le choix entre perdre du temps à comprendre ce qu’a fait l’autre avant et tout recommencer soi-même. Et on en revient aussi à respecter quelques “standards”, partagés par le plus grand nombre et pas par les plus puissants…. sachant que les plus puissants s’achètent le droit d’écrire ses standards.
Une Debian Gnome ?
Indirectement, on voit aussi l’impact de tout cela dans le petit monde de GNU/Linux où là aussi nous avons des bibliothèques, des mondes qui cohabitent, des environnements, des inimitiés. Avoir recours des choses issues de Gnome et de KDE en même temps, c’est possible pour n’importe quel utilisateur, c’est pourtant illogique pour moi car ça crée la présence de redondances donc de ralentissements. Je suis un peu Ayatollah mais je fais le choix d’un environnement et j’y reste avec les limitations que ça peut me créer. C’est un peu comme quand je voyais les portages d’iTunes et de Quicktime dans l’environnement Windows à l’époque où je l’utilisais, des trucs tellement pourris que ça se désinstallais mal, que ça mettait plein de merdes partout. Forcément, le choix implique l’exclusivité alors qu’aujourd’hui on veut tout et partout. On veut une application iOS disponible sur Android, comme avant du Flash transcrit en application. On veut une vidéo qui se lise partout, dans toutes les résolutions, etc…
J’ai l’impression parfois que pour certains développeurs, on dirait “saute par la fenêtre” , ils le feraient. Espérons plutôt qu’ils suivront l’exemple de tous les autres, ceux qui travaillent sérieusement en partageant aussi leurs bonnes pratiques et en pensant à tous les utilisateurs finaux.