¿El Proyecto Fugu se completó?

Uno de los objetivos del equipo de Project Fugu es permitir que los desarrolladores hagan en la Web cualquier cosa que puedan hacer las apps específicas de la plataforma, y el equipo estuvo ocupado agregando las funciones faltantes que los desarrolladores web necesitaban para cerrar esta brecha en la app. Si no me crees, consulta la sección “Enviado” de la herramienta de seguimiento de la API de Fugu. Estas son las 55 APIs enviadas, en orden de menor a la más reciente:

Nombre de la API Enviado en
API de Web BluetoothChrome 56
API de WebUSBChrome 61
Objetivo de uso compartido webChrome 71
Nivel 2 de la API de Web ShareChrome 75
Portapapeles asíncrono: Lee y escribe imágenesChrome 76
Objetivo de uso compartido en la Web nivel 2Chrome 76
Ingresa la sugerencia claveChrome 77
Expande la cuota de almacenamientoChrome 78
API de Instalar aplicaciones relacionadasChrome 80
Sincronización periódica en segundo planoChrome 80
desktop-pwas: Compatibilidad con el modo de visualización “minimal-ui”Chrome 80
Códecs de compresiónChrome 80
API de ContactsChrome 80
API de BadgingChrome 81
Permitir que un service worker use la API de Badging a través de PushChrome 81
API de Barcode DetectionChrome 83
API de Content IndexingChrome 84
WebOTPChrome 84
API de Screen Wake LockChrome 84
API de Streams: Transmisiones transferiblesChrome 85
Accesos directos a aplicacionesChrome 85
Acceso al sistema de archivosChrome 86
Compatibilidad con texto/html para la API del portapapeles asíncronoChrome 86
Compatibilidad con el desplazamiento lateral/inclinado para la cámaraChrome 87
FUGU Implementa la captura de salida de audio del sistema y las aplicaciones para auriculares y bocinas Chrome 88
PointerLock unadjustedMovementChrome 88
Cómo crear un selector de fotos o videos similar al de AndroidChrome 88
Integración de Web Share (navigator.share) con Windows 10Chrome 88
NFC webChrome 89
WebHID (dispositivo de interfaz humana)Chrome 89
API de Web SerialChrome 89
Uso compartido en la Web para computadorasChrome 89
API de reconocimiento de escritura a manoChrome 90
Configuración administrada para aplicaciones webChrome 91
Ejecuta la AWP durante el Acceso al SOChrome 91
WebCodecsChrome 93
Detección de inactividadChrome 94
API de EyeDropperChrome 95
Menú de accesos directos de la app para AWP en macOS y LinuxChrome 96
Registro del controlador de protocolo de URL para AWP Chrome 96
WebTransportChrome 97
Portapapeles: Cuando se pegan imágenes de la retina, se pierden los metadatos de pHY.Chrome 98
La AWP debe poder desinstalarse del mismo modo que una "app real".Chrome 99
NFC web: NDEFReader makeReadOnly()Chrome 100
Ubicación de ventanas multipantallaChrome 100
HIDDevice olvidar()Chrome 100
USBDevice remember().Chrome 101
Comportamiento del sameObject en USB webChrome 101
Superposición de controles de ventana para apps web de escritorio instaladasChrome 102
Manejo de archivosChrome 102
La API de chrome.management ya no puede interactuar con las apps AWPChrome 102
SerialPort olvides()Chrome 103
Acceso a fuentes localesChrome 103
Solicitud de Fugu: Accesos directos dinámicos a la app (accesos directos v2)Chrome 104
Formatos web personalizados para la API de Async ClipboardChrome 104
Hasta ahora, todas las APIs de Fugu enviadas.

Es una lista larga, y hay mucho más que esperar. Por el momento, todavía hay algunas APIs y funciones en prueba para desarrolladores (es decir, implementadas, pero detrás de una marca de función), algunas en las que comenzamos a trabajar y muchas en proceso de consideración. Como puedes ver, no es momento de inclinarte y decir que terminamos.

Métodos de archivos síncronos para el sistema de archivos privados de origen

Todo lo contrario, en lugar de declarar que nuestro esfuerzo se completó, en realidad recién estamos comenzando. Por ejemplo, considera el siguiente gráfico, que muestra un aumento repentino del uso relativo del método navigator.storage.getDirectory(), que se usa como punto de entrada al sistema de archivos privados (OPFS) de origen. Este método se usa, por ejemplo, para las necesidades de almacenamiento de alto rendimiento de Photoshop, y en el que la comunidad de almacenamiento está muy interesada desde que se dio de baja Web SQL y mucho antes.

Gráfico que muestra el aumento repentino del uso relativo del método navigator.storage.getDirectory.

Ahora que más personas usan OPFS, surgieron requisitos adicionales. Por ejemplo, la necesidad de un conjunto de métodos de archivo completamente síncrono en un contexto de trabajador (consulta whatwg/fs#7 para obtener información en segundo plano). Si bien las nuevas APIs web suelen ser asíncronas, tener métodos síncronos facilitaría mucho el trabajo con OPFS en un contexto de Wasm. Como esto sucede en un trabajador, no se puede bloquear el subproceso principal.

Mejoras de privacidad para las APIs de hardware

Otro ejemplo son las APIs de hardware que te permiten conectarte a dispositivos HID, serial, USB, Bluetooth y NFC. Si bien algunas de estas APIs existen desde hace tiempo, hasta hace poco no había forma de olvidar un dispositivo al que te habías conectado. Ahora puedes hacerlo gracias a los métodos forget() para algunas de las APIs. Por ejemplo, aquí se muestra cómo olvidar un dispositivo en serie conectado anteriormente, lo que mejora la privacidad de la API.

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

Mejoras en la API de ubicación de ventanas multipantalla

Un último ejemplo es la API de Multi-Screen Window Placement, en la que, según los comentarios de los desarrolladores, las etiquetas de pantalla genéricas, como "Internal Display 1", se reemplazaron por etiquetas más significativas, como "Built-in Retina Display", para que los usuarios puedan asociarlas más fácilmente con las pantallas de su configuración multipantalla.

Conclusiones

Como puedes ver a partir de estos tres ejemplos, el proyecto Fugu está muy lejos de completarse. Seguir usando nuestras APIs o comenzar a usarlas, y enviar comentarios. Como todas las especificaciones de Fugu se desarrollan de forma abierta en GitHub, puedes informar un problema de especificaciones en el repositorio de GitHub correspondiente o agregar tus ideas a un problema existente. Si encuentras un error en la implementación de Chrome o descubres que esta no es la especificación, envía un error en new.crbug.com. Asegúrate de incluir tantos detalles como puedas y de proporcionar instrucciones simples para reproducirlo.

Además, si te preocupa la compatibilidad con el navegador, muchas APIs de Fugu ofrecen mejoras progresivas excelentes. Consulta mi artículo SVGcode: A AWP para convertir imágenes de trama en gráficos vectoriales SVG para obtener inspiración. Tampoco consideramos que nuestro trabajo esté hecho hasta que estas APIs sean interoperables, y continuaremos solicitando una mayor estandarización, prueba y adopción por parte de otros navegadores.