Project Fugu: mehr Leistung für das Web
Ungeahnte Stärke
Project Fugu will neue standardisierte Webschnittstellen liefern, die die Lücke zwischen nativen Apps und Progressive Web Apps plattformübergreifend schließen sollen. iX stellt die Initiative vor und sprach mit Vertretern der Browserhersteller und Standardisierungsgremien.
Fugu ist das Muskelfleisch des Kugelfisches und eine japanische Spezialität. Das Gift des Fisches betäubt die Zunge und macht ihn zu einem besonderen Geschmackserlebnis. Falsch zubereitet ist Fugu jedoch tödlich. Wohl nicht ganz zufällig haben die Projektteilnehmer sich den Kugelfisch für ihr Web-Capabilities-Projekt zum Maskottchen gewählt.
Ursprünglich diente das World Wide Web zum einfacheren Austausch wissenschaftlicher Dokumente. Mittlerweile ist es zur Ausführungsplattform für Anwendungen aller Art avanciert: Spätestens mit der fünften Fassung der Hypertext Markup Language (HTML5) wurde das Web mehr und mehr um native Funktionen ergänzt. Diese Anstrengungen gipfelten im Anwendungsmodell der Progressive Web Apps (PWA). Darunter versteht man eine zunächst im Browser ausgeführte Anwendung, die sich offline betreiben und zum schnelleren Zugriff auf dem jeweiligen Gerät installieren lässt. Vom Homebildschirm oder der Programmliste des Systems aus gestartet, läuft die Webanwendung im Stand-alone-Modus und ist dann nicht mehr von normalen Apps zu unterscheiden.
Progressive Web Apps können seit 2018 zwar auf allen relevanten Webbrowsern und Plattformen betrieben werden, doch bleibt ein Versatz zwischen den Fähigkeiten (Capabilities) nativer Anwendungen und jenen von Web-Apps. Diese Lücke soll das Web-Capabilities-Projekt, besser bekannt unter dem Codenamen Project Fugu, nun schließen: Es soll mit hoher Schlagzahl neue, mächtige Schnittstellen ins Web bringen, die die Entwicklung hochwertiger Anwendungen für Mobil- und Desktopbetriebssysteme erlauben (siehe Kasten). Die APIs werden dabei direkt in Chromium, dem quelloffenen Unterbau des Webbrowsers Google Chrome, Microsoft Edge und Opera implementiert. Sie sollen plattformübergreifend einsetzbar sein und gehen den Weg über die Standardisierungsgremien. Das langfristige Ziel ist, dass zukünftig jede Art von Anwendung im Web implementiert werden kann und auch innovative APIs mindestens zeitgleich im Web landen.
Beispiele für Fugu-Schnittstellen sind die Native File System API, die Webanwendungen Zugriff auf das native Dateisystem gewähren soll, die Async Clipboard API für einen erweiterten Zugang zur Zwischenablage des Systems sowie die Contact Picker API, die vom Anwender ausgewählte Kontaktinformationen mit der Website teilt. Datenschutz- und Sicherheitsaspekte der Schnittstellen müssen dabei immer mitbedacht werden, um eine missbräuchliche Verwendung der Schnittstelle zu erschweren. Alex Russell, mit Frances Berriman Namensgeber der Progressive Web Apps und technischer Leiter von Project Fugu, sagt mit Anspielung auf den Codenamen: „Der Erfolg von Project Fugu darin, vermeintlich gefährliche Fähigkeiten ins Web zu bringen, fußt auf der tiefen Partnerschaft mit den Security-, Privacy- und UX-Teams bei Google und darüber hinaus.“
Diesem Unterfangen haben sich zwischenzeitlich auch Microsoft und Intel angeschlossen; beide Unternehmen entwickeln an Chromium mit. Microsoft hatte zuletzt seine eigene Rendering-Engine EdgeHTML und JavaScript-Runtime ChakraCore zugunsten von Chromiums Blink und V8 aufgegeben und engagiert sich seitdem in der Chromium-Community. Die im Januar 2020 erschienene neue Version von Microsoft Edge basiert nun darauf.
Transparent organisiert
Project Fugu zeichnet sich durch eine besondere Transparenz aus: Die Roadmap des Projektes ist im Fugu-API-Tracker (Abbildung 1) öffentlich einsehbar. Diese Liste stellt die Schnittstellen nach Priorisierung sortiert dar. Die Spalte „Who“ gibt an, wer sich um die Umsetzung der Schnittstelle kümmert: G steht für Google, M für Microsoft, I für Intel. In der Spalte „Crbug“ wird auf das jeweilige Ticket im Chromium-Bugtracker verwiesen. Die Spalte „Where“ definiert, ob die Schnittstelle auf Mobil- und/oder Desktopgeräten funktionieren soll. Ein Pin bedeutet, dass die Schnittstelle nur installierte PWAs adressiert. Auf der rechten Seite ist der Fortschritt der Implementierung zu sehen: Oben sind die Chromium-Versionen mit Erscheinungszeitpunkt abgebildet. Eine Flagge zeigt an, dass die jeweilige Schnittstelle in dieser Version hinter einem Browser-Flag verfügbar gemacht wurde, das Anwender im Browser zum Ausprobieren explizit aktivieren müssen. Grüne Balken stellen die Erprobungsphase der Schnittstelle dar, bei der diese in engen Grenzen auch ohne aktiviertes Flag verwendet werden kann (Origin Trial). Das Kugelfischsymbol bedeutet, dass die Schnittstelle in der jeweiligen Version generell verfügbar gemacht wurde.
Darüber hinaus kann jeder neue Capabilities für Project Fugu vorschlagen. Sollten zur Umsetzung eines bestimmten Anwendungsfalls im Web die notwendigen Schnittstellen fehlen, können Entwickler sie an das Fugu-Team melden. Dafür hat das Chrome-Team einen speziellen Kurzlink eingerichtet, über den sich solche Anfragen direkt im Chromium-Bugtracker einreichen lassen (siehe ix.de/zp4t).