diff options
Diffstat (limited to 'talermerchantdemos/blog/articles/es/javascript-trap.html')
-rw-r--r-- | talermerchantdemos/blog/articles/es/javascript-trap.html | 329 |
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"><gnu@gnu.org></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"><webmasters@gnu.org></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"> + + <web-translators@gnu.org></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"><web-translators@gnu.org></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 © 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> |