• [^] # Re: Darwin

    Posté par . En réponse à la dépêche Sondage sur le libre en entreprise. Évalué à 1.

    Pour être un peu plus précis dans le fouillis des noms:

    - Darwin = couche "basse": micro-noyau Mach3 (colocalisé pour ne pas avoir les problèmes de perfs des "vrais" OS a micro-noyau), noyau BSD adapté, l'IOKit (modèle de driver), userland en provenance FreeBSD, plus d'autres outils (netinfo - un équivalent de NIS, le runtime objective-c, un gcc lourdement patché, une pile appletalk, etc.)
    - Aqua: c'est le nom du "look&feel" graphique, ça recouvre donc l'apparence de l'interface, le moteur graphique, etc.
    - Carbon: une API C qui est une réimplémentation clean de l'essentiel de l'ancienne toolbox Macintosh sur des bases modernes. C'est ce qui permet de porter des monstres comme Photoshop ou Office sans trop de difficultés sur un Unix
    - Cocoa: une API objective-C ou Java qui utilise comme coeur les anciennes classes NextStep/OpenStep. Très, très puissant, très clean, et toujours avec le bon vieux Interface Builder pour faire sa conception de GUI en clickodrome (qui supporte maintenant Carbon, d'ailleurs)
    - Quartz: c'est le nom du moteur graphique. L'équivalent de XFree sur MacOS X. Un peu dans la lignée du Display Postscript de NeXT, mais modernisé: modèle graphique PDF, gestion vectorielle et des couches alphas en standard, fontes unicode, possibilité de brancher de l'affichage distant.

    Quoi d'intéressant pour le libre là dedans ? Déjà tout Darwin, ne serait-ce que comme ça les gens de LinuxPPC ou NetBSD ont une implémentation de référence pour le support du hard. Mais aussi parce qu'il y a des gens chez Apple qui sont chargés de faire remonter patches et améliorations aux outils libres utilisés: cf. par exemple ce qui se passe niveau obj-c dans gcc 3.x. Il y a aussi l'arrivée de Jordan Hubbard (cofondateur de FreeBSD) pour prendre la tête de la partie BSD qui est une bonne nouvelle.
    Il y a aussi pas mal de bonnes idées dans des choses comme l'IOKit, qui est un joli modèle de driver, objet (mais écrit dans un subset de C++ pour pas avoir de problèmes de bloat) et fait pour gérer facilement plug&play ou gestion fine de l'APM, des trucs comme CoreAudio qui permettent d'avoir une latence excellente au niveau traitement son.

    Hors de la partie Darwin, il y a aussi amha des choses très intéressantes, ne serait-ce que comme inspiration et pour voir qu'on peut faire les choses autrement, en particulier Quartz, mais aussi des choses comme la manière d'empaqueter les applications ou les libs par les Bundles (des directories qui gardent au même endroit tout ce qui est relatif à un même truc: localisation, headers, executables pour plusieurs archis, etc).

    Quelques refs:
    <UL>
    <LI> Un coup d'oeil général http://developer.apple.com/techpubs/macosx/Essentials/SystemOvervie(...) (un peu marketoide et orienté macounets parfois, mais intéressant)
    <LI> Pour Quartz: http://developer.apple.com/techpubs/macosx/CoreTechnologies/graphic(...)
    <LI> L'IOKit et le noyau Darwin: http://developer.apple.com/techpubs/macosx/Darwin/(...)
    </UL>