De l’art du refactoring

Je vais faire une fois de plus preuve d’Apple-ophilie primaire, mais je reste impressionné par la démarche stratégique qui consiste à :

  • Décider en interne de consacrer deux ans à refactoriser son produit majeur, le système d’exploitation Mac OS X, en gelant toute évolution ou presque
  • Assumer cette décision en public (et en faire un argument marketing !)
  • Gérer les conséquences de cette décision, en retardant d’autres projets
  • Favoriser la diffusion de la version refactorisée, en vendant la nouvelle version à prix plancher (bon OK, pour aller jusqu’au bout, il aurait fallu donner cette version, mais faut ptet pas pousser mémé dans les orties 😉 )

Pas facile de faire comprendre une telle démarche, mais le contrexemple Windowsien a au moins permis de faire comprendre l’intérêt de ce genre de choses : Vista est une telle version boursouflée et où toutes les innovations, parfois brillantes, s’accumulent sans souci de “propreté” technique que même l’utilisateur de base comprend un peu plus l’intérêt d’une démarche de rigueur de la part des développeurs. C’est d’ailleurs fort heureusement dans ce sens qu’à été conçu la version “Seven” de Windows.

Bertrand Serlet lavait annoncé il y a un an : zéro nouvelle fonctionnalité !
Bertrand Serlet l'avait annoncé il y a un an : zéro nouvelle fonctionnalité !

Je serais curieux de voir comment la “roadmap” d’un tel projet a été géré en interne chez Apple. Pour l’avoir vécu mainte fois, il est souvent très difficile de résister à la tentation de l’implémentation d’une nouvelle fonctionnalité, sacrifiant un peu de stabilité.

Dans les trucs pas forcément bien compris, ou sujet à suspicion, la notion de performance : Snow Leopard était censé être beaucoup plus rapide, il l’est….un peu. Dans les faits, il ne fait “que” fournir les bases permettant aux développeurs de publier des versions largement plus performantes de leurs applis, exploitant le mode 64 bits, et de nouvelles briques telles que GrandCentral ou OpenCL. Sans ces versions spécifiques (et Apple ne donne pas forcément l’exemple pour l’instant…. vivement iLife et iWork 64 bits !), il n’y a pas de grands gains de performances à atteindre, hormis sur Safari ou quelques autres applications fournies en standard.

La conséquence de cette migration a venir, c’est aussi un fossé qui va s’agrandir jusqu’à devenir aussi criant que celui entre Mac OS 9 et Mac OS X : d’ici quelques mois, la plupart des applications courantes seront fournies en 64 bits, et les éditeurs devront faire un choix : les peformances, ou la compatibilité avec les précédentes versions de Mac OS X. La fuite en avant étant ce qu’elle est dans les nouvelles technologies, il y a fort à parier que les “anciens” vont ainsi se retrouver de plus en plus isolés, et pas seulement les possesseurs de PowerPC, mais aussi ceux n’étant pas équipés de SnowLeopard, voire même, à terme, ceux ne possédant pas le matériel suffisant pour faire tourner OpenCL, ou le kernel en 64 bits.

Aussi, même s’il n’y a pas d’urgence, autant la migration vers Snow Leopard est facultative pour l’instant, autant elle va devenir indispensable dans les mois à venir !

Je terminerai avec le constat donné en introduction de cet excellent article sur Ars Technica : c’est la septième release “majeure” de Mac OS X, et à chaque fois, la nouvelle version s’avère plus optimisée en terme de performances que la précédente. Bien sûr, tous les éléments autour du kernel font que les configurations matérielles sont plus exigeantes et nécessitent plus de mémoire, de CPU, etc… mais dans l’absolu, chaque version est plus performante que la précédente. Alors, même si la philosophie de cette release n’est pas comme l’affirmait Bertrand Serlet “sans précédent” (ne serait ce que parce que la version 10.1 de Mac OSX était déjà une version “d’optimisation”), cette façon de procéder lorsque l’on veut diriger un travail d’ingénierie logicielle est à méditer !