22 de mayo de 2007

¿Está conviertiendose Firefox en un monstruo?

No dejo de encontrar por ahí artículos que hablan, en lenguaje apocalíptico, de como el Fin de Firefox está cerca debido a la horda de nuevas características que los desarrolladores están incluyendo, ignorantes ellos de que podrían convertir a Firefox en el monstruo recargado que Mozilla un día fue e iniciar de ese modo su imparable declive hacia la muerte, etc etc. En concreto, en Wired dicen que Firefox 3.0 podría ser el inicio del declive de este navegador.

¿Tienen algo de fundado estos temores? Aquí está el blog minoritario preferido por un selecto grupo de Elegidos para dar mi opinión sobre el tema.

Lo que más me llama la atención de estos rumores apocalípticos es la ignorancia que parecen mostrar sobre los orígenes de Firefox. Asumen al parecer que Blake Ross se cansó de la complejidad de Mozilla y escribió Firefox como solución, con una interfaz simple destinada a satisfacer los deseos más básicos y un sistema de extensiones que permitirían extender el navegador en cualquier dirección para satisfacer las necesidades particulares. Todo esto no deja de ser verdad, pero esta gente siempre se olvida de recordar que Firefox no se reescribió ni mucho menos de cero, sino que la mayoría del núcleo de Firefox (el motor de renderizado, por ejemplo) procedía del supuestamente pesado Mozilla, con pocas modificaciones. Algunos agoreros dijeron que la pesadez de Mozilla venía de características irrelevantes como XUL; sin embargo Firefox tuvo soporte de XUL desde el primer día y ahora se le recuerda como un navegador eficiente.

¿De dónde venía concretamente la pesadez de Mozilla? Francamente no tengo la menor idea, la naturaleza del software es tal que el consumo podría venir de cualquier lado. Ahora bien, si que se sabe que la base código de Mozilla tenía cieto nivel de bloatez. Mozilla sufrió indudablemente del Sindrome del Segundo Sistema: En vez de evolucionar la base del código, reescribieron de cero absolutamente todo para hacer el navegador supuestamente perfecto, incluido un sistema análogo a COM llamado XPCOM. Con el tiempo se ha visto -y esto no lo digo yo, está escrito en los roadmaps de mozilla, hasta el punto que a uno de los principales objetivos lo apodan deCOMtamination, refiriendose a XPCOM- que en vez de crear el navegador perfecto crearon un monstruo con demasiada complejidad: Como ejemplo, cuando se añadió soporte para SVG un programador - Robert O'Callahan, el mismo de la cita sobre software escalable en multicores en la anterior entrada de este blog- se dió cuenta (el título de la entrada, Anatomy of a bloat, es bastante descriptivo) que las estructuras de datos necesarias para algo tan simple como guardar los detalles de un único y vulgar rectángulo SVG eran algo más de 1 KB. En concreto, al lector le dirá mucho esta porción del post -no recomendada para personas sensibles, y lo siento por los que no entiendan inglés-: "Overall, that's a lower bound of 1372 bytes on a normal 32-bit machine. I won my bet with Boris that it wouldn't be under 1K! For a single rectangle element! Other interesting statistics to think about: that's 39 heap allocated objects, 26 of which are reference counted XPCOM objects. Many of the objects support multiple C++ interfaces, hence require multiple vtable pointers per object; in fact 320 of those 1372 bytes are for vtable pointers. On a 64-bit machine, which we can no longer consider pie in the sky, the numbers are worse as pointers grow to 8 bytes each: 2376 bytes, of which 640 bytes are vtable pointers. Eeeep!". Y el tal Robert señala a un culpable: "I'm afraid the main culprit is XPCOM and a design that leans heavily on it" y hace una muy interesante reflexión sobre ello: "An overarching lesson is that XPCOM is a disease. It tempts people who should know better to create systems which are nasty, large, and inevitably, slow. It is a contagious disease; people acquire it by being exposed to infected code. Developers can be immunised, as many of us have, mostly by suffering through a bout of it. Perhaps diatribes like mine can help immunise others with less suffering. XPCOM does have its uses --- as a component mechanism in situations where one absolutely requires dynamic component loading and binding, and where we need to cross language boundaries --- but wherever it spreads beyond that, it must be stamped out"

Y sin embargo, este es el sistema que formaba parte de la base de las supuestamente eficientes primeras versiones de Firefox. Lo que quiero decir es que Firefox jamás ha sido el navegador más eficiente del mundo -si lo era comparado con otros era porque esos navegadores eran aun peores-, y que gran parte de los esfuerzos actuales están siendo enfocados precisamente a mejorar esa base de código. De hecho hay tantas mejoras enfocadas solamente a mejorar el sistema actual, que no parece que vaya a haber muchas características nuevas visibles al usuario en 3.0. ¿Pero las que haya, como la capacidad para ejecutar aplicaciones offline o los microresúmenes, significan que se esté recargando el sistema? Depende de como lo veas. Firefox fue una revolución frente al concepto del navegador tradicional que, debido al paro premeditado del desarrollo del IE, llevaba varios años establecido. Sin embargo ahora mismo el mundo web se está re-revolucionando, y el navegador que mejor y más rápido implemente esas características será, como pasó con Netscape 4 vs IE 5, el que gane la batalla.

Si Firefox no añade las nuevas características que requieren los millones que se están inviertiendo en Internet - 10.000$ millones en adquisiciones de plataformas publicitarias por Google y Microsoft en el último mes - tiene la batalla perdida. Microsoft se ha puesto a desarrollar el IE a todo trapo, y la mejor defensa contra un gigante como ese es adelantarse a él. Eso hará que el consumo de Firefox suba, pero la cuestion no es que suba, que es de esperar, sino que no lo haga en exceso y que el consumo sea proporcional a sus características. En ese sentido, Firefox 3 es una mejora, y desde luego los desarrolladores están concienciados sobre el tema. Tambien están muy concienciados con que la usabilidad tiene mucho que ver con el éxito de Firefox. Solo cabe esperar buenas cosas. En conclusión, creo que esos rumores sobre Firefox son apocalípticos y desinformados. Los problemas de rendimiento -que les hay- de las últimas versiones de Firefox están muy presentes y están siendo vigilados. Las nuevas características de Firefox 3.0 son necesarias. No sean tan agoreros.

2 comentarios:

  1. Anónimo6:33 p. m.

    Uhmmm ¿realmente estaba parado el tema de los navegadores? ¿No crees que Ópera si hacía un buen trabajo?
    Por lo demás de acuerdo con lo que tú dices, esperemos que el consumo vaya acorde con lo que ofrezca y, sobre todo, con las máquinas que haya. Aunque supongo que siempre nos quedará usar la versión 2, u otros navegadores más ligeros, a los que tengamos máquinas más viejas.

    ResponderEliminar
  2. Opera no podía hacer nada en el tema de hacer que se usen nuevos estándares y todo eso.

    Por otra parte si, Opera siempre ha sido el navegador más rápido y eficiente...pero en las últimas versiones tambien han empezado a quejarse sus usuarios de consumo de memoria.

    ResponderEliminar