jQuery y el final de un ciclo
Reflexión sobre la web que se va y la que se viene
Recordarán que escribí una entrada sobre la desaparición inminente de Flash de este 2020, y de cómo eso era indicativo de un "final de era" que no era tal, ya que Flash había empezado a tambalear hace unos 10 años. Estableciendo un paralelismo, algo que está tambaleando hace tiempo es la librería / framework de jQuery. Esto no quiere decir que su destino deba ser estrictamente el mismo que Flash, pero no deja de extrañarme lo que está pasando con la librería más usada de JavaScript, presente en múltiples frameworks como Drupal y Odoo, especialmente porque en su momento parecía ser la respuesta a Flash, pero hoy no lo vemos tan claro. Este artículo lo dividiré en varias partes, intercalando un poco la historia de jQuery con experiencias personales, a fin de concluir una suerte de diagnóstico sobre dónde estamos parados y hacia a dónde vamos. Detesto hacer "futurología" porque no considero que se saque nada en claro tratando de predecir el futuro de la tecnología; pero no debemos olvidar que quienes nos dedicamos a esto necesitamos ir siempre un paso por delante. Espero que sea de su agrado.
JavaScript y las librerías
JavaScript es un lenguaje de programación para web orientado a un estilo similar a los lenguajes de Scripting (como Lua). ¿Por qué necesita librerías? Lo normal sería responder esto con otra pregunta, ¿Por qué los lenguajes de programación necesitan librerías? Después de todo, si son lenguajes completos deberían ofrecer todo lo que necesitamos para cualquier proyecto. Y está claro que lo tienen, después de todo se busca simplificar el trabajo y utilizar sistemas mantenidos por otros desarrolladores, a fin de concentrarnos en nuestros proyectos individuales. Pero en JavaScript esto parece haberse salido de control. Según las estadísticas de npm, llevan más de 350000 registros, y son estadísticas del año 2016; teniendo en cuenta que se suben nuevos registros a npm todo el tiempo, la cantidad de librerías de JavaScript es abismal. En esa vorágine, con más de 3 millones de descargas semanales, se posiciona jQuery: una librería concentrada en extender las posibilidades de JavaScript. ¿Cómo es posible que el framework más utilizado en la actualidad solamente ofrezca una especie de addons al lenguaje base? Curiosamente, la respuesta a esa pregunta es la misma razón por la cual hoy en día jQuery se encuentra en un estado de fragilidad. Vamos por partes.
La historia de jQuery
La librería jQuery nace en 2006 con un objetivo muy concreto: ofrecer a los usuarios una librería de simple manipulación de elementos del DOM en JavaScript. Tiene su lógica, comparen hacer esto:
document.getElementById('elemento')
Con esto:
$('#elemento')
Ambas líneas de código son equivalentes si se tiene instalada la librería jQuery, esto la convierte en un gran aliado a la hora de programar un sitio web. No contentos con eso, con el tiempo se agregaron funciones que hacían grandes operaciones internas con muy poco código, siendo algunas de las opciones más famosas la posibilidad de generar animaciones nativas en JavaScript sin tanto esfuerzo, como un fadeIn y un fadeOut. Hace 10 años no existían los keyframes de css ni nada similar, todo lo que era animar había que hacerlo desde JavaScript y sin el requestAnimationFrame; por lo que jQuery era una especie de santo grial. Recuerdo alrededor del año 2010 alguien me presentase unos ejemplos con jQuery, y como dediqué parte del verano en aprender varias de sus funciones. Aquello era mágico, acostumbrado a programar ciertos programas en Java, con jQuery la programación web se volvía interesante y atrayente. En mi caso particular tuve la "suerte" de que me pidieran más desarrollos sobre Processing (que por aquellos años estaba muy fuerte) y la parte web la tomaba más como un entretenimiento personal. Llegué a programar varias cosas atractivas con jQuery en su momento, como el Proyecto Yo, Digicenosis o Qbita; todos proyectos simples en el marco de una carrera universitaria. Incluso mi propio portfolio personal web estaba realizado con jQuery casi en su totalidad, hasta que Angular 2 salió de forma estable y decidí sacar a jQuery de mi vida definitivamente.
jQuery y la Educación
Empecemos a enumerar lo negativo de jQuery. A partir del año 2010/2011 se volvió extremadamente popular, a tal punto que los nuevos programadores aprendían jQuery antes de aprender JavaScript. Para la mayoría de los casos alcanzaba. Esto llevó a un problema en determinados tipos de empresa, donde pedían desarrolladores JavaScript y se encontraban con desarrolladores que manejaban jQuery muy bien, pero al momento de hacer programas más complejos (o sin jQuery) no eran tan eficientes. Llegué a leer en publicaciones laborales algo así como "programadores jquery abstenerse". La locura por jQuery llegó a tal punto que era lo primero en importarse a una web en creación, un framework muy completo pero muy pesado, sin preguntarse lo más mínimo si era necesario o no. Y eso se convirtió en un problema que llevó a la creación de herramientas que permitieran tener una versión de jQuery sin determinadas features, inclusive de forma oficial dejaron de darle soporte a la compatibilidad con IE para que el framework pesara menos. Curiosamente, el navegador que más necesitó siempre de jQuery fue IE.
jQuery, el más usado pero...
No cabe duda, y nadie va a negarme hoy, que es el framework más utilizado de internet. Estadísticas de W3Techs y BuiltWith coinciden en que para 2019 el 73% de los 10 millones de websites más populares lo utilizan. Es una estadística rara, pero es real, mayormente porque es una dependencia obligatoria de librerías muy interesantes como bootstrap, o de frameworks completos como Drupal y Odoo. Pero hay un dato que debería marcarnos las ganas de querer "deshacerse" de jQuery lo antes posible: en 2018 GitHub decidió eliminarlo por completo de su website. No hablamos de cualquier website, hablamos del principal website de repositorios Git, donde la masa más densa de programadores se reúnen. Es un dato interesante, ¿sus razones? que se trata de un framework muy pesado que no aporta nada a la nueva internet. Y ahí está la clave, el éxito de jQuery se debió en parte a una web muy precaria, con necesidades básicas como una forma simple de hacer animaciones simples, algunas herramientas para programar sin tanto scripting y opciones de Ajax integradas. Eso en 2009/2010 era una problemática suplida por jQuery, pero en 2020 la cosa cambió. Si queremos animaciones, con CSS3 se pueden hacer de forma más fácil y más eficientes que con jQuery; si queremos programar sin scripts tenemos las nuevas versiones de JavaScript o el propio TypeScript; si queremos Ajax hay un mundo entero con RxJS y las Observables. No hay razón para seguir instalando un framework tan pesado como jQuery solo porque es una dependencia de bootstrap o porque queremos hacer un fadeIn.
¿Qué va a pasar?
No soy bueno para la "futurología" y nunca me tocó la lotería, así que voy a limitarme en concluir algo simple y no en soltar un dogma barato. jQuery en concepto es mejor que Flash, mal que mal funciona de manera nativa y tiene mucho legacy system difícil de romper en pocos años, por lo tanto creo que seguirá vigente. Sin embargo, preveo una inminente eliminación del mismo de sistemas de uso muy extendido a raíz de lo que hizo GitHub. Empezando, creo yo, por Bootstrap. Lamento decirlo, pero el día que Bootstrap lo deje de usar como dependencia, jQuery comenzará a desinflarse. De hecho, Bootstrap lo utiliza para poquísimas cosas hoy, que podría cubrirlas con CSS o simple JavaScript. La problemática que afrontaremos en esta época es la de dejar respirar un poco a las librerías JavaScript, que por cada una hace falta instalar un paquete entero de otras, al final los paquetes de node terminan sumando Gigas y Gigas de memoria sin sentido. Angular ya ha logrado disminuir el peso de cada proyecto a la mitad, y aún pesa mucho. Librerías como jQuery están muy bien y seguramente se mantengan pero pertenecen, indudablemente, al pasado. Salvo que se renueve de alguna forma para competir con Angular o React, creo que se precipitará a quedar activa solo por el Legacy System durante un puñado de años. Primero hablamos de Flash, luego de jQuery, creo que esta trilogía falta completarla con los problemas causados por NPM. En próximas entregas.
Edito: En Mayo de 2020 Bootstrap anunció que dejaría de utilizar jQuery en la versión 5.
Acerca de:
Ignacio Buioli
Licenciado en Artes Multimediales. Ha desarrollado numerosos proyectos de Multimedia así como también escrito artículos y traducido textos del mencionado tema. En Moldeo Interactive es Socio y Programador; encargándose, además, de gran parte de las redes y los cursos online.