Quelles versions du système d’exploitation cibler ?

En tant que développeurs, voici une question à laquelle nous sommes confrontés à chaque fois que nous lançons une nouvelle version d’une application: sous quelles versions du système d’exploitation devra-t-elle tourner ?

Accès aux dernières API

Lorsque j’ai lancé PortraiMatic pour Mac, le logiciel exigeait Mac OS 10.4, alors le tout récent système d’Apple. Sur les forums, des développeurs m’ont demandé pour quelle raison technique il ne tournait pas sous 10.3. Après tout, le logiciel était faisable sous 10.3. J’ai répondu par une autre question: “et pourquoi il ne tourne pas sous 10.2 ?”, puis “et pourquoi il ne tourne pas sous 10.1 ?”, et (quitte à être lourd jusqu’au bout) “et pourquoi il ne tourne pas sous 10.0 ?”. Inutile d’aller jusqu’au Système 7, vous avez saisi. Si j’ai tourné cette question en ridicule, c’est parce qu’elle sous-entend que c’est la faisabilité technique qui impose les versions d’OS ciblées. Or, PortraiMatic est sans doute faisable même sous Système 7. Dès lors, la question peut être mieux posée ainsi: “Quelles API utilisées n’existent que sous Mac OS 10.4 ?”. Cette question a une réponse: j’ai utilisé les CGLayers, qui permettent d’afficher rapidement des blocs graphiques. J’aurais bien pu trouver une alternative technique, comme utiliser OpenGL, mais j’avais là un outil facile et rapide à mettre en œuvre. J’ai donc sacrifié la compatibilité pour gagner du temps et simplifier mon code.

D’autres raisons de lâcher la compatibilité

Je n’ai pas de statistiques, mais je peux affirmer sans trop me tromper qu’il y a actuellement un bon pourcentage de Mac sous 10.6, la majorité sous 10.7, quelques-uns sous 10.8. Donc, pour toucher le maximum de clients, il faudrait qu’un logiciel soit compatible avec ces trois versions. Malgré cela, si je lançais une nouvelle application aujourd’hui, elle exigerait 10.8. Voici les raisons.

  • Être compatible n’est pas seulement se limiter aux API d’un OS, mais aussi tester entièrement l’application sous cet OS, et corriger les écarts. Mon expérience est que la compatibilité ascendante est rarement défaillante. Par contre il y a des différences graphiques pour lesquelles il faut compenser, par exemple en décalant un bouton de quelques points. C’est souvent moins beau, et c’est toujours du travail inutile.
  • Il faut nécessairement maintenir des ordinateurs sous toutes les versions de l’OS. D’abord pour tester, mais aussi reproduire les problèmes soulevés par les utilisateurs. Je commence à manquer de place dans mon bureau.
  • Apple ne nous simplifie pas la vie. Ainsi chaque nouvelle version de Xcode peut retirer un vieil SDK; il faut donc passer au SDK plus récent, mais on n’est plus averti de l’absence des méthodes dans le vieil SDK… Apple peut aussi retirer des cibles de compilation; par exemple, Xcode 4 ne peut pas compiler pour PowerPC, je suis obligé d’utiliser Xcode 3.2.5 sous 10.5 et de bidouiller.
  • Et comment fait Apple pour assurer la compatibilité ? Très simple: ils ne font pas ! Ils exigent souvent les dernières versions de Mac OS X pour leur logiciels.
  • Tous les utilisateurs ne se valent pas. Si on faisait des statistiques, on verrait que ceux sous 10.8 passent plus de temps dans le Mac App Store. Ceux qui sont restés sous 10.6 n’y vont probablement jamais. Or, les early adopters sont les plus à même de faire progresser un nouveau logiciel en dialoguant avec le développeur.
  • Pour finir, les statistiques évoluent: dans deux ans, on en sera peut-être à Mac OS 10.10, et 10.8 sera ringard.

Retour d’expérience sur PortraiMatic

Quand j’ai abandonné la compatibilité avec 10.4, je m’attendais à des remous. En fait non ! Peut-être un message ou deux pour me dire que c’était dommage, et même pas de la part de mes premier clients (qui eux avaient déjà changé d’OS).

PortraiMatic est encore compatible avec 10.5, avec grand mal. Toutes les semaines, je reçois un message de quelqu’un qui me demande s’il fonctionne sous 10.5, et je réponds que oui, mais qu’ils ne pourront pas l’acheter, parce qu’il n’est vendu que sur le Mac App Store, qui exige un OS 10.6. La compatibilité n’est assurée que pour les anciens utilisateurs puissent profiter des mises à jour. Mac OS 10.6 ne tourne pas sur un Mac PowerPC, alors mettre à jour l’OS est impossible sans changer d’ordinateur.

La prochaine mise-à-jour exigera Mac OS 10.6. Je n’ai pas le temps de tester sous 10.8, 10.7, 10.6 et 10.5. Il arrive un moment où il faut être réaliste et décider de comment utiliser au mieux les ressources de sa petite société. Rester compatible avec une minorité d’ordinateurs n’est pas un bon investissement de ces ressources.