Categorías: Labs

Mejorando los temas en Firefox

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

El año pasado, comenzamos a pensar en una manera de mejorar los temas en Firefox. Le preguntamos a los diseñadores y desarrolladores qué pensaban al respecto, y recibimos más de 250 respuestas. Después de buscar entre las respuestas y algunos meses de deliberación y experimentos, tenemos un plan, y nos gustaría compartir lo que haremos y el por qué.

Comencemos con el “por qué”

Actualmente , Firefox soporta dos tipos de temas: temas completos y temas ligeros (LWTs, antes  “Personas”,  y ahora sólo “Temas” en addons.mozilla.org).

Los temas ligeros son muy populares. Existen alrededor de 400,000 en addons.mozilla.org (AMO). Son extremadamente fáciles de crear; cualquiera puede hacerlo sólo subiendo una imagen a AMO. Hice mi primer LWT 8 años atrás , y aún funciona correctamente sin ningún cambio. Sin embargo, los LWTs son muy limitados en lo que pueden hacer. Pueden modificar ligeramente la apariencia por defecto de Firefox con una imagen de fondo y cambia un par de colores, pero nada más. La encuesta confirmó que existe mucho interés en darle a los LWTs un control más creativo  sobre cómo luce el navegador. Más fondos, colores e íconos en más elementos de la interfaz gráfica.

Los temas completos, el segundo tipo de tema, reemplaza completamente la apariencia por defecto de Firefox. Los desarrolladores deben proveer todo el CSS, imágenes e íconos para el navegador completo (¡desde cero!), lo que los hace flexibles pero difíciles de crear y mantener. Los desarrolladores deben entender el complejo y siempre cambiante código interno de UI de Firefox, y existe poca documentación más allá del código fuente de Firefox. Esto conlleva a una seria carga de compatibilidad, ya que los desarrolladores  necesitan invertir tiempo para mantener sus temas funcionando en cada lanzamiento de Firefox — solo 60 de los 500 temas completos  en AMO son compatibles con las versiones recientes de Firefox.

Además, no podemos directamente arreglar esto sin limitar nuestra habilidad para mejorar Firefox. Y ya que solo un 0.089% de los usuarios de Firefox usan un tema completo (menos del 4%  del uso de los LWTs), nos enfocaremos en mejorar los temas de otras maneras.

Las extensiones de Firefox también se pueden topar con estos problemas, ya que no existe una API JavaScript para controlar la apariencia del navegador. Los complementos antiguos (legacy) que quieran hacer ésto deben alterar directamente el DOM interno y el CSS. Al igual que con los temas completos, esto le puede brindar a las extensiones un gran poder, pero debe pagar un precio alto en lo que se refiere a complejidad y compatibilidad. Con WebExtensions no es posible acceder a lo interno del UI, así que está particularmente en la necesidad de una solución.

Qué estamos haciendo

Queremos arreglar Firefox para que la tematización sea buena para cualquiera.

La siguiente generación de temas de Firefox mezclarán el desarrollo fácil de los LWTs con las capacidades adicionales que son más usadas en los temas completos. En su centro hay un manifiesto JSON, mapeando propiedades definidas a los elementos UI subyacentes. Los desarrolladores de temas podrán controlar una variedad de estilos en estas propiedades (como colores, íconos, e imágenes de fondo), y Firefox asegurará que esto se traspase  de una manera estable y bien documentada a través de futuros lanzamientos y actualizaciones de UI. Estos temas se sobreponen a la apariencia por defecto de Firefox, y así puedes crear un tema trivial que solo cambie una propiedad, o uno complejo que cambie todas.

La meta es proveer capacidades que motiven a la gente a realizar temas que les guste y usen. Creemos en la posibilidad de hacer los temas en Firefox poderosos sin las dificultades previas. Para comenzar, soportaremos las mismas propiedades que Chrome, para hacer de los  miles de temas disponibles en Chrome más accesibles en Firefox. Luego expandiremos el conjunto de propiedades en nuestra API, para que los temas de Firefox puedan hacer más. Esperamos continuar añadiendo a este framework de tematización en el tiempo, con tus comentarios ayudando a guiar lo que se necesite.

También reconocemos que el manifiesto de propiedades no tendrá todas las capacidades de la manipulación directa del CSS,  especialmente durante el tiempo en que estaremos expandiendo la cobertura para los casos de uso más comunes. Así que para los desarrolladores de temas que necesiten capacidades adicionales (y estén dispuestos a manejar la carga de soportarlos) proveeremos una sección “experimental” del manifiesto para permitir la manipulación directa del CSS de la UI de Firefox . Esto es similar en espíritu a los Experimentos con WebExtensions, y el uso también estará restringido a versiones pre-lanzamiento de Firefox.

Una API WebExtensions

Finalmente añadiremos una API de WebExtensions para la tematizacion. Tendrá las mismas capacidades que las propiedades del manifiesto JSON, excepto a través de una API JavaScript, así los complementos podrán hacer cambios dinámicos en tiempo de ejecución. Esto permitirá que los complementos puedan ajustar los colores basándose en la hora del día (como Flux)  o emparejar tu tema con el clima afuera.

Preguntas y comentarios

Para mayor información en relación al trabajo actual puedes ver nuestro plan de desarrollo. Apenas hemos comenzado con las bases, pero tus comentarios serán bienvenidos a medida que avanzamos en la creación de la primera versión que podrá ser usada por los desarrolladores de temas. Nuestra meta es tenerlo antes de la llegada de Firefox 57 en Noviembre, la cual terminará el soporte para los temas completos. Esperamos realizar pruebas para comenzar una versión Nigthly en los próximos meses.

Por favor envía tus comentarios y preguntas a la lista de Dev-Addons en dev-addons@mozilla.org.

También mantendremos una lista con las preguntas más frecuentes, revísalo para ver si responde a tus preguntas.

The following two tabs change content below.

jorgev

Add-ons Developer Relations Lead at Mozilla
Jorge trabaja para el equipo de complementos de Mozilla, y se dedica a Mozilla Hispano y Mozilla Costa Rica en su tiempo libre. Actualmente está encargado del blog de Mozilla Hispano Labs.