Ist das Projekt Fugu fertig?

Eines der Ziele des Project Fugu-Teams ist es, Entwicklern zu ermöglichen, alles im Web zu tun, was plattformspezifische Apps können. Das Team hat daher fleißig fehlende Funktionen hinzugefügt, die Webentwickler benötigen, um diese App-Lücke zu schließen. Wenn Sie mir nicht glauben, sehen Sie sich einfach den Abschnitt „Versendet“ im Fugu API-Tracker an. Hier sind die 55 veröffentlichten APIs, sortiert nach dem Veröffentlichungsdatum (von der ältesten bis zur neuesten):

API-Name Versand in
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
Web Share TargetChrome 71
Web Share API Level 2Chrome 75
Asynchrone Zwischenablage: Bilder lesen und schreibenChrome 76
Web Share Target Level 2Chrome 76
Schlüsselhinweis eingebenChrome 77
Speicherkontingent erweiternChrome 78
Get Installed Related Apps APIChrome 80
Regelmäßige HintergrundsynchronisierungChrome 80
desktop-pwas: Support "minimal-ui" display modeChrome 80
KomprimierungscodecsChrome 80
Contacts APIChrome 80
Badging APIChrome 81
Verwendung der Badging API über einen Service-Worker per Push zulassenChrome 81
Barcode Detection APIChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API: Übertragbare StreamsChrome 85
App-VerknüpfungenChrome 85
DateisystemzugriffChrome 86
Unterstützung von „text/html“ für die Async Clipboard APIChrome 86
Unterstützung für Schwenken/Neigen der KameraChrome 87
FUGU: Erfassung der Audioausgabe von System und Apps auf Kopfhörern und Lautsprechern implementieren Chrome 88
PointerLock unadjustedMovementChrome 88
Eine Foto-/Videoauswahl ähnlich der Android-Bildauswahl erstellenChrome 88
Integration von Web Share (navigator.share) in Windows 10Chrome 88
Web NFCChrome 89
WebHID (Human Interface Device)Chrome 89
Web Serial APIChrome 89
Web Share auf dem ComputerChrome 89
Handwriting Recognition APIChrome 90
Verwaltete Konfiguration für WebanwendungenChrome 91
PWA bei OS Login ausführenChrome 91
WebCodecsChrome 93
Erkennung von InaktivitätChrome 94
EyeDropper APIChrome 95
App-Verknüpfungsmenü für PWAs unter macOS und LinuxChrome 96
Registrierung von URL-Protokoll-Handlern für PWAs Chrome 96
WebTransportChrome 97
Zwischenablage: Beim Einfügen von Retina-Bildern gehen die pHYs-Metadaten verloren.Chrome 98
PWAs sollten auf dieselbe Weise wie „echte Apps“ deinstalliert werden könnenChrome 99
Web NFC: NDEFReader makeReadOnly()Chrome 100
Window Placement API für mehrere BildschirmeChrome 100
HIDDevice.forget()Chrome 100
USBDevice.forget()Chrome 101
sameObject-Verhalten von WebUSBChrome 101
Window Controls Overlay für installierte Desktop-Web-AppsChrome 102
DateiverarbeitungChrome 102
Die chrome.management API kann nicht mehr mit PWA-Apps interagierenChrome 102
SerialPort.forget()Chrome 103
Zugriff auf lokal gespeicherte SchriftartenChrome 103
Fugu-Anfrage: Dynamische App-Verknüpfungen (Shortcuts v2)Chrome 104
Benutzerdefinierte Webformate für die Async Clipboard APIChrome 104
Alle bisher ausgelieferten Fugu-APIs.

Das ist eine lange Liste und es gibt noch mehr zu tun. Es gibt noch einige APIs und Funktionen, die sich derzeit in der Entwicklervorschau befinden (d. h. implementiert, aber hinter einem Feature-Flag), einige, an denen wir bereits arbeiten, und viele, die in Erwägung gezogen werden. Wie Sie sehen, ist es noch nicht an der Zeit, sich zurückzulehnen und zu sagen, dass wir fertig sind.

Synchrone Dateimethoden für das private Dateisystem des Ursprungs

Ganz im Gegenteil: Wir sind noch lange nicht fertig. Das folgende Diagramm zeigt beispielsweise ein rasantes Wachstum der relativen Nutzung der Methode navigator.storage.getDirectory(), die als Einstiegspunkt für das private Dateisystem des Ursprungs (Origin Private File System, OPFS) verwendet wird. Diese Methode wird beispielsweise für die Hochleistungsspeicheranforderungen von Photoshop verwendet, an denen die Speicher-Community seit der Einstellung von Web SQL und schon davor großes Interesse hat.

Diagramm mit der rasant steigenden relativen Nutzung der Methode „navigator.storage.getDirectory“.

Da immer mehr Nutzer das OPFS verwenden, sind zusätzliche Anforderungen entstanden. Ein Beispiel ist die Notwendigkeit eines vollständig synchronen Satzes von Dateimethoden in einem Worker-Kontext (siehe whatwg/fs#7 für den Hintergrund). Neue Web-APIs sind in der Regel asynchron. Synchrone Methoden würden die Arbeit mit dem OPFS in einem Wasm-Kontext jedoch erheblich vereinfachen. Da dies in einem Worker geschieht, kann der Hauptthread nicht blockiert werden.

Verbesserungen beim Datenschutz für die Hardware-APIs

Ein weiteres Beispiel sind die Hardware-APIs, mit denen Sie eine Verbindung zu HID-, seriellen-, USB-, Bluetooth- und NFC-Geräten herstellen können. Einige dieser APIs gibt es schon seit einiger Zeit, aber bis vor Kurzem gab es keine Möglichkeit, ein Gerät zu vergessen, mit dem Sie zuvor eine Verbindung hergestellt hatten. Dank der forget()-Methoden ist das jetzt für einige APIs möglich. So können Sie beispielsweise ein zuvor verbundenes serielles Gerät vergessen, was den Datenschutz der API verbessert.

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

Verbesserungen für die Multi-Screen Window Placement API

Ein letztes Beispiel ist die Multi-Screen Window Placement API. Hier wurden die zuvor generischen Bildschirmkennzeichnungen wie "Internal Display 1" auf Grundlage von Entwicklerfeedback durch aussagekräftigere Kennzeichnungen wie "Built-in Retina Display" ersetzt, damit Nutzer diese Kennzeichnungen leichter den Bildschirmen ihres Setups mit mehreren Bildschirmen zuordnen können.

Zusammenfassung

Wie Sie an diesen drei Beispielen sehen, ist Project Fugu noch lange nicht abgeschlossen. Nutzen Sie unsere APIs weiterhin oder beginnen Sie mit der Nutzung und geben Sie Feedback. Da alle Fugu-Spezifikationen öffentlich auf GitHub entwickelt werden, können Sie ein Spezifikationsproblem im entsprechenden GitHub-Repository melden oder Ihre Gedanken zu einem bestehenden Problem hinzufügen. Wenn Sie einen Fehler in der Chrome-Implementierung finden oder feststellen, dass die Implementierung von der Spezifikation abweicht, melden Sie den Fehler unter new.crbug.com. Geben Sie so viele Details wie möglich an und stellen Sie eine einfache Anleitung zur Reproduktion bereit.

Wenn Sie sich Sorgen um die Browserunterstützung machen, eignen sich viele Fugu-APIs hervorragend für progressive Verbesserungen. In meinem Artikel SVGcode: a PWA to convert raster images to SVG vector graphics finden Sie einige Beispiele. Wir sind erst zufrieden, wenn diese APIs interoperabel sind. Wir werden uns weiterhin für eine weitere Standardisierung, Tests und die Einführung durch andere Browser einsetzen.