Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    La base de code du noyau Linux compte plus de 3000 sections TODO dont certaines datent de plus de 10 ans
    La base de code du noyau Linux compte plus de 3000 sections de commentaires TODO dont certaines datent de plus d’une décennie
    De quoi conclure de sa mauvaise qualité ?

    Après plus d’un quart de siècle d’existence, le noyau Linux est de plus en plus important dans le monde de la technologie. La dernière parution (il y a 2 ans) de l’état de développement du noyau par la Linux Foundation dresse un tableau des chiffres clés…

    Le rapport qui couvrait le développement du noyau Linux jusqu’à la version 4.13 faisait état de ce qu'en dehors du marché des PC où il a du mal à se frayer un chemin, Linux domine presque tous les marchés, y compris le cloud, le mobile, l'embarqué et celui des supercalculateurs. « En 2017, le système d'exploitation Linux exécute 90 % des charges de travail du cloud public, détient 62 % de part sur le marché de l'embarqué et 99 % de part de marché en ce qui concerne les supercalculateurs. Linux gère 82 % des smartphones dans le monde et neuf des dix premiers clouds publics », y était-il indiqué par Jonathan Corbet (développeur Linux et éditeur de LWN.net) et Greg Kroah-Hartman de la fondation Linux.

    « Cependant, la croissance soutenue de cet écosystème open source et l'incroyable succès de Linux en général ne serait pas possible sans le développement continu du noyau Linux. De nouvelles versions livrées régulièrement toutes les neuf ou dix semaines fournissent des mises à jour stables aux utilisateurs de Linux, chacune avec de nouvelles fonctionnalités significatives, une prise en charge améliorée des périphériques et des performances améliorées. Le taux de changement dans le noyau est élevé et augmente, avec plus de 12 000 correctifs dans chaque nouvelle version du noyau. Chacune de ces versions contient le travail de plus de 1600 développeurs représentant plus de 200 sociétés », pouvait-on y lire.

    En 2018, le dépôt du noyau Linux était rendu à 782 487 commits au total et comptait un peu plus de 19 000 auteurs différents. Le référentiel pour sa part était constitué de 61 725 fichiers soit environ 25 584 633 lignes. Ceci c’était sans compter la documentation, les fichiers de construction Kconfig et autres assistants/utilitaires. En 2018, 49 647 commits ont ajouté 2 229 836 lignes de code et 2 004 759 lignes de code ont été perdues, soit un gain net de seulement 225 077 lignes.

    Les chiffres parlent d’eux-mêmes : le noyau Linux c’est du costaud ; c’est même « l’un des plus grands projets logiciels au monde » si l’on se réfère à une affirmation de Greg Kroah-Hartman lors d’une présentation au Festival CoreOS de Berlin en 2016.

    Ce qu’il faudra aussi retenir à propos de Linux est qu’à date le projet représente « plus de 3000 sections de commentaires dont certains datent de plus de 10 ans. »

    Une section TODO qui date de plus de 10 ans


    Que l’on retrouve des sections de commentaires TODO vieilles de plus d’une dizaine d’années (personne n’a revu ces sections pendant cette période) au sein d’une base de code qui continue de faire ses preuves au quotidien peut être interprété comme un signe de qualité. De l’autre côté, le fait pour lesdites sections de ne pas encore avoir été revu soulève des questionnements. En effet, une base de code fonctionnelle n’est pas parfaite ; c’est la raison pour laquelle un développeur fera apparaître une section de commentaire TODO, mais c’est bien là le signe qu’il y a un détail qui coince et qui, sur le long terme, pourrait être à l’origine d’une catastrophe surtout pour ce qui est des systèmes critiques. L’analogie est peut-être mal choisie, mais la situation s’apparente à celle d’un ascenseur laissé des décennies sans surveillance parce qu’il joue encore son rôle et personne n’a remarqué de défaillance.

    Source : GitHub

    Et vous ?

    Qu’en pensez-vous ?
    plus de 3000 sections de commentaires TODO : peu ou pas pour un projet comme le noyau Linux ?
    Avez-vous vous aussi énormément de TODO dans le code source de vos applications ? Si oui, quelle est votre politique en la matière ?

    Voir aussi :

    Google découvre des centaines de situations de compétition dans le noyau Linux en se servant de KCSAN, son nouveau détecteur de courses critiques pour le noyau Linux
    Un nouveau contrôleur de mémoire pour le noyau Linux promet des économies de mémoire significatives, notamment au niveau de la RAM, pour toutes les plateformes Linux
    Personne, ni même Microsoft, ne peut prendre le contrôle à lui tout seul du projet Linux, a déclaré Linus Torvalds
    La version 5.3 du noyau Linux est disponible avec la prise en charge des GPU AMD Navi et d'autres nouvelles fonctionnalités
    Le noyau Linux 4.19 est disponible : Tour d'horizon des nouveautés qui accompagnent cette version LTS
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre du Club
    Étudier la qualité du noyaux sur la base de commentaires et d'analogie d’ascenseur douteuse c'est de mauvaise foi.

    Par sa nature open source, le noyaux linux permet à toute personne qui nécessiterait la portion ou la fonctionnalité manquante de concevoir un patch.

    Par la suite, la question de savoir s'il est normal que certains TODO n'aient pas été traités depuis 10 ans devrait plutôt être abordée selon l'âge des TODO en fonction de leur importance relative.
    Puisqu'il faut le rappeler, c'est une question de priorisation. Je suis convaincu que l'étude des fréquences démontrerait que les commentaires ne concernent pas, pour la vaste majorité, des failles de sécurité qui pourraient mettre en péril l'intégrité d'un système.

    Donc oui, il est normal que certaines sections n'ont pas été revues depuis plus de 10 ans.
    Je me permets d'ailleurs de rappeler le principe de Pareto, 20% de l'effort, 80% des résultats.

  3. #3
    Rédacteur

    C'est drôle de pouvoir émettre des critiques sur un kernel open-source depuis sa création quand on a aucun élément de comparaison avec les autres gros OS historiques et populaires vu qu'eux ne le sont pas open-source...

    Après pour ma part je ne considère pas les TODO comme un risque, et si on veux qu'ils soient traités efficacement il faudrait plutôt les associer à des issues qui feraient l'objet d'une priorisation plus contrôlée et pragmatique. C'est peut-être déjà le cas. La lecture du code, à mon sens, ne suffit pas pour émettre un jugement sur le workflow de suivi des tâches.

  4. #4
    Expert éminent sénior
    Tiens c'est marrant, ça fait précisément 1 an que j'ai introduit une macro TODO_BEFORE() dans le cadre de la rédaction de cet article:
    https://www.fluentcpp.com/2019/01/01...codebase-2019/

    et ce matin je suis en train de fixer les TODO qui pètent pour ce mois-ci

    Au bout d'1 an d'utilisation de cette macro c'est un succès : on est passé de 153 TODO dans le code à 45 (et ça continue de descendre)

  5. #5
    Inactif  
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    /* TODO: go buy some coffee next week */


    Mais c'est un code d'une qualité pourrie, 20 ans qu'il est dans le code de mon projet.
    Faut jeter tout le projet à la poubelle vue sa médiocrité.



    Plus sérieusement, le TODO montré ressemble plus à une indication pour les développeurs qui souhaiteraient implémenter une fonctionnalité pour un matériel donné, qu'une réelle tâche à faire pour le noyau.

    C'est comme si je définissais une interface/squelette, et que je mettais des TODO pour montrer au développeur qui souhaiterait créer sa propre implémentation, ce qu'il doit faire. C'est au contraire une preuve de la grande qualité du code.

  6. #6
    Expert confirmé
    Citation Envoyé par Patrick Ruiz Voir le message
    La base de code du noyau Linux compte plus de 3000 sections de commentaires TODO dont certaines datent de plus d’une décennie

    De quoi conclure de sa mauvaise qualité ?
    Non.
    Troll suivant.

  7. #7
    Membre éprouvé
    Todo moisi
    Bonjour à tous.
    D'après ce que je comprends dans l'exemple donné, c'est un TODO pour initialiser un autre type de carte que celle que le développeur a utilisé initialement. Et là depuis 10 ans, personne n'a eu besoin de ce module avec un nouveau modèle de carte à initialiser. Personnellement, je trouve ça un peu moisi.
    Tiens un autre exemple. Il y a des années, j'ai récupéré un lot de PC IBM/Lenovo que j'ai voulu installer dans l'école primaire de mon village. Problème, les chips graphiques c'était du SIS intégré à la carte mère, de sinistre mémoire. Incompatibles avec Windows 7, c'est la raison pour laquelle les PC avaient été donnés. Ils étaient aussi incompatibles avec le driver X11 pour chip Sis. Je n'espérais pas de nouveau développement ni même un debug de la part de l'auteur, donc les machines sont restées dans leur carton. J'ai juste récupéré les mémoires , les processeurs (plus puissants) et les disques pour améliorer un peu l'existant.
    J'ai changé de société fin 2006 et la société que j'ai quitté venait de signer un accord avec Fujistu pour le renouvellement complet de l'informatique. Ils ont acheté des minitour Fujistu avec du chipset SIS. J'ai dit à une responsable que je prenais le pari que dans 5 ans, aucune des machines neuves ne serait encore en service. J'y suis repassé 5 ans plus tard, et j'avais raison.
    Du chipset SIS, non mais vraiment des baffes se perdent...
    Mais je digresse, tout ça pour dire que si le TODO concerne un matériel exotique, obsolète, ou tellement bas de gamme comme dans mes exemples, ça n'a pas vraiment d'importance.
    C'est sûr qu'un TODO qui traîne sur une faille de sécurité majeure, c'est plus ennuyeux. Mais l'étude ne fait pas dans le qualitatif, elle se contente de donner un chiffre...

  8. #8
    Membre extrêmement actif
    Depuis quand le code documenté est signe de mauvaise qualité ?
    J 'espere avoir mal lut , le noyau Linux est l ' un des logiciel le plus complexe qui soit , documenté , expliqué debout en bout et maintenant on en fait , ou plutôt , on ose en faire le reproche ? Sérieusement ?

  9. #9
    Membre expérimenté
    Complétement d'accord avec les interventions qui ont été faites ici.

    Dans le kernel, on ne trouvera pas de todo du style
    Code c :Sélectionner tout -Visualiser dans une fenêtre à part
     // TODO: Fix this critical vulnerability


    Mais plutot des todos informatifs sur des possibles évolutions du noyau.

    Par exemples certains todos indiquent le statut de développement d'une feature, par exemple ici
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #
    # Feature name:          kprobes
    #         Kconfig:       HAVE_KPROBES
    #         description:   arch supports live patched kernel probe
    #
        -----------------------
        |         arch |status|
        -----------------------
        |       alpha: | TODO |
        |         arc: |  ok  |
        |         arm: |  ok  |
        |       arm64: |  ok  |
        |         c6x: | TODO |
        |        csky: | TODO |
        |       h8300: | TODO |
        |     hexagon: | TODO |
        |        ia64: |  ok  |
        |        m68k: | TODO |
        |  microblaze: | TODO |
        |        mips: |  ok  |
        |       nds32: | TODO |
        |       nios2: | TODO |
        |    openrisc: | TODO |
        |      parisc: |  ok  |
        |     powerpc: |  ok  |
        |       riscv: |  ok  |
        |        s390: |  ok  |
        |          sh: |  ok  |
        |       sparc: |  ok  |
        |          um: | TODO |
        |   unicore32: | TODO |
        |         x86: |  ok  |
        |      xtensa: | TODO |
        -----------------------

    Dans ce cas on voit clairement que les todos n'indiquent pas un mauvaise qualité de code, bien au contraire.

    Dans d'autres cas, les todo sont la pour indiquer des pistes pour faire une amélioration ou une vérification. Mais souvent, si les todos restent c'est généralement que cette fonctionnalité n'a pas été jugée suffisamment importante pour qu'on y accorde trop de temps développeur ou que le développement est parti dans une autre direction mais que cette piste reste cohérente pour un futur à plus ou moins long terme donc le todo n'a pas été supprimé. Là aussi, ça n'indique pas spécialement que le code soit de mauvaise qualité.

    Il y a aussi des cas ou todo est juste un nom de variable quelconque, comme ici.

    Bref, croire qu'on peut juger la qualité d'un code simplement en comptant les todos est non seulement illusoire mais montre aussi une ignorance de la manière dont fonctionne le développement Linux...

  10. #10
    Membre éprouvé
    Tout à fait d'accord, et dans l'exemple que tu prends c'est encore de l'obsolescence matérielle. Sérieusement, qui a encore un Alpha en état de marche ? Qui fait encore du développement noyau pour Motorola 68k ?

  11. #11
    Membre éprouvé
    TODO signifie : "à faire" non ? On les utilise pour avoir une vue d'ensembles des taches à faire (via l'IDE).
    Donc j'ai tendance à penser que soit les TODO sont "mal" utilisées au sein du noyau (un HOWTO serait plus indiqué dans les exemples présentés ici), soit on est mal^^.
    Après je doute que linus torvald se prenne la tête avec ce genre de futilité linguistique.

  12. #12
    Inactif  
    Citation Envoyé par atha2 Voir le message
    TODO signifie : "à faire" non ? On les utilise pour avoir une vue d'ensembles des taches à faire (via l'IDE).
    Donc j'ai tendance à penser que soit les TODO sont "mal" utilisées au sein du noyau (un HOWTO serait plus indiqué dans les exemples présentés ici), soit on est mal^^.
    Pas nécessairement, par exemple si c'est un squelette.

  13. #13
    Membre du Club
    Ca me semble un peu bancale comme étude? Il y a t il une analyse de l'évolution, un graphique avec l'age des todo?
    3000 todo pour 25 millions de ligne, c'est grave?

    Si ça n'a pas été fait, c'est que ça sert à rien. Pourquoi passer du temps (gracieusement en plus) à faire des choses qui ne sont pas importantes, urgentes ou nécessaires?

  14. #14
    Nouveau Candidat au Club
    Citation Envoyé par CaptainDangeax Voir le message
    Tout à fait d'accord, et dans l'exemple que tu prends c'est encore de l'obsolescence matérielle. Sérieusement, qui a encore un Alpha en état de marche ? Qui fait encore du développement noyau pour Motorola 68k ?
    J'ai entendu de gens dont c'est le métier que le 68000 sert encore pas mal dans l'embarqué.

  15. #15
    Responsable Systèmes

    La gamme m68k n'est plus utilisée, elle est remplacée par les coldfire, compatibles je pense au niveau assembleur.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  16. #16
    Membre éprouvé
    Vieilles archis
    Citation Envoyé par leridan Voir le message
    J'ai entendu de gens dont c'est le métier que le 68000 sert encore pas mal dans l'embarqué.
    Sans doute plus en tant que tel, les 68xxx ne sont plus fabriqués depuis bien longtemps. Il est sans doute possible d'intégrer un coeur m68k dans un FPGA ou un ASIC, c'est aussi le cas pour le Z80 ou le 8051 (ces 2 derniers sont trop courts pour faire tourner un noyau Linux)... Justement, si le coeur intégrable fonctionne bien comme ça avec la version actuelle du noyau, aucune raison d'aller s'occuper d'un TODO qui de toute façon ne servira pas...
    Quant à l'Alpha, son bus EV6 dual pumped a été repris par AMD pour la série des Athlon et Athlon XP, puis il y a eu l'Athlon64...

  17. #17
    Membre régulier
    ... mais c’est bien là le signe qu’il y a un détail qui coince et qui, sur le long terme, pourrait être à l’origine d’une catastrophe surtout pour ce qui est des systèmes critiques.
    Bonjour, je ne réponds que rarement aux article mais je dois bien avouer que lire un truc pareil m'a fait sauter de ma chaise...
    Quand je code, il m'arrive très souvent d'avoir plein d'idées pour améliorer les choses, gèrer des cas potentiels, affiner un algorithme, optimiser une structure, faire les choses un peu différement pour gagner en simplicité et/ou en élégance, etc... A chaque fois, il est difficile de faire un choix et les choses sont loin d'être simple : est-ce vraiment nécessaire ? Est-ce vraiment nécessaire maintenant ? Est-ce que cette idée trop imprécise maintenant représente un réel potentiel. Autant de TODO que j'écris systématiquement dans mon code personnel autant que dans mon code professionel mais si dans ce dernier cas, le seuil d'acceptation du TODO est alors bien plus élevé...
    Un TODO ne signifie pas forcément que quelque chose manque, sauf dans les premières phases de développement du code, évidement. Je doute que le noyau Linux puisse être considéré en phase initiale de développement alors je ne comprends pas très bien ni le but de cet article ni sa conclusion.

###raw>template_hook.ano_emploi###