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 AieFone66 | 

Quelqu'un peut me résumer en gros ? (Au boulot pas le temps de tout lire :/ )
Merci :)

avatar lmouillart | 

[supprimé]

avatar Doctomac | 

@lmouillart :
Que dire de l'adoption de Webkit par Google ?

Je ne comprends pas la notion de copie d'un moteur de rendu libre surtout avec le travail qu'Apple a accompli depuis.

WebCore et JavaScriptCore sont des forks de KHTML et KJS mais ils sont surtout une rcriture de beaucoup de composants comme certaines parties du moteur HTML qui tait peu compatibles avec les sites web ( l'poque de KHTML), les performances de Javascript, les performances de HTML, la cration des APIs webkit. etc. Webcore c'est aussi une toute nouvelle interface vers Cocoa et Objective C, permettant de construire une application en Cocoa avec une view webcore. C'est le genre de chose qui permettait de faire une dmo dans laquelle il tait possible de construire un navigateur web dans interface builder sans crire une ligne de code. On peut aussi citer les ajouts pour le CSS 2.0 et 2.1 qui manquaient dans KHTML. Enfin, on peut citer la liste des projets de base qui constituent Webkit :

http://www.webkit.org/projects/

avatar lmouillart | 

Ai je dit que c'tait une mauvaise faon de faire ? Non, sauf dans la partie "et on ferre le poisson" sous entendu on essaye de fermer, bloquer, interdire, plutt que de laisser libre, ouvert, modifiable et de juste proposer ce qu'il y a de meilleur, sans l'imposer.

Oui Google fonctionne comme a et c'est tant mieux : prospecteur, incubateur, acclrateur, puis enfin promoteur.

avatar izoong | 

puis enfin destructeur, en fermant les projets qui ne lui semble pas rentable commercialement... c'est mieux ?
non.

avatar bonnepoire | 

Il ne reste plus grand chose de KHTML. Puis un Fork c'est une bonne base de travail donc où serait le problème? Qu'à fait m$ avec Edge?

avatar Seccotine | 

De KHTML vers Safari beta = « On adapte un peu », pour toi ? T'est pire qu'un hater à ce niveau. Tu n'y connais sûrement pas grand chose...

avatar Philactere | 

@AieFone66 :
Choix de KHTML au détriment de Gecko comme moteur de rendu pour des questions stratégiques.
Bonne soirée.

avatar alexandre92 | 

Ca parle de Safari.

De rien :)

avatar noooty | 

@AieFone66 :
C'est l'histoire du démarrage de Safari...

avatar C1rc3@0rc | 

Apple a forké KTHML pour creer WebKit et construire Safari dessus pour dezinguer Internet Explorer et ne pas dependre du Web selon Microsoft ni sur Mac ni sur iPhone et que choisir Gecko de Mozilla etait impossible en temps, en strategie, et selon les normes d'Apple...

En gros.

Bon l'article dit aussi cela:

«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. »

En fait non.
Le probleme vient surtout de Mozilla, mais la Fondation pouvait difficilement faire autrement.
La complexité de Gecko vient de l'objectif de faire un navigateur capable de repondre a toutes les demandes pour le WEB mais aussi en faire un moteur pour d'autres usages jusqu'a en faire quasi un OS, ou du moins un environnement virtuellement excecutable sur n'importe quoi.
KHTML lui visait juste a coller aux standards HTML et offrir un moteur de rendu rapide pour un simple navigateur. En plus il etait bien isolé et independant. Cette architecture permettait deja de dissocier le moteur de rendu, le moteur javascript et l'OS sur lequel tournait le résultat. Car il ne faut pas l'oublier KHTML etait rapide meme sur les petite configurations, et cela etait aussi un avantage pour l'iPhone.

Autre point, la licence Mozilla était incompatible avec les licences propriétaires, ce qui bloquait (jusqu'a récemment) l'adoption de formats propriétaires, ce qui aurait été un problemes majeur pour l'iPhone.

«À 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 ?»

Certes Apple ne tablait que sur la prise de 1% de PDM des smartphones et le succès de l'iPhone était inattendu.
Par contre Webkit, libre, avait toutes les chances de réussir. Apple innovait et y mettait les moyens a l'époque.

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 AieFone66 | 

@Philactere & @RBC

Merci a vous ! C'est gentil.

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.

Pages

CONNEXION UTILISATEUR