Conecta con nosotros

A Fondo

Electron, el ‘framework’ de aplicaciones multiplataforma que divide a usuarios y desarrolladores

Publicado

el

Electron

En esta ocasión voy a exponer un poco sobre Electron, una tecnología que a lo largo de su trayectoria ha generado controversia y sobre todo agrios debates tanto entre desarrolladores como usuarios, y es que, si bien tiene sus virtudes, estas llegan a cambio de pagar un precio que para algunos es demasiado alto.

¿Qué es Electron?

Básicamente, Electron es un marco o framework que permite crear aplicaciones empleando tecnologías ampliamente utilizadas en la web. En consecuencia y simplificando mucho, las aplicaciones Electron son sitios web autocontenidos que intentan en la medida de lo posible hacerse pasar por aplicaciones nativas, soportando características del sistema operativo como sus notificaciones o la barra de menú de macOS, por citar dos ejemplos evidentes.

La primera aplicación que le dio impulso fue Atom, un editor de código que fue descontinuado hace tiempo ante el empuje de Visual Studio Code. Aquí hay otro factor a tener en cuenta, y es que tanto Electron como Atom fueron creaciones de GitHub, una empresa que pertenece a Microsoft desde hace años, aunque no es menos cierto que el uso y la repercusión de Atom se habían reducido mucho antes de su descontinuación.

Tras tener a Atom como primera lanza y llamarse primero Atom Shell, Electron se mostró como un marco muy interesante para el desarrollo de aplicaciones multiplataforma, lo que unido a lo extendido de las tecnologías web entre los desarrolladores le ha permitido lograr altas cotas de popularidad y ser una pieza importante para empresas como Microsoft. A día de hoy el mencionado Visual Studio Code y las aplicaciones oficiales de Slack, Twitch, Skype, Microsoft Teams, Discord, Signal y Postman se basan el Electron. Ahí es nada.

Logo de Electron

Logo de Electron.

El framework cambió de manos en 2019, pasando de GitHub a OpenJS Foundation, una de las muchas organizaciones que se encuentran debajo del paraguas de The Linux Foundation. Aunque muchas veces el trasladar un proyecto a una fundación se debe a que la empresa que era responsable ha dejado de tener interés en el producto, en esta ocasión se puede decir que ha servido para darle independencia, ya que su uso sigue estando muy extendido.

Como último punto general a tener en cuenta es que Electron es de código abierto bajo la licencia MIT, la cual permite la creación de derivados privativos. Esto explica la buena acogida que ha tenido entre las empresas, que no están obligadas a redistribuir el código fuente de los productos derivados.

Algunas partes básicas

Las partes más elementales de Electron son Chromium, que se encarga del frontend (lo que se muestra al usuario), y Node.js, un entorno de servidor que proporciona un backend (la parte de la aplicación que el usuario no ve, pero que se ejecuta) apoyado en JavaScript y en el motor V8 del propio Chromium para ese lenguaje. Aquí ya tenemos claro el enfoque hacia la creación de aplicaciones basadas en tecnologías web.

En más de una ocasión he mostrado a Chromium como una base tecnológica, más que como simplemente un navegador web. Electron es el mayor exponente de esa perspectiva y por ende uno de los motivos de por qué Chromium es tan popular y tiene tantos desarrollos basados en él en la actualidad

Debido a que las aplicaciones basadas en Electron son esencialmente webapps, para su construcción o al menos su despliegue se emplea HTML, CSS y JavaScript. Sí, aquí no hay nada que no resulte familiar para cualquier persona que haya trabajado mínimamente en serio en el desarrollo de sitios web, y la gran cantidad de desarrolladores con esos conocimientos que hay son una gran baza a favor del framework.

Para desarrollar una aplicación con Electron es necesario instalar Node.js y comprobar que los comandos de npm funcionan, recomendándose una versión LTS del servidor debido a la mayor estabilidad que aporta frente a los cambios introducidos a través de las distintas versiones. Otras herramientas requeridas son un editor de código, una interfaz de línea de comandos (CLI) y se recomienda el gestor de versiones Git y emplear GitHub, aunque el último componente suena más a herencia del pasado que a un requisito que se sostenga desde el punto de vista técnico.

Visual Studio Code, una de las aplicaciones basadas en Electron más populares

Visual Studio Code, una de las aplicaciones basadas en Electron más populares.

Otro detalle interesante para los desarrolladores es que el framework “ofrece una pizarra en blanco sin opiniones para crear su aplicación. Elija integrar sus bibliotecas y marcos favoritos del ecosistema frontend o cree su propio camino con código HTML personalizado”. Esto quiere decir que el desarrollador puede emplear React, Angular, Vue.js, TypeScript y otras tecnologías.

El hecho de que permita crear aplicaciones para sistemas operativos de escritorio mediante tecnologías web no quiere decir que Electron esté construido con estas (al menos parcialmente). Tomando como referencia su repositorio oficial de GitHub, en la actualidad está construido en un 57,2% con C++, un 30,7% con TypeScript, un 6,4% con Objective-C++, un 2,8% con JavaScript y un 1,9% con Python. Como vemos, la mayor parte del marco está hecho con C++, una tecnología que en su versión oficial se compila en binario.

Con el fin de suavizar la curva de aprendizaje, los responsables del framework recomiendan instalar Electron Fiddle, una aplicación que se ejecuta de forma aislada, mantenida por ellos mismos y que sirve “como herramienta de aprendizaje para experimentar con las API de Electron o para crear prototipos de funciones durante el desarrollo”.

Electron soporta oficialmente Windows, Linux y macOS, pero eso no quiere decir que todas las aplicaciones que se basan en él tengan que soportar los tres sistemas operativos. De hecho, es bastante normal que Linux se quede fuera, tal y como se puede ver con la aplicación oficial de Twitch.

Ventajas de usar Electron

La principal virtud de Electron y la ventaja que ofrece a la hora de hacer aplicaciones con él es que facilita mucho el soporte multiplataforma entre Windows, macOS y Linux, por lo que su uso puede hacerse ideal para esas situaciones en las que el soporte multiplaforma es una prioridad máxima y se pretende ofrecer una experiencia consistente a través de todos los sistemas operativos soportados.

La popularidad de Electron empezó a subir en una época en la que el uso de las tecnologías multiplataforma empezó a aumentar ante un macOS (antes OS X) que empezaba a tener muchos usuarios y un escritorio Linux que empezaba a tener cierta repercusión a través de Ubuntu. Hacer un desarrollo desde cero para cada sistema operativo ya empezaba a ser algo de difícil viabilidad, de ahí que tecnologías como Qt (base tecnológica de KDE), Python y Electron ganasen popularidad para abarcar múltiples sistemas operativos más fácilmente.

Otra ventaja de Electron es que se apoya en tecnologías muy conocidas para el desarrollo de aplicaciones. Esto, unido a que los desarrolladores tienden a quedarse con aquello que conocen, han permitido al framework ganar mucha popularidad gracias a la gran cantidad de programadores que tienen conocimientos de JavaScript, HTML y CSS.

Desventajas de usar Electron

Electron facilita mucho el desarrollo de aplicaciones multiplataforma con tecnologías muy comunes, pero como ya he dicho, la consecuencia de eso es que estamos hablando básicamente de sitios web autocontenidos, por lo que al final y simplificando se puede decir que el usuario ejecuta un navegador web por cada aplicación Electron.

Los navegadores web son ya de por sí aplicaciones pesadas al menos si nos ceñimos a las opciones más conocidas del mercado, y esto impacta directamente en las aplicaciones construidas con Electron. La consecuencia es que, si bien una aplicación hecha con este marco no tiene por qué ser necesariamente muy pesada, no hace falta correr mucho para ver ejemplos que consumen más de 150 megabytes, así que los desarrolladores deberían cuidar la optimización del código que escriben.

En conclusión, las aplicaciones Electron no son especialmente eficientes, lo que ha hecho que el framework se haya ganado una legión de detractores sobre todo en las comunidades de Linux y el software libre, que por lo general tienden a tener la optimización como un punto muy importante.

Electron Feddle

Un atajo que puede tener poco valor

Las facilidades que Electron pone a disposición lo ajustan mucho a las tendencias vistas en los últimos tiempos dentro del desarrollo de software. Aquí no solo me refiero a las tecnologías multiplataforma, sino también a cosas como el abuso de los atajos, las tecnologías que trabajan a alto nivel y a delegar la optimización en la potencia del hardware (esto último se está volviendo demasiado común en la industria de los videojuegos).

Desgraciadamente, no es difícil encontrar aplicaciones que en esencia no son más que el mismo sitio web oficial o parte de este servido de manera autocontenida, así que es bastante verosímil encontrarse que al final abrir el navegador web y dirigirse al sitio correspondiente termine ofreciendo, para sorpresa del usuario, un mejor desempeño, por lo que al final es mejor un marcador en Firefox, Chrome o Microsoft Edge que instalar una aplicación que funciona peor y que ocupa espacio en disco.

La aparición de muchas aplicaciones Electron que no aportan ningún valor frente del navegador web es otra de las razones de por qué el framework se ha ganado una legión de detractores. Y no lo voy a negar, cuando me encuentro el mismo sitio web autocontenido en una aplicación, paso directamente a emplear un marcador, primero en Firefox y si veo que no va bien tiro de Chromium, navegador secundario que empleo precisamente para esos casos.

Microsoft, una adicta a Electron

Sorprende que Microsoft, desarrolladora del framework .NET, sea una de las empresas que más recurren a Electron, pero es la conclusión a la que uno llega si uno ve que Skype, GitHub Desktop, Microsoft Teams y Visual Studio Code han sido creadas con o fueron migradas al marco.

De todos los casos que son responsabilidad del gigante de Redmond, el más notable es sin duda Visual Studio Code, que es todo un ejemplo de cómo aportar algo de valor empleando Electron. Eso no quita que la aplicación tenga detractores que recomiendan Sublime Text, el cual está construido con C++, pero el editor de código de Microsoft ha sabido cautivar a muchos desarrolladores.

Visual Studio Code es una aplicación que está bastante bien hecha a nivel de interfaz y que cuenta con una gran cantidad de complementos a su disposición, los cuales permiten extender sus posibilidades para integrarlo con otras tecnologías o convertirlo en algo cercano a un IDE. Además, su consola integrada fue un aspecto que en su momento le permitió distinguirse de algunos de sus competidores y que se ha erigido como una herramienta muy útil para agilizar ciertas tareas.

Microsoft publicó el código fuente de todos los componentes básicos de Visual Studio Code bajo la licencia MIT, así que los que quieran disfrutar de sus virtudes sin arrastrar las dudas que arroja las políticas de la compañía pueden recurrir a VSCodium, posiblemente la bifurcación más popular.

Conclusión

Como vemos, Electron es una tecnología que tiene una historia dilatada y que ha escrito páginas de todo tipo, tanto buenas como malas. A pesar de tener muchos detractores, todo apunta a que seguirá siendo empleado en el futuro y que probablemente sigan apareciendo nuevos proyectos que lo empleen.

Como ya he dicho, usar Electron no tiene por qué ser malo si las cosas se hacen correctamente (Visual Studio Code es un ejemplo en este sentido), pero no es menos cierto que hay quienes lo toman como un atajo para no emplear tecnologías más eficientes y hay casos de aplicaciones de poca calidad que al final terminan ofreciendo un desempeño más pobre que el navegador web.

Lo más leído