summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/es/javascript-trap.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/es/javascript-trap.html')
-rw-r--r--talermerchantdemos/blog/articles/es/javascript-trap.html329
1 files changed, 329 insertions, 0 deletions
diff --git a/talermerchantdemos/blog/articles/es/javascript-trap.html b/talermerchantdemos/blog/articles/es/javascript-trap.html
new file mode 100644
index 0000000..4bf48df
--- /dev/null
+++ b/talermerchantdemos/blog/articles/es/javascript-trap.html
@@ -0,0 +1,329 @@
+<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
+
+<!--#include virtual="/server/header.es.html" -->
+<!-- Parent-Version: 1.90 -->
+
+<!-- This file is automatically generated by GNUnited Nations! -->
+<title>La trampa de JavaScript</title>
+
+<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
+<!--#include virtual="/server/banner.es.html" -->
+<h2>La trampa de JavaScript</h2>
+
+<p>por <a href="http://www.stallman.org/">Richard Stallman</a></p>
+
+<p><strong>Sin darse cuenta, usted puede estar utilizando a diario en el
+navegador programas que no son libres.</strong></p>
+
+<!-- any links that used to point to the appendices should point to
+ free-your-javascript.html instead. -->
+<blockquote>
+<p>Webmasters: existen <a
+href="/software/librejs/free-your-javascript.html">varias maneras</a> de
+indicar la licencia de los programas JavaScript en un sitio web.</p>
+</blockquote>
+
+<p>En la comunidad del software libre estamos familiarizados con el hecho de
+que <a href="/philosophy/free-software-even-more-important.html">los
+programas que no son libres maltratan a los usuarios</a>. Algunos de
+nosotros defendemos nuestra libertad rechazando todo software privativo en
+nuestros ordenadores. Otros muchos consideran que la falta de libertad en un
+programa es un serio defecto.</p>
+
+<p>Muchos usuarios son conscientes de que este problema concierne a los
+accesorios que los navegadores ofrecen instalar, ya que estos pueden ser
+libres o no. Correcto, pero los navegadores ejecutan además otros programas
+que no son libres y sobre los que no nos preguntan ni nos avisan, programas
+que las páginas web contienen o enlazan. Tales programas están
+mayoritariamente escritos en JavaScript, aunque también se usan otros
+lenguajes.</p>
+
+<p>JavaScript (oficialmente denominado ECMAScript, aunque pocos emplean este
+nombre) al principio se usaba para pequeños detalles ornamentales en páginas
+web, tales como bonitas pero innecesarias características de navegación y
+maquetación. Era aceptable considerarlos como meras extensiones del lenguaje
+de etiquetas HTML más que como verdadero software, y despreocuparse del
+asunto.</p>
+
+<p>Algunos sitios continúan usando JavaScript de esa manera, pero muchos lo
+usan para programas mayores que realizan operaciones importantes. Por
+ejemplo, Google Docs trata de instalar en el navegador del usuario un
+programa JavaScript de medio megabyte y tan compactado que podríamos
+llamarlo «Obscurscript». Esta forma compactada está hecha a partir del
+código fuente, del que se borran los espacios que hacen el código legible y
+las observaciones explicativas que lo hacen comprensible, y se sustituyen
+los nombres significativos que aparecen en el código con nombres cortos
+arbitrarios, de modo que no hay forma de saber lo que significan.</p>
+
+<p>Parte del <a href="/philosophy/free-sw.html">significado de software
+libre</a> es que los usuarios tienen acceso al código fuente del programa
+(su diseño). El código fuente del programa representa la mejor preferida por
+los programadores para modificarlo, lo que incluye un conveniente espaciado,
+observaciones explicativas y nombres significativos. El código compactado es
+un falso e inútil sustituto del código fuente. El código fuente real de
+estos programas no está disponible para los usuarios, de modo que los
+usuarios no pueden entenderlo; por lo tanto, estos programas no son libres.</p>
+
+<p>Además de no ser libres, muchos de estos programas son
+<em><cite>malware</cite></em>, ya que <a
+href="http://github.com/w3c/fingerprinting-guidance/issues/8">espían al
+usuario</a>. Aún peor, algunos sitios web utilizan servicios que registran
+<a
+href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">todas
+las acciones del usuario mientras mira la página</a>. Estos servicios
+«redactan» los registros supuestamente excluyendo ciertos datos sensibles
+que el sitio no debería obtener. Pero incluso si funcionan de forma fiable,
+el único propósito de estos servicios es proporcionar al sitio web otros
+datos personales que no debería tener.</p>
+
+<p>Normalmente, los navegadores no avisan cuando cargan programas
+JavaScript. Algunos tienen una opción para desactivar JavaScript totalmente,
+pero incluso si somos conscientes de este problema, nos llevaría mucho
+trabajo identificar y bloquear los programas que no son libres ni tampoco
+triviales. No obstante, incluso en la comunidad del software libre, la
+mayoría de los usuarios no son conscientes del problema, y el silencio de
+los navegadores suele ocultarlo.</p>
+
+<p>Un programa JavaScript se puede publicar como software libre distribuyendo
+el código fuente bajo una licencia de software libre. Si el programa es
+autónomo (si su funcionamiento y su propósito son independientes de la
+página que lo contiene), no hay problema: se puede copiar y guardar como
+archivo en el ordenador, se modifica luego ese archivo y se abre con un
+navegador para ejecutarlo. Pero se trata de un caso poco habitual.</p>
+
+<p>Los programas JavaScript casi siempre están pensados para una página o sitio
+web específico cuyo funcionamiento depende de ellos. Surge entonces otro
+problema: incluso si el código fuente del programa está disponible, los
+navegadores no le ofrecen al usuario un modo de ejecutar su propia versión
+modificada en vez de la original cuando visita esa página o sitio. El efecto
+es comparable a la «tivoización», aunque en principio no tan difícil de
+solucionar.</p>
+
+<p>JavaScript no es el único lenguaje que los sitios web utilizan para los
+programas que envían al usuario. Flash admite la programación mediante una
+variante ampliada de JavaScript. Si alguna vez disponemos de un reproductor
+libre para Flash lo bastante completo, tendremos que vérnoslas con el
+problema de los programas Flash que no son libres. Es probable que
+Silverlight cree un problema similar a Flash, solo que peor, ya que
+Microsoft lo usa como plataforma para códecs que no son libres. Un reemplazo
+libre para Silverlight no cumplirá su función en el mundo libre a menos que
+venga de serie con códecs de recambio libres.</p>
+
+<p>Los <cite>applets</cite> Java también se ejecutan en el navegador, y
+plantean problemas similares. En general, cualquier sistema de
+<cite>applet</cite> presenta problemas de este tipo. Disponer de un entorno
+de ejecución libre para un <cite>applet</cite> no hace sino aplazar el
+problema.</p>
+
+<p>En teoría se puede programar en HTML y CSS, pero en la práctica esta
+posibilidad es limitada y engorrosa; ya solo conseguir que haga algo es toda
+una hazaña. Tales programas deberían ser libres, aunque desde 2019 CSS no
+constituye un serio problema para la libertad de los usuarios.</p>
+
+<p>Se ha desarrollado un potente movimiento para reclamar que los sitios web
+empleen solo formatos y protocolos libres (algunos los llaman «abiertos»);
+esto es, aquellos cuya documentación sea pública y que cualquiera sea libre
+de implementar. No obstante, la presencia de programas de JavaScript en las
+páginas web hace que este criterio sea insuficiente. El propio lenguaje de
+JavaScript, en cuanto formato, es libre, y el uso de JavaScript en un sitio
+web no es necesariamente algo malo. Sin embargo, como hemos visto antes, sí
+puede ser malo, en el casos de que el programa de JavaScript no sea
+libre. Cuando el sitio transmite un programa al usuario, no basta con que el
+programa esté escrito en un lenguaje documentado y sin trabas, sino que
+además el programa mismo debe ser libre. «Transmitir al usuario únicamente
+programas libres» debe ser uno de los criterios de un sitio web ético.</p>
+
+<p>La carga y ejecución silenciosa de programas que no son libres es uno de los
+diversos problemas que presentan las «aplicaciones web». La expresión
+«aplicación web» se acuñó para obviar la distinción fundamental entre el
+software que se entrega a los usuarios y el que se ejecuta en un
+servidor. Puede referirse a un programa cliente especializado que se ejecuta
+en un navegador, puede referirse a un software especializado del servidor, o
+puede referirse a un programa cliente especializado que opera mano a mano
+con software especializado del servidor. La parte cliente y la parte
+servidor plantean problemas éticos diferentes, aun cuando estén tan
+integradas que se pueda considerar que forman parte de un solo
+programa. Este artículo se ocupa solo del software de la parte
+cliente. Tratamos lo referente al servidor por separado.</p>
+
+<p>En la práctica, ¿cómo podemos afrontar el problema de la presencia en sitios
+web de programas Javascript que no son libres ni triviales? En primer lugar,
+no ejecutarlos.</p>
+
+<p>¿A qué nos referimos cuando decimos que «no es trivial»? Es una cuestión de
+grado, por lo que no se trata de buscar una única respuesta correcta, sino
+de ofrecer un criterio sencillo que dé buenos resultados.</p>
+<p>
+Nuestro criterio actual es considerar que un programa escrito en JavaScript
+no es trivial si se cumple alguna de las siguientes condiciones:</p>
+
+<ul>
+ <li>se remite a él como <cite>script</cite> externo (desde otra página);</li>
+
+ <li>declara un <cite>array</cite> de más de 50 elementos;</li>
+
+ <li>define una entidad nombrada (función o método) que llama a algo diferente de
+una primitiva;</li>
+
+ <li>define una entidad nombrada que comprende más de tres construcciones
+condicionales y una construcción en bucle;</li>
+
+ <li>el código que no pertenece a las definiciones nombradas llama a algo
+distinto de las entidades primitivas y funciones definidas más arriba en la
+página;</li>
+
+ <li>el código que no pertenece a las definiciones nombradas contiene, en total,
+más de tres construcciones condicionales y una construcción en bucle;</li>
+
+ <li>llama a la función <b>eval</b>;</li>
+
+ <li>hace llamadas Ajax;</li>
+
+ <li>utiliza notación con corchetes para acceder de manera dinámica a las
+propiedades de los objetos: <b><em>object</em>[<em>property</em>]</b>.</li>
+
+ <li>modifica el <abbr title="Document Object Model">DOM</abbr>;</li>
+
+ <li>utiliza estructuras JavaScript dinámicas que son difíciles de analizar sin
+interpretar el programa, o se carga junto con <cite>scripts</cite> que
+utilizan dichas estructuras. Concretamente, utilizando cualquier estructura
+distinta de una cadena literal con ciertos métodos (<b>Obj.write</b>,
+<b>Obj.createElement</b> y demás).</li>
+</ul>
+
+<p>¿Cómo hacemos para determinar si el código JavaScript es libre? En un <a
+href="/licenses/javascript-labels.html">artículo aparte</a> proponemos un
+método para que un programa JavaScript que no sea trivial inserto en una
+página web indique la URL donde se encuentra su código fuente, y también su
+licencia, mediante comentarios estilizados.</p>
+
+<p>Por último, tenemos que modificar los navegadores libres para que detecten y
+bloqueen el código JavaScript en las páginas web cuando no sea libre ni
+trivial. El programa <a href="/software/librejs/">LibreJS</a> detecta y
+bloquea el código JavaScript que no es libre ni trivial en las páginas que
+se visitan. LibreJS está incluido en IceCat y disponible como aplicación
+complementaria para Firefox.</p>
+
+<p>Los usuarios de navegadores necesitan una funcionalidad fácil de usar que
+especifique el código JavaScript a utilizar <em>en lugar</em> del que se
+encuentre en una página dada (el código especificado podría ser un reemplazo
+completo o una versión modificada del programa JavaScript libre de esa
+página). Greasemonkey está cerca de poder hacerlo, pero no lo suficiente,
+pues no garantiza la modificación del código JavaScript de la página antes
+de que el programa comience a ejecutarse. Funciona si se utiliza un proxy
+local, pero esto es demasiado incómodo como para considerarlo una solución
+real. Tenemos que desarrollar un procedimiento que sea fiable y cómodo, así
+como sitios web para compartir los cambios. El Proyecto GNU desearía
+recomendar sitios dedicados únicamente a cambios libres.</p>
+
+<p>Estas funcionalidades permitirán que un programa JavaScript que se incluya
+en una página web sea libre en un sentido real y práctico. JavaScript ya no
+será un obstáculo para nuestra libertad, no más de lo que C y Java lo son
+ahora. Tendremos la posibilidad de rechazar e incluso reemplazar los
+programas JavaScript que no sean libres ni triviales, tal y como ahora
+rechazamos y reemplazamos los paquetes privativos que se ofrecen para su
+instalación convencional. A partir de ese momento podremos iniciar nuestra
+campaña para que los sitios web liberen JavaScript.</p>
+
+<p>Entretanto, existe un caso en el que es aceptable ejecutar un programa
+JavaScript que no es libre: cuando se hace para enviar una queja a los
+administradores del sitio señalándoles que deberían liberar o eliminar el
+código JavaScript de la página. No dude en habilitar temporalmente
+JavaScript con esa finalidad, pero recuerde desactivarlo después.</p>
+
+<!-- any links that used to point to the appendices should point to
+ free-your-javascript.html instead. -->
+<blockquote>
+<p>Webmasters: existen <a
+href="/software/librejs/free-your-javascript.html">varias maneras</a> de
+indicar la licencia de los programas JavaScript en un sitio web.</p>
+</blockquote>
+
+<p><strong>Agradecimientos:</strong> Gracias a <a
+href="/people/people.html#mattlee">Matt Lee</a> y <a
+href="http://ejohn.org">John Resig</a> por su ayuda en la concreción del
+criterio que proponemos, y a David Parunakian por señalarme este problema.</p>
+
+<div class="translators-notes">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
+ </div>
+</div>
+
+<!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.es.html" -->
+<div id="footer">
+<div class="unprintable">
+
+<p>Envíe sus consultas acerca de la FSF y GNU a <a
+href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Existen también <a
+href="/contact/">otros medios para contactar</a> con la FSF. <br /> Para
+avisar de enlaces rotos y proponer otras correcciones o sugerencias,
+diríjase a <a
+href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
+
+<p>
+<!-- TRANSLATORS: Ignore the original text in this paragraph,
+ replace it with the translation of these two:
+
+ We work hard and do our best to provide accurate, good quality
+ translations. However, we are not exempt from imperfection.
+ Please send your comments and general suggestions in this regard
+ to <a href="mailto:web-translators@gnu.org">
+
+ &lt;web-translators@gnu.org&gt;</a>.</p>
+
+ <p>For information on coordinating and submitting translations of
+ our web pages, see <a
+ href="/server/standards/README.translations.html">Translations
+ README</a>. -->
+El equipo de traductores al español se esfuerza por ofrecer traducciones
+fieles al original y de buena calidad, pero no estamos libres de cometer
+errores.<br /> Envíe sus comentarios y sugerencias sobre las traducciones a
+<a
+href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
+</p><p>Consulte la <a href="/server/standards/README.translations.html">Guía
+para las traducciones</a> para obtener información sobre la coordinación y
+el envío de traducciones de las páginas de este sitio web.</p>
+</div>
+
+<!-- Regarding copyright, in general, standalone pages (as opposed to
+ files generated as part of manuals) on the GNU web server should
+ be under CC BY-ND 4.0. Please do NOT change or remove this
+ without talking with the webmasters or licensing team first.
+ Please make sure the copyright date is consistent with the
+ document. For web pages, it is ok to list just the latest year the
+ document was modified, or published.
+
+ If you wish to list earlier years, that is ok too.
+ Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
+ years, as long as each year in the range is in fact a copyrightable
+ year, i.e., a year in which the document was published (including
+ being publicly visible on the web or in a revision control system).
+
+ There is more detail about copyright years in the GNU Maintainers
+ Information document, www.gnu.org/prep/maintain. -->
+<p>Copyright &copy; 2009-2013, 2016, 2017, 2018, 2019 Richard Stallman</p>
+
+<p>Esta página está bajo licencia <a rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/deed.es_ES">Creative
+Commons Reconocimiento-SinObraDerivada 4.0 Internacional</a>.</p>
+
+<!--#include virtual="/server/bottom-notes.es.html" -->
+<div class="translators-credits">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
+<strong>Traducción: David Arroyo Menéndez, 2009.</strong></div>
+
+<p class="unprintable"><!-- timestamp start -->
+Última actualización:
+
+$Date: 2019/12/30 12:08:30 $
+
+<!-- timestamp end -->
+</p>
+</div>
+</div>
+<!-- for class="inner", starts in the banner include -->
+</body>
+</html>