Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Firefox 3 y Suse 10.0 (Pango, Cairo y GTK)

Última Actualización: 30 de noviembre de 2007 - Viernes

Hace unas semanas se presentó la beta 1 de Firefox 3, tras un largo período de desarrollo. Pruebo a diario "la versión del día" de Firefox 2, y decidí que era hora de curiosear la versión 3, que tiene unas posibilidades muy interesantes.

Soy un usuario muy intensivo del navegador web, y utilizo infinidad de extensiones. Una migración instantánea a Firefox 3 es poco práctica, por los inevitables problemas de una versión beta, mi dependencia de muchas extensiones incompatibles con la nueva versión, etc. El primer paso, por tanto, es crear un perfil de usuario nuevo, de usar y tirar, que me permita evaluar convenientemente Firefox 3 mientras sigo utilizando Firefox 2 de forma habitual, para mi trabajo diario.

Lo primero que hago, entonces, es descargar la versión Firefox 3 beta y meterla en el directorio "firefox3" (mi directorio "firefox" es para la versión 2, de la que aún no puedo prescindir). Reutilizar mi perfil habitual tiene el problema de que no puedo tener el Firefox 2 funcionando simultaneamente, y si Firefox 3 migra mi perfil al nuevo entorno, luego no puedo dar marcha atrás.

Para crear un perfil nuevo, ejecuto:

jcea@castor:~> firefox3/firefox -no-remote -ProfileManager

El primer parámetro se utiliza para poder lanzar dos instancias de Firefox simultáneamente (en este caso, la versión 3 nueva y la versión 2 antigua). Si no ponemos el parámetro, se abrirá una ventana nueva del Firefox que tengamos activo, en vez de abrir una instancia nueva.

Nos aparecerá una ventana en donde podremos crear un usuario nuevo, que le doy el original nombre de "firefox 3".

En ejecuciones posteriores de Firefox 3, tendremos que lanzarlo con

jcea@castor:~> firefox3/firefox -no-remote

Nuevamente usamos el "-no-remote" para poder tener el Firefox 2 y 3 funcionando simultaneamente.

Ahora podemos experimentar a gusto, instalar extensiones y desmenuzarlo al máximo.

Pero probando el nuevo Firefox me encuentro con varios problemas bastante molestos. Los documento en:

Me sorprendió un poco que fuese la única persona en el mundo que estuviese experimentando estos problemas, tan graves y evidentes. Y más considerando que en Firefox 3 no estoy utilizando ninguna extensión. Pero la vida es así de dura.


Tras mi insistencia con estos problemas y mi involucración habitual como betatester en el proyecto Mozilla, el equipo de desarrollo se pone en contacto conmigo para intentar identificar el problema exacto.

Y lo encontramos.

Firefox 3 incluye un buen número de tecnologías novedosas e interesantes, como Cairo. Lo aparentemente lógico es que la infraestructura necesaria para soportar esas tecnologías vaya incluida con el navegador. Es decir, que Firefox incorpore en su interior las librerías necesarias para funcionar.

Parece lógico, ¿no?. Pues no es así. Firefox 3 no incluye las librerías que necesita para funcionar. Utiliza las librerías instaladas en el sistema operativo.

El problema surge porque todas estas librerías son muy recientes y aún están madurando. Por tanto, cualquier instalación linux que tenga más de unos pocos meses, estará anticuada. Es decir, aunque incluya las librerías que Firefox 3 necesita, serán versiones anticuadas, incapaces de soportar las necesidades del programa.

Y eso es lo que estaba experimentando yo: mi sistema tiene dos años y, aunque dispone de las librerías que Firefox necesita, son versiones demasiado anticuadas.

Se trata de Bug 404112 - The last two months of Seamonkey releases crash on most web pages I visit [@ libpango-1.0.so.0.1001.1 - gfxPangoFont::GetMetrics]. Las librerías concretas que requiere Firefox 3 son un misterio, pero aquí parecen estar documentadas de forma extraoficial.

¿Solución?. O instalar otra versión de Linux más moderna (que tiene sus propios problemas y consecuencias; eso es materia de otro artículo) o actualizar mi sistema actual con las versiones correctas de las librerías que necesita Firefox.

El problema es que las librerías en cuestión son muy "delicadas". Forman parte del propio tejido del sistema operativo y el entorno gráfico. Es decir, que es muy fácil dejar el sistema en un estado inestable. Pero para eso se inventaron las copias de seguridad :-).

Investigando todos estos temas, comprobé que Firefox 3 intenta cargar las librerías desde varios sitios. Uno de ellos es muy interesante: "~/firefox3/plugins/". Es decir, que podemos instalar las librerías dentro del propio programa, lo que tiene la grandísima ventaja de no interferir con las que tiene el sistema operativo.

Esta opción es realizable para instalar Cairo o Pango, pero librerías como GTK se enlazan en demasiados puntos críticos del sistema como para poder encapsularlo dentro del propio Firefox. Al final la solución menos problemática es instalar las librerías en el sistema y cruzar los dedos. Ni que decir tiene que antes de nada hay que hacer una copia de seguridad, y asegurarnos de que esté bien hecha y que somos capaces de recuperarla si es preciso.

De todas formas la opción de instalar las librerías dentro del Firefox es una opción que convendría explorar más a fondo.


Instalando las librerías Pango y Cairo conseguimos solucionar los bugs que ocasionaban los "casques" de Firefox, y también los problemas con el "kerning" de la "m" y otros caracteres. Por supuesto, para actualizar estas librerías hay que actualizar otras librerías subyacentes, como GLIB, y éstas tienen sus propias dependencias, con lo que la tarea es larga y delicada.

Actualizar la versión de GTK+ es bastante más complicado. Hay que instalarlo encima de las librerías originales del sistema (que Suse instala en "paths" extraños) y requiere renombrar temporalmente (durante la compilación) tres librerías "anticuadas", para que la nueva GTK utilice las nuevas (luego volvemos a dejar las librerías primitivas en su sitio, por si otros programas dependen de esas versiones concretas). Una vez actualizado solucionamos el problema con los "radio button" no transparentes.

¿Solucionado?

Pues no. Tal y como está, al actualizar la GTK, Firefox funciona correctamente y todos los bugs indicados parecen haberse resolverse solos, pero... ¡¡que cosa más fea!!. Mi entorno gráfico normal es KDE, y Firefox usa GTK y se comporta como una aplicación Gnome. Y el resultado es feísimo. Toda la decoración de ventanas, iconos, pestañas, etc., es muy anticuada. Como no soy usuario Gnome, no tengo ni idea de cómo cambiar esa configuración para que sea estéticamente más presentable...

Además, cuando lanzo Firefox3 me aparece un "warning" sobre la "qt-engine". La "qt-engine" es un componente que permite que las aplicaciones GTK utilicen la apariencia gráfica configurada en el entorno KDE, aparentando ser una aplicación nativa. Así que a buscar la "qt-engine" por ahí e instalarla en el sistema. Que, a su vez, requiere más librerías, etc, etc, en una nueva cadena de dependencias.

Una vez que instalo la "qt-engine" la apariencia gráfica de Firefox 3 mejora mucho, pareciendo KDE de verdad pero, a cambio, vuelve a resurgir el problema documentado de los "radio button".

Aparentemente el problema es que GTK utiliza la "qt-engine" y ésta utiliza la librería "qt" subyacente que, o bien no soporta transparencia en los "radio buttons", o bien GTK no sabe cómo pasar esa información a la librería "qt".

¿Y, ahora, qué?. ¿Actualizar el KDE?. Que dios me pille confesado...


La versión de "qt" de mi sistema es la 3.3.4. Instalo la versión 3.3.8, aparentemente compatible 100%. Pero hay que instalarla sobre la versión vieja. Con el sistema funcionando. Con KDE en servicio. Ingeniería fina :-).

Tras tropezar un par de veces (leerse las instrucciones a las cuatro de la madrugada es como no leérselas...), pongo en servicio la versión 3.3.8 de "qt". Resultado: mis temas de escritorio se desconfiguran y los "radio button" siguen sin ser transparentes.

Esta actualización parece no aportar nada, así que recupero el backup de la versión anterior, a la espera de nuevas ideas.

Resultado final:

  • Con estas actualizaciones, Firefox 3 parece bastante estable. Habrá que darle caña los próximos días.

  • Si uso GTK "a pelo", los "radio buttons" son transparentes, como debe ser, pero la decoración de las ventanas del navegador, iconos, etc., es bastante penosa.

  • Si uso la "qt-engine" para que la apariencia gráfica sea consistente con el resto de mi escritorio KDE, los "radio button" no son transparentes.

Qué dura es la vida...


Historia

  • 30/nov/07: Primera versión de este documento.



Python Zope ©2007 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS