Renderujeme nejen weby
Kvalitní knihovnu, schopnou dobře, rychle a správně renderovat webové stránky, potřebuje dnes v podstatě každý uživatel. Takové knihovně se obvykle říká renderovací jádro a najdeme ji nejen v prohlížečích, ale také v dalších aplikacích jako jsou e-mailoví klienti, programy pro čtení dokumentace, čtečky elektronických knih a podobně.
Současná situace okolo jednotlivých implementací renderovacích jader je ovšem velmi zmatená a roztříštěná, protože v každém operačním systému najdeme zcela odlišný kus software. Situaci navíc zhoršuje nekompatibilita jednotlivých implementací a často také velmi rozdílný způsob zobrazování stránek.
Pokusím se shrnout situaci u jednotlivých operačních systémů případně tvůrců renderovacích jader.
Microsoft
Microsoft už deset let vyvíjí a v MS Windows používá své vlastní jádro Trident. To využívá například Internet Explorer (od verze 4), ale také další aplikace, které chtějí vyrenderovat a zobrazit webovou stránku. Jádro je pevně zakořeněné v operačním systému a kvůli uzavřenosti jej není možné portovat na jiný operační systém.
Poznámka autora: Je pravda, že MSIE byl kdysi vytvářen také pro unixové systémy a Mac OS X. Jednalo se ale spíše o kompletní přepsání než o klasickou portaci. Nyní jsou všechny tyto verze bez podpory. Nikdo kromě Microsoftu však stále nemá možnost další porty vytvořit.
Mozilla
Přibližně stejnou dobu je vyvíjeno i jádro Gecko, které nyní spravuje Mozilla a využívá jej ve svých produktech jako je Firefox, Thunderbird a další. Objevuje se také například v SeaMonkey, v OpenOffice.org a v nezávislém webovém prohlížeči Kazehakase. Tím bohužel veškeré další využití končí. Ačkoliv uživatelé dlouho volají po samostatné knihovně Gecko, kvůli poměrně komplikovanému a ne zcela čistému kódu nikdy nic podobného nevzniklo.
KDE
Vývojáři prostředí KDE vytvářejí svůj vlastní prohlížeč Konqueror, který používá jádro zvané KHTML. To je postaveno na „zelené louce”, ale zatím neobsahuje některé důležité funkce a je poměrně pevně svázáno s KDE.
Apple
Současným prohlížečem systému Mac OS X je Safari, které využívá jádra WebKit. To vychází z KHTML a přidává řadu vlastních vylepšení. Bohužel v současné době je WebKit pevně svázán s Mac OS X a přestože existuje vývojová verze pro MS Windows, zatím nelze říci, že by byla příliš použitelná.
… a další
Samozřejmě existují i další renderovací jádra, která najdeme v mnoha různých samostatných aplikacích. Jsou ale buďto uzavřená (Opera) nebo nedosahují potřebných kvalit (Tkhtml3) pro obecné použití v operačním systému.
Chceme multiplatformní WebKit!
V tuto chvíli je tedy jediným použitelným a portovatelným jádrem Gecko. To je ovšem distribuováno jen s konkrétními aplikacemi Mozilla a je příliš komplikované na to, aby jej v hojné míře využívaly další aplikace.
Jedním z nadějných projektů je ale už zmíněný WebKit. Jeho předností je kompaktnost a především neuvěřitelná jednoduchost. Jedná se o jednu jedinou systémovou knihovnu o velikosti 4 MB. Čistotu jádra si nedávno pochvaloval i David Majda, známý z projektu CZilla: „Když jsem nedávno koukal do zdrojáků Safari kvůli implementaci nativních widgetů, velmi příjemně mě překvapilo, jak jsou hezky napsané, srozumitelné a logicky uspořádané.”.
Také Martin Hassman se k WebKitu vyjádřil velmi pochvalně: „Webkit mne opravdu nadchl. Jedna 4 MB knihovna a pár konfiguračních souborů. Sbohem Gecko, sbohem balaste desítek souborů!”.
V současné době je k dispozici nativní verze pro Mac OS X a vývojářský port pro MS Windows. Vývojáři očividně pracují na multiplatformnosti WebKitu. Po oficiálním portu pro Linux ale zatím není nic slyšet. Přesto se někteří nezávislí vývojáři už nyní snaží a výsledkem je například Epiphany používající WebKit.
Epiphany nad WebKitem
Trocha z historie WebKitu
Abychom mohli nahlédnout do historie jádra WebKit, musíme začít u KHTML. To vzniklo v rámci projektu KDE kolem roku 2000. To bylo v době, kdy Netscape padnul a Mozilla se urputně snažila vytvořit novou vývojářskou komunitu, která by pokračovala ve vývoji Gecko a především prohlížeče Netscape.
Situace byla v té době velmi nestabilní, a tak se projekt KDE rozhodl vytvořit vlastní prohlížeč Konqueror a renderovací jádro KHTML, vše vystavěné od nuly a postavené na vlastních open-source kódech. Poprvé se KHTML objevilo v KDE 2.0. V té době už bylo použitelné na většinu HTML, ale stále chyběla pořádná podpora JavaScriptu a chyběly některé další funkce.
Kód jádra KHTML jako první převzal projekt AtheOS, který je dnes známý pod názvem Syllable. Ten použil jádro ve svém vlastním prohlížeči Abrowse. Byl tu ovšem ještě jeden zájemce, který potichu převzal kód KHTML a několik let jej postupně vylepšoval – Apple. Vývoj nového WebKitu se zaměřil na tři oblasti:
- Odstranění závislosti na KDE
- Odstranění závislosti na Qt
- Přidání chybějících funkcí
V roce 2003 bylo vše připraveno, a tak Apple při vydání Mac OS X 10.3 Panther oznámil, že je k dispozici nový prohlížeč Safari, postavený právě na jádře WebKit. Část jádra však byla stále uzavřená a Apple si své změny chránil, za což sklidil nemalou kritiku od open-source komunity, která se dožadovala „vrácení změn” zpět do projektu KHTML.
Stalo se a v červnu 2005 oznámili vývojáři Safari, že celý WebKit je open source, včetně nové podpory JavaScriptu, SVG a dalších úprav provedených mimo KHTML. Potřebné změny tak mohly být postupně zaváděny do původního projektu.
Blýská se na lepší časy?
Je jasné, že WebKit je jasným kandidátem na univerzální renderovací jádro, které by bylo použitelné nejen v Mac OS X a nejen v Safari. Všichni volají po WebKitu a KHTML je logicky odsouván do pozadí. Toho jsou si vědomi i sami vývojáři, kteří se sešli na konferenci Akademy 2007 pořádané v Glasgow, aby společně debatovali nad budoucností KHTML.
Výsledkem je rozhodnutí opustit samostatný projekt KHTML a spojit síly s vývojáři WebKitu. Vývojáři Apple tento krok navrhovali už před lety. Výsledkem by mělo být zrychlení vývoje a především nový Konqueror postavený právě na WebKitu. Důsledkem tak bude portace WebKitu na Linux.
Původní KHTML ale nebude úplně hozen za hlavu, protože stále obsahuje funkce vzniklé až po odštěpení projektu WebKit, který je zatím neimplementoval. Jedná se například o částečnou podporu CSS3. Zároveň je potřeba do WebKitu přidat rozhraní používaná aplikacemi jako jsou Konqueror, Abrowse nebo zmíněný Epiphany.
K všeobecnému nadšení z vývoje WebKitu se přidala i společnost Trolltech, která vyvíjí knihovnu Qt. Její představitele už oznámili, že chystaná Qt 4.4 bude obsahovat WebKit, takže každý vývojář bude mít hotový nástroj pro renderování stránek.
Co nás tedy čeká?
Poměrně často si lidé stěžují na roztříštěnost open-source světa, která štěpí síly a vnáší do vývoje zmatek. Situace okolo KHTML a WebKit je zářným příkladem opaku, kdy se velké projekty spojí, aby společně vytvořily ještě zajímavější a kvalitnější kus software. Pokud k tomu přičteme ještě zájem Trolltechu, vyjde nám špičkové renderovací jádro, využitelné na mnoha platformách a systémech.
KHTML je mrtev. Ať žije WebKit!