KHTML
# KHTML

KHTML (pour KDE HTML) est le nom d'une bibliothèque logicielle libre de rendu de HTML, créée et utilisée par le projet KDE. KHTML a servi de base pour les forks Webkit, par Apple, puis indirectement Blink, par Google.

## Histoire

KHTML a été développé en même temps que la technologie à composants KPart qu'il utilise pour être intégré à Konqueror, le gestionnaire de fichiers de KDE. Il est sorti en 2000, en même temps que la version 2 de KDE.

En 2002 Apple choisit KHTML ainsi que KJS pour l'interpréteur JavaScript comme base de son moteur de rendu HTML qu'utilisera son navigateur web Safari. Ce nouveau moteur, placé sous licence LGPL et appelé WebKit subit de nombreuses modifications visant notamment à réduire les dépendances aux bibliothèques KDE, à tel point que les échanges de code entre les deux moteurs devinrent très compliqués. Ces problèmes ont été réglés lorsque Apple a ouvert le développement de Webkit en utilisant un dépôt SVN et un système de suivi des bug utilisant Bugzilla. C'est ainsi que certaines modification d'Apple ont pu être intégrées à KHTML, comme celles ayant permis au moteur de rendu de KDE de passer le test Acid2.

En juin-juillet 2007, Trolltech commence à adapter WebKit pour l'intégrer à sa bibliothèque Qt, qui est la principale bibliothèque sur laquelle repose KDE. Cet ajout permettra ainsi à Qt de disposer d'un moteur HTML/JavaScript complet. Le Webkit est disponible dans Qt depuis la version 4.4.0.

Cette intégration de WebKit a été annoncée par Trolltech aux développeurs de KDE durant l'aKademy 2007. Au vu de cela, plusieurs développeurs pensent qu 'il serait intéressant d'utiliser le WebKit de Qt en créant un KPart, pour remplacer KHTML.

## Caractéristiques

KHTML est écrit en C++ et disponible sous licence LGPL. Il est rapide, mais est moins tolérant au niveau des erreurs dans le code HTML que le moteur Gecko, du projet libre Mozilla.

Il respecte plusieurs standards utilisés sur le Web :

* HTML 4.01
* l'écriture bi-directionnelle
* CSS 1, 2.1 (partiellement pour les types de media) et 3 (les sélecteurs, ainsi quelques autres parties de la norme)
* Document Object Model (DOM) 1, 2 et 3 (partiellement pour ce dernier)
* ECMAScript 262, implémenté dans la version 1.5 de JavaScript
* Images au format PNG, MNG, JPEG, GIF
* Support partiel du format vectoriel SVG
* le protocole SSL via OpenSSL

Il supporte également les applets Java

## Navigateurs utilisant KHTML

Plusieurs navigateurs Web utilisent KHTML. On peut citer notamment :

* ABrowse, le navigateur d'AtheOS et Syllable. Pour ce dernier à partir de la version 0.6.4 le moteur WebKit est utilisé à la place de KHTML
* Konqueror, le navigateur du projet KDE
* SkyKruzer, le navigateur de SkyOS
* Safari, le navigateur livré avec Mac OS X utilisait autrefois KHTML, il utilise à présent le fork Webkit.
* Chrome et Chromium utilisent le fork Webkit de KHTML, avant de passer à Blink (lui-même étant un fork de Webkit).
* Opera suit le chemin de Chrome, il utilisait Webkit et est à son tour passé à Blink à partir de la version 15.
