Fermer le menu

OS X : Apple veut dissuader les développeurs de s’approcher du kernel

Christophe Laporte | | 17:00 |  30

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.

Catégorie : 

30 Commentaires

avatar BitNic 30/03/2014 - 17:07

Comme pour moi... pas question de toucher à mes noyaux... sans l'aval de ma femme... c'est normal !

Oops un ch'ti coup de mou ce dimanche...

avatar denmakesmusic 30/03/2014 - 17:35

Les liens Suite... sont cassés

avatar zoubi2 30/03/2014 - 17:36

LOL @BitNIc

"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. "

Y a un truc qui m'échappe: Si le premier bidouilleur venu qui pond une app vaseuse peut s'amuser à tripatouiller les "couches basses du système", où va-t-on ma pov' dame? Pour moi (pauvre naufragé) cette décision relève du bons sens.

avatar JLG47 30/03/2014 - 18:53

Le noyau du système définit son domaine de vol.
Comme pour un avion, sortir du domaine de vol présente des risques sérieux.
Donc protéger le domaine de vol est impératif.
La certification constructeur est donc importante, voir devrait être obligatoire.
Ceux qui bricolent des applications en contournant cette règle sont régulièrement la cause de dysfonctionnement.
Mais comme ce n'est ni immédiat, ni en relation directe avec l'application douteuse, beaucoup se plaignent de bugs du système après avoir chargé des trucs exotiques.

avatar pacou 30/03/2014 - 21:12via iGeneration pour iPad

@JLG47

Dans les pays tels que freebsd, netbsd, *bsd, Linux, et j'en passe, ça se passe bien en général.

Peut être les développeurs ne publient ils que des trucs bien foutu, ou alors ils préviennent que c'est hasardeux.

Donc, non, je n'arrive plus a adhérer a toutes les politiques d'Apple.

avatar DCMaxxx 30/03/2014 - 22:16via iGeneration pour iOS

@pacou :
Après avoir bossé sur Linux pendant des années, c'est justement ces problèmes de stabilité liés à cette trop grande ouverture du système qui m'ont fait switcher.
Chaque mise à jour est une horreur, ou chaque logiciel / extension risque, au mieux, de ne plus fonctionner, au pire, de tout faire planter. Et malheureusement, j'exagère à peine...

avatar dmorel 30/03/2014 - 23:17

Ben si, tu exagères, certaines distributions sont assez blindées de ce côté-là (on a rarement des soucis sur nos Centos, même si des bugs sortent régulièrement, mais pas vraiment plus que chez Apple), et en plus Apple a un contrôle total de l'architecture matérielle au contraire des distributions unix(-like) qui prennent en charge des milliers de drivers, ce qui multiplie les risques. Je ne parviens pas à voir la fermeture du noyau comme un avantage, au contraire ça incite même à faire des choses absurdes (stabbing in the dark) pour ceux qui de toutes façons vont aller trifouiller. Un exemple parmi d'autres (à peine tiré par les cheveux): ndiswrapper. Je sais, ce n'est pas sur OSX, mais c'est un exemple d'insanité dû à la fermeture.

avatar USB09 30/03/2014 - 19:02via iGeneration pour iPad

@JLG47

La plupart des jeux ont leur système de fichier et extension. C'est assez complexe en effet.

avatar dtb06 30/03/2014 - 19:30

Enfin là, IOUSB*** ce n'est pas le noyau, c'est la gestion de l'USB.... C'est quand même utile de temps en temps que les développeurs aient accès à ce genre de ressources, non ? Sinon on peut aussi tout brider et faire en sorte que seules les applications Apple aient accès à l'USB ou à la webcam, mais à mon avis ça va dans le mauvais sens.
C'est un peu le principe du Bluetooth sur iOS, il est tellement bridé qu'on ne peut pas en faire grand chose ; alors que n'importe quel téléphone d'il y a 10 ans permettait d'envoyer une image par BT au téléphone d'à côté quelle que soit sa marque.

Dans ce cas la question ne portait pas sur un "bricolage" de l'extension (extension, et pas noyau), mais sur une documentation (code source) afin de savoir comment l'utiliser au mieux.

avatar bugman 30/03/2014 - 20:03

C'est quand même étrange de documenter quelque chose qu'il ne faut surtout pas toucher Apple !

https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIntro/introduction.html

Quelques fois, c'est indispensable. Little Snitch (par exemple) ne serait certainement pas si sécurisé sans ce besoin de s'accroche (comme une moule à son rocher) au noyau.

avatar dmorel 30/03/2014 - 23:20

Pour Little Snitch en l'occurence, il s'agit plus de règles de firewall avec des outils userland, si je ne m'abuse (pf?). Mais bon, sur le principe, oui.

avatar bugman 31/03/2014 - 00:02

@ dmorel : Il a un .kest et ne fonctionne plus si tu lances la machine sans extensions (je pense qu'il est là pour verifier qu'on ne vient pas corrompre l'application ; enfin, il contient des strings qui me font penser à ça).

avatar dmorel 31/03/2014 - 09:50

Oui d'accord, mais bon à la base c'est quand même de la gestion de firewall, donc c'est pas vraiment kernel-land :-)

avatar oZen 30/03/2014 - 20:03

Non mais attendez si "IOUSBFamily" est supposé être publié c'est qu'il doit comporter du code open source non ? Et donc l'obligation de republier derrière. Je dis des bêtises là ?

avatar lmouillart 30/03/2014 - 21:17

La version pour OS X 10.8 était sous APSL (opensource et libre).
Darwin et ses composants ont historiquement très peu de contributions en dehors de chez Apple.
Même sur un logiciel libre, ceux qui possèdent le copyright peuvent tout à fait changer la licence pour une nouvelle version.
Si ceux qui possèdent le copyright sur une portion de code ne sont pas d'accord, il "suffit" de supprimer leur code et faire autrement.

Soit la personne du support s'est trompée (ça arrive), soit le module version de 10.9 à changé de licence.
Rien n’empêche de partir sur celui de la version 10.8.5 (dernière publiée), et de la porter sous 10.9, mais le comportement ne sera pas strictement équivalent à celui d'Apple.

---
"Open Source" ça veut juste dire que les sources sont visibles, pas qu'elles sont modifiables ou qu'il y a droit de faire quelque chose avec

avatar denisbook 30/03/2014 - 22:11

Notez ici que pour un développeur programmer le noyau c'est un vrai bonheur car celà permet de faire faire à son Mac ce que l'on souhaite ! Petit exemple simple et concret pour que tout le monde comprenne, j'avais besoin de l'avance/retour arrière rapide (FFW,FRW) lors d'une écoute iTunes avec mon casque sur mon Mac, impossible sans implémenter une extension au Kernel. Besoin d'empêcher la mise en veille de l'écran lors de la fermeture du Mac, impossible sans extension au Kernel. Besoin de faire retentir une alarme iCal même lorsque l'écran est rabattu et l'ordi en veille, impossible sans extension au Kernel etc .... bref, en ce qui me concerne je n'ai pas honte de dire que si Apple verrouille toute possibilité de bidouiller son Mac, je risque fort de changer d'OS ... et c'est bien parti pour car avec Mavericks, même pour un usage personnel, il nous faut passer par un système de validation sous peine de se voir afficher dans certains cas une fenêtre à la con !

avatar methos1435 30/03/2014 - 22:46via iGeneration pour iPad

etonné de voir autant se monde approuver la décision d'apple...
Pour exemple parmis tant d'autres, et donné dans cet article: certains vont l'avoir mauvaise quand ils ne pourront plus activer le trim sur leur ssd non apple...

avatar jipeca 30/03/2014 - 23:01

C'est vrai que depuis des années, les dev on démontré qu'ils déstabilisaient, fragilisaient, sapaient, affaiblissaient le système... Hein !?
Enfin on foutait tout en l'air, quoi ! Et tout d'un coup,  s'en rend compte et va commencer a sévir... pour not' bien à nous aut' qu'on n'comprend rien à rien, et qu'y sont plus intelligents qu'tou'l'monde.

avatar wildtiger 31/03/2014 - 01:03via iGeneration pour iPad

@BitNic : ta femme te tient par les c******s ? LOL

avatar iapx 31/03/2014 - 01:20

CISCO a eu un passe-droit depuis 2010?
Ça explique pourquoi de temps à autres, en utilisant le VPN CISCO, un de mes MAC plante au démarrage ou plante occasionnellement sur cette extension: CISCO est vraiment mauvais :(

avatar redchou 31/03/2014 - 04:35via iGeneration pour iOS

@iapx :
Cisco a eu un passe droit sur iOS ou sur OS X ?
J'ai compris l'article comme un passe droit sur iOS...

avatar Psylo 31/03/2014 - 09:57

Ca fait quelques années que la plupart des devs d'origines de Darwin se sont barrés. OSX se trimballe un vieux noyal avec son micro kernel Mach qui n'évolue pas et dont peu de personnes connaissent les subtilités et un couche de FreeBSD 5 totalement dépassée et archaïque.

avatar ovea 31/03/2014 - 14:28via iGeneration pour iOS

DES BOÎTES !
(Cantate des boîtes - à Boris Vian)

N'y verrait-on qu'une “concorde” venu d'une cure d'amincissement du noyau d'iOS dont pourrait bénéficier OSX…

Mais alors pourquoi ne pas laisser le terminal sur iOS (bien sympathique après jailbreak) ou, l'émulation complète d'iOS sur Mac dans un univers utilisateur simplement.

Pour l'heure, une gestion graphique sur base du firewall d'OSX pourrait certainement marquer le manque d'outils Apple pour l'utilisateur qui gagnerait à passer également sur iOS !!! On est loin du compte.

Si tout ça n'est pas très claire pour le “maître des lieux” … on ne met pas assez en avant la demi-intégration de l'aspect serveur d'OSX (encore payante) au même titre que les outils développeurs (soumis aux règles qui poussent cette article sur le devant de la scène …) on est déjà loin de la communauté BSD.

avatar oomu 31/03/2014 - 16:45

ce genre de décision va dans le sens d'Apple : cela lui simplifie la vie.

Par contre, il devrait être le choix de l'utilisateur d'accepter ou non une nouvelle "extension système". et seul des logiciels bien explicites, bien notifiés (en rouge fluo de l'enfer) devraient ajouter une extension système.

Ainsi Vmware ou Parralels sont de bons exemples et il sont justifiés. Il serait terrifiant si demain au nom de la sauvegarde de l'intérêt de simplification de la vie d'Apple, il devenait impossible de développer la virtualisation ou TOUT AUTRE USAGE NOVATEUR NON PREVU DANS LE NOYAU !

(et y en a de toutes sortes, tous les matins les gens ont de NOUVELLES idées délirantes. que ça soit du réseau en mesh, de la virtualisation de réseau ou que sais je encore ?).

Le noyau a besoin d'être potentiellement modifié à la convenance d'un utilisateur AVERTI. Du moins.. si les ordinateurs qu'on achète (avec nos sous?) sont encore les nôtres...

-
Linux n'est pas plus stable ou instable parce qu'on peut atteindre le kernel (Os X aussi le permet hein et que je sache votre vie se passe bien depuis +10 ans)

Ce que les gens veulent dire par "stable ou instable" à propos de linux, ce sont les APPLICATIONS (genre lecteur de vidéo, outil de généalogie, éditeur de cave à vin, etc) qui sont moins fonctionnelles ou de moins bonnes qualités que sous windows et os X.

La seule raison pour cela c'est le manque d'investissement (temps, personnes, ARGENT) dans les outils de développement, le cadre applicatif (gnome ou kde) pour faciliter la création de logiciels utilisateurs.

Leur développement est encore trop anarchique, et y a encore trop de refontes régulières (cassant la compatibilité avec les applications utilisateurs) avec pas assez de moyens pour faire vite et bien. Ces projets sont extraordinairement courageux mais ne peuvent pas atteindre le même niveau que Cocoa sans un sérieux financement privé.

Sinon, Linux brillerait.

-
Pour tous les usages professionnels, une distrib telle "centos" (redhat server opensource) est _stable_ : vous mettez à jour via les patchs de sécurité et bugfix, et votre Apache ou Totem marchera toujours.

Mais ce n'est pas ce que vous ici vous voulez... ici , vous voulez un système généraliste avec des apps bonne-enfant pour votre quotidien, qui évolue régulièrement avec de nouveaux trucs funs et colorés.

ce n'est pas pareil.

avatar jipeca 31/03/2014 - 18:41

Mon Dieu, mon Dieu...

Je crains que tu ne parviennes jamais à être assez convaincant pour la nouvelle vague. Il est bien connu que tout ce que La Firme fait, elle le fait pour leur bien.

Enfin, on aura mangé not' pain blanc quelques petites années, dirait mon grand père.

Pages

Connexion utilisateur