WebExtension: Hacia un entorno estandarizado de extensiones de navegador

navegadores web

Llevo años (literalmente) sin hablar de aquellas extensiones y aplicaciones que en su día desarrollé para usuarios de Chrome.

De una idea loca en 2013, pasamos a un periodo de prueba que duró hasta primeros del 2015, donde por fin me animé a publicar una versión final. Y desde entonces, he ido paulatinamente adaptándola a los tiempos que corren, solucionando de manera silenciosa los problemas que han ido apareciendo en estos últimos meses conforme los requerimientos de Chrome iban cambiando, y manteniendo un changelog que puede consultar en la misma descripción de cada proyecto.

Dos desarrollos a medida para Chrome, cuya única “publicidad” este tiempo ha sido el banner inferior que aparece solo para este tipo de usuarios en la home, y que a día de hoy utilizan apenas 25 lectores (entre los que me incluyo :)):

  • La extensión de PabloYglesias (EN): El desarrollo al que más he mimado (más que nada, por ser el que ofrece mayores oportunidades), y que permite a esos usuarios a golpe de click, y desde cualquier otra página, tener acceso a mis últimos cinco artículos y a una búsqueda interna. Todo en formato gráfico, para que entre por los ojos, y sin notificaciones, que fue una de las peticiones de algún usuario en su momento, pero que desestimé, siguiendo mi filosofía de mientras menos distracciones mejor.
  • La aplicación de PabloYglesias (EN): Que simplemente se trata de un icono situado en la sección de aplicaciones de Chrome como acceso directo a la página, y curiosamente (por lo sencilla que resulta desarrollarla), la que más éxito ha tenido. En aquella época en la que Chrome en Windows te metía un icono de navegación en la barra de inicio, tenía más sentido. Actualmente, y en vista que el objetivo de Google es eliminar estas funcionalidades, entiendo que se quedará como algo anecdótico hasta que un buen día desaparezca. Pero bueno, “que me quiten lo bailao”. Para el trabajo que me costó hacerla (prácticamente hablamos de crear un manifest, un icono, y publicarlo), ha merecido la pena.

¿Que por qué lo hice para Chrome y no para Firefox?

Precisamente por esto mismo que comento. Porque mientras en Chrome se trataba de zipear un HTML con lo que a todos los efectos es una página web y dotarle de un manifest para adaptarlo a los requisitos del navegador, en Firefox era un desarrollo a medida.

Bajo estándares web, sí, pero a medida, y con kilos y kilos de javascript.

Que quizás para algo que planteas como modo de vida tenga sentido. Pero para un proyecto sencillito, al que no pensaba hacerle más caso que el que le he dado estos últimos años, me parecía una soberana gilipollez.

Y ojo, que digo esto pero realmente me puse manos a la obra. De hecho, todavía guardo el proyecto de extensión en Firefox en la carpeta de “cosas que podrían haber sido”, que abandoné tan pronto me di cuenta de que el gasto en recursos necesario superaba con creces los beneficios que me iba a dar.

¿Que hay algún que otro usuario tan loco como un servidor para tener un iconito activable en la barra de extensiones de su navegador con el contenido de esta página? Pues si es de Chrome bienvenido sea, que a Firefox, y pese a que sea mi navegador por defecto para desarrollo, no le meto mano ni con un palo.

O al menos, hasta ahora…

PabloYglesias Extension

WebExtension abre la veda a un futuro de extensiones estandarizado

Le he echado un ojo rápido a la guía de desarrollo de WebExtension (EN) y, ¡sorpresa! se le parece sospechosamente a la propuesta de extensiones que lleva años manejando Chrome.

El que el interesado diseñe un servicio en HTML5, le meta el manifest de marras, lo empaquete, y listo. Dejando de lado toda esa flexibilidad (en la amplia mayoría de casos, innecesaria) que ofrecen los módulos de firefox, y centrándose en lo que el grueso de extensiones van a querer: o bien agregar funcionalidades extra a una página o páginas específicas, o bien ofrecer un servicio limitado en la barra de extensiones. Punto.

Y lo mejor de todo. Que WebExtension está soportado también por Google Chrome y Opera. Y que con algunos cambios, también pueden servirse en Edge y Firefox uniproceso (las últimas versiones del multiproceso ya son totalmente operativas).

De hecho, la página de Porting a Google Chrome Extension (EN) deja claro el asunto. Quitando alguna que otra incompatibilidad con referencias propias de Chrome, las WebExtension son la definición de extensiones de Chrome que hasta ahora hemos estado utilizando.

Así que voy a lo mío, y después de probar que en el debugger local de Firefox en efecto la extensión de Chrome me funciona, me creo cuenta en el market de Firefox y a subir que se ha dicho.

Pero no podía ser todo tan fácil. La interfaz me devuelve dos errores. Uno de ellos fácilmente solucionable, y el otro relacionado con funciones consideradas deprecated que me ha dado una vagancia enorme ponerme a solucionar (tengo que volver a reescribir el código).

En todo caso, si veo que hay interés (para eso está la caja de comentarios de este artículo) me pongo manos a la obra.

Pero recalco, problemas de estándares, no de diferente filosofía.

¡Ya era hora!

Me parece un soplo de sentido común en los requisitos de unas herramientas que cada vez cobran mayor importancia.

Ya hace tiempo que prácticamente el grueso de mi trabajo lo hago desde el navegador, y me consta que no soy el único. Con las GApps, con la mayoría de servicios ya en la nube, con las redes sociales, con servidores de correo tan eficientes y cómodos de utilizar como son los de GMail y Outlook, y sobre todo, con las inmensas posibilidades que ofrece un sistema centralizado de extensiones de navegador, lo raro es que hayan tardado tantísimo en ponerse de acuerdo.

Pero bueno, que es de agradecer que ese día al final haya llegado. Con sus limitaciones (que las tiene y seguramente seguirá teniéndolas) poco a poco caminamos hacia un entorno más estandarizado.

Y si además le hacemos caso a esas supuestas filtraciones de un futuro SO Andrómeda (ES) a medio camino entre ChromeOS y Android, máxime a sabiendas de la evolución que está sufriendo la web con las progressive apps, lo mismo tarde o temprano este paradigma programacional recupera ese encanto que nos encandiló a muchos en su momento, ya liberado de los errores del pasado.

Pasito a pasito, :).