Acá va un resumen bien completo del ensayo de Stallman:


🕵️ La “JavaScript Trap” — Richard Stallman (GNU.org)

¿De qué trata?

Stallman plantea que hay dos tipos de daño moral que una página web puede hacerle al usuario. Uno es enviarle programas no-libres para que corran en su computadora — eso es exactamente la JavaScript Trap. El otro es lo que él llama SaaSS (Service as a Software Substitute): cuando la página te invita a enviar tus datos para que los procese en el servidor, sin que tengas control sobre ese procesamiento.


El problema central

Podés estar ejecutando programas no-libres en tu computadora todos los días sin darte cuenta — y lo hacés a través del navegador. Los navegadores corren programas no-libres sin avisarte ni preguntarte: son los programas que las páginas web contienen o enlazan. La mayoría están escritos en JavaScript.

JavaScript originalmente se usaba para pequeños detalles en las páginas web, como efectos de navegación o visualización. Era razonable considerarlos extensiones del HTML y no preocuparse. Pero hoy muchos sitios lo usan para programas enormes que hacen trabajos complejos. El ejemplo que da Stallman es contundente: Google Docs intenta instalar en tu navegador un programa JavaScript de medio megabyte en forma compactada, a lo que él llama “Obfuscript” — un código generado quitando espacios, comentarios y reemplazando nombres significativos por nombres arbitrarios, haciendo el código ilegible e incomprensible para el usuario.


¿Por qué es un problema de libertad?

Parte del significado del software libre es que los usuarios tienen acceso al código fuente del programa — la forma preferida por los programadores para modificarlo, con espacios útiles, comentarios explicativos y nombres significativos. El código compactado es un sustituto falso e inútil del código fuente real; como los usuarios no pueden acceder a él, no pueden entenderlo, y por lo tanto esos programas son no-libres.

Además, muchos de estos programas son directamente malware, porque espían al usuario. Algunos sitios usan servicios que registran todas las acciones del usuario mientras navega la página.


El problema de la modificación

Incluso si el código fuente del programa JavaScript está disponible, los navegadores no ofrecen una forma de ejecutar tu versión modificada en lugar de la original al visitar esa página. El efecto es comparable a la tivoización — aunque en principio no tan difícil de superar.


¿Qué considera Stallman “no-trivial”?

Stallman propone un criterio técnico para distinguir scripts triviales (sin problema) de los no-triviales (que requieren ser libres). Un programa JavaScript es no-trivial si, entre otras condiciones: es referenciado como script externo, declara un array de más de 50 elementos, define funciones que llaman a elementos no primitivos, hace llamadas AJAX, altera el DOM, o usa eval().


¿Qué propone como solución?

Stallman plantea un plan de acción concreto:

  1. Evitar ejecutar JavaScript no-trivial y no-libre. Los webmasters deberían indicar la licencia de sus programas JavaScript en la página usando comentarios estandarizados que señalen la URL del código fuente y la licencia.

  2. LibreJS: un complemento para navegadores que detecta y bloquea JavaScript no-libre y no-trivial en las páginas que visitás. LibreJS está incluido en el navegador GNU IceCat y disponible como extensión para Firefox.

  3. Que los navegadores permitan al usuario especificar código JavaScript propio para reemplazar al de la página visitada (algo similar a Greasemonkey, pero más robusto).


La postura filosófica de fondo

El lenguaje JavaScript en sí no es inherentemente bueno ni malo para la libertad del usuario — el problema no es el lenguaje, sino si el programa es libre o no. Es perfectamente posible publicar un programa JavaScript como software libre, distribuyendo su código fuente bajo una licencia libre.

El criterio de un sitio web ético no puede limitarse a usar formatos y protocolos documentados y abiertos — también debe incluir “transmitir solo programas libres al usuario”.


En síntesis

La JavaScript Trap es la situación en la que, sin saberlo, ejecutás software privativo en tu propio navegador — software que no podés estudiar, modificar ni controlar — simplemente por visitar una página web. Para Stallman, esto es tan grave como instalar software privativo de forma consciente, pero mucho más peligroso porque ocurre de forma invisible y silenciosa.