Rendre le Mac multitâche en 1985, une vraie galère…

Jean-Baptiste Leheup |

Alors que l'on se plaignait récemment d'iOS 13.2 qui avait parfois tendance à fermer un peu trop vite les applications en tâche de fond, il est bon de rappeler qu'à une époque, le multitâche était tout simplement inexistant…

Le kernel, ou noyau, est l'élément fondamental d'un système d'exploitation. Il permet aux différents composants, logiciels et matériels, d'interagir entre eux. Le développement du noyau est une étape cruciale dans la création d'un système d'exploitation, car de sa qualité dépendra la stabilité et l'évolutivité de tout le système.

Or, durant le développement du premier Macintosh, commercialisé en 1984, le noyau n'avait pas fait l'objet de toute l'attention nécessaire, alors même que des systèmes Unix avaient déjà posé les règles modernes de la mémoire protégée et du multitâche préemptif ; le noyau distribue l'accès au processeur et à la mémoire entre les applications, et peut à tout moment interrompre un processus pour donner la priorité à un autre, ou interdire certaines interactions entre les logiciels et les ressources matérielles de l'ordinateur.

Le premier Macintosh faisait tout l'inverse. Chaque application prenait la main sur l'ordinateur, comme si elle était seule au monde. D'ailleurs, elle était seule au monde : pour lancer un programme, le Macintosh fermait le précédent. Même le Finder, avec son bureau et ses icônes, disparaissait pour laisser la place à MacWrite, MacPaint ou MacDraw. Le Finder n'était pas seulement masqué, ou suspendu : il était quitté !

Dans ces conditions, impossible de permettre à deux logiciels de tourner en parallèle ou en tâche de fond. Même l'impression d'un document bloquait l'interface utilisateur jusqu'au dernier mot de la dernière ligne ! À tel point qu'Apple avait dû concevoir le système des Accessoires de Bureau, comme l'Album, la Calculette ou le Sélecteur, pour disposer d'outils toujours accessibles et ne nécessitant pas de quitter l'application active.

Dès la fin de l'année 1984, avant même le premier anniversaire du Macintosh, l'un de ses papas, Andy Hertzfeld, qui ne travaille déjà plus pour Apple, se penche sur la question. Comme il le raconte lui-même, l'idée lui vient en observant un utilisateur du PC d'IBM basculer d'une application à une autre grâce à une touche du clavier : l'utilitaire Memory Shift de l'éditeur North American Business Systems permettait ce petit miracle inconnu du monde Macintosh. Le tour de passe-passe consistait simplement à partager la mémoire vive entre plusieurs logiciels, lesquels ne s'apercevaient même pas de ce changement.

Andy Hertzfeld, qui se définit lui-même comme un magicien du logiciel, imagine immédiatement développer le même programme pour le Macintosh. Il faut dire qu'avec la sortie du Macintosh 512K, doté de quatre fois plus de mémoire que le modèle original, il y a de la place pour conserver plusieurs logiciels en mémoire vive ! Or Apple n'avait pas fait évoluer son système d'exploitation pour profiter de cette opportunité, et chaque logiciel lancé bénéficiait, seul, de l'ensemble de la mémoire disponible, qu'il en ait besoin ou non.

Une idée simple, certes, mais qui s'avère extrêmement délicate à mettre en œuvre. On se répète, mais le système du Macintosh ne gérait pas du tout l'allocation de mémoire vive. Le système chargeait en mémoire vive certains éléments nécessaires au fonctionnement de l'application puis celle-ci en disposait librement, dispersant de-ci de-là les données qu'elle voulait y stocker. Il devenait ainsi compliqué de segmenter la mémoire pour y conserver les données de plusieurs applications, sans connaître précisément l'importance que chaque octet de mémoire pouvait avoir pour chaque application.

Le logiciel Memory Shift pour l'IBM PC. Image : econsaints

Andy Hertzfeld se met donc au travail pour résoudre ces difficultés, et reçoit alors un appel de Microsoft. Ce même Microsoft qui propose de très bons logiciels pour le Macintosh, comme Word, Multiplan et Chart, qu'elle a patiemment optimisés pour les 128 Ko de mémoire de l'ordinateur. Avec la commercialisation du Macintosh 512K, des concurrents moins regardants sur l'optimisation vont venir la chatouiller. C'est le cas de Lotus qui promet une suite Jazz sous forme de couteau-suisse permettant de passer d'un module de texte à un module de dessin ou de tableur, sans quitter le programme. Ce qu'il faut à Microsoft, c'est un outil pour faire de même, et basculer d'un logiciel à l'autre sans délai, créant ainsi une « suite logicielle ».

Et ce qu'il faut à Microsoft, c'est donc un excellent programmeur, comme Andy Hertzfeld. Bill Gates lui-même, qui ne sait pas encore qu'Hertzfeld travaille sur un tel projet, tente de le convaincre de travailler pour lui. Dix semaines pour un logiciel qui ne doit guère dépasser 10 000 lignes de code. 4 000 $ par semaine. 40 000 $ pour un logiciel facile à écrire. Une belle somme pour Andy Hertzfeld. Mais celui-ci n'est pas fou.

Si le projet est si stratégique pour Microsoft, la somme est alors dérisoire. Et il sait bien que s'il réussit à développer seul son logiciel, Apple voudra l'installer sur chaque Macintosh 512K commercialisé ! Bill Gates change alors de tactique, et l'invite simplement à s'assurer que les logiciels de Microsoft s'accorderont bien avec son système, ce qui était de toute façon un objectif incontournable vu leur popularité.

Andy Hertzfeld se remet donc à l'œuvre, et trouve un angle d'attaque dans le système du Macintosh qu'il connaît comme sa poche. Son logiciel va intercepter des messages échangés entre le système et les logiciels, comme GetNextEvent1, prévu à l'origine pour garantir que l'application active n'empêche pas ces fameux Accessoires de Bureau de remplir leur office. Il va également détourner la fonction dédiée au rafraîchissement de la mémoire vidéo, purgée par une fonction automatique cinquante ou soixante fois par seconde : l'occasion pour Hertzfeld de s'inviter dans la danse et reprendre la main à intervalle régulier sur le fonctionnement des applications.

Il montre alors sa création à l'un de ses camarades resté chez Apple, Bud Tribble. Celui-ci apprécie la prouesse à sa juste valeur, mais trouve que la manipulation est trop instantanée. Il craint que les utilisateurs ne comprennent pas ce qui se passe à l'écran. Il l'invite à réfléchir à une animation, et leur choix se porte sur une transition horizontale, une application chassant l'autre de l'écran. Le logiciel étant opérationnel, et l'avis des premiers témoins très positif, Andy Hertzfeld décide de lui donner un nom : ça sera Switcher, comme on switch de chaîne de télé, comme on switch sa place avec quelqu'un.

Le menu Switcher dans le Menu Pomme, et la flèche de navigation entre les applications

Les caractéristiques se précisent : Switcher supportera jusqu'à quatre applications réglées à 128 Ko, et même jusqu'à huit en abaissant la quantité de mémoire allouée à chacune. Et Switcher permettra ce tour de passe-passe inconnu du Macintosh original : régler manuellement la quantité minimale et la quantité souhaitée de mémoire vive réservées à chaque logiciel2.

Tout s'accélère alors. Andy Hertzfeld est convoqué chez Apple. Il doit préparer une démonstration pour Steve Jobs. C'est ce qu'il fait, avec un Switcher configuré pour basculer entre MacWrite, MacPaint, MacDraw et le Finder, sans oublier un petit jeu de labyrinthe, et quelques copier-coller entre les différentes applications.

– OK, j'en a vu assez, dit Steve Jobs. Parfait. On va le vendre avec le Macintosh. Félicitations.

Puis, après une pause :

– Mais ne pense pas pouvoir tirer avantage de la situation. Tu ne profiteras pas d'Apple.

– Que veux-tu dire ? répond Andy Hertzfeld

– Tu n'as pas pu écrire cela sans utiliser des informations confidentielles dont tu as eu connaissance quand tu travaillais chez Apple. Tu ne peux donc pas nous demander de te payer.

– Sauf que le logiciel n'est pas terminé, répond Hertzfeld. Et si on ne me paye pas ce que je mérite, je ne serai pas très motivé pour finir le travail.

– 100 000 $, répond Steve Jobs après un temps de réflexion. Non négociables.

Andy Hertzfeld ne négociera pas avec Steve Jobs, mais dans le bureau de la compta, il obtiendra quand-même 10 % de chaque vente au détail de Switcher, qui lui rapporteront 50 000 $ supplémentaires.

Il terminera le difficile travail d'optimisation, vérifiant la compatibilité de chaque logiciel avec son Switcher, y compris ceux de Microsoft, qui lui donneront quelques migraines, car programmés très tôt lors du développement du Macintosh et ne respectant pas toutes les règles qui s'imposaient aux développeurs. Switcher sera achevé en mars 1985 et commercialisé dès le mois suivant par Apple, pour le Macintosh 512K et le Macintosh XL, ce Lisa reconfiguré en Mac et doté d'un mégaoctet de mémoire vive.

Deux ans plus tard, Switcher deviendra le MultiFinder, sous la plume des équipes d'Apple. Ayant développé en interne ce MultiFinder, Apple ne s'intéressera jamais à la création suivante d'Andy Hertzfeld, Servant, une sorte de mélange entre un Finder aux stéroïdes, un Switcher plus souple, et l'éditeur de ressources ResEdit. Un utilitaire qui remplaçait carrément le Finder, permettant de naviguer dans les disques et d'accéder directement aux ressources des fichiers comme le permettait ResEdit. Il rendait également transparent le lancement de plusieurs applications, comme on le fait aujourd'hui, là où Switcher obligeait à créer des « kits » d'applications sélectionnées au préalable.


  1. La même astuce sera utilisée plus tard pour intercepter les raccourcis-clavier comme Commande-Majuscule-1 et -2 (qui éjectaient les disquettes des deux lecteurs) ou Commande-Majuscule-3 et -4 pour réaliser des captures d'écran (qui s'imprimaient immédiatement).

  2. Une fonction qui nous pourrira la vie jusqu'à Mac OS 9, avant que Mac OS X reprenne en main la gestion dynamique de la mémoire vive.

avatar Darkgam3rz | 

Merci pour cet article passionnant 👍🏻

avatar pocketalex | 

+1 je me suis régalé a le lire et j'ai appris des trucs

avatar imrfreeze | 

@Darkgam3rz

👍🏻

avatar freestef | 

Merci pour ce rafraîchissement de mémoire :-)
Le Multifinder, c’était le paradis. Par contre quand il fallait switcher des disquettes sans arrêt pour charger des applis qui ne tenaient pas sur une, c’était l’enfer !

avatar Benitochoco | 

Je suis retombé en enfance avec cet article !

avatar stefhan | 

@Benitochoco

Moi aussi ! J’ai démarré ma vie numérique à 8 ans avec System 5. Je me souviens du MultiFinder mais surtout le passage à System 6...

avatar fte | 

Ces lignes marquent le début de ma carrière dans l’UX, alors que l’UX n’existait que dans la tête de quelques fondus chez Apple ou Microsoft.

Je n’étais qu’un gamin ne connaissant rien à rien.

C’était fabuleux.

avatar radeon | 

Ça fou un coup de vieux cet article ^^ très intéressant, merci 😊

avatar Giloup92 | 

Cet article donne vraiment envie d’apprendre à coder.... pour se faire arnaquer au final !

avatar BeePotato | 

@ Giloup92 : « Cet article donne vraiment envie d’apprendre à coder.... pour se faire arnaquer au final ! »

Comment ça ?

avatar BeePotato | 

« Or, durant le développement du premier Macintosh, commercialisé en 1984, le noyau n'avait pas fait l'objet de toute l'attention nécessaire, alors même que des systèmes Unix avaient déjà posé les règles modernes de la mémoire protégée et du multitâche préemptif »

C’est original de présenter les choses comme ça.

L’OS avait au contraire fait l’objet de toute l’attention nécessaire… pour arriver à faire tourner un OS à interface graphique en haute résolution (pour l’époque) avec une application et un ou plusieurs documents sur une machine dotée de seulement 128 ko de RAM !

Les systèmes Unix tournaient sur des plateformes matérielles bien plus richement dotées, tout comme le Lisa qui, du coup, avait intégré d’emblée le multitâche.
Mais pour le premier Mac, au cours d’un développement où on optimisait l’assembleur à la main pour économiser les octets, perdre une place précieuse pour préparer un hypothétique futur où le matériel permettrait multitâche et mémoire protégée, ce n’était pas une priorité (surtout que le projet commençait à être très à la bourre).

Comme l’a écrit Andy Hertzfeld, s’ils avaient su à l’époque qu’ils étaient en train de créer une plateforme appelée à durer plusieurs décennies, plutôt qu’un OS pour une ou deux générations de machines, ils auraient probablement fait certaines choses différemment. Mais à l’époque où ils étaient plongés là-dedans, il était difficile d’imaginer ça.

L’erreur d’Apple a été de configurer le premier Mac avec une si faible quantité de RAM, ce qui a créé d’énormes contraintes sur le logiciel.

Mais bon, dans l’ensemble, même en étant construit sur ces bases fragiles, Mac OS ne s’en est pas si mal sorti que ça. :-)

avatar macinoe | 

Ta conclusion c'est un peu ce que tu contestais au début non ?

avatar J'en_crois Pas_mes yeux | 

@macinoe "(Ta) Sa conclusion c'est un peu ce que tu contestais au début non ?"
Pas du tout :
Le début suggère (affirme) une erreur de la part d'Apple
Le corps explicite les contraintes contradictoires (budget/performance) qui aboutit à deux choix différents, une machine hors de prix (Lisa) multitâche, une machine économique ;-) monotâche.
La conclusion d'BeePotato est avec ces contraintes contradictoires, le mac s'en est incroyablement bien sorti : regarde autour de toi !
Ce que dit donc avec raison BeePotato, il n'y avait aucune erreur ou faute de la part d'apple mais un choix qui s'avère aujourd'hui judicieux puisque gagnant.

avatar macinoe | 

Un rapport de causalité à la limite, je peux le concéder,
"Le noyau n'avait pas fait l'objet de l'attention nécessaire"
"MacOs a été construit sur des bases fragile"

Pour moi ça veut dire la même chose.
Que compte tenu de la technologie et des concepts déjà établis à l'époque, macOs aurait pu avoir des fondation un peu plus sérieuses et aptent à affronter l'avenir;

Ce qui a été démontré par la suite avec un OS qui était plus qu'à bout de souffle à peine plus de 10 ans après sa création et qui a nécessité un reboot vers OSX ce qui était loin d'être simple.

Il a fallut beaucoup de talent pour rendre macOS sexy et agréable à utiliser;

Mais c'était un chateau construit sur des marécages qui devenait impossible à maintenir et encore moins à faire évoluer.

avatar J'en_crois Pas_mes yeux | 

@ macinoe
L'objection d'@occam semble te donner raison. Il n'y avait selon l'exemple qu'il donne pas de limitation matériel (budgétaire) qui contraignait les choix de MacOs.
Merci.

avatar marc_os | 

@macinoe

Et Windows ME, il était pas à bout de souffle ?

avatar macinoe | 

Bien sûr que si. C'est totalement comparable.
MS en avait d'ailleurs conscience dès le début des années 90 en créant la branche NT basées sur les normes POSIX dont le descendant actuel est windows 10.

avatar BeePotato | 

@ macinoe : « "Le noyau n'avait pas fait l'objet de l'attention nécessaire"
"MacOs a été construit sur des bases fragile"
Pour moi ça veut dire la même chose. »

Non, ça ne veut pas dire la même chose.
Les bases étaient fragiles, mais pas par manque d’attention. Plutôt parce que l’attention s’était portée sur autre chose.

« Que compte tenu de la technologie et des concepts déjà établis à l'époque, macOs aurait pu avoir des fondation un peu plus sérieuses et aptent à affronter l’avenir »

Oui, ça aurait été théoriquement possible — si le Mac avait été défini autrement sur le plan matériel, justifiant le développement de cet aspect de l’OS. Apple avait d’ailleurs déjà fait ce choix sur sa machine précédente.

Mais finalement, quand on regarde ce que sont devenus les diverses plateformes de cette époque, on se dit que soigner ces basses couches n’était peut-être pas — contrairement à ce que l’intuition pouvait laisser penser — ce qui rendait le plus apte à affronter l’avenir. Peut-être que soigner plutôt le haut niveau (l’interface graphique présentée à l’utilisateur et la toolbox présentée aux applications) était le bon choix, finalement. Ça a plutôt bien réussi au Mac, en tout cas.

« Ce qui a été démontré par la suite avec un OS qui était plus qu'à bout de souffle à peine plus de 10 ans après sa création »

10 ans plus tard, il n’était pas encore « plus qu’à bout de souffle » — mais on commençait à se dire que ça n’allait plus tarder.

avatar macinoe | 

"Les bases étaient fragiles, mais pas par manque d’attention. Plutôt parce que l’attention s’était portée sur autre chose."

Si ce n'est pas de la négligeance, c'est de l'ignorance, mais ça ne change rien au fait qu'il y a eut un manque d'attention dans la conception du noyau.

avatar BeePotato | 

@ macinoe : « Si ce n'est pas de la négligeance, c'est de l'ignorance, mais ça ne change rien au fait qu'il y a eut un manque d'attention dans la conception du noyau. »

Non.
L’article affirme que « le noyau n'avait pas fait l'objet de toute l'attention nécessaire ».
Or, vu la définition matérielle du Mac de 1984, la gestion du multitâche ne faisait pas partie du nécessaire (dans 128 ko, on était déjà bien content de faire tourner une seule application). En revanche, le nécessaire était de réduire l’empreinte RAM et CPU de l’OS autant que possible, et faire l’impasse sur le multitâche contribuait à cela, ne serait-ce qu’en libérant du temps pour se consacrer sur cet aspect.
Il est donc erroné de conclure que le fait qu’il n’y ait pas eu de travail fait sur le multitâche est la preuve que le développement du noyau n’a pas fait l’objet de toute l’attention nécessaire.

Le moment où le multitâche n’a pas fait l’objet de toute l’attention nécessaire, c’était plus tard, quand il a été décidé de continuer à développer une plateforme sur la base de cet OS mais avec des machines suffisamment bien dotées en RAM pour l’usage de plusieurs applications en parallèle.

avatar fte | 

@macinoe

"Si ce n'est pas de la négligeance, c'est de l'ignorance, mais ça ne change rien au fait qu'il y a eut un manque d'attention dans la conception du noyau."

Ni négligence ni ignorance. Lisa montre qu’ils n’ignoraient pas. L’évolution des premiers System montre qu’ils ne négligeaient pas. Ils ont soigné l’interface et les usages, portant toute leur attention sur ces points.

C’est un compromis, ne pouvant pas tout faire. Personne ne peut tout faire. Apple a pendant très longtemps fait le compromis sur la technique en faveur des usages, c’est une de ses marques de fabrique.

Après, on peut appeler ça un manque d’attention. Ou manque d’intérêt. Ou une erreur stratégique. Mais ça reste un choix délibéré, sans lequel le Mac n’aurait pas été ce qu’il a été.

avatar macinoe | 

Les diptères prennent cher avec vous.

Une erreur à posteriori reste une erreur.
Ils ont peut-être fait des choix en fonction de contraintes court termiste, mais ça ne change rien au fait que ça s'est avéré être une connerie avec le temps.

avatar fte | 

@macinoe

"mais ça ne change rien au fait que ça s'est avéré être une connerie avec le temps."

Sauf que les systèmes GUI multitâche de l’époque ont tous disparus, tels qu’AmigaOS ou Motif/UNIX ou même le Lisa, alors que ceux qui ne l’étaient pas ou coopératifs ont tout raflé (Windows et Mac et leurs dérivés).

Ceux qui ont mis l’accent et la priorité sur l’interface et la cohérence entre applications ont vécu, quand-bien même la mécanique interne était négligée.

L’erreur s’est néanmoins produite, en effet, mais plus tardivement. À un moment il aurait fallu attaquer ce point, lorsque des machines avec 1 MB de mémoire ont été commercialisées... Microsoft n’a pas commis cette erreur, c.f. Win 3.

OS/2 a été un échec total. Sa technicité supérieure et même sa compatibilité avec Win n’a pas suffit. Est-ce parce que la technicité ne permet pas d’assurer une expérience d’usage plaisante ? Et que donc l’accent devrait être placé ailleurs que sur la technique ? Voyons, y a-t-il des exemples modernes de ce cas de figure... oh. Il n’y a que ça.

avatar J'en_crois Pas_mes yeux | 

@macinoe
Le réel est un peu plus complexe qu'une analyse binaire. Tu devrais essayer la logique floue. Il arrive que l'on puisse avoir tort d'avoir raison et raison d'avoir tort...
"Ils ont peut-être fait des choix en fonction de contraintes court termiste, mais ça ne change rien au fait que ça s'est avéré être une connerie avec le temps."
Exemple. Choix à court terme : tu vas mourir dans l'année si tu ne prends pas un médicament qui te laissera handicapé de nombreuses années...
Tu avales ton médicament, devient handicapé pour de nombreuses années. Pourtant le choix que tu as fait ne "s'est pas avéré être une connerie avec le temps." Tu as survécu et aujourd'hui tu es la plus grande compagnie du monde.
Bravo @macinoe ton choix était le bon !

avatar fte | 

@J'en_crois Pas_mes yeux

"Le réel est un peu plus complexe qu'une analyse binaire."

Hola, ça n’a rien à faire sur internet ça. T’es un fou dangereux.

Pages

CONNEXION UTILISATEUR