Apple cherche de plus en plus à « protéger » le noyau d’OS X. Pas surprenant en soi, cette tendance qui ne date pas d’hier a été signifiée d’une nouvelle manière tout récemment à un développeur. Dans un rapport de bogue transmis à Apple, Landon Fuller s’étonnait que le code source d’IOUSBFamily dans Mavericks n’ait toujours pas été publié. Cette extension noyau, a pour périmètre d’action tout ce qui touche les entrées/sorties USB, comme son nom l’indique.
La réponse d’Apple ne s’est pas fait attendre, l'entreprise ne prévoit pas de remédier à ce « bogue » et en a profité pour passer un message clair : Apple dissuade les développeurs de faire quoi que ce soit avec le noyau d’OS X. Si vous avez vraiment besoin que quelque chose soit présent dans le noyau, alors il vous faut contacter le département des relations développeurs (WWDR).
Quand est-ce que les développeurs ont besoin de développer des extensions kernel ? La plupart du temps, ce sont pour des besoins très spécifiques : virtualisation, pilote vidéo, sécurité, système de fichiers (comme les extensions permettant à OS X de gérer ZFS…). À titre d’informations, lorsque vous activez le TRIM sur un SSD non Apple, vous touchez à une extension système. La bidouille fonctionne parce que la signature de validation de l’extension est (pour le moment ?) optionnelle.
Ce phénomène, Apple tente de le limiter depuis pas mal de temps déjà. Il n’est pas possible de soumettre au Mac App Store une application qui touche de près ou de loin le Kernel (lire : Apple poste les règles de conduite pour le Mac App Store). C’est l’une des raisons qui explique l’absence de VMware Fusion ou de Parallels Desktop de la plate-forme de téléchargement d’Apple.
Pour réaliser une extension noyau avec la bénédiction d’Apple (autrement dit qu’elle soit signée), il faut remplir dans un premier temps un formulaire dans lequel vous devez expliquer pourquoi vous avez besoin de réaliser une extension, à quoi elle sert et ce qu’elle fait précisément.
Certains redoutent qu’Apple ait un comportement à deux vitesses : qu’elle fasse preuve de bienveillance auprès de quelques grands noms et qu’elle se montre beaucoup plus fermée avec les petites structures quand elle recevra des demandes relatives à son noyau. Apple applique déjà cette politique sur iOS. Et là où Cisco a obtenu un passe-droit dès 2010 pour son VPN, d’autres attendent toujours !
Sur la forme, cette décision est également mal vécue. Pour signifier cette nouvelle position, il aurait été préférable qu’Apple s’exprime clairement sur la question, et non au détour d’un rapport de bogues. D’autre part, la position d’Apple qui consiste à décourager n’est pas forcément claire. De décourager à interdire, il n’y a qu’un pas…
Toutefois, d’autres relativisent et estiment que cette décision a été prise afin de pousser les développeurs quand c’est possible à réaliser leurs travaux non pas au niveau du noyau, mais dans l’userland, cette partition située entre l’espace utilisateur et l’espace noyau.
Si cette décision ne fait pas l’unanimité, elle a également ses bons côtés. En « protégeant » les couches basses du système, Apple s’évite des problèmes de fiabilité. L’ajout d’une extension au coeur du système n’est jamais une chose anodine.
Cette nouvelle politique s’explique d’ailleurs peut-être par les sorties rapprochées des mises à jour d’OS X. En restreignant l’accès aux basses couches, Apple s’évite des problèmes de compatibilité et peut plus facilement faire évoluer son système.