15 ans de WebKit : les origines "machiavéliques" de Safari

Nicolas Furno |

WebKit a quinze ans ! Apple célèbre aujourd’hui le moteur de rendu de Safari né le 24 août 2001, même si les racines du projet remontent encore plus loin : WebKit est en effet un fork du moteur KHTML dont les premières lignes de code ont été couchées dès 1998. Le fork en lui-même date du 25 juin 2001. Safari a quant à lui été présenté par Steve Jobs durant la MacWorld Expo de janvier 2003. Mais cette aventure n’a pas été de tout repos ! Revenons sur les origines du moteur de rendu et du navigateur web…

Mise à jour — Don Melton rappelle à toutes fins utiles que WebKit est « né » le 25 juin 2001. Quant au 24 août de la même année, c’est le jour où le répertoire du code source a été réinitialisé !

(Reprise d’un article datant du 19 novembre 2014)

Le nom de Don Melton ne vous dit probablement rien, mais c’est lui qui a lancé le projet Safari et WebKit chez Apple. Désormais à la retraite, l’ancien « Director, Internet Technologies » de Cupertino a travaillé sur le navigateur d’OS X, puis celui d’iOS de 2001 à 2012. Il a connu le constructeur dans ses meilleures années, celles de l’iPod qui ont permis à Apple de retrouver une stabilité financière, et surtout celles de l’iPhone qui ont fait de l’entreprise ce qu’elle est aujourd'hui.

Don Melton (photo Andy Delcambre)

On sait à quel point Apple peut être obsédée par la culture du secret. Même si ce n’est pas toujours efficace, l’entreprise considère par défaut que tout ce qui est fait dans ses murs ne doit pas sortir de ses murs. Cette règle est toujours vraie, mais Don Melton est maintenant à la retraite et c’est un homme bavard. Entre son blog, les podcasts et les conférences auxquelles il est invité, il a eu l’occasion de revenir à plusieurs reprises sur la dizaine d’années passées chez Apple et plus particulièrement sur le développement de Safari.

Nous avons eu l’occasion déjà d’évoquer quelques anecdotes rapportées par l’ancien manager de Safari, en particulier sur la naissance du nom si étrange du navigateur. À l’occasion d’une présentation nommée « A Decade at The Fruit Company » donnée lors de la conférence NSNorth 2014, il est revenu sur son parcours chez Apple en glissant au passage quelques informations et anecdotes inédites.

Don Melton à l'occasion de la conférence NSNorth 2014

Une opportunité pour revenir sur la naissance de Safari et de WebKit, le moteur d’affichage associé au navigateur. Et pour commencer avec le commencement, nous allons nous intéresser d’abord à la naissance du projet. À une journée en particulier, le 25 juin 2001, quand Don Melton a été recruté par Scott Forstall pour rejoindre Apple. Et puis à un choix essentiel : quelle technologie pour que le constructeur puisse lancer son navigateur ?

Un entretien sous haute surveillance

Don Melton ne regrette pas son passage chez Apple. Il faut dire qu’il a pu travailler sur un projet qui, non seulement a abouti, mais qui a connu énormément de succès. Safari est très utilisé, mais au-delà du logiciel, WebKit est le moteur d’affichage de référence aujourd'hui, celui qui a servi de base à Google pour concevoir son propre navigateur web. En dix ans, il a contribué directement à changer le monde, d’une certaine manière, et on peut imaginer qu’il est fier du travail accompli.

« S’il y a bien une chose qui m’a énervé chez Apple, la seule chose vraiment, c’est la culture du secret. C’est la seule chose que j’aurais aimé y changer. » Le message est clair, Don Melton n’aime pas la culture du secret, et il faut dire qu’il a failli passer à côté de son embauche à cause de cette politique. Il a été embauché au mois de juin 2001 par Scott Forstall qui venait alors d’être promu directeur et qui avait, parmi ses objectifs, la mise au point d’un navigateur internet conçu par Apple.

Scott Forstall

Petit rappel historique pour ceux qui n’ont pas connu cette époque : au début des années 2000, Internet Explorer était encore le navigateur dominant, celui non seulement que tout le monde utilisait, mais que tous les concepteurs de sites visaient quand ils créaient leurs sites. Sur Mac, comme sur Windows, on utilisait Internet Explorer, même s’il y avait d’autres alternatives, comme Netscape Navigator ou la suite Mozilla (ancêtre de Firefox). Apple voulait contrôler cet aspect qui prenait de plus en plus d’importance et Scott Forstall connaissait Don Melton pour son ancien travail, chez Netscape.

Pourtant, quand il arrive au siège d’Apple pour son entretien, Don ne pensait pas être embauché pour faire un navigateur. L’entreprise venait de publier la bêta de Mac OS X 10.0 (« Cheetah ») et lui-même ne travaillait plus chez Netscape, mais pour Eazel, une start-up fondée notamment par Andy Hertzfeld et qui proposait des logiciels pour Linux. Une fois ce contexte posé, on comprend mieux le récit de cet entretien, tel que le raconte Don Melton pendant la conférence :

Scott Forstall n’arrêtait pas d’amener la conversation vers mon travail chez Netscape. Et il n’arrêtait pas de me demander indirectement comment Navigator fonctionnait. Alors j’ai fini par lui demander : « Est-ce que vous voulez que je fasse un navigateur pour Apple ? »
Scott sort brutalement de la pièce ! Il appelle sa secrétaire, elle amène un autre NDA*, quatre fois plus long que le premier. Scott me dit de la boucler, il pointe le papier, me fait signer, il signe aussi, sa secrétaire remplit quelques formalités… et on ne dit rien d’autre pendant tout ce temps !
Scott est là, à attendre qu’elle termine. Elle sort enfin de la pièce, elle ferme la porte, Scott se tourne vers moi et me répond : « Oui ! »

* NDA : Non-Disclosure agreement ou accord de non-divulgation en français ; ce type d’accord permet à Apple de se protéger : une fois signé, Don Melton ne pouvait révéler à quiconque la teneur des discussions au cours de l’entretien avec Scott Forstall.

Don Melton raconte qu’il accepte immédiatement la mission, ce qu’il n’a pas manqué de regretter par la suite. Lancer un tout nouveau navigateur n’est pas une tâche facile, c’est même extrêmement difficile et il le savait bien en acceptant cet emploi. Malicieux, il signe un contrat de 18 mois et ne fait surtout pas part de ses doutes quand la direction d’Apple lui demande un navigateur prêt à l’emploi en un an. Il sait très bien que ça ne sera pas possible, mais il espère au moins réussir à convaincre Scott Forstall et Steve Jobs que ce sera possible en à peine plus…

Safari est présenté pour la première fois en public à l’occasion de la Macworld de janvier 2003 et le navigateur est proposé à tous les utilisateurs au mois de juin de cette même année. Deux ans auront été nécessaires pour que Don Melton rassemble une équipe de développeurs et mette au point un navigateur qui tienne la route. Ce qui n’était pas simple en soi a été encore compliqué par cette même culture du secret : comment recruter quelqu’un quand on ne peut même pas lui dire pourquoi avant de lui faire signer un NDA ? Il n’avait pas droit de dire aux candidats potentiels pour quel poste ils postulaient…

Quoi qu’il en soit, avant même de constituer une équipe, la première question qui s’est posée fut celle du moteur d’affichage…

L’obsession du contrôle

Un navigateur ne se résume pas à une interface, même si c’est un élément essentiel, naturellement. Pour afficher correctement les pages web, il faut aussi un moteur capable de convertir le code HTML (et CSS et JavaScript) des pages pour les afficher de manière naturelle. L’interface au sens large — on y inclut l’ergonomie et les fonctions — est déjà un travail immense, mais le moteur est encore pire. Et pourtant, sans cet élément, il n’y a pas de navigateur web.

Une des premières versions de Safari, affichant la page dédiée à lui-même

Le moteur de rendu est la condition sine qua non à l’existence d’un navigateur web, mais Apple était trop pressée pour créer le sien. Et puis cela n’avait pas forcément de sens en 2001 : il y avait plusieurs moteurs en place, dont Gecko utilisé par la fondation Mozilla et qui semblait le candidat naturel pour un navigateur créé par Apple. Pendant sa conférence, Don Melton revient assez longuement sur cette question du choix et commence par rappeler qu’il n’était absolument pas question de faire un nouveau moteur.

Comme on l’évoquait à la fin de la partie précédente, Apple était pressée de lancer ce nouveau navigateur. Initialement, Safari devait naître en un an seulement : autant dire que l’équipe de Don Melton n’allait pas s’amuser à repartir de zéro. Ils ont même envisagé de prendre une licence d’Opera ou même d’Internet Explorer (apparemment, c’était une option…) pour sortir encore plus rapidement ce logiciel.

À la place, Don Melton qui avait le champ libre sur ce point, a choisi KHTML et KJS, le moteur de rendu qui provenait de l’environnement de bureau pour Linux KDE. Pourquoi ce choix qui a surpris tout le monde — il se souvient que quelqu’un derrière lui a lâché distinctement un « What the F…k ? » — lorsque Steve Jobs l’a annoncé fièrement lors de la première présentation de Safari, en janvier 2003 ?

Steve Jobs, sur la scène de Macworld, présentant la première version de Safari et annonçant fièrement qu’elle utilise KHTML. La vidéo d’époque (2003) est de très mauvaise qualité, mais regardez à partir de 1h7min, le silence complet dans la salle quand il annonce ce nom : tout le monde s’attendait à Gecko…

Il n’y a pas qu’une seule raison et Don Melton les énumère au cours de sa conférence, mais la principale, celle qui a compté le plus dans sa décision finale, peut se résumer en un mot : le contrôle. Ce n’est pas la plus évidente, c’est vrai : le code source de Gecko était aussi beaucoup plus complexe et lourd que celui de KHTML. À l’époque, le code de Mozilla pesait plus de trois millions de lignes de code, tandis que KHTML et KJS n’atteignaient même pas les 500 000 lignes. Un choix qui était important alors, mais qui a pris encore plus d’importance quelques années plus tard, quand Apple a adapté son navigateur à l’iPhone…

Il n’y a pas que le nombre, Mozilla était aussi beaucoup plus complexe que l’autre moteur de rendu ; en comparaison, KHTML était très simple. Cette légèreté et cette plus grande lisibilité permettaient aussi à Apple de modifier largement le code source de base : en très peu de temps, l’équipe mise en place par Don Melton pouvait décortiquer le code, l’optimiser ou le changer comme elle le souhaitait. C’est aussi ce qui explique pourquoi Apple n’a pas sorti Safari animé par KHTML, mais pourquoi son navigateur web a été accompagné de son propre moteur de rendu, WebKit. C’était un dérivé du précédent, un « fork » comme on dit dans le jargon, mais ce n’était plus tout à fait le projet original.

Ce qui nous ramène au point le plus important. La taille et la complexité du code étaient des facteurs importants, mais l’essentiel, selon Don Melton, n’était pas là. La communauté de développeurs autour de la fondation Mozilla était déjà très importante à cette époque et surtout passionnée. Don Melton savait qu’Apple ne pourrait pas s’approprier le projet sans soulever quelques protestations dans cette communauté, avec le risque de se la mettre à dos toute entière. À l’inverse, le projet KHTML était maintenu par une dizaine de personnes et rares étaient ceux qui en avaient entendu parler.

Au fond, le choix a été facile :

J’ai pris une décision quelque peu machiavélique. Je savais qu’en forkant KHTML et KJS, en développant notre propre moteur en secret et en dévoilant notre projet plus tard, nous pourrions contrôler le projet tout entier. C’était calculé. J’étais diabolique. C’était mon choix.
Et c’est en gros ce qui s’est passé. WebKit est devenu si populaire qu’il a remplacé KHTML et KJS, y compris dans KDE. […] Et je suis certain que cela n’aurait jamais été le cas avec Mozilla.

Le contrôle est un élément au cœur de nombreuses décisions prises par Apple. Cela vaut pour le choix de faire son propre navigateur web — l’entreprise ne voulait pas dépendre de celui de Microsoft et Steve Jobs avait même envisagé de le nommer Freedom, pour bien passer le message qu’il libérait les utilisateurs d’Internet Explorer — comme celui de prendre possession d’un moteur de rendu. Gecko aurait certainement été un excellent choix sur le plan technique et d’ailleurs, les premiers pas de Safari n’ont pas été faciles. Il y avait un outil pour remonter les problèmes d’affichage et les utilisateurs de la première heure se souviennent peut-être qu’il était très utile…

Ce n’est pas parce qu’Apple veut garder le contrôle qu’elle est contre le partage. KHTML était un projet libre, WebKit est resté un projet libre. Comme l’explique Don Melton, cela n’a pas été une décision simple à faire comprendre chez Apple, puisque le libre n’est pas forcément dans les habitudes de ses dirigeants. Steve Jobs lui-même avait beau vanter les mérites de l’Open Source en présentant Safari en janvier 2003, il a été le premier à s’étouffer quand Google a sorti son navigateur et son propre moteur de rendu, un autre fork de WebKit (le patron d’Apple voulait régulièrement « fermer » WebKit et Don Melton devait lui expliquer à chaque fois que le libre ne fonctionnait pas ainsi…).

Dans la même conférence, Steve Jobs défend la culture Open Source. Qui l’eut cru ?

Malgré tout, le plan machiavélique de Don Melton a fonctionné comme prévu. Safari n’a peut-être pas pris la place d’Internet Explorer, même s’il reste probablement le navigateur le plus utilisé sur les appareils mobiles. En revanche, WebKit s’est imposé comme le moteur de rendu le plus populaire, et de loin, laissant Gecko loin derrière, surtout sur le mobile.

Sans vraiment le savoir, Don Melton a planté une grosse épine dans le pied de la fondation Mozilla en choisissant KHTML et KJS plutôt que Gecko en 2001. À l’époque, Safari avait toutes les chances d’échouer et personne ne pouvait prévoir le succès fulgurant des smartphones en général et de l’iPhone en particulier. Comment savoir que ce projet secret allait connaître un tel destin en une décennie ?

Pour en savoir plus

Si le sujet vous intéresse, la conférence de Don Melton peut être regardée intégralement à cette adresse. Vous pouvez également l’écouter régulièrement sur le podcast Debug, où il échange souvent avec Nitin Ganatra, un autre ancien employé d’Apple qui a eu un poste important pendant le développement d’iOS. Don Melton s’exprime aussi, mais cette fois par écrit, sur son blog personnel.

avatar ckermo80Dqy | 

@ckermo80Dqy :
Il y a quelqu'un qui utilise mon compte pour poster des messages désobligeants semble-t-il. Je ne savais pas qu'on se faisait pirater MacG.

avatar ckermo80Dqy | 

@ckermo80Dqy :
Qui que tu sois, tu arrêtes de hacker mon compte, merci !

avatar jujuv71 | 

Merci pour cet article.
Tres instructif

avatar Shralldam | 

Superbe article, merci !

avatar RBC | 

Aefone66 : Ne prends surtout pas le rsum de Mister Mouillart qui a encore une fois tout mlang pour troller encore une fois sur Apple car il ne pouvait pas dire la vrit sur cette histoire de moteur de navigateur parce que tout ce qu'il accuse Apple d'avoir fait c'est en fait son chri Google qui l'a fait : ils ont observ Webkit puis ils l'ont utilis pour sortir la va vite Chrome et enfin ils ont fait leur propre moteur alors que chez Apple on est partI du plus simple KHTML (au lieu de choisir le plus facile GAEKO) et ils ont travaill pendant deux ans pour l'adapter et en dvelopper WebKit qui sera d'ailleurs utilis par la suite par bon nombre de navigateurs comme Chrome.

avatar Shralldam | 

lmouillart comme d'habitude, on lit, on détourne, on adapte un peu, et on dit n'importe quoi.

avatar XiliX | 

@Shralldam :
Bah il a fait un fork de l'article :p

avatar palmipedes | 

et pourquoi le nom Safari ?

avatar bugman | 

@palmipedes :
En voyant ce que la concurrence faisait, le staff a ri.

avatar Shralldam | 

@bugman :
:-D :-D :-D

avatar Florian Innocente | 

@palmipedes :
Melton ne s'en souvient pas, il a dit une fois que ce nom avait été suggéré mais il n'avait plus souvenir du contexte ni des raisons.

Peut être que le web est une jungle et qu'on part en Safari avec ce navigateur ?

avatar keyzone | 

Aprs tout c'est le principe de l'Open source ! Prendre du code d'autres et de l'adapter sa sauce ... Et c'est pas du vol
(Troll: je comprends que certains Apple addicts aient du mal conceptualiser ce concept de libert)

avatar Doctomac | 

"Apple voulait contrler cet aspect qui prenait de plus en plus dimportance "

Surtout Apple ne voulait plus tre dpendant de Internet Explorer tant sur Mac OS X ce navigateur tait catastrophique et sans que Microsoft daigne amliorer la situation.

"Dans la mme confrence, Steve Jobs dfend la culture Open Source. Qui leut cru ?"

Pour un socit qui a adopt un noyau libre pour son systme d'exploitation, ce n'tait pas si tonnant que a. Apple n'a jamais t contre l'Open Source mais n'a jamais t pour le tout Open Source.

avatar BeePotato | 

@ Doctomac : « "Dans la mme confrence, Steve Jobs dfend la culture Open Source. Qui leut cru ?"
Pour un société qui a adopté un noyau libre pour son système d'exploitation, ce n'était pas si étonnant que ça. Apple n'a jamais été contre l'Open Source mais n'a jamais été pour le tout Open Source. »

En effet, rien d’étonnant.
On pourrait même rappeler que Steve Jobs ne venait pas de découvrir l’open-source, contrairement à ce que certains semblent régulièrement croire, puisque NeXTStep, il y a plus de 25 ans, reposait déjà sur du BSD (difficile de faire plus open-source que ça).

avatar C1rc3@0rc | 

+1

avatar harisson | 

C'est bien dommage que ce fork ait compltement phagocyt le projet KHTML initial :(

avatar Pascal-007 | 

Dommage, mais en même temps, tant mieux : WebKit a dépassé le maitre et de loin. Peut-être (et en fait très certainement) que KHTML ne se serait pas rendu si loin.

Je ne pense pas que l’équipe initiale de KHTML doive être frustrée. Au contraire. Ils ont jeté les bases de quelque chose qui a modifié le Web au-delà même de leurs propres espérances. Grâce à eux, Internet Explorer est désormais un commentaire en bas de page !

avatar izoong | 

exact et j'ajouterai est-ce qu'on ne serait pas tous avec explorer aujourd'hui sans le développement de Safari ? Chrome n'existerait même pas...

avatar nicolhack | 

Dsl pour le hors sujet. Suis-je le seul à ne plus voir les caractères accentués dans certains commentaires? (dans l'appli ios, je précise). J'avais pris l'habitude de ne pas voir les + (plus) de vos +1 (plus un), quelle série de caractères sera la prochaine à disparaître?

avatar Perc3val | 

@nicolhack :
Ben je crois pas, moi non plus... Et ca fait vraiment bizarre...

avatar Darth Philou (non vérifié) | 

@nicolhack :
Idem.

avatar Bureau | 

Idem sur iMac

avatar thierry61 | 

non les 3/4 des commentaires que je lis sur ce fil sont sans caractères accentués. ; ( à, é;, è, ù ô )

avatar zoubi2 | 

Il n'y a pas que dans l'appli iOS (iMac, OSX, Firefox)...

avatar nicolhack | 

@nicolhack :
Dsl nicolhack, mais apparemment nous sommes 2 à avoir le même identifiant sur Macge... Bizarre Bizarre - si ca se trouve, il ya aussi 2 lmouillart, 2 fousfous, 2 patrick86 etc... Ça expliquerait la fréquence de leurs posts;)

La rédac, une explication?

avatar Doctomac | 

Je suis sur le Mac et mme problme.

avatar ichp | 

Quelles sont vos sources pour affirmer que "WebKit s'est impos comme le moteur de rendu le plus populaire, et de loin".

Car part Safari, je vois pas sur quel navigateur Webit est utilis ? (Chrome repose sur Blink).

"Ce n'est pas parce qu'Apple veut garder le contrle qu'elle est contre le partage. KHMTL tait un projet libre, WebKit est rest un projet libre."

Oui enfin comme KHMTL est sous licence LGPL, Apple n'a pas eu trop le choix.

Apple n'a aucune culture Open Source c'est un fait (lanecdote de SJ est trs reprsentative), le majorit de ses projets OpenSource le sont cause des licences virales.

Pour la culture Open Source, on ira voir du ct de Google, Redhat, ...

avatar Link1993 | 

@ichp :
Oui, et Blink est base (E accent aigu, vive le probleme d'accents en ce moment...) sur ?... Webkit !

Pas la peine de me remercier ! ;p

avatar Doctomac | 

Blink est un fork de Webkit d'Apple.

Et pour ta culture :

http://fr.wikipedia.org/wiki/WebKit

avatar lmouillart | 

[supprimé]

avatar alan1bangkok | 

on comprends mieux pourquoi safari patine dans le semoule
pas taper....

avatar jackhal | 

Safari est ultra rapide, économe en mémoire, et il est très moderne.
On lit parfois de bons gros ramassis de c*nneries sur ce navigateur (comme sur MacG et son article comme quoi Safari était le nouvel IE). Le fait est qu'en tant que développeur, j'adore (mais vraiment, j'adore) la manière dont Safari implémente les choses, les priorités qu'ils choisissent... ça correspond toujours à ce dont j'ai besoin le plus rapidement possible.

avatar Bruno de Malaisie | 

@alan1bangkok :
En quoi Safari patine t-il dans la semoule? Je ne te suis pas là.

avatar apossium | 

bon article ;) merci !

ca change un peu du flux habituel !

avatar RBC | 

Pauvre Mouillart !!!
J'ose pas imaginer le calvaire de son ou ses patrons ni même de sa femme si il en a une, la pauvre !!!

avatar XiliX | 

Effectivement c'est super bizarre sans les caracteres accentues ???

(éèêàï)

avatar osx94 (non vérifié) | 

Je me souviens avoir déjà vu une vidéo il y a quelques années ou le bonhomme résumais cette même histoire, signature des NDA avant même d'avoir signer l'embauche, secret total sur le projet jusqu’à ce qu'il l'accepte etc..

L'histoire n'est pas toute jeune mais un petit rappel de temps en temps ne fais pas de mal ^^

avatar Emile Schwarz | 

C’est quoi ces textes ASCII: SANS CARACTÈRES ACCENTUÉS ???

avatar thebarty | 

@Emile Schwarz :
En ASCII, au-delà de 128, il y a des caractères accentués !

avatar Emile Schwarz | 

FAUX.

ASCII: 0-127.

Ailleurs, tu nomme çà comme tu veux. Cela dit, j’utilise exclusivement UTF-8 (mais c’est un choix).

avatar - B'n - | 

Sujet sur Safari : « Super rapide depuis sa mise à jour ! »
Sujet sur Firefox : « C'est pas un renard c'est un panda roux ! »
Sujet sur Chrome : « Ça n'a pas de sens ces numéros de version ! »
Sujet sur Explorer : « C'est quoi cette bouse ? »

avatar Kreeger | 

Et sinon safari sait afficher correctement les images maintenant si il y a un accent dans le nom? Le nombre de fois qu'un client a uploadé une image avec un accent et a pleuré car elle ne s'affichait pas sur safari alors que sur tous les autres navigateur même IE ça marchait...

Autre anecdote qui me fait détester ce navigateur c'est que des images prisent avec un iPad étaient affichées à l'envers, mais uniquement sur Safari!

Vraiment pas pratique tout ces problèmes et ca date même pas d'un an! On dirai un peu le boulet des navigateurs ce safari ...

CONNEXION UTILISATEUR