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:
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.
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.