Dado que uno de los objetivos del equipo de Project Fugu es permitir que los desarrolladores puedan hacer en la Web todo lo que pueden las apps específicas de la plataforma, el equipo se ha dedicado a agregar las funciones que faltaban a los desarrolladores web para cerrar esta brecha entre las apps. Si no me crees, consulta la sección “Shipped” del rastreador de la API de Fugu. Estas son las 55 APIs enviadas, en orden de la menos a la más reciente:
Es una lista larga, y tenemos mucho más en mente. Aún 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 consideración. Como puedes ver, no es momento de relajarse y decir que terminamos.
Métodos de archivos síncronos para el sistema de archivos privado de origen
Todo lo contrario, en lugar de declarar que nuestro esfuerzo está completo, en realidad, estamos empezando. Por ejemplo, considera el siguiente gráfico que muestra el aumento exponencial del uso relativo del método navigator.storage.getDirectory()
, que se usa como punto de entrada al sistema de archivos privados de origen (OPFS). Este método se usa, por ejemplo, para las necesidades de almacenamiento de alto rendimiento de Photoshop, que a la comunidad de almacenamiento le interesa mucho desde que comenzó la baja de Web SQL y hasta antes.
Ahora que más personas usan los OPFS, surgieron requisitos adicionales. Por ejemplo, la necesidad de un conjunto de métodos de archivos completamente síncronos en un contexto de trabajador (consulta whatwg/fs#7 para obtener información general). Si bien las nuevas APIs web suelen ser asíncronas, tener métodos síncronos facilitaría mucho el trabajo con el OPFS en un contexto de Wasm y, como esto ocurre 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, seriales, 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 anteriormente. Ahora sí, gracias a los métodos forget()
para algunas de las APIs. Por ejemplo, aquí se muestra cómo olvidar un dispositivo 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();
Refinamientos para la API de Multi-Screen Window Placement
Un último ejemplo es la API de Multi-Screen Window Placement, en la que, en función de los comentarios de los desarrolladores, las etiquetas de pantalla genéricas anteriores, como "Internal Display 1"
, se reemplazaron por etiquetas más significativas, como "Built-in Retina Display"
, para que los usuarios puedan asociar estas etiquetas con las pantallas de su configuración multipantalla con mayor facilidad.
Conclusiones
Como puedes ver en estos tres ejemplos, el proyecto Fugu está lejos de estar terminado. Continúa usando o comienza a usar nuestras APIs y envía comentarios. Dado que todas las especificaciones de Fugu se desarrollan de forma abierta en GitHub, puedes registrar un problema de especificación en el repositorio de GitHub correspondiente o agregar tus comentarios a un problema existente. Si encuentras un error en la implementación de Chrome o descubres que es diferente a la especificación, informa el error en new.crbug.com. Asegúrate de incluir tantos detalles como sea posible y proporciona instrucciones simples para reproducirlo.
Además, si te preocupa la compatibilidad con el navegador, muchas APIs de Fugu son excelentes mejoras progresivas. Consulta mi artículo SVGcode: una AWP para convertir imágenes de trama en gráficos vectoriales SVG para obtener inspiración. Tampoco consideramos que nuestro trabajo está terminado hasta que estas APIs sean interoperables, y seguiremos presionando para que otros navegadores las estandaricen, prueben y adopten.