TenFourFox aneb Pohádka o portu Firefoxu pro PowerPC Mac
Jelikož na lepení modelů jsem nešikovný a v mokrých věcech se patlám nerad, zařadil jsem se už před lety do oné poslední skupiny. Mám toho doma vícero, ale mým hlavním desktopem je Mac s procesorem IBM PowerPC 970, platforma, kterou Apple opustil před devíti lety.
Apple je v posledním desetiletí znám tím, že se příliš nepárá se zpětnou kompatibilitou. Nejnovější operační systém běží bez potíží pouze na novém či středně starém hardware, většina software šlape pod dvěma či třemi po sobě jdoucími verzemi operačního systému. Něco jako dvacet let bezproblémové zpětné kompatibility, tak jak to známe ze světa PC, to je čiré sci-fi. Má to jistě své výhody - platforma s sebou nenese historický balast, není třeba udržovat podporu pro letitý hardware a v neposlední řadě lze mnohem rychleji implementovat nejnovější trendy. Ovšem pokud se vám nechce neustále obměňovat hardware i software, máte po jistém čase smůlu.
Vezměme například tak základní věc jako je webový prohlížeč, konkrétně Firefox. Operační systém Mac OS X 10.4 (vydán 2005) přestal být podporován s verzí 4. Pro Mac OS X 10.5 (vydán 2007) sice Firefox vycházel až do verze 16, ovšem pouze pro počítače vybavené procesorem Intel. To je samozřejmě špatná zpráva pro mě a ještě o něco horší zpráva například pro majitele čtyřjádrových PowerMaců G5, které na jaře 2006 stály 3300USD. Ano, jedná se o počítače s benchmarkovým výkonem na úrovni dnešních Atomů, ale na dnešních Atomech se na webu dá celkem pohodlně brouzdat, tak proč ne na PowerMacu?
A přesně to si řekl Cameron Kaiser a pustil se do vývoje TenFourFoxu, backportu Firefoxu pro OS X 10.4 (Tiger). Cameron používá Mac víceméně od roku 1987 a podle jeho vlastních slov je právě verze 10.4 poslední, s níž se dokonale sžil a je schopen s ní nejefektivněji pracovat. V novějších verzích vidí postupující iOSifikaci, která se mu nelíbí. V novějších verzích neběží jeho draze koupený a roky používaný software. A také dal majlant za již zmiňovaný čtyřjádrový PowerMac, takže si jednoho dne řekl, že než to všechno zahodit, raději bude udržovat aktuální Firefox v neaktuálním systému.
Backporting Firefoxu pro Tigera znamená tvorbu velké části GUI - to v aktuálním Firefoxu se opírá o knihovny, které v Tigeru vůbec neexistovaly a dobové GUI zase těžko napojovat na nové browserové jádro. Malý vývojářský tým kolem Camerona jde ale ještě dál, optimalizuje jednotlivé části prohlížeče na úrovni assembleru přímo pro procesory PowerPC. Ke zpracování obrázků ve formátu JPEG, WebM videa i samotného HTML je využita vektorová jednotka AltiVec (pokud je dostupná), JavaScript se pomocí JIT kompileru překládá do strojového kódu (na PC nebo mobilních zařízeních s ARM procesory dnes samozřejmost, ovšem žádný z JavaScriptových enginů neměl PowerPC mezi cílovými procesory, takže se vždy jednalo o JavaScript interpretovaný) a veškerá grafika je akcelerována pomocí CoreGraphics. Verzi od verze se tak něco zrychlí a to nejen v technických benchmarcích, ale obvykle to pozná i uživatel. Celkově je zhruba 15% kódu v TFF nových a nemá s Firefoxem nic společného, což není na jednocifernou skupinku programátorů s doktorem v čele vůbec špatné. Část těchto modifikací (podpora big-endian platforem, optimalizace pro AltiVec) se dostala i zpět do kódu Firefoxu a je využívána například v linuxové verzi na Power-kompatibilním železe.
Až do verze 24 odpovídaly stabilní verze TenFourFoxu verzím Firefoxu a vycházely opožděny jen o několik málo dní. S vydáním čtyřiadvacítky přešel TFF na ESR verze, v době psaní tohoto článku je aktuální verze značena jako 24.3.0. Předchozí verzi (24.2.0) si stáhlo mezi dvaceti a pětadvaceti tisíci uživateli, což se sice může zdát jako malé číslo, ale malé je pouze relativně - z těch kteří nepřešli na moderního Maca nebo na starém PowerMacu nepoužívají Linux má TenFourFox značná část nainstalovaný a používá jej na denní bázi.
Každá verze je vydávána ve čtyřech variantách podle cílového procesoru - existuje varianta pro PowerPC G3, starší modely PowerPC G4 (řada 7400), novější modely PowerPC G4 (řada 7450) a PowerPC G5. Každá verze samozřejmě nese kód pro daný procesor - nejstarší G3 nemají podporu AltiVecu, nejnovější G5 mají jinou vnitřní mikroarchitekturu a proto je na nich odlišný JavaScriptový JIT kompilátor. Díky takto široké podpoře je reálně možné provozovat TenFourFox na počítačích datovaných zhruba od roku 1997, což je s trochou nadsázky lepší než u PC verze Firefoxu, kterou lze dle oficiálního seznamu požadavků rozeběhat pouze na procesorech s instrukční sadou SSE2 a novějších. Praktickou použitelnost moderního browseru na počítači s procesorem taktovaným na frekvenci 233MHz samozřejmě nechávám stranou. Aktualizovat na originálním iMacu status na JavaScriptem prolezlém Facebooku bude asi jen pro opravdové fajnšmekry a to i přesto, že pluginy jako Flash či Java jsou ve výchozím stavu zakázány kvůli jejich značné zastaralosti.
Jako každodenní uživatel upřímně doufám, že Cameronovi a ostatním (Tobias Netzel, Ben Stuhl, Chris Trusch a další) jejich entuziasmus ještě několik let vydrží. Sám Cameron, jak jsem už výše zmínil, je povoláním lékař se specializací na tuberkulózu, kromě toho i vystudovaný lingvista a bývalý programátor. TenFourFox je jen jeden z jeho projektů, mimo něj udržuje prohlížeč na jádře Gecko i v ještě mnohem starším Mac OS 9 (Classilla), je propagátorem protokolu Gopher - hostuje fulltextový gopherový vyhledávač Veronica-2, udržuje seznam existujících gopherových stránek, je autorem gopherového serveru Bucktooth a několika pluginů do moderních browserů, které v nich umožňují čtení Gopheru. Kromě toho sbírá, dokumentuje a programuje nejrůznější unixové a osmibitové stroje a popravdě se vůbec divím, že najde čas ještě na něco jako je TenFourFox. On sám k tomu říká: "Nespím, nejsem ženatý a jediné o co se starám je kočka a dům plný počítačů. To dělá time management o něco jednodušším."
Diskuse k blogu TenFourFox aneb Pohádka o portu Firefoxu pro PowerPC Mac