 Je ne dois pas le dire, je ne dois pas le dire. Bienvenue à la traduction de Féffé, aujourd'hui sur le continuum utilisable. On n'a pas besoin d'y penser. Bonjour, ça fait plaisir que vous soyez là. C'est jour 2. Il faut que je fasse un peu gaffe, parce que l'un dernier, j'en avais préviens sur la minimisation de TCP, c'était un petit peu technique. Ce qu'on peut faire en temps programmeur pour... Mais personne ne le voulait pas. Personne ne voulait, et je sais. Et donc, je l'ai reproposé jusqu'à cette année, et personne, je l'ai pas. Et donc, j'en ai proposé un deuxième juste pour montrer que je ne voulais pas les embêter. Et c'est la deuxième qui a été acceptée. Et donc, il a fallu que je prévois ça en vitesse. Donc, ça a été préparé très rapidement. J'espère que ça a quand même aidé. Donc, j'ai simplement commencé. Il y a plusieurs fonctions d'arriver au même résultat. Donc, ça a commencé dans ma carrière. J'ai décidé que je n'y créerai jamais de programmes pour dont des vies dépendent. Donc, par exemple, des centrales nucléaires ou des choses pour la médecine. Et ensuite, j'ai rencontré quelqu'un qui disait qui programmait pour les centrales nucléaires, qui disait que c'est pourtant bien sympa. Et tu prends machin, et ensuite tu fais ça. Et si les gens qui font ça ne connaissent pas la propre limite, c'est un petit peu problématique. Et donc, oui, il y a des gens qui sont comme ça. Et bon, voilà. Donc ce que je trouve problématique, c'est qu'on apprend la programmation de façon explorative. C'est pas quelque chose qu'on apprend d'un coup. On cherche les limites. Et donc, par définition, on ne connaît pas encore les limites qu'on a. Donc, c'est-à-dire que les gens arrivent toujours à la limite. Ils travaillent toujours à la limite. Quelqu'un qui écrit du logiciel, il va aussi loin qu'il pense qu'il peut aller. Donc, c'est-à-dire qu'en conséquence, c'est généralement des trucs qui ne sont pas complètement compris. C'est juste les technologies que la personne vient de comprendre. C'est un petit peu le problème. Et ça va être encore renforcé, parce que c'est une dépendance. Et donc, il y a des modules de 3-détières qu'on apporte. Et donc, on pense que le tiers, c'est ce qu'il fait. Sauf que c'est exactement des gens qui eux aussi travaillent de façon explorative. On peut aussi y penser, lorsqu'on fait un experiment. Donc, quelqu'un a trouvé un moyen de mieux gérer la complexité, par exemple de modulariser. Et on espère que le logiciel qu'on écrit avec, qu'on écrit avec, on fait mieux. Et qu'est-ce qui se passe ? Nous écrivons des logiciels qui sont encore plus gros, au lieu d'écrire des logiciels qui sont plus simples. Donc, je pense que ce n'est pas un problème de la programmation, c'est un problème avec les hommes. C'est la façon dont on a évolué, donc il faut qu'on apprenne à gérer ça. Et donc, je vais prendre une théorie, que j'appelle la théorie des gradients. Donc, la thèse, c'est que les gens utilisent leur environnement comme un endroit à optimiser. Et donc, ils cherchent le meilleur point, un optimum. Et donc, quand on ne connaît pas l'environnement, on va chercher. Et donc, on voit ça. Par exemple, lorsqu'il fait trop froid, on va voir au chauffage, et puis on va rilé le chauffage, pas à vers juste ce qu'on veut avoir, mais vers super chaud. Et ça fonctionne aussi pour les voitures, ça fonctionne dans son e-card. On va regarder jusqu'où est-ce que je peux aller avant de devoir tourner. Et donc, on ignore le chemin jusque-là, alors qu'il pourrait être très bien. C'est pareil pour le choix de la vitesse. On accélère jusqu'à ce qu'on ne se sente pas bien et ensuite on freine. Ou alors, dans les... Lorsqu'on cherche un... Dans un annuaire, on va ouvrir un endroit où on pense que ça va passer et ensuite, on recherche et on se rapproche. Sur une carte, ça va ressembler à ça. Donc, on cherche, on descend. On essaie de chercher le point le plus profond, mais dans certains moments, ça ne fonctionne pas. Donc, lorsqu'il y a... Lorsque je ne peux pas revenir, et ça marche, je ne sais pas non plus, lorsqu'il y a des endroits où on ne peut pas revenir. Et donc... ou lorsqu'on ne peut pas revenir, pour une raison, surtout dans les difficultés, ça existe. Et donc, ce sont les problèmes que les gens ont. Donc, lorsqu'on a comme 2 semaines d'abonnement avec d'abonnement d'essai, on oublie de se désabonner. Ou alors, la recherche de la cherche, la dépendance au jeu. Et généralement, ou alors, on a déjà suffisamment investi, on ne va pas arrêter maintenant. Donc, la sécurité, ce n'est pas un gradient. Il n'y a pas de graduation. C'est un énorme problème. C'est un énorme problème de la sécurité informatique. C'est que, quand on est allé trop loin, on rend compte juste quand on a été hacké et ça, on ne peut pas le faire en arrière. La compliquée, c'est un petit peu comme la sécurité. Puisque, c'est pareil. Ce n'est pas graduel. Mais même, on pense quand la taux se contrôle, jusqu'au moment où on est plus au contrôle, mais parfois, on remarque beaucoup plus tard. Par exemple, rendre des données, c'est un pseudo gradient. C'est aussi pareil, un pseudo gradient. Quand on remarque qu'on a trop de données, c'est trop tard. Donc, la conclusion, c'est que la complice, c'est méchant. Et donc, on est trop léger avec. Et donc, il faut faire quelque chose contre. Lorsqu'on fait ça de façon professionnelle, on ex-analyse. Donc, on va retrouver relativement peu de vieux développeurs. Donc, ça, c'était la première. La première pensée qui m'a ramené. La deuxième, c'est le manifeste gnu. Bon, ce n'est pas du gnu bashing, mais c'est un bon exemple. Donc, c'est la première publication sur le gnu. Stalman qui disait, on va faire du Unix, et on va faire du Mac. Et on va faire tout ce qui est pratique. Et ça, c'est une phrase qui est horrible. C'est pratique pour qui ? Et ça, c'est un problème que beaucoup de gens ont. Ah tiens, on pourrait faire ça en plus. Et donc, ce qui manque, c'est qu'il y a une correction. C'est-à-dire, mais qu'est-ce que j'ai fait ? Et donc, ça, c'est le péché original qu'on a fait. Dans le développement. On a tous fait. Et on ne peut plus le corriger. C'est la seule façon de s'en débarrasser. C'est de balancer le module, tout arrêter, et puis de recommencer à zéro. Sauf que le logiciel, ça ne s'arrête pas. Je me suis aperçu. Lorsqu'on parle de logiciel, la seule chose qui aide, c'est que les logiciels meurent. Donc, et que justement, c'est quelque chose qui ne se passe pas. Et c'est une feature qui n'existe pas. Et donc, du coup, les logiciels, c'est pour toujours. On remarque aussi qu'en quelqu'un veut ramjouter. Donc, lorsqu'on essaie d'étendre le champ d'application de logiciel, est-ce qu'on va faire quelque chose d'un problème précis, ou est-ce qu'on va essayer de faire quelque chose de plus général ? Et on essaye à chaque fois de résoudre un problème générique. Et j'ai eu un moment, aha, où j'utilisais GDB. Et c'était un checkout. Donc, dans mon propre web server, j'ai fait un GDB init. Donc, j'ai créé, c'est l'initialisation pour le GDB. Donc, on écrit tous les paramètres de ligne de commande. Et donc, voilà. Et donc, on fait ça. Et GDB a commencé à dire, ah bah non, ce fichier, je ne l'utilise pas, je ne veux pas. Parce qu'il existe dans un fichier que tu n'as pas donné comme étant libre. Et donc, ça, c'était un essai de GDB de corriger ça. Ils ont regardé que la configuration est suffisamment puissante, que ça peut être un problème de sécurité. Et donc, du coup, il a essayé de verrouiller cette configuration. Et il a embêté plus de gens qui auraient pu faire ça le plus simple. Mais maintenant, c'est la première fois que j'ai vu ça. J'ai vraiment vu que ça fait bizarre. Donc, la deuxième chose, c'était avec V. C'est un éditeur que j'utilise. Et on peut faire aussi rajouter des commentaires. Dans les trois premières lignes, on peut changer la configuration. C'est prévu pour faire, tiens, j'ai un table de quatre. Sauf que le part-seur pour ça, il avait un problème de sécurité. Et on pouvait créer une fichier qui exécutait un programme lorsqu'on l'ouvrait avec VIM. Ce n'était pas fait pour, mais ça marchait quand même. Donc, ça, c'est le problème. Donc, je viens de gueuler contre la généralisation. Mais maintenant, on va généraliser sur ce problème. Et donc, un autre exemple qui est, nous avons un fichier CSV avec des tickets. Donc, on va dire qu'il ressemble à ça. Donc, c'est du CSV. Et donc, j'aimerais bien la somme du dernier fichier. Et donc, je fais un cut. C'est du UNIX. Et donc, il filtre. Donc, la première, elle doit dégager. Ensuite, on veut faire une somme. Donc ensuite, on fait baisser. Mais qu'est-ce qui se passe ? Il n'y avait pas un, mais Fred. Donc, cut n'a pas de problème avec. Telle n'a pas de problème. Elle n'a pas de problème non plus. Mais baisser n'aime pas ça. Donc, baisser est programmable. Et donc, on pourrait faire la fonction à commande pour une révision. Ça pourrait prendre une arbre en 6 ventres. Donc, cut, tail, épaisse n'ont pas de problème. Mais baisser peut être problématique. Mais, ce n'est pas suffisant. Il y a plusieurs façons d'être non menacants. Donc, on va essayer. Donc, un dossier, si elle n'est pas dangereux, lorsqu'il se comporte de façon prévue. Par exemple, chat de 156 ou baisser. Donc, la sortie a un format connu. Donc, on peut prendre aussi AVK. Et dans AVK, je n'ai pas de problème lorsqu'il y a Fred ou une fille. Mais, il ne va pas être appréhendé à la fonction. Ça fait mieux. Mais, est-ce que ce n'est pas dangereux ? Et qu'on va s'aperçoit que AVK n'est pas forcément pas dangereux, puisque je peux aussi écrire. C'est-à-dire le code que j'en vois. Je peux aussi créer des fichiers. Et donc là, on va aussi avoir cette différence. Dans l'industrie, c'est un gros problème. Surtout dans l'industrie des jeux. Des interprèteurs, donc de la business logic, dans leurs jeux, des petits scripts, pour pouvoir faire des scripts dans une nouvelle... Et donc un des interprèteurs préférés, c'est Lua. Et en fait, Lua est parfait, puisqu'on ne peut rien faire avec, qui n'est pas débloqué. Et donc, on peut rajouter d'ailleurs, mais ce n'est pas forcément un problème. On ne va pas propenser, mais on va penser que ce n'est plus un problème. Mais il faut qu'on y pense. De préférence, il faut penser à ce genre de choses avant de livrer. Voilà, une autre manière de voir la non-dangerosité des logiciels. Aujourd'hui, on travaille beaucoup avec des sandbox. On essaye d'éviter qu'un programme détruise des données. On sait, on peut le faire. AVK peut lire des systèmes de fichiers. Et ça continue. Revenons à notre manifeste GNU. GNU AVK, c'est une version particulière de GNU. Et elle peut accéder au réseau. Mais il n'est pas non plus... Il peut être dangereux. Ça continue. Après, AVK vient perle. C'est encore pire. Il peut éval. Éval, c'est à peu près le pire qu'on puisse avoir dans un langage de programmation. À mon sens. Un autre exemple sont les plugins dans les navigateurs internet. Netscape a été dans ce cas. On a toujours utilisé l'utilité plutôt que la non-dangerosité. Il y avait aussi le plugin Acrobat. Tout ça, c'était vraiment de la merde. C'était toujours du code natif. Il pouvait faire tout ce qu'on... Tout ce que le système lui permettait de faire. Et c'était un choix conscient de la part des développeurs de browser. J'essaye d'attirer votre attention à vos programmeurs qu'on ne peut pas simplement mettre quelque chose dans un programme qui s'autorise tout ce que le système lui permet de faire. Le JavaScript, c'est un peu pareil. Le JavaScript peut accéder à certains droits dans le système qui lui permettent de faire tout ce qu'il veut. Et souvent, dans les browser, ça pose problème. Là aussi, il faut corriger en aval. On tombe toujours dans le même piège. Si vous utilisez Windows, dans Windows, il y a un outil qui s'appelle AutoRuns. Sa seule fonction est de lister les plugins qui sont dans le système. En voilà un exemple. Regardez le nombre d'onglets. Tout ça sont les différentes manières dont les plugins peuvent s'insérer dans le système. Là aussi, il y a un choix qui a été fait, qui est allé dans la mauvaise direction. Mon quotidien, en termes de sécurité. Je vais voir des entreprises et je dois chercher des bugs. Et après, je leur dis les bugs quels bugs j'ai trouvé. Le résultat, c'est qu'il y a beaucoup de bugs. Les trackers de bugs sont d'énormes banques de données contenant des bugs et eux-mêmes ont des bugs. C'est aussi une stratégie des développeurs. Si le bug n'est pas important, je pourrais le réparer plus tard. Mais du coup, ce bug, il est quand même là. Les trackers de bugs sont réellement des endroits où les données se meurent, puisque les bugs restent très longtemps dans ces grosses banques de données. J'ai récemment découvert un bug dans Firefox, son identifiant et le chiffre que vous voyez là sur la diapositive et le chiffre est extrêmement élevé. Le premier bug que j'avais trouvé remonte à 2003. On peut voir en regardant ces différents chiffres que le nombre de bugs croit de manière exponentielle. Mais le bug que j'ai trouvé en 2009 a été corrigé. Quand il y a une nouvelle iteration du logiciel, normalement il faut corriger tous les bugs qui existaient avant. Voici une solution de Mozilla. Il est écrit ici ce bug a été automatiquement résolu après une certaine période d'inactivité. En fait, ils ont simplement fermé le ticket que j'avais introduit. Cela produit une cascade de comportement et de contre-comportement. Les bugs non importants ne sont jamais corrigés. Tout le monde écrit que le bug qu'on a trouvé est important. Ça veut dire que les bugs importants restent aussi, sans correction. Il n'y a que les bugs de sécurité qui sont prioritaires. Tout le monde écrit que les bugs sont un problème de sécurité. Il y a une drôle d'alliance avec une autre tendance. Les entreprises ont tellement de tickets de bugs ouverts que c'est absolument impossible de tous les corriger. La métrique qu'ils utilisent c'est le fuzzing et ça devient impossible parce qu'il a tellement de bugs. Il y a des bugs bounty ce que personnellement je définis comme étant une connerie de relations publiques. Les entreprises vont vous dire que notre logiciel est super parce qu'il y a tellement peu de bugs. En fait, c'est fou. Il y a aussi la mitigation. Les bugs sont tous encore là mais les exploits sont de plus en plus chers. Il y a des effets secondaires. Petit anecdote. Un jour j'ai rencontré le type qui fait le triage des bugs d'Internet Explorer. Ce type avait 30 ans et il avait vraiment l'air d'en avoir 60. Il m'a dit qu'il y a tellement de bugs qu'on n'arrive pas à tous les corriger. Entre temps, c'est amélioré. Ce que je veux dire c'est que ce sont des exemples dans la plupart des entreprises c'est la même chose. On gère les bugs mais on ne les corrige pas. Une fois Microsoft a déclaré qu'il y avait plein de bugs qui n'avaient pas le temps mais une liste de bugs. C'est le use after free. On fait ce qu'on fait c'est qu'il met des choses dans une stack et ensuite c'est plus tard qu'il va y avoir une possibilité de réutiliser ça. C'est la façon dont s'occupe Microsoft. Les gens de Chrome ont regardé ça. Ils ont dit c'est super. C'est la façon dont l'industrie prend la sainte. Le problème c'est que les bugs ne sont reconnus comme problème que lorsqu'il y a un exploit. Entre temps c'est standard. Quand on n'a pas d'exploit c'est pas reconnu. Il n'y a plus que les problèmes qui sont connus et le reste c'est juste là. Et donc le truc c'est qu'il y a toujours des problèmes de sécurité sauf que personne n'a envie de s'embêter à créer un exploit et donc du coup il y a plus de problèmes. C'est à dire qu'il n'y a plus de problèmes. Et il n'y a pas de développeurs qui aimeraient le mec qui a construit le pont de gêne. Donc ils vont aussi fixer au hasard. Et donc ça fait aussi plus problème. Et donc moi ce que j'en conclue c'est que de façon réactive de réagir sur la qualité et sur les bugs c'est pas une bonne idée. Je dis ça depuis longtemps mais c'est ce que j'appelle le build. Il y a beaucoup de logiciels et on travaille mais on y pense on peut livrer le client test et ils vont trouver les bugs et on va les régler. Donc ça c'est donc nous ce qu'on fait c'est qu'on livre quand le updateur fonctionne. Et donc ça c'est c'est et donc mon cœur de cible c'est les développeurs qu'est-ce qu'on est en train de faire. Donc est-ce que c'est vraiment ce qu'on peut faire ? C'est genre FDP donc non le marché ça n'a pas réglé le problème. Les gens achètent toujours Windows et macOS. Donc on peut essayer c'est plus la communication CDU donc c'est plus centre droit. On appelle un appel à la morale ça fonctionne pas non plus et dernièrement il y a le BSI qui est donc l'Institut pour la sécurité informatique et donc bah non ça ne fonctionne pas non plus. Et directement il y a Twitter où on balance de la merde sur tout le monde jusqu'à ce que ça aide. Et en fait ça donne du habitant parce que les gens n'ont plus envie de s'en occuper ils disent bah écoutez je sais pas moi je m'en fous il y a la solution hybride de l'église catholique qui dit que Saint-Pierre va le régler on appelle à la morale mais on va aussi faire des confessions et donc on va essayer comment est-ce qu'on fait ça de façon concrète ? On va on va essayer est-ce qu'on peut différencier le développement exploratif du développement ciblé et donc c'est donc donner du temps au DEF pour qu'ils puissent jouer comme ça ils peuvent développer aussi parce que sinon ils vont faire ça pendant le développement du produit et c'est de la merde mais je peux régler je peux en parler parler parler ça n'a pas encore aidé donc soit innovatif dans ce que tu fais mais pas dans la façon de faire une compagnie devrait être innovatif de faire un nouveau produit mais pas utiliser une base de données expérimentale parce que c'était pas fini donc je pense qu'il n'y a pas une seule cause donc il y a une partie je ne le savais pas non je savais pas que c'était de la merde que j'ai importé ou je ne sais pas comment faire mieux ça et il y a la deuxième chose aussi c'est que je l'ai fait donc je ne le savais pas on savait qu'on ne savait pas j'ai pas trouvé une bonne personne donc je l'ai fait quand même donc je pense que c'est juste une mauvaise excuse mais on n'a pas pu faire ça différemment on n'a pas que des bonnes gens donc le produit n'a pas suffisamment bon c'était pas de notre faute je trouve que c'est juste une production d'une vieille compétence on ne pouvait pas faire autrement donc au début ça ressemble même pas à des excuses ça ressemble à des best practices par exemple j'en ai un on fait des infrastructures critiques donc on fait ça dans le cloud parce qu'on ne peut pas avoir notre host pourquoi ? parce que c'est trop cher je comprends pas donc là on a une cascade une cascade d'excuse et donc maintenant ce que j'aimerais faire ce que je propose c'est qu'on va devenir un acteur legacy et donc c'est pas quel est-ce que c'est mal mais plus à quel point quelles sont toutes les mauvaises effets d'utiliser ça on va intégrer ça dans un autre projet et on va développer une métrique et donc on va et les gens ensuite vont essayer ça va être super populaire par les portes de cravate parce que tout le monde va essayer de tracer il y a déjà un exemple le CVSS qui est le common vulnerability scoring system et il y a plusieurs gens qui sont mis ensemble et qui ont essayé de définir une métrique et elle fonctionne dans l'industrie bien les gens sont vachement contents puisque ça fonctionne comme comme une analyse de risque historique est-ce que comment est-ce qu'on y arrive est-ce que c'est facile à utiliser ou pas il faut déjà avoir un compte ou est-ce que c'est via une réseau ou pas et qu'est-ce qu'on détruit est-ce qu'on peut changer l'intégrité et donc il y a un score qui retombe derrière donc ça c'est il nous faut ce genre de score mais c'est pas pour les bugs pour les bugs c'est facile mais ça a quand même des difficultés mais c'est plus facile mais il nous faut ça en fait pour les management ou pour les développeurs et ce sont deux problèmes différents et donc je pense que c'est plus simple d'aller au développeur puisque j'ai encore jamais réussi j'ai encore jamais réussi à taper parce que le management fonctionne comme ça alors que les développeurs vont essayer de faire quelque chose de bien voilà donc c'est un problème multidimensionnel donc ça c'est une dimension que j'ai pensé donc il y a toujours des problèmes mais c'est de la recherche en fait on peut dire on a trouvé 10 bugs mais bon là c'est quelqu'un qui n'est pas certain oui effectivement il y a quelque chose mais on n'est pas forcément fixé tous les codes et on va peut-être regarder si le reste du code est propre ou pas c'est peut-être un petit peu c'est pas de chance c'est peut-être le seul endroit donc ce qu'il y a aussi sinon des sets d'analyse beaucoup de compagnies c'est pas forcément super pas un gros succès et il balance 10 000 trucs 10 000 erreurs et ensuite on diminue la sensibilité du système jusqu'à ce qu'on puisse en parler et les gens regardent les développeurs regardent et disent non c'est que du faut positif et ensuite c'est bon c'est fini on laisse continuer mais personne s'en occupe en fait parce que c'est une dimension assez importante mais on peut pas vraiment l'allier à cette métrique et je ne sais pas comment faire du coup voilà quelques exemples je sais toujours d'avoir des exemples ça illustre mieux extrema qmail et sandmail c'est un bon exemple tous les deux dmta qmail a été fait avec l'objectif d'être le logiciel sur et construit de la telle manière et là on voit encore jusqu'aujourd'hui ça existe depuis 1993 ça a été jusqu'à la version 1.3 et aucun patch a été publié mais je l'utilise encore aujourd'hui parce qu'il n'y a jamais de problèmes c'est un logiciel qui est réellement terminé dans notre côté ça veut dire qu'il n'y a pas de nouvelles fonctionnalités voilà le spectre sur lequel on se trouve d'un côté il y a un tas de vieux codes que personne ne veut renouveler parce qu'il n'est pas payé et la plupart des gens qui étaient payés ou qui auraient pu l'être, on se sont partis deuxième dimension il y a encore du maintien dans l'open source c'est bien visible parfois c'est moins le cas parce que les patchs arrivent plus tard, c'est un petit peu plus espacé on ne sait pas non plus comment est-ce qu'on peut l'estimer et le noter parfois le sauveteur est juste merdique parfois il est terminé c'est très rare mais il y a des exemples texis bah dans ce sens là nous il est terminé parfois il y a encore des petits patchs mais vraiment en règle générale il est terminé libjpeg est pareil ça a été fait par le groupe l'inépanent jpeg group il n'y a pas de failles de sécurité et il n'est pas renouvelé c'est pas forcément une mauvaise chose mais mais c'est un très bon logiciel tout de même et si le sauveteur n'est jamais mis à jour ça peut être une mauvaise chose j'ai un client qui utilise un soft qui est sur github et parfois il y a 5 patchs à la suite en fait le truc c'est qu'il y a suffisamment de version que tu peux pas dire est-ce que mon logiciel est propre ou pas simplement parce que jusqu'à ce que j'ai fini mon analyse il y a 20 nouveaux versions donc ça fonctionne pas sinon la troisième c'est le problème des dépendances tout le monde connaît surtout en javascript c'est un gros problème qui sont déjà bien plantés donc quelqu'un a appelé un module ou quelqu'un s'aperçut que sur les dépendances les dépendances transitive c'était un peu partout en fait et lorsque je charge une dépendance et que ça soit même une dépendance faut que tu comptes aussi ces dépendances et donc par exemple il y a aussi nos cloud lock-in où on ne voit même pas les dépendances elles sont complètement endures du contrôle c'est une pipeline et ça va réduire et ça résoule de façon complètement automatique surtout l'internet et sinon l'autre extrême c'est QMA qui n'a strictement aucune dépendance à part le C et tu as besoin d'un compiler C et c'est tout là aussi c'est un spec il y a plusieurs inventions on continue la qualité du code c'est un petit peu comme la sécurité mais je voudrais bien le généraliser tout même il y a une grosse corrélation entre le nombre de bugs et la mauvaise sécurité tous les problèmes de sécurité sont aussi un bug s'il y a des bugs inconnus que personne n'a trouvé c'est un problème de sécurité c'est un bon signe pour nous dire que il y a de gros problèmes de sécurité comme je l'ai dit la tendance va vers les statistiques en termes de sécurité qu'est ce que je peux faire s'il y a un statement dans une ligne de code qui me dit rien c'est assez difficile à comprendre on va simplement regarder ce qu'il y a comme bugs qui sont connus et on va simplement extrapoler on va regarder aussi tout ce qu'il y a comme les warnings donc il y a très très peu de logiciels qui compilent sans aucun warning et c'est s'il y a des gens qui ont des pipelines qui l'utilisent qui ne savent même pas du nombre de warnings qu'il y a dans leur computation c'est donc ne les jeter pas c'est vachement important puisqu'il y a une corrélation et donc non c'est pas le pragma la prochaine dimension c'est l'attitude ça c'est quelque chose qui met donc il y avait par exemple XIF 2 c'était pour les métadonnées donc qu'est-ce qu'il y avait comme tant d'expositions et autres et c'est pas trop super défini pour le standard et dans cette librairie il y avait beaucoup beaucoup de bugs et le bug l'auteur a simplement dit mais vous ne pouvez pas utiliser ça sur des données qui sont pas connus en fait lui il n'avait pas pensé que ce serait utilisé sur n'importe quel donné sauf que les autres l'ont utilisé sur n'importe quel donné plus de sécurité voilà donc il faudrait simplement écrire dessus pourquoi par exemple non c'est juste pour des fichiers des fichiers qu'on connaît ou alors c'est pas de la sécurité ou alors c'est ou alors il y a aussi des gens qui font des choses des features qui ressemblent à la sécurité comme par exemple le network access protection d'accès d'une réseau et je voulais accorder ce que ça fait et c'est quoi votre garantie de sécurité et les gens disent bah non c'est pas de la sécurité mais le nom est peut-être un petit peu peu près de la confusion mais il est très possible qu'il y ait une différence d'impellance entre les gens qui font le projet et les gens qui veulent l'utiliser une incompréhension et sinon il y a autre chose qui va être le software exploratif donc c'est à peu près tout ce qu'il y a sur GitHub c'est pas sur GitHub, c'est à peu près tout c'est pas forcément mal c'est la façon dont t'apprends c'est comme ça que j'ai implémenté c'est pas le mieux c'est important de communiquer ça, ce code était exploratif il est peut-être suffisant il a suffisamment test en vrai vie mais la base c'était exploratif ou alors on a le scénario la personne qui est partie on a un bout de code on sait pas qu'il l'a écrit mais c'est quelqu'un qui n'écrit plus de code parce que c'était un des fondateurs ou alors il est parti à l'artret tout à l'heure, voilà ça arrive aussi et ça il faut aussi communiquer parce que les gens qui l'utilisent ne le savent pas ou alors le mieux c'est le le maintenance et aussi le développeur qui a le développeur et il veut il veut faire l'apporter sur le marché parce que là il y a quelque chose derrière bon ça me fait vraiment un petit peu je suis désolé que ce soit un aussi gros que dans un petit complexe mais 6ème dipension c'est les meilleures intentions du monde les meilleures techniques qui y a mais les spécifications c'est de la merde donc par exemple xml avec les expansions ou est-ce qu'on peut changer les en fait avec l'article d'expansion on peut déjà faire un dose sur un denial of service sur tout ce qui est tout défi chez xml n'importe lequel en étant conforme au standard ça arrive régulièrement c'est souvent que les standards sont pas stop donc on ne va pas qu'à les uniquement excellents il y a d'autres qui ne sont pas bien Jason qui a une grosse réduction il y a d'un coup tous les parcels explosent quand on fait beaucoup ou alors les les messages windows c'est un truc qui était avant quand il y avait un seul utilisateur ou alors les bus messages donc dans les installations sur le cloud et si on fait ça sur la base de données c'est trop lent donc on va utiliser un bus de messages et ensuite qui qu'a accès va pouvoir envoyer des messages de service et l'idée est déjà mauvaise de base et même si je l'impliement de façon absolument superbe c'est une mauvaise idée la prochaine dimension c'est la set c'est le verrouillage c'est d'un des étiquettes on va quand même le dire c'est une librairie qui fait exactement ce que je veux mais ça tourne dans le amazon donc j'ai donné ma liberté puisque j'ai verrouillé ma liberté si je veux utiliser cette librairie faut que j'utilise la base donc je peux plus utiliser autre chose alors le code crypto ou c'était optimisé pour intel 32 mais si on utilisait autre chose comme MIPS ou ARM ou PowerPC ça fonctionnait pas bien et donc ça c'est pas forcément dur mais ça verrouille quand même un petit peu les choix puisqu'on y est on peut aussi parler de l'empreinte au niveau des ressources alors on essaie de trier mais il faut qu'on ait que 10 éléments et puis alors il y a quelqu'un qui rajoute des éléments et tout explose c'est aussi quelque chose qu'il faut changer alors attention il s'agit pas seulement de cpu mais il y a aussi d'autres choses parfois il y a des choses qui utilisent trop de bandes passantes ou alors ça sature le réseau c'est difficile d'en faire une métrique une bonne métrique est toujours entre 0 et 10 mais s'il faut ramener, s'il faut en plus compter le problème des dépendances eh bien là l'échelle ne suffira plus il faut par exemple se débarrasser du score problème eh ben là aussi la métrique ne suffira plus alors j'ai réfléchi appelons le legacy score score on ne va pas qu'est ce qu'on peut encore faire il y a d'autres métriques d'autres approches pour tout le logiciel ça serait une note pour la totalité du logiciel une sorte d'assurance que j'en ai ré pour mon argent on peut aussi faire ça par module ou alors par module pour chaque gestionnaire ou pour chaque développeur et alors je me suis dit qu'est ce qui a été fait j'ai trouvé un standard une norme qui date de 93 assez compact c'est le geek code qui le connaît c'est pour les plus âgés alors ça ressemblait à ça le format est un petit peu une parodie de pgp l'idée est qu'on le décrit soi-même geek education alors voilà ce que les gens mettaient dans leur signature on pouvait avoir une sorte d'idée de qui était le développeur c'est un peu en une sorte de facebook pour développeur l'idée est ça l'idée est déjà là donc j'ai essayé de m'en inspirer et voilà ce que j'ai fait c'est vraiment difficile à faire c'est pour ça que je fais d'abord cette exposé en allemand et avant de l'internationaliser l'idée serait qu'on met ça en commentaire en tant qu'auteur dans une bibliothèque ça permettrait que les autres développeurs lisent ça et une idée de qui on est et des compétences qu'on a le pire serait qu'on ne le voit pas et que ça serait quelque part dans le cloud voilà la même chose pour le code source donc ça va de le code des publics et vous pouvez le changer pour le code source bien sûr j'ai un petit peu amusé mais l'intention y est en tout cas je pense que je vais le mettre dans mon propre code l'idée est que tout ça soit dans le code pour que tout le monde ait une idée alors avec la norme de 93 il faut quand même le dire personne ne l'a mis dans son code donc là on a différentes choses à mettre on peut dire qu'on sait ce qu'on fait j'ai déjà fait ce genre de code de nombreuses fois il y a d'autres entrées que quelqu'un m'a payé pour le faire ou je ne sais absolument pas ce que je suis en train de faire voilà pour la la justesse du code du code là aussi il s'agit de savoir, il s'agit de communiquer avec les gens qui essayeront de corriger ou détendre notre code ou alors il n'y a pas du tout de backtracker là aussi on a un exemple au tableau quel genre de conception est-ce qu'on a essayé de mettre dans le code eh bien ça commence avec on a le moins de privilège puis alors on saute à nous validons nos input et alors ça continue à des conneries oui vous inquiétez pas on a un antivirus ça serait vraiment bien je trouve ce genre d'étiquette dans le code non l'idée m'est venue quand j'ai acheté un jour des petits piles de vitamine parce que j'ai retourné le paquet et il y avait marqué voilà ce qu'il y a, il y a telle vitamine qui sert à ça et en fait je pouvais pas me faire avoir parce que je savais exactement ce que j'achetais il y avait par exemple marqué vitamine C 50 000 % des apports journalistiques conseillés je pense réellement que c'est un chemin qu'on pourrait emprunter pour améliorer notre manière d'approcher le code la volatilité essaye de résoudre le problème de l'agilité on peut vérifier s'il existe un support personnellement je trouve que ça serait vachement bien parce que si on prend pour exemple vim il y a des visages jour tous les jours mais on sait pas du tout ce qui a changé c'est vraiment l'objectif optimal au final parce qu'on voit qu'il y a des patches tous les jours mais le logiciel n'est jamais cassé là on a une liste avec les specs là aussi le spec est assez large souvent les specs sont derrière un paywall et donc parfois il y en a même pas ou elle n'est pas visible ou alors on peut payer les specs impact pour un petit millier d'euros pour pouvoir vérifier si le player fonctionne effectivement comme il devrait sinon on peut faire aussi est-ce qu'on fait ça en version transitiste là je suis pas certain, je suis ici vous avez des idées de le mois donc comment ça ressemble dans la practice donc ça ressemble à peu près à ça donc les dimensions en fait sont des deux côtés, elles sont un peu subjectives c'est à dire que pour l'un ou pour l'autre c'est ok lorsqu'il n'a pas le source code tant qu'il y a de la maintenance par exemple windows ils ont pour eux c'est ok quand il n'y a pas le code source mais c'est pas un source code, il y a plusieurs dimensions c'est un petit peu difficile à lire mais par exemple au geek code on s'est aperçu que lorsqu'on fait plusieurs jours, on s'y habite et je pense que c'est une bonne idée en fait on a aussi besoin d'un joli de med donc j'ai peut-être acheté quelque chose mais legacyco c'est cette exigne qu'il a déjà acheté donc je ne pouvais plus tout comme legacy.co.de donc ça c'était mon idée c'est la proposition j'espère qu'à maintenant on aura beaucoup d'idées pour comment on va lire ça ou d'autres propositions qui n'ont pas de scores mais c'est simplement une mauvaise idée mais je pense qu'en termes d'industrie il faut qu'on fasse quelque chose que de façon réactive ça ne fonctionne pas il faut que dans le process de développement on prenne la décision et voir ce qu'on met comme comme entrée et donc j'aimerais beaucoup qui a un score sur lequel pour que nous aussi en tant que développeur on veuille s'améliorer avec en fait on va avoir un meilleur score parce que je ne suis pas encore au standard que j'aimerais avoir et sinon on a des microphones dans la salle donc est-ce que vous avez des questions vous pouvez aussi les envoyer par mail merci il y a-t-il des projets dans la viril ou la complexité n'a pas été approchée de la bonne manière et si oui ou c'est très rare il y a quelques années on a essayé de pousser à publier des logiciels et à les noter ensuite je faisais partie de ceux qui les notaient mais au final il y a d'autres projets qui écrivent de manière minimale ce qu'ils ont fait mais en fait c'était pas minimal du tout par exemple c'est pas la zone de systemd moi finalement je suis un grand fan de rust et pas systemd mais rust fait pas des petites binaries et fait des espèces de gros monstres avec plein de nouvelles fonctionnalités mais le produit final est gigantesque mais malheureusement le type qui l'a fait n'y peut rien c'est comme ça et subjective personnellement j'ai toujours aimé les logiciels fait par Dan Bernstein mais c'est un petit domaine il n'y a pas énormément d'exemples de softwares simples et peu complexes microphone 10 donc je croyais avoir quelqu'un quelqu'un ? non ? non ? bon donc microphone 22 donc merci pour l'idée ma question c'est est-ce que c'est pas trop volontaire et c'est il faut simplement le faire de soi-même est-ce que c'est pas trop cd ou ? en fait pourquoi est-ce que je dis pas que je suis M++ c'est effectivement un problème et je suis pas certain comment on peut résoudre ce problème ou si on peut le faire mais je pense que quand on commence il va y avoir une certaine pression de la communauté qui va empêcher les gens de me mentir et mon expérience c'est que les développeurs sont plus des bonnes personnes qui n'aiment pas faire de la merde personne ne veut mentir et si on leur donne une chance de montrer que c'est pas encore fini ils vont le faire ils sont pas capables de le montrer mais c'est pas quelque chose que tu vas avoir avec le label ça va plus pour que les gens puissent penser donc est-ce que c'est vraiment ce que je fais quand je prends une nouvelle dépendance est-ce que je veux vraiment le faire ou pas qu'ils y pensent donc il faut voir micro 6 c'est peut-être dans la même direction que celui d'avant mais est-ce qu'on peut avoir une instance de droit un petit peu je veux dire il n'y a pas un seul il n'y a pas quelqu'un qui va accepter ça comme malus lorsqu'un développeur indien ne va pas accepter ça comme malus quand c'est écrit c'est écrit en Inde ça aurait pu aussi être en Mathieu le truc c'est que le team le but c'est de montrer que quelqu'un l'a parce qu'il fallait avoir oui bien sûr qu'il va y avoir des des gens qui vont essayer de tricher faut essayer mon expérience dans d'autres choses les communautés aident à imposer les standards ça c'est important et il faut qu'on en parle et je pense que c'est un et que c'est quelque chose qui va montrer à quel point c'est volatile ou pas et super volatile c'est pas forcément volatile et qui permet de transporter une idée est-ce que tu veux vraiment utiliser, proposer est-ce que tu vraiment penses que tu t'as plus conçu en recommande que tu fais ton projet microphone 1 je viens de réfléchir est-ce que ce n'est pas exactement ce qu'il faudrait aussi que l'industrie de l'agroalimentaire devrait adopter également est-ce qu'on devrait pas aussi faire ce système que l'industrie agroalimentaire fait aussi avec les la belle vert jaune et rouge bah oui mais le problème c'est que là il faut que tu fasses confiance à l'institution qui va distribuer ces différents labels qui va dire que c'est bien, moyen ou pas bien et au final tu n'es pas plus avancé il y a aussi l'idée qu'il faut laisser le choix au consommateur final alors est-ce que c'est mieux ou pas je ne sais pas mais il faut que ce score doit être ouvert et complètement transparent c'est pour ça que je ne veux pas être arbitre dans cette histoire je pense que c'est quelque chose qui doit venir de la communauté et il faut que les gens qui l'utilisent aient l'impression de faire quelque chose de bien et de quelque chose pour la communauté donc micro 2 moi il m'a manqué une dimension qui est un peu dans la maintenance mais pas tout à fait on prend aussi les gens qui font la question c'est est-ce que c'est facile de fixer des bugs ça c'est une dimension qui est importante aussi je pense comment c'est facile de participer j'ai essayé de faire ça j'ai le code et je peux le changer mais mais celui qui j'ai à le projet oui bien sûr c'est facile alors que tu peux toujours essayer micro 8 j'ai pas compris la question c'est une question subjective je pense que c'est une erreur mais il y a aussi des c'est aussi des films des sociétés qui disent que micro 7 l'intention que la communauté va régler ce problème et tu proposes ça comme problème plus on va parler aussi de hard bleed et c'était c'était un bug énorme ça allait jusqu'à 11 donc en termes de sévérité donc je pense pas que ce soit forcément une bonne idée je pense que tu montres à quel point c'est complexe ce genre de standard ou minimal ou alors plusieurs fact ou alors d'avoir gestion oui tu as raison c'est une question de recherche j'ai pas non plus de bonne réponse la chose avec hard bleed on aurait pu on aurait pu fixer ça avec quels sont les qu'est-ce qu'on en dit en fait moi j'ai vu ça sur une folie sur un slide des gens qui tu leur demandes mais c'est quoi comme quelque chose qui ressemble à la sécurité quand tu leur demandes et t'as quoi comme garantie bah non on en a pas voilà qu'on en parte de ça de façon à ce que les gens sachent que ce qu'ils écrivent maintenant c'est le legacy de demain et donc non non ça vient pas du ciel c'est toi qui l'écris c'est toi tu l'écris pour demain donc encore une question de l'internet dans ton schéma de note comment est-ce que ça peut marcher dans les projets qui n'ont plus du tout de développeur parce qu'ils sont plus là eh bien dans ce cas-là l'absence du label est déjà une mauvaise chose c'est une approche comme une autre je peux rien dire si personne n'a mis le label peut-être que la communauté peut décider je ne sais pas microphone 4 ce sont des catégories quand même assez large je ne sais pas si tu vas réussir à faire en sorte que les gros développeurs les grandes entreprises adoptent ton système il faut aussi se poser la question à qui s'adresse cela alors pour le moment j'ai surtout pensé aux gens qui font ça comme hobby les grosses entreprises ont d'autres approches ont d'autres contraintes dans une grande entreprise c'est difficile de corriger des anciens bugs parce que finalement il y a une telle inertie dans le fonctionnement de l'entreprise c'est tout à fait compréhensible qu'elles aient encore des milliers de bugs qui sont ouvert là je crois que l'approche de l'avenir de la communauté open source et l'open source a une influence énorme sur le monde des grandes entreprises on ne le voit peut-être pas depuis la communauté open source mais en tout cas dans le monde de l'entreprise la plupart des gens s'inspirent de l'open source utilisent des bibliothèques qui sont open source l'open source a vraiment une énorme influence sur les grandes entreprises j'ai l'impression que l'entreprise s'occupe de l'entreprise de l'entreprise et si en tant que communauté de l'open source on réussit à