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

Christophe Laporte |

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.

avatar BitNic | 

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 | 

Les liens Suite... sont cassés

avatar zoubi2 | 

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 | 

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 | 

@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 | 

@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 | 

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 | 

@JLG47

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

avatar dtb06 | 

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 | 

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 | 

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 | 

@ 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 | 

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 | 

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 | 

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 (non vérifié) | 

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 | 

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 | 

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 | 

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

avatar iapx | 

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 | 

@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 | 

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 | 

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 | 

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 | 

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.

avatar Moonwalker | 

"Sinon, Linux brillerait."

Raconte-ça à Miguel de Icaza.

"The only way to fix Linux is to take one distro, one set of components as a baseline, abadone everything else and everyone should just contribute to this single Linux."
http://tirania.org/blog/archive/2012/Aug-29.html

Les moyens humains et financiers sont là, depuis longtemps, mais ils sont dispersés dans l'anarchie générale du "Libre" qui conduit à une inévitable fragmentation des projets, jusqu'au noyau.

Cette anarchie est nécessaire, elle est constitutive de la vitalité du techno-système GNU-Linux, mais c'est aussi un tonneau des Danaïdes pour l'investissement.

avatar elamapi | 

Petit à petit Apple ferme les portes.

Finalement, est-ce qu'un ordinateur Apple est à nous ?

Il devient relativement impossible d'apporte une quelconque modification hardware, de plus en plus chiant d'ajouter du matériel non certifié par Apple himself.

Apple se montre de plus en plus contraignant quand aux softs qu'on à le droit d'installer.

Le fan me dira que c'est pour mon bien, pour que mon ordinateur soit stable, qu'il fonctionne bien. Mais est-ce qu'on m'a posé la question AVANT.

Si j'ai envie d'installer un soft qui risque de faire planter mon OS, ce n'est pas mon droit ?

Je suis pour les garde-fou bien sur, mais dans un cadre respectueux des libertés individuelles.

Qu'Apple fasse son store ou ils n'acceptent QUE les applis respectant une charte contraignante, c'est trés bien. Mais j'ai peur qu'on soit un jour obligé de ne passer QUE par là.

Comme sur iOS (à noter que ça devient également de plus en plus le cas pour Google sur Android).

avatar patrick86 | 

"Si j'ai envie d'installer un soft qui risque de faire planter mon OS, ce n'est pas mon droit ?"

C'est ton droit, c'est normal, et c'es heureusement encore possible.

"Qu'Apple fasse son store ou ils n'acceptent QUE les applis respectant une charte contraignante, c'est trés bien. Mais j'ai peur qu'on soit un jour obligé de ne passer QUE par là."

C'est à mon avis peu probable que l'installation d'app issues de sources autres que l'App Store et les dev référencés soit interdite un jour. Il y a encore énormément d'applications et programmes en tous genres, issues de sources très diverses, pour qu'Apple puisse faire ça sans que ça lui pète à la gueule.

avatar elamapi | 

Au vu des commentaires ici, je ne suis pas certain que ça "pète" à la gueule d'Apple. Les gens continueraient à acheter en masse parce qu'Apple c'est TOP.

Alors, bien sur, si c'était fait demain, ça ferait un peu scandale, mais le chemin que semble prendre Apple (mais aussi MS/Google) c'est bien celui la.

On ferme un MAX pour ne plus laisser d'autre choix que d'utiliser l'ordinateur comme Apple/Google/MS le veulent, et pour ne plus laisser d'autre choix que d'installer ce dont bon leur semble.

Perso, je suis pas super fan

avatar patrick86 | 

@elamapi :

Sur iOS c'est accepté parce qu'il n'y avait pas d'apps tiers avant l'App Store. Il est venu avant les applications.
Sur OS X c'est l'inverse.

Ça ne se ferra en tout cas pas d'un coup. Y'aurai au moins l'étape des développeurs signés avant.

--

Le retour de SyncServices dans 10.9.3 laisse penser qu'Apple comprend peut-être que le cloud n'est pas si génial que ça…

Google fait du cloud massif et nous montre qu'elle continue dans cette voie, notamment avec Chrome OS.
Microsoft à l'avenir va miser à fond sur le cloud, elle l'a dit.
Apple ne me donne pas l'impression d'y aller à fond : iCloud ne propose pas de stockage massif "pas cher" et n'est pas obligatoire (ni sur OS X ni sur iOS) ; les apps Apple pouvants utiliser iCloud s'en passe aussi très bien, etc.

CONNEXION UTILISATEUR