Apple repense la signature des fichiers

Arnaud de la Grandière |
Lorsque le Macintosh est arrivé en 1984, si son interface graphique était l'élément le plus évident du caractère révolutionnaire de la machine d'Apple, c'était loin d'être le seul. La façon dont le Mac gérait ses fichiers était également un modèle du genre. Sur MS-DOS, les fichiers ne pouvaient avoir un nom que de 8 caractères (contre 31 pour le Mac), suivis d'une "extension" de 3 caractères qui déterminait le type de fichier (par exemple "fichier.doc"), ce qui est plutôt abscons.

Sur Mac en revanche, les fichiers n'avaient pas d'extension : en lieu et place, ils intégraient une signature, qui précisait à la fois le format de fichier, et l'application qui l'avait créé (sur 4 caractères chacun). Non seulement chaque format de fichier a droit à sa propre icône permettant de l'identifier, mais celle-ci varie également en fonction du logiciel qui l'a créé (Apple fournissant des guides pour que le tout soit clair et cohérent).

Ainsi, Photoshop avait pour type APPL (précisant qu'il s'agit d'une application), et pour créateur 8BIM. Un fichier au format Photoshop avait pour type 8BPS et pour créateur 8BIM. De cette manière, le Finder détermine automatiquement quelle icône attribuer au fichier, mais également avec quel logiciel l'ouvrir lorsque l'utilisateur double-clique dessus. À l'inverse de ce qui se fait chez Microsoft, chaque fichier peut s'ouvrir directement avec le logiciel qui l'a créé, quel que soit leur format. Sur Windows, en revanche, un seul logiciel s'ouvre par défaut pour tout type donné de fichier.


L'édition de la signature dans ResEdit


Sur les autres systèmes, les fichiers sont un simple empilement de données, au format binaire ou ASCII. Sur Mac en revanche, les fichiers possèdent une data fork pour les données en elles-mêmes, et une resource fork qui contient diverses informations sur le fichier ou des données formatées spécifiquement (palettes de couleurs, éléments d'interface, etc). De même, les logiciels disposaient d'une ressource BNDL qui listait tous les types de fichiers gérés par l'application (et donc tous les formats). Ainsi, le Finder pouvait déterminer s'il pouvait autoriser le glisser-déposer d'un fichier sur une application qui ne l'avait pas créé. La resource fork était une des spécificités du filesystem du Mac, HFS. De même, c'est dans les attributs HFS que la signature type/créateur des fichiers était stockée.

Tout allait pour le mieux dans le meilleur des mondes possibles, et nombre d'utilisateurs du Mac ne tarissaient pas d'éloges sur le confort qu'un tel système permettait, jusqu'au jour où les ordinateurs ont cessé de vivre en autarcie : les PC ont fini par abandonner les disquettes 5,25" pour préférer le format 3,5" utilisé par le Mac, et les réseaux hétérogènes ont commencé à apparaître. Et là, horreur, les fichiers créés sur Mac devenaient illisibles une fois qu'ils voyageaient sur des partitions de formats autres que HFS. Les fichiers Mac, sans extension dans leur nom, devenaient impossibles à lire sur PC à moins d'ajouter l'extension idoine à la main. Une fois revenus sur un Mac, ils avaient perdu leur signature type/createur, et le Finder n'arrivait plus à savoir avec quel logiciel les ouvrir. Apple a bien proposé un tableau de bord, nommé Echange PC/Mac, qui se chargeait, outre du support des disquettes MS-DOS, de convertir le typage des données entre Mac & PC (à l'aide d'une base de données d'extensions et leurs correspondances en type/créateur). Hélas, ça ne réglait pas le problème des applications, qui devenaient définitivement inutilisables dès lors qu'elles étaient stockées sur un disque non-HFS, à moins de les compresser et de les encoder. Et l'arrivée progressive d'Internet n'a rien fait pour simplifier les choses (ceux qui se rappellent des .sit.hqx en savent quelque chose). Ce qui était d'une simplicité exemplaire tant qu'on restait entre Macs devenait un vrai casse-tête dès qu'on utilise d'autres formats de stockage. Il n'est d'ailleurs pas impossible que ce problème ait été une des raisons qui ont fait reporter le support de ZFS dans Mac OS X, pourtant promis de longue date.

Bref, la particularité du Mac, si elle était une force en autarcie, est devenue une faiblesse dans un monde connecté. L'arrivée de Mac OS X a offert une porte de sortie : à la trappe la resource fork, toutes les ressources sont converties au format data : les applications deviennent des dossiers (dont on peut toujours afficher le contenu en sélectionnant "afficher le contenu du paquet" dans le Finder) qui contiennent différents types de fichiers pour remplacer feue la resource fork, et les extension à la manière de MS-DOS, Windows, Linux et Unix font leur apparition sur Mac (bien qu'il soit possible de les masquer pudiquement). Les fichiers, quant à eux, voient leurs ressources stockées dans des dossiers invisibles. Mais la signature type/créateur survit vaille que vaille… jusqu'à l'arrivée de Snow Leopard (voir notre article Quand Apple complique l'ouverture des fichiers).

Catastrophe! Apple aurait passé à la trappe cette merveilleuse trouvaille ? A y regarder de plus près, pas tout à fait, comme le souligne AppleInsider. On l'a vu, la signature type/créateur pose quelques problèmes en environnement hétérogène, mais il y en a d'autres. Ainsi, la limite de quatre caractères arrive très vite à saturation, et il devient difficile de trouver des combinaisons disponibles pour de nouveaux types de fichiers. D'autre part, le typage des données est utilisé à bien d'autres endroits : le presse-papiers (qui contient différentes versions des mêmes données pour en permettre l'utilisation partout, ainsi, une page HTML devra rester lisible selon qu'elle sera collée dans un document de texte, enrichi ou non), coup d'œil, les services (qui sont en quelque sorte un copier-coller paramétrique), ou encore le glisser-déposer entre applications. Pour tous ces éléments du système qui font appel au typage des données, et pour répondre aux problématiques induites par la signature type/createur, Apple a apporté avec Snow Leopard une réponse fiable, durable, homogène, tout en conservant la compatibilité avec le passé.

Ce nouveau système, nommé UTI (pour Uniform Type Identifiers), a été introduit dans Tiger : Snow Leopard ne fait qu'entériner la bascule en abandonnant la signature type/créateur. Il emprunte au MIME type du web et du mail, en poussant le principe bien au-delà. Ainsi, lorsqu'on avait autrefois une signature 8BIM/8BPS pour un fichier créé par Photoshop, on aura dorénavant une signature sous la forme de com.adobe.photoshop-image. Celle-ci fait également partie d'un arbre de famille, puisqu'elle se raccorde à d'autres signatures, de type public. Ainsi, des données ayant pour signature "public.html" se conforment également à l'UTI "public.text". De cette manière, toute application capable de gérer du texte devient de facto capable de gérer le format HTML. En outre, les UTI permettent d'attribuer automatiquement l'ancienne signature Mac "HTML", mais également toutes les extensions de nom connues du html (.html, .htm, .shtml, .shtm), et même le type MIME "text/html".



De cette manière, les UTI deviennent le standard universel du typage de données, et répondent à toutes les problématiques induites par les différents systèmes. En outre, le procédé est dorénavant homogène dans tout le système, avec un seul gabarit de typage qui répond à toutes les utilisations. En outre, plus de limites sur le nom, et il n'y a plus besoin non plus d'enregistrer un nouveau type dans un registre public comme c'était autrefois le cas : le simple raccordement aux UTI publics permet à toute application d'exploiter simplement les données sans avoir même jamais croisé le format de fichier précédemment.

Voilà une nouveauté de taille, bien que comme nombre d'améliorations incluses dans Snow Leopard, elle ne saute pas aux yeux au premier abord. Mais il s'agit clairement d'un gestionnaire tourné vers l'avenir et les autres plateformes.
Tags
avatar sekhmet | 
encore un excellent article de fond de MacGé, bravo, c'est très intéressant !
avatar Anonyme (non vérifié) | 
hmmmmm... resedit... que de souvenirs :-)
avatar eTeks | 
Bravo pour cet article même si les UTI datent de Mac OS X 10.4 (voir sur [url=http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/11]arstechnica.com[/url]). ;-)
avatar Nicolas_D | 
Wouah encore un bel article de MacGé, pas sûr de tout comprendre ces histoires de fourchettes et de pantomimes mais super intéressant toutefois.
avatar Lemmings | 
Heu, donc Apple en 2009 reprend ce qui existais en 1985 sur Amiga ? Oki pas mal... :D
avatar Eaglelouk (non vérifié) | 
En effet, les UTI c'est pas du tout nouveau oO
avatar Arnaud de la Grandière | 
@ eTeks : ce qu'il y a de nouveau dans Snow Leopard, c'est que la signature type/createur a été abandonnée au profit des UTI, alors que les deux coexistaient jusqu'ici.
avatar jerome74 | 
[quote]C'est dans la resource fork que la signature type/créateur était stockée.[/quote] Non, le type et le créateurs étaient des attributs HFS (de même que les date de création/modification, l'étiquette, et autres flags) et ne faisaient pas partie du resource fork. Quand aux UTI, ils sont apparus progressivement depuis 10.4. Et ils ne résolvent en rien le problème: ils permettent juste d'associer une extension à un type/createur ou à un type MIME; mais si un fichier ne comporte ni extension, ni de type/créateur, et n'est pas associé à un type MIME (dans les headers HTTP ou du message mail), alors rien ne permet de connaitre son UTI et donc de trouver l'icône à utiliser, ou l'application pour l'ouvrir...
avatar Macleone | 
Article fort instructif, cependant: [quote] Il n'est d'ailleurs pas impossible que ce problème ait été une des raisons qui ont fait reporter le support de ZFS dans Mac OS X[/quote] Peut probable. ZFS supportes les attributs étendus, qui sont équivalent aux ressources sur HFS. [quote]Ainsi, la limite de quatre caractères arrive très vite à saturation,[/quote] Bin ouais, ça fait quoi, 20 millions de combinaisons si on se limite aux caractères standards. ;-)
avatar Almux | 
@Lemmings Amiga était certainement très bien... mais tout ne pourrait sûrement pas être "repris" de nos jours... OK?
avatar L-J | 
Ça fait toujours plaisir de revoir ResEdit, et c'est une très claire et très intéressante présentation, mais à mon sens, l'article se trompe lourdement lorsqu'il reprend Apple Insider. Les UTI remplacent avantageusement les "types", mais n'ont rien à voir avec les "créateurs". Autrement dit : ils n'ont rien à voir avec le fait d'associer un fichier en particulier à une application, ce qui est précisément le sens du code créateur. Dans Snow Leopard, Apple a bien retiré une fonctionnalité qui n'a été remplacée par rien d'équivalent. A tout prendre, voilà [url=arstechnica.com/staff/fatbits/2009/09/metadata-madness.ars]une jolie synthèse[/url].
avatar Lemmings | 
Almux : évidement. Une machine conçue en 85 ne peut pas répondre aux besoins de 2009, mais certaines idées auraient tout intérêt à être appliquées depuis longtemps. La gestion des types de fichier est un exemple parfait. L'information était codée dans le header du fichier, qui restais compatible avec les autres environnements sans avoir besoin d'un fichier externe résiduel polluant pour avoir l'information. Alors peut être que techniquement la chose était limitée ou quoi, mais ça marchait de manière plus simple, logique et portable que les solutions d'Apple et Microsoft. Autre exemple jamais repris jusque là... Les Datatypes ! C'était tout simplement génial. En gros pour ceux qui connaissent pas, l'OS disposait d'un répertoire central appellé "Datatypes" qui était lui même sous-divisé en grands types : "Pictures", "Animations", "Text", "Audio"... Et dans chacun un fichier de type "gif.datatype" qui contenait le code servant à lire et écrire ce type de fichier de manière standardisée. L'intérêt ? Hé bien, toute application qui lis et écrit des fichiers via les datatypes est extensible à l'infini. Un logiciel de musique pourra charger tous les types de son reconnus par le système... Un navigateur web pourra afficher tous les types d'images ou de vidéo gérés par l'OS... Dans la pratique, le jour ou le PNG est arrivé, quelqu'un a développé un "png.datatype" et hop... Toutes les applications Amiga savaient lire et écrire des images dans ce format. Idem pour les MP3... Bref...
avatar Anonyme (non vérifié) | 
Hmmm.. en tout cas, une image EPS enregistrée avec Photoshop s'ouvre avec illustrator quand on click dessus ! Si je fais lire les informations et je choisi "ouvrir avec photoshop" et je fait "tout modifier", se sont les EPS enregistrés avec illustrator qui s'ouvrent avec Photoshop !! Bref les deux fichiers EPS ne reconnaissent plus leur application.. Sous Léopard il n'y avait pas de problème.
avatar dodobis | 
j'ai un coup de nostalgie, là ....
avatar UnAm | 
Purée... ResEdit... :/ *nostalgique*
avatar françois bayrou | 
... et les fichiers .AS ( flash actionscript ) sont bien reconnus comme des fichiers actionscripts ( un double click dessus ouvre Flash ) mais quicklook refuse d'en afficher le contenu, même avec des plugins additionnels. La faute à l'extension as, qui est aussi reconnue comme "apple single archive". bref sous SL Il m'a donc fallu gruger en rajoutant les fichiers apple single archive comme lisible ( plaintext ) et les associer à l'excellent plugin QLColorCode alors que sous Leopard ca fonctionnait très bien : je ne comprends plus rien. Vu dans le package d'un plugin quicklook, ils associent bel et bien un UTI à ... une extension :(((( D'ou le souci avec des extensions similaires pour des fichiers différents
avatar kubernan | 
Faut préciser que l'usage de l'UTI est apparu dans OS X bien avant Snow Leopard. On pourrait comprendre à tord que l'UTI a été inventé avec Snow Leopard.
avatar Arnaud de la Grandière | 
@Jerome74 : bien vu, c'est corrigé
avatar NekoSan64 | 
@Lemmings Je plussoie des deux mains et des deux pieds en ce qui concerne l'Amiga. Le système code/créateur des fichiers était un modèle du genre ! Le Mac sous Système 6 était techniquement un poil plus compliqué mais tout aussi efficace. Quand on pense à Windows... ça fait vraiment rire (ou pleurer quand on a pas le choix)... Mais on dirait qu'avec SL on y fonce tout droit... Déjà qu'avec Tiger ou Leopard ce n'était déjà pas forcément évident tous les jours (j'ai le problème des ".as" sur Léo, les SWF refusent d'être assignés globalement à une version du player Flash, c'est le dernier player ou autoexecutable lancé qui l'emporte ensuite)...
avatar Yip | 
ahhhhh, Resedit............ soupir !
avatar geneosis | 
des articles comme ça on en redemande. Sérieux, j'en redemande.
avatar CocoaPower | 
Je trouve aussi que l'article est trompeur. L'UTI existe depuis longtemps. Au final, Apple a plutôt retiré une fonctionnalité en retirant les créateurs.
avatar jpp22 | 
Erreur, L-J, les UTI utilisés correctement remplacent les types *et* les créateurs, et de manière plus flexible. A ce sujet, lisez l'excellent article très complet de Dan Dilger, auteur de «Snow Leopard Server (Developer Reference)»: http://www.roughlydrafted.com/2009/09/22/inside-snow-leopards-uti-apple-fixes-the-creator-code/
avatar thierry61 | 
ha Resedit... on s'amusait bien
avatar DrFatalis | 
Enfin des vieux C... dans mon genre qui ont connu resedit. "les extension à la manière de MS-DOS, Windows, Linux et Unix font leur apparition sur Mac " Encore une allégeance à l'archaïsme windozien. Se connecter oui, s'identifier jusqu'à y perdre son âme, non. Heureusement que l'on peut masquer ces lamentables "extensions" que seul un système mal formé (win...) a pu rendre indispensable et implanter dans l'esprit des utilisateurs comme étant indispensable... (et, enfin, comment dire... Ce article est vraiment super mais... "les extension ", il ne manque pas une extension, justement, vers le fin ?)
avatar DG33 | 
ResEdit : un générateur de bombes pour les plus fous d'entre nous. Mais quel plaisir d'aller y rechercher un string ! Dites, MacGé, ça ne vous tenterait pas de nous sortir une série d'articles pour nous, les quadras (hé hé) et quintas (ah, raté) avec des bons vieux Souvenirs (Pomme Pomme oh je tiens la forme, moi) à l'Apple (la pelle) ?
avatar Didier Guillion | 
Le concept d'UTI existe depuis des années, la doc apple a été mise en jour en 2008 et existait bien avant. Cordialement
avatar gl3am | 
Super article.... J'avais déjà oublieé le super look des fenêtres MAC, presque pas pris une ride !
avatar Anonyme (non vérifié) | 
les graphistes, qui jonglent en permanence avec les deux types d'eps (illustrator et Photoshop) l'ont bien dans le c…
avatar Ziflame | 
C'est vraiment gonflant de lire des commentaire comme "lamentables extentsions"... Encore bien qu'elles existent quand vous telechargers des fichiers hein... faut arreter d'etre trop con des fois...
avatar Ziflame | 
Ou quand en compresse... ou quand on passe d'un FS a l'autre... Enfin en gros, quand on ne vit pas dans son petit nuage, seul au monde.
avatar Anonyme (non vérifié) | 
@Ziflame : c'est peut-être indispensable aujourd'hui, mais est-ce que ça veut dire qu'une solution plus moderne ne puisse pas exister ? Parce que dans l'absolu, oui, les extensions, c'est moche ! L'idéal pour un nom de fichier, c'est un texte en langue naturelle (avec les accents bien sûr !).
avatar VieillePomme | 
Purée, les gars, les resources fork à l'ancienne n'ont pas du tout disparu... elles fonctionnent même encore très bien sous 10.6 !... de nombreux fichiers systèmes , quicktime, les .psd, en sont bourrés, retro-compatibilité oblige...
avatar marc_os | 
Au sujet des resources fork, il me semble même que le prnicipe avait été généralisé par Apple et que HFS+ n'était plus limité à "seulement" deux types de "forks" pour les données (data) et les ressources, mais permettait d'en gérer bien plus. Mais vu que seul le format HFS gère ça, et quand on voit toutes ces clefs USB vendues en FAT ou FAT32, Apple devait trouver une solution de rechange. Quant au nombre de valeurs possibles pour ces quatre petits caractères pour le type et le créateur, le maximum théorique n'est pas 20 millions mais de 2 puissance 32, soit 4 294 967 296. Car ces quatre caractères (ascii) sont une représentation d'un entier long sur 32 bits (un caractère ascii est stocké sur un octet, et 4 x 8 = 32). ResEdit aurait pu aussi afficher la valeur hexadécimale plutôt que la représentation ascii.
avatar Psylo | 
@DG33 [i]Dites, MacGé, ça ne vous tenterait pas de nous sortir une série d'articles pour nous...... avec des bons vieux Souvenirs ?[/i] Excellente idée ! (excellent article) revoir l'interface de ReSedit ça fait quelquechose :') nostalgiiiiie !
avatar magic.ludovic | 
Superbe article ! Ah resedit ... Que de souvenirs !
avatar peyret | 
D'abord, vient d'où cette copie d'écran ! de Resedit... Y a un mac+ qui tourne chez mac-gé ?
avatar vintz72 | 
> Lemmings +1000000 pour les datatypes de l'Amiga. Je ne connaissais pas, c'est super simple comme idée, mais c'est génial ! (comme toutes les meilleurs idées, ce sont les plus simples, mais "il fallait y penser"). Etonnant que personne n'ait repris l'idée en effet... Allo ? M. Jobs ?

CONNEXION UTILISATEUR