Hay varias aplicaciones que muchos usamos a diario en nuestro espacio de oficina particular. Una de ellas seguramente sea Google Chrome, que según NetMarketShare es el navegador más utilizado del mundo. Lo que no sabíamos es que puede que lo tengamos instalado más de una vez, y de forma totalmente opaca al usuario.
Al menos eso fue lo que reveló en su blog el desarrollador Joseph Gentle. Al parecer, cada vez que ejecutamos programas como Slack o Spotify, lo que hacemos es correr instancias completas de Chromium, con el consumo de recursos que todo eso conlleva.
Las investigaciones de este desarrollador comenzaron cuando se dio cuenta del elevado consumo de recursos de Slack. Un consumo del que, según el mismo contó, no habría tenido noción de no ser porque los ventiladores de su portátil comenzaron a funcionar a una mayor velocidad. Teniendo en cuenta que normalmente consume un 5% en modo ausente (idle), el programador no tenía forma de saber qué estaba haciendo.
Todo esto el desarrollador lo reduce a que este programa no es una aplicación nativa al uso.
La "culpa de todo" la tiene Electron
Gentle le echa la culpa de todo a Electron. ¿Por qué? Porque, en pocas palabras, sirve para "empaquetar" una web de forma que se pueda usar como aplicación de escritorio. Es decir, coge el código HTML, CSS y JavaScript y los empaqueta junto a código de Chromium y Node.
Según el desarrollador, al usar esta técnica se está utilizando, junto con el código de la web, un 99% de código de Chromium que se ejecuta de forma totalmente opaca al usuario. En este sentido, Chromium funciona como una máquina virtual, que sirve de anfitrión a las líneas de código nativas de Slack. En palabras de Joseph Gentle:
Se puede pensar en Slack como en un pequeño programa JavaScript que se ejecuta dentro de la máquina virtual de otro sistema operativo (Chrome), que tienes que ejecutar para, esencialmente, chatear usando IRC.
Y esto no es todo, ya que si tienes el navegador Chrome abierto, cada app de escritorio empaquetada usando Electron ejecuta su propia copia de toda la "máquina virtual", consumiendo muchos recursos y vaciando más rápidamente las baterías en equipos portátiles.
Este gran consumo de batería se debería a la forma en la que los ordenadores modernos gestionan la energía: se apagan cuando no hay ninguna tarea programada. Ahora bien, cuando hay programas que ejecutan un pequeño porcentaje de tu CPU de forma constante es una pesadilla para la conservación de energía.
Básicamente, lo que hacen es hacer entrar al procesador en un proceso constante de trabajo e hibernación, lo que supone que las baterías se agoten mucho más rápidamente.
La receta de Joseph Gentle
Para Gentle todo se reduce a una premisa muy básica: decir no a Electron. En lugar de eso, el dev propone usar como alternativa React Native para empaquetar aplicaciones web de forma similar, sin la necesidad de distribuir una copia de Google Chrome con cada programa.
Ahora bien, hay que tener en cuenta que, tal y como se puede ver en la propia documentación de React Native, esta alternativa que propone Joseph Gentle está pensada para plataformas móviles. Se puede usar también para empaquetar webapps para escritorio, incluso hay un repositorio en GitHub dedicado a macOS, pero por ahora no parece existir nada similiar para otros sistemas.
Para Gentle también es destacable que muchos desarrolladores utilicen Slack para comunicarse con sus grupos de trabajo, sin saber lo mucho que demanda a los equipos en los que se ejecuta. Según este programador, es de vital importancia aprender a medir el comportamiento del software y tener pleno conocimiento del mismo antes de lanzarse a mejorarlo.
Vía | Joseph Gentle
Ver 33 comentarios