Des nouvelles d'Apple : Mac OS X

Voici un an que la firme à la pomme a introduit son nouveau système d'exploitation, annoncé comme révolutionnaire. Les Maqueux, bon gré, mal gré, doivent s'y convertir. Visite d'un monde parallèle.

Un peu d'histoire

Apple, entreprise fondée en 1976, a apporté au grand public quelques unes des techniques de base de l'informatique moderne : les interfaces fenêtrées, la souris, le copier-coller. À la fin des années '80 et au début des années '90, il se vendait autant de Macintoshs que de de PCs. Pourtant, les prix salés de Apple ont fait qu'il a manqué la vague qui a amené un PC dans tous les foyers. Aujourd'hui, la part de marché de Apple s'est stabilisée autour de 5 % (principalement aux US). Les utilisateurs de Macintoshs sont essentiellement des graphistes, des artistes, et des amateurs fortunés.

Sur le plan technique, les événements importants de l'histoire récente du Mac sont :
La migration vers Mac OS X est un pas de longueur analogue à celle de Windows 3.1 vers Windows NT. OS X est la fusion de technologies issues de Mac, MkLinux (portage maison de Linux sur Mac) et NeXT (qu'Apple a racheté en 1996). La version 10.0 sortie en mars 2001 était une béta, ce n'est qu'à partir de 10.1 que l'OS a vraiment été utilisable.

Le but principal de Apple est de rattraper son retard en matière d'OS. Le but secondaire est de surfer sur la vague libre, en récupérant des développeurs bénévoles et des bêta-testeurs qui ont fait le succès de Linux. C'est pour cette raison qu'une partie de l'OS est open-source, et que des versions bêta ont été disponibles tôt.

Il y a deux versions de Mac OS X : standard et serveur. Le second ajoute une version optimisée de Apache, avec des modules commerciaux (WebObjects), et une intertface d'administration pour les services réseau (Apache, SMB, NFS, etc.)

Le hardware

La gamme de machines Apple est composée de trois lignes :
Chaque ligne se décline en plusieurs versions plus ou moins customisables. Apple intervient surtout pour décider du design des machines et leur finition. Pour le reste, les composants des Macs d'aujourd'hui sont presque tous communs avec le monde PC : connecteur VGA, bus PCI+AGP, SDRAM, disque dur IDE, clavier et souris USB, carte vidéo nVidia.

Sur toutes les cartes mère, il y a en plus une carte réseau 100 Mb/s, un modem, 1 ou 2 ports firewire (=ieee1374), et une carte son. Les processeurs (G3 ou G4 de 600 MHz à 1 GHz, éventuellement en parallèle)  sont fabriqués par Motorola, et implémentent les instructions PowerPC 32 bits. Grossièrement, leur vitesse correspond à celle d'un P3 à meme fréquence.

Le système d'exploitation

Mac OS 9, le système d'exploitation pré-X était largment dépassé. Il n'y avait pas de multitâche préemptif, la protection mémoire était pratiquement inutilisée, pas de mémoire virtuelle, etc.

Le centre de Mac OS X est un micro-noyau Mach 3.0, et le système de base est 4.4 BSD. Ces deux composants, largement modifiés, sont appelés Darwin. À ce niveau, on a une API Posix, les utilitaires de base, une console et une arborescence de fichiers Unix standard. Darwin est open-source, on peut aussi l'installer sur un x86.

Darwin est très modulaire : kmodstat montre une soixantaine de modules (contre une vingtaine avec lsmod sous Linux). Les modules s'exécutent tous dans l'espace d'adressage du kernel (qui n'est donc pas à proprement parler un micro-kernel). Les communications entre les programmes dans l'espace utilisateur et le kernel se font à l'aide messages Mach, les ioctl sont beaucoup moins utilisés que dans les unix classiques.

L'API I/O Kit permet à la fois le développement de drivers et de programmes de bas niveau. Dans l'espoir de faciliter la réutilisation du code, la partie côté kernel est écrite en C++.

En somme, Apple a récupéré les bons composants du monde unix comme base pour son système graphique fabriqué maison.

L'interface graphique

Le look général de Mac OS X est blanc, avec des rides horzontales. Les boutons sont en plastique rond, coloré et transparent. Les menus sont transparents, et les fenêtres ombrées. Il n'y a pas de mouvement brusque : les bontons ne clignottent pas, ils pulsent ; à l'inconification, les fenêtres sont comme aspirées par le Dock. En hommage sans doute à cette fluidité, l'interface s'appelle Aqua.

Plusieurs paradigmes du Mac classique ont été maintenus : Par ses possibilités, Aqua ressemble beaucoup plus à Windows qu'à X11 (voir tableau). Il reprend d'ailleurs le menu démarrer (qui remplace le menu pomme), et la barre des tâches  (appelé Dock).

+ de X11
+ de Aqua
network-transparent
window manager indépendant
on peut lancer plusieurs serveurs X
bureaux virtuels, focus-follows-mouse
alpha-blenging
anti-aliasing
gestion correcte des fontes
changement dynamique de résolution, de profondeur de couleurs et de nombre d'écrans

Il y a plusieurs manières de faire une application fenêtrée sous Aqua :
Les couches graphiques inférieures sont :
Pour être complet, il faut dire que Xfree86 a porté son serveur X sur Darwin. Les fenêtres X s'affichent soit sur un écran à part, soit sur le bureau Aqua. On peut donc recompiler les applications X ou les exécuter à distance.

L'implantation des différentes APIs est faite avec un maximum d'accélération matérielle. Apple peut se permettre de développer lui-même les drivers parce qu'il ne supporte que deux types de cartes vidéo : les ATI rage 128, et les nVidia gForce 2/3/4.

Cocoa et Quartz sont les technologies qui vont continuer à se développer. Les événements sont passés entre widgets à l'aide de messages Mach, et les deux APIs sont thread-safe.

L'interface graphique, malgré le nombre de vieilles technologies qu'elle doit supporter, est stable et réactive. Elle est moderne, mais moins surchargée que celle de Windows XP.

Le système de fichiers & les exécutables

La couche Darwin est basée sur une hiérarchie de fichiers unix standard : /etc, /bin, /usr, /dev, etc. Ces répertoires n'apparaissent pas dans le Finder (l'explorateur du Mac). Les répertoires propres à Mac OS X (reconnaissables à leur majuscule) sont :
Sous MacOS pre-X, les fichiers sont constitués de deux forks : le data-fork qui encapsule le contenu des fichiers, et le ressource-fork. Le ressource-fork était constué deux ids 32 bits codant le type et le créateur des fichiers (analogues à un type mime), suivis d'un nombre arbitraire de blocs indexés par des tags de 32 bits, qui contenaient notamment l'icône, la description de ses menus, des sons, etc. Mac OS X peut être installé sur le système de fichiers UFS (unix normal), ou sur HFS+. Le second est le seul qui supporte les forks.

Apple tend à abandonner les ressource-forks, notamment parce qu'ils étaient systémariquement perdus quand ils passaient sur un réseau ou quand on les compressait avec autre chose que Stuffit. Cependant, ils sont bien utiles pour stocker les informations privées des exécutables. C'est pour cela que les exécutables Mac OS X sont des répertoires !

Ainsi, l'application TextEdit  (équivalent de WordPad) apparaît dans le shell comme TextEdit.app/, contenant (entre autres) :
Tous les fichiers privés de l'application sont rangés dans cette arborescence, ce qui évite d'avoir à créer des fichiers ailleurs. Pour désinstaller l'application, il suffit de la mettre à la poubelle.

Il y a cependant des exceptions :
Les librairies dynamiques ont le même format que les .so qui accompagnent les exécutables ELF. Leur extension est .dylib . Les librairies standard unix (libc.so+libm.so = libSystem.dylib ) sont dans /usr/lib. Les autres sont organisés  sous forme de frameworks . Un framework est constiué de la librairie, des headers correspondants, et de le sa documentation, organisés dans une arborescence analogue à celle d'une application (tous deux sont des bundles).

Les utilisateurs

Les noms d'utilisateurs, les groupes, les rpcs, et la plupart de ce qui se trouve normalement dans des fichiers dans /etc sont dans une base de données au niveau système : NetInfo. C'est un ensemble de clés et de valeurs organisées dans une hiérarchie (un peu comme la base de registre Windows) . On peut l'éditer avec une interface graphique ou en ligne de commande, et on peut le connecter à un serveur LDAP ou NIS.

Il y a trois types d'utilisateurs :
Les préférences des logiciels, définies par utilisateur sont stockés dans des fichiers XML sous $HOME/Library/Preferences . Par exemple com.apple.iTunes.plist contient le préférences de iTunes, qu'on peut éditer comme texte ou avec la commande defaults , ou avec une interface graphique (ou depuis iTunes lui-même).

L'offre logicielle

Le système fourni avec un nouvel ordinateur vient avec :
Les éditeurs de logiciels sont plus ou moins satisfaits de la migration vers Mac OS X. Ça représente une nouvelle plateforme qu'il faut supporter, mais d'un autre  côté, une erreur de programmation ne fait plus planter la machine.

Alias|Wavefront a ouvert la danse en portant enfin Maya sur le Mac. Microsoft joue le jeu en carbonisant Explorer et Office, qui devient Office X. Adobe va sortir les nouvelles versions de ses logiciels pour OS X, ils ont déjà commencé par Illustrator 10. QuarkXpress 5.0  est sorti pour OS 9 en premier, mais la version OS X ne devrait pas tarder. Corel GraphicsSuite 10  tourne sous OS X. Macromedia a déjà sorti FreeHand. Les logiciels qui n'ont pas été portés tournent correctement sour l'émulateur.

Les éditeurs de jeux auront moins de mal à porter leurs applications, puisque le plus souvent, leur interface graphique ne dépend que de OpenGL. id a sorti Quake3. Alice, Castle Wolfenstein , et Tomb Raider Chronicles tournent sous OS X.

Les plugins pour internet arrivent. Les plugins Flash et QuickTime étaient fournis dès le début. Windows Media est porté, mais Real Player se fait attendre.

Traditionnellement, il y a toujours eu une myriade de sharewares sur Mac. On peut espérer que la culture freeware prendra le relai, puisque des outils de développement de qualité sont disponibles gratuitement.

D'une manière générale, les éditeurs traditionnels préfèrent carboniser leurs applications. On peut se demander s'ils feront l'effort de les porter complètement. Aucun éditeur exclusivement Windows n'a exprimé un intérêt renouvelé pour le Mac.

Yet Another Operating System ?

Comme vous le voyez, Mac OS X est une combinaison assez réussie de composants unix et d'une interface plus moderne que X. Dans le langage managerial de Apple, on appelle ça : « the world's most advanced operating system ». Pour finir, je vais donner quelques arguments pour s'intéresser à l'aventure :
Le mois qui vient, nous allons nous intéresser à la programmations avec Cocoa, qui est facilitée par des outils de très haut niveau.

Contact : 

Matthijs Douze prépare une thèse dans une école d'ingénieurs à Toulouse (France). Il est passé avec une satisfaction croissante de DOS à Windows, puis à Linux, et enfin à Mac OS X. Vous pouvez le contacter (en français ou en anglais) à mailto:douze@enseeiht.fr

Images :

A photo of the new iMac http://www.apple.com/pr/photos/imacflat/2002imac.html (first photo of the page), "The new iMac looks like a desklamp..."
A photo of Steve Jobs http://www.apple.com/pr/photos/execs/jobsphotos.html , with the comment "Steve Jobs, Apple's Bill Gates."
A snapshot of Mac OS X in action : http://www.enseeiht.fr/~douze/osx_snap.png comment : "Aqua, featuring mainstream applications, a unix shell and transparent windows"


The copyrights of Apple's photos look right for me, and I made the snapshot myself.

References :

Apple's website (très bien fait et complet) : http://www.apple.com/

Apple developers connexion:  http://www.apple.com/developer/

Darwin : http://www.opensource.apple.com

Integrating Mac OS X in an NIS environment : http://www.bresink.de/osx/nis.html

Inside Mac OS X: System Overview : http://developer.apple.com/techpubs/macosx/Essentials/SystemOverview/index.html

Apple software at Microsoft : http://www.microsoft.com/mac/



ÿ