WebExtensions y paridad con Chrome

1 Diciembre, 2016 2:09 por

Esta es una traducción del artículo original publicado en el blog de Mozilla Add-ons.

Una de las virtudes de Firefox es su extensibilidad. Puedes hacer más para personalizar tu experiencia de navegación con complementos que con cualquier otro navegador. Es importante para nosotros, y nuestra migración hacia WebExtensions no cambia eso. Uno de los primeros objetivos de implementar WebExtensions, sin embargo, es alcanzar la paridad con las APIs de extensión de Chrome.

La paridad permite a los desarrolladores escribir complementos que funcionan en navegadores que soportan las mismas APIs centrales con la mínima molestia. Eso no significa que las APIs sean idénticas, y quería aclarar las razones por las que hay diferencias de implementación entre navegadores.

Diferentes navegadores

Firefox y Chrome son navegadores diferentes, así que algunas APIs de Chrome no se traducen directamente.

Un ejemplo es el realce de pestañas. Chrome tiene esta API porque tiene el concepto de pestañas realzadas, pero Firefox no. Así que en lugar de browser.tabs.onHighlighted, invocamos este evento en la pestaña activa como está documentado en MDN. No es la misma funcionalidad que Chrome, pero esa respuesta tiene más sentido para Firefox.

Otro ejemplo más complicado es la navegación en modo privado. El equivalente en Chrome es llamado modo incógnito y las extensiones pueden soportar múltiples modos: spanning, split o not_allowed. Actualmente lanzamos un error si vemos un manifiesto que no es spanning ya que es el modo que Firefox soporta actualmente. Lo hacemos para alertar a los autores que prueban sus extensiones de que no funcionarán de la manera que esperan.

APIs menos populares

Algunas APIs son más populares que otras. Con limitaciones de personas y tiempo tenemos que centrarnos en las APIs que pensábamos que eran más importantes. Al principio de este año descargamos 10.000 versiones disponibles públicamente de extensiones de la tienda de Chrome y se examinaron las llamadas de API en esas extensiones. No es una muestra perfecta, pero nos dio una buena idea.

Lo que encontramos fue que hay algunas APIs realmente populares, como tabs (pestañas), windows (ventanas), y runtime (ambiente de ejecución), y hay algunas APIs menos populares. Un ejemplo es fontSettings.get, que se usa en 7 de 10.000 (0.07%) complementos. Compáralo con tabs.create, que es usada en 4.125 de 10.000 (41.25%) complementos.

No hemos priorizado el desarrollo de las APIs menos usadas, pero siempre son bienvenidas contribuciones desde nuestra comunidad. Para contribuir a WebExtensions, puedes revisar nuestra página de contribución.

APIs obsoletas

Hay algunas APIs realmente populares en extensiones que están obsoletas. No tiene sentido para nosotros implementar APIs que ya han están obsoletas o que van a ser borradas. En estos casos, los desarrolladores necesitan actualizar sus extensiones para usar las APIS nuevas. Cuando se actualicen, funcionarán en los navegadores compatibles.

Algunos ejemplos se encuentran en la API de extensión, las cuales son en su mayoría reemplazadas por el API runtime. Por ejemplo, usa runtime.sendMessage en lugar de extension.sendMessage; usa runtime.onMessage en lugar de extension.onRequest y así sucesivamente.

W3C

Las APIs de WebExtensions nunca reflejarán completamente las APIs de extensión de Chrome, por las razones señaladas anteriormente. Sin embargo, estamos ya alcanzando el punto donde la mayoría de las extensiones para Chrome funcionan en Firefox.

Para hacer la escritura de extensiones para múltiples navegadores tan fácil como sea posible, Mozilla ha estado participando en un grupo comunitario de la W3C para compatibilidad de extensiones. También participando en ese grupo están representantes de Opera y Microsoft. Se enviará un representante a TPAC este mes para tomar parte en los debates sobre esta comunidad de tal manera que podamos trabajar hacia un estándar común para extensiones del navegador.

Actualización: Por favor revisa la página MDN de incompatibilidades.

The following two tabs change content below.

Compartir artículo:

Start the discussion at foro.mozilla-hispano.org

  • ¡Participa!

    Firefox Friends »
    Agrega botones de Firefox en tu sitio web y comparte tu amor por Mozilla Firefox.
    Armada alucinante »
    Ayuda a otros usuarios en Twitter.
    Colabora con la comunidad »
    En Mozilla lo importante son las personas. Descubre cómo puedes colaborar.

    Boletín Firefox

    Suscríbete al boletín de novedades de Firefox.

  • Descargas

    Descarga los programas de Mozilla.

    Lo más visto

    cc-by-sa