www-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

www/philosophy javascript-trap.it.html po/javas...


From: GNUN
Subject: www/philosophy javascript-trap.it.html po/javas...
Date: Sun, 28 Nov 2021 09:01:02 -0500 (EST)

CVSROOT:        /web/www
Module name:    www
Changes by:     GNUN <gnun>     21/11/28 09:01:02

Modified files:
        philosophy     : javascript-trap.it.html 
        philosophy/po  : javascript-trap.it-en.html 

Log message:
        Automatic update by GNUnited Nations.

CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/javascript-trap.it.html?cvsroot=www&r1=1.16&r2=1.17
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/po/javascript-trap.it-en.html?cvsroot=www&r1=1.12&r2=1.13

Patches:
Index: javascript-trap.it.html
===================================================================
RCS file: /web/www/www/philosophy/javascript-trap.it.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- javascript-trap.it.html     30 Dec 2019 12:08:30 -0000      1.16
+++ javascript-trap.it.html     28 Nov 2021 14:01:00 -0000      1.17
@@ -1,181 +1,214 @@
-<!--#set var="PO_FILE"
- value='<a href="/philosophy/po/javascript-trap.it.po">
- https://www.gnu.org/philosophy/po/javascript-trap.it.po</a>'
- --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
- --><!--#set var="DIFF_FILE" 
value="/philosophy/po/javascript-trap.it-diff.html"
- --><!--#set var="OUTDATED_SINCE" value="2019-02-21" -->
+<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
 
 <!--#include virtual="/server/header.it.html" -->
-<!-- Parent-Version: 1.86 -->
+<!-- Parent-Version: 1.96 -->
+<!-- This page is derived from /server/standards/boilerplate.html -->
+<!--#set var="TAGS" value="essays licensing traps" -->
+<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
 
 <!-- This file is automatically generated by GNUnited Nations! -->
-<title>La trappola JavaScript</title>
+<title>La trappola JavaScript - Progetto GNU - Free Software Foundation</title>
 
 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
 <!--#include virtual="/server/banner.it.html" -->
-<!--#include virtual="/server/outdated.it.html" -->
+<!--#include virtual="/philosophy/ph-breadcrumb.it.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.it.html" -->
+<div class="article reduced-width">
 <h2>La trappola JavaScript</h2>
 
-<p>di <a href="http://www.stallman.org/";>Richard Stallman</a></p>
+<address class="byline">di <a href="https://www.stallman.org/";>Richard 
Stallman</a></address>
 
 <p><strong>Forse ogni giorno eseguite software non libero senza rendervene
-conto, attraverso il vostro web browser.</strong></p>
+conto, attraverso il vostro browser.</strong></p>
 
 <!-- any links that used to point to the appendices should point to
      free-your-javascript.html instead.  -->
-<blockquote>
+<div class="announcement">
+<hr class="no-display" />
 <p>Per i webmaster: ci sono <a
 href="/software/librejs/free-your-javascript.html">molti modi</a> di
 indicare la licenza dei programmi JavaScript in un sito.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
 
-<p>Nella comunità del software libero, l'idea che <a
-href="/philosophy/free-software-even-more-important.html"> i programmi non
-liberi maltrattino i propri utenti</a> è familiare. Alcuni di noi difendono
-la libertà rifiutandosi categoricamente di installare software proprietario;
-molti altri considerano la non-libertà un punto negativo per il programma.</p>
+<p>La comunità del software libero è ben consapevole dell'idea che <a
+href="/philosophy/free-software-even-more-important.html">i programmi non
+liberi maltrattano gli utenti</a>. Alcuni di noi difendono la propria
+libertà rifiutandosi categoricamente di installare software
+proprietario. Molti altri considerano che la mancanza di libertà costituisce
+un duro colpo al programma.</p>
 
 <p>Molti utenti sono a conoscenza del fatto che questo problema si applica ai
 plug-in che i browser offrono di installare, visto che possono essere sia
 liberi che non liberi. Ma i browser eseguono altri programmi non liberi per
 i quali non vi chiedono il permesso o vi avvisano: i programmi che le pagine
 web contengono o includono da altri siti. Questi programmi sono spesso
-scritti in JavaScript, anche se alle volte sono scritti in altri linguaggi.</p>
+scritti in JavaScript, anche se a volte sono scritti in altri linguaggi.</p>
 
-<p>JavaScript (ufficialmente ma raramente chiamato ECMAScript) era usato un
-tempo per vari fronzoli non essenziali nelle pagine web come effetti visuali
-di navigazione. Era quindi accettabile considerare questi come una mera
+<p>JavaScript (ufficialmente ma raramente chiamato ECMAScript) un tempo veniva
+utilizzato per vari fronzoli non essenziali nelle pagine web, come effetti
+visuali e di navigazione. Era quindi accettabile considerarli come una mera
 estensione del linguaggio HTML più che come software vero e proprio, e così
 ignorare il problema.</p>
 
 <p>Alcuni siti continuano ad usare JavaScript in quella maniera, mentre molti
-lo usano per grandi programmi che svolgono operazioni complesse. Per
-esempio, Google Docs prova a scaricare nella vostra macchina un programma
-JavaScript che pesa mezzo megabyte e talmente compresso da poterlo chiamare
-Obfuscript perché mancante di commenti e di spazi e popolato da metodi dai
-nomi lunghi un singolo carattere. Il codice sorgente di un programma è la
-forma preferita per poterlo modificare; il codice compresso non è codice
-sorgente, ed il vero codice sorgente di questo programma non è accessibile
-dall'utente.</p>
-
-<p>Oltre ad essere non liberi, molti di questi programmi sono malware perché 
<a
-href="http://github.com/w3c/fingerprinting-guidance/issues/8";>spiano gli
-utenti</a>. Inoltre alcuni siti usano servizi che  registrano <a
+lo usano per grandi programmi che svolgono operazioni complesse. Per esempio
+Google Docs prova a installare nel vostro browser un JavaScript che pesa
+mezzo megabyte, in una forma compattata che potremmo chiamare
+Obfuscript. Questa versione compattata è ottenuta dal codice sorgente,
+togliendo gli spazi aggiuntivi che rendono il codice leggibile, le note
+esplicative che lo rendono comprensibile, e sostituendo i nomi significativi
+con brevi nomi arbitrari in modo che non si riesca a capire cosa vogliono
+dire.</p>
+
+<p>Una parte del significato di <a href="/philosophy/free-sw.html">software
+libero</a> è che gli utenti devono poter aver accesso al codice sorgente del
+programma. Il sorgente di un programma è la forma preferita dai
+programmatori per modificare un programma: incluse spaziature tra i
+caratteri, commenti e uso di nomi significativi. Il codice compattato è un
+falso e inutile sostituto del codice sorgente: il vero sorgente di questi
+programmi non viene reso disponibile agli utenti, quindi gli utenti non
+possono capirlo; pertanto questi programmi non sono liberi.</p>
+
+<p>Oltre ad essere non liberi, molti di questi programmi sono <em>malware</em>
+perché <a
+href="https://github.com/w3c/fingerprinting-guidance/issues/8";>spiano gli
+utenti</a>. Peggio ancora, alcuni siti usano servizi che registrano <a
 
href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/";>tutte
-le azioni dell'utente mentre visita pagina</a>. Questi servizi in teoria
-"eliminano" i dati sensibili che il sito non dovrebbe raccogliere, ma anche
-se questo fosse vero il problema comunque rimane: questi servizi forniscono
-al sito informazioni che esso non dovrebbe ricevere.</p>
+le azioni dell'utente mentre visita la pagina</a>. Questi servizi in teoria
+“eliminano” i dati sensibili che il sito non dovrebbe raccogliere, ma anche
+se fosse vero il problema comunque rimarrebbe: questi servizi inviano al
+sito informazioni che non dovrebbe ricevere.</p>
 
-<p>I browser di solito non vi comunicano di aver caricato dei programmi
+<p>I browser di solito non vi informano di aver caricato dei programmi
 JavaScript. Alcuni browser forniscono un'opzione per disabilitare JavaScript
 del tutto, ma anche se siete a conoscenza di questo problema, identificare e
 bloccare i programmi non banali e non liberi non è facile e persino nella
 comunità del software libero la maggior parte degli utenti non ne è a
 conoscenza, anche per via del silenzio dei browser.</p>
 
-<p>È possibile rilasciare un programma JavaScript come software libero se si
-distribuisce il suo codice sorgente sotto una licenza libera. Se il
-programma è indipendente (nel senso che il suo funzionamento e scopo non
-dipendono dalla pagina che lo conteneva) questo va bene: lo si può copiare
-su un file nel proprio computer, modificarlo, ed eseguirlo in un browser. Ma
-questo caso non è comune.</p>
-
-<p>Nel caso più comune, i programmi JavaScript sono fatti per funzionare in 
una
-specifica pagina o uno specifico sito, e a sua volta la pagina, o il sito,
-funziona solo se questi sono disponibili. Allora si ha un altro problema:
-anche se il codice sorgente del programma è disponibile, i browser non
-offrono un modo di eseguire la vostra versione modificata del programma al
-posto dell'originale quando visitate una pagina. L'effetto è comparabile
-alla tivoizzazione, anche se non così difficile da sormontare.</p>
+<p>Dobbiamo chiarire un possibile equivoco: il linguaggio JavaScript non è
+intrinsecamente migliore o peggiore per la libertà degli utenti di qualsiasi
+altro linguaggio. È possibile rilasciare un programma JavaScript come
+software libero se si distribuisce il suo codice sorgente sotto una licenza
+libera. Se il programma è indipendente (nel senso che il suo funzionamento e
+scopo non dipendono dalla pagina che lo conteneva) va bene. Lo si può
+copiare su un file nel proprio computer, modificarlo ed eseguirlo in un
+browser. È anche possibile creare un pacchetto per installarlo, proprio come
+altri programmi liberi, e invocarlo da shell. I JavaScript non hanno un
+profilo morale diverso da quelle dei programmi C.</p>
+
+<p>Parliamo di Trappola JavaScript quando un programma JavaScript viene fornito
+in una pagina Web visitata dagli utenti. Questi programmi JavaScript sono
+scritti per funzionare solamente in una particolare pagina o sito, e la
+pagina o sito dipendono da loro per funzionare.</p>
+
+<p>Supponiamo di copiare e modificare il codice JavaScript della pagina. Allora
+sorge un altro problema: anche se il codice sorgente del programma è
+disponibile, i browser non offrono un modo per poter eseguire la versione
+modificata del programma al posto dell'originale quando viene visitata una
+pagina. L'effetto è comparabile alla tivoizzazione anche se, in linea di
+principio, meno difficile da superare.</p>
 
 <p>JavaScript non è l'unico linguaggio che i siti web usano per i programmi
-inviati agli utenti. Flash offre di programmare attraverso una variante
-estesa di JavaScript; se arriveremo ad avere uno strumento libero per Flash
-abbastanza completo, dovremo comunque scontrarci con il problema dei
-programmi Flash non liberi. Silverlight è in procinto di porre un problema
-simile a Flash e se possibile peggiore, visto che Microsoft lo usa come
-piattaforma per codec non liberi. Un sostituto libero per Silverlight non
-può funzionare per il mondo libero a meno che dei codec liberi non vengano
-inclusi con esso.</p>
+inviati agli utenti. Flash permetteva di programmare attraverso una variante
+estesa di JavaScript, ma ormai è una tecnologia che sta
+scomparendo. Silverlight è in procinto di porre un problema simile a Flash
+ma peggiore, visto che Microsoft lo usa come piattaforma per codec non
+liberi. Un sostituto libero per Silverlight non può funzionare per il mondo
+libero a meno che dei codec liberi non vengano inclusi con esso.</p>
 
 <p>Anche le applet Java vengono eseguite dal browser e pongono simili
 problematiche. In generale, ogni sistema di applet pone simili
-problematiche. Avere un ambiente di esecuzione libero per un'applet ci porta
+problemi. Avere un ambiente di esecuzione libero per un'applet ci porta solo
 a scontrarci con questo problema.</p>
 
-<p>Teoricamente è possibile programmare in HTML e CSS, ma in pratica è
-difficile riuscire a fare qualcosa di significativo usando la limitata
-programmabilità disponibile con queste due tecnologie. Questi programmi
-dovrebbero essere liberi, ma il CSS non è comunque un problema (nel 2016)
-per la libertà degli utenti.</p>
+<p>Teoricamente è possibile programmare in HTML e CSS, ma in pratica questa
+possibilità è limitata e poco pratica; anche solo riuscire a realizzarci
+qualcosa richiede complessi smanettamenti. Questi programmi dovrebbero
+essere liberi, ma il CSS non è comunque un problema per la libertà degli
+utenti (nel 2019).</p>
 
 <p>C'è un movimento forte che chiede ai siti web di comunicare solo tramite
-formati e protocolli liberi (alcuni dicono &quot;aperti&quot;), ovvero la
-cui documentazione viene pubblicata e che ognuno può liberamente
-implementare. Con la presenza di programmi nelle pagine web, il criterio è
-necessario ma non sufficiente. Lo stesso JavaScript, come formato, è libero,
-e l'uso di JavaScript in un sito web non è necessariamente negativo ma, come
-abbiamo già visto, nemmeno necessariamente positivo. Quando il sito
-trasmette il programma all'utente, non è abbastanza che il linguaggio in cui
-questo è stato scritto sia documentato e libero; anche il programma deve
-essere libero. &ldquo;Solo i programmi liberi trasmessi all'utente&ldquo;
-possono soddisfare il criterio di condotta appropriata per i siti web.</p>
+formati e protocolli liberi (alcuni dicono “aperti”), ovvero la cui
+documentazione viene pubblicata e ognuno può liberamente
+implementare. Tuttavia la presenza di programmi JavaScript nelle pagine Web
+rende insufficiente questo criterio. Lo stesso linguaggio JavaScript, come
+formato, è libero, e l'uso di JavaScript in un sito web non è
+necessariamente negativo. Ma come abbiamo già visto, può essere negativo se
+il programma non è libero. Quando il sito trasmette il programma all'utente,
+non basta che il linguaggio in cui questo è scritto sia documentato e
+libero, anche il programma deve essere documentato e libero. “Trasmettere
+all'utente solo programmi liberi” deve diventare uno dei criteri di un sito
+web etico.</p>
 
 <p>Caricare ed eseguire programmi non liberi silenziosamente è uno degli
-svariati problemi posti dalle &quot;applicazioni web&quot;. Il termine
-&quot;applicazione web&quot; è stato concepito per ignorare la distinzione
-fondamentale tra software trasmesso all'utente e software in esecuzione su
-un server. Può fare riferimento ad un programma client specializzato che
-lavora a stretto contatto con un programma server specializzato. I lati
-client e server sollevano diverse questioni etiche anche quando sono così
-reciprocamente integrati da poter costituire ai fatti un singolo
-programma. Questo articolo fa riferimento solamente a ciò che riguarda
-software lato client. Ci occuperemo del lato server separatamente.</p>
+svariati problemi posti dalle “applicazioni web”. Il termine 
“applicazioni
+web” è stato concepito per ignorare la distinzione fondamentale tra software
+trasmesso all'utente e software in esecuzione su un server. Può fare
+riferimento ad un programma client specializzato che si esegue nel browser;
+può fare riferimento a software specializzato del server; può fare
+riferimento ad un programma client specializzato che lavora a stretto
+contatto con un programma server specializzato. I lati client e server
+sollevano questioni etiche differenti, anche quando siano così strettamente
+integrati da poter sostenere che facciano parte di un singolo
+programma. Questo articolo fa riferimento solamente a ciò che riguarda il
+software lato client. Ci occupiamo del lato server separatamente.</p>
 
 <p>In termini pratici, come possiamo affrontare il problema del software
-JavaScript (non banale) non libero nei siti web? Il primo passo è evitare di
-eseguirlo. </p>
+JavaScript non libero e non banale nei siti web? Il primo passo è evitare di
+eseguirlo.</p>
 
-<p>Che cosa vuol dire &quot;non banale&quot;? Dipende da caso a caso ed è
-quindi preferibile definire un criterio semplice che offre buoni risultati
+<p>Che cosa vuol dire “non banale”? Dipende da caso a caso ed è quindi
+preferibile definire un criterio semplice che offre buoni risultati
 piuttosto che cercare una risposta esatta.</p>
 <p>
-La nostra politica provvisoria considera un programma JavaScript non banale
-se: </p>
+Attualmente il nostro criterio è considerare che un programma scritto in
+JavaScript non è banale se soddisfa una delle seguenti condizioni:</p>
 
 <ul>
-  <li>effettua una richiesta AJAX oppure viene caricato assieme ad altri script
-che effettuano una richiesta AJAX,</li>
+  <li>è caricato come script esterno (da un'altra pagina).</li>
+
+  <li>dichiara un array con più di 50 elementi.</li>
+
+  <li>definisce un'entità (funzione o metodo) che chiama qualcosa di diverso 
da
+una primitiva.</li>
+
+  <li>definisce un'entità utilizzando più di tre costrutti condizionali e 
cicli.</li>
+
+  <li>il codice che si trova all'esterno di metodi e funzioni chiama qualsiasi
+cosa tranne le primitive e le funzioni definite nelle righe precedenti.</li>
 
-  <li>carica uno script esterno dinamicamente oppure viene caricato assieme ad
-altri script che lo fanno,</li>
+  <li>il codice che si trova all'esterno di metodi e funzioni contiene più di 
tre
+cicli o costrutti condizionali, sommati.</li>
 
-  <li>definisce funzioni o metodi e carica uno script esterno (da html) o viene
-caricato esternamente a sua volta,</li>
+  <li>utilizza la funzione <b>eval</b>.</li>
+
+  <li>effettua chiamate Ajax.</li>
+
+  <li>utilizza la notazione a parentesi quadre per accedere alle proprietà di 
un
+oggetto dinamico, in questo modo 
<b><em>object</em>[<em>property</em>]</b>.</li>
+
+  <li>modifica il DOM.</li>
   
   <li>usa costrutti dinamici di JavaScript che sono difficili da analizzare 
senza
-interpretare il programma o viene caricato assieme ad altri script che usano
-tali costrutti. Questi costrutti sono:
-    <ul>
-      <li>l'uso della funzione eval,</li>
-      <li>la chiamata di metodi con notazione a parentesi quadre,</li>
-      <li>l'uso di qualsiasi costrutto diverso da una stringa letterale con 
alcuni
-metodi (Obj.write, Obj.createElement, ...).</li>
-    </ul>
-  </li>
+interpretare il programma, oppure viene caricato assieme ad altri script che
+usano tali costrutti. Nello specifico, riguarda l'utilizzo di qualsiasi
+elemento di costruzione diverso da una stringa di caratteri costante con
+certi metodi (<b>Obj.write</b>, <b>Obj.createElement</b> e altri).</li>
 </ul>
 
 <p>Come facciamo a determinare se il codice JavaScript è libero? In un <a
-href="/licenses/javascript-labels.html">ulteriore articolo</a> proponiamo
+href="/licenses/javascript-labels.html">ulteriore articolo</a> proponiamo un
 metodo con cui un programma JavaScript non banale in una pagina web può
 comunicare l'indirizzo web del suo codice sorgente e la sua licenza tramite
-commenti stilizzati.</p>
+commenti formattati.</p>
 
-<p>Infine, è necessario che noi modifichiamo i browser liberi per rilevare e
-bloccare JavaScript non libero nelle pagine web. Il programma <a
-href="/software/librejs/">LibreJS</a> rileva JavaScript non banale e libero
-nelle pagine che visitate e lo blocca. LibreJS è parte di IceCat ed è
+<p>Infine, è necessario modificare i browser liberi per rilevare e bloccare
+JavaScript non libero e non banale nelle pagine web. Il programma <a
+href="/software/librejs/">LibreJS</a> rileva JavaScript non libero e non
+banale nelle pagine visitate e lo blocca. LibreJS è parte di IceCat ed è
 disponibile come estensione per Firefox.</p>
 
 <p>Gli utenti dei browser hanno anche bisogno di un modo facile per
@@ -187,7 +220,7 @@
 locale funziona, ma è troppo scomodo per poter essere una soluzione
 pratica. Abbiamo bisogno di creare sia una soluzione affidabile e facile da
 usare che dei siti per poter condividere le modifiche. Il progetto GNU
-vorrebbe consigliare dei siti che sono dedicati esclusivamente alle
+vorrebbe consigliare dei siti che siano dedicati esclusivamente alle
 modifiche libere.</p>
 
 <p>Queste funzionalità permetteranno di includere programmi JavaScript liberi
@@ -198,24 +231,27 @@
 vengono convenzionalmente installati. La nostra campagna per spingere i siti
 a liberare il proprio JavaScript può avere inizio.</p>
 
-<p>Nel frattempo, c'è un caso in cui è accettabile eseguire del JavaScript 
non
+<p>Comunque c'è un caso in cui è accettabile eseguire del JavaScript non
 libero: per inviare una lamentela agli operatori del sito, chiedendo loro di
-liberare o altrimenti rimuovere il codice JavaScript dal loro sito. Vi prego
-di non esitare ad abilitare JavaScript temporaneamente per questo
-scopo&mdash;non dimenticate di disattivarlo una volta finito.</p>
+liberare o altrimenti rimuovere il codice JavaScript dal sito. Vi prego di
+non esitare ad abilitare JavaScript temporaneamente per questo scopo – non
+dimenticate di disattivarlo una volta finito.</p>
 
 <!-- any links that used to point to the appendices should point to
      free-your-javascript.html instead.  -->
-<blockquote>
+<div class="announcement">
+<hr class="no-display" />
 <p>Per i webmaster: ci sono <a
 href="/software/librejs/free-your-javascript.html">molti modi</a> di
 indicare la licenza dei programmi JavaScript in un sito.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
 
 <p><strong>Grazie a:</strong> <a href="/people/people.html#mattlee">Matt
-Lee</a> e <a href="http://ejohn.org";>John Resig</a> per il loro aiuto nel
-definire il criterio da noi proposto ed a David Parunakian per avermi messo
-a conoscenza del problema.</p>
+Lee</a> e <a href="https://johnresig.com/";>John Resig</a> per il loro aiuto
+nel definire il criterio da noi proposto ed a David Parunakian per avermi
+messo a conoscenza del problema.</p>
+</div>
 
 <div class="translators-notes">
 
@@ -225,7 +261,7 @@
 
 <!-- for id="content", starts in the include above -->
 <!--#include virtual="/server/footer.it.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
 <div class="unprintable">
 
 <p>Per informazioni su FSF e GNU rivolgetevi, possibilmente in inglese, a <a
@@ -245,7 +281,7 @@
 
         &lt;web-translators@gnu.org&gt;</a>.</p>
 
-        <p>For information on coordinating and submitting translations of
+        <p>For information on coordinating and contributing translations of
         our web pages, see <a
         href="/server/standards/README.translations.html">Translations
         README</a>. -->
@@ -277,23 +313,24 @@
      
      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 Richard Stallman</p>
+<p>Copyright &copy; 2009-2013, 2016-2019, 2021 Richard Stallman</p>
 
 <p>Questa pagina è distribuita secondo i termini della licenza <a 
rel="license"
-href="http://creativecommons.org/licenses/by-nd/4.0/";>Creative Commons
-Attribuzione - Non opere derivate 4.0 internazionale</a> (CC BY-ND 4.0).</p>
+href="http://creativecommons.org/licenses/by-nd/4.0/deed.it";>Creative
+Commons Attribuzione - Non opere derivate 4.0 Internazionale</a> (CC BY-ND
+4.0).</p>
 
 <!--#include virtual="/server/bottom-notes.it.html" -->
 <div class="translators-credits">
 
 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
 Tradotto da membri del gruppo dei traduttori italiani GNU. Revisioni di
-Andrea Pescetti.</div>
+Andrea Pescetti, Sebastiano Pistore, Dora Scilipoti.</div>
 
 <p class="unprintable"><!-- timestamp start -->
-Ultimo Aggiornamento:
+Ultimo aggiornamento:
 
-$Date: 2019/12/30 12:08:30 $
+$Date: 2021/11/28 14:01:00 $
 
 <!-- timestamp end -->
 </p>

Index: po/javascript-trap.it-en.html
===================================================================
RCS file: /web/www/www/philosophy/po/javascript-trap.it-en.html,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- po/javascript-trap.it-en.html       2 Feb 2019 18:59:23 -0000       1.12
+++ po/javascript-trap.it-en.html       28 Nov 2021 14:01:01 -0000      1.13
@@ -1,12 +1,19 @@
 <!--#include virtual="/server/header.html" -->
-<!-- Parent-Version: 1.86 -->
-<title>The JavaScript Trap</title>
+<!-- Parent-Version: 1.96 -->
+<!-- This page is derived from /server/standards/boilerplate.html -->
+<!--#set var="TAGS" value="essays licensing traps" -->
+<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
+<title>The JavaScript Trap - GNU Project - Free Software Foundation</title>
 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
 <!--#include virtual="/server/banner.html" -->
-
+<!--#include virtual="/philosophy/ph-breadcrumb.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.html" -->
+<div class="article reduced-width">
 <h2>The JavaScript Trap</h2>
 
-<p>by <a href="http://www.stallman.org/";>Richard Stallman</a></p>
+<address class="byline">by <a href="https://www.stallman.org/";>Richard
+Stallman</a></address>
 
 <p><strong>You may be running nonfree programs on your computer every
 day without realizing it&mdash;through your web browser.</strong></p>
@@ -14,11 +21,13 @@
 <!-- any links that used to point to the appendices should point to
      free-your-javascript.html instead.  -->
 
-<blockquote>
+<div class="announcement">
+<hr class="no-display" />
 <p>Webmasters: there are
 <a href="/software/librejs/free-your-javascript.html">several ways</a>
 to indicate the license of JavaScript programs in a web site.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
 
 <p>In the free software community, the idea that
 <a href="/philosophy/free-software-even-more-important.html">
@@ -41,17 +50,27 @@
 software, and disregard the issue.</p>
 
 <p>Some sites still use JavaScript that way, but many use it for major
-programs that do large jobs.  For instance, Google Docs tries to download into
-your machine a JavaScript program which measures half a megabyte, in a
-compacted form that we could call Obfuscript because it has no
-comments and hardly any whitespace, and the method names are one
-letter long.  The source code of a program is the preferred form for
-modifying it; the compacted code is not source code, and the real
-source code of this program is not available to the user.</p>
-
-<p>In addition to being nonfree, many of these programs are malware
-because
-they <a href="http://github.com/w3c/fingerprinting-guidance/issues/8";>snoop
+programs that do large jobs.  For instance, Google Docs tries to
+install into your browser a JavaScript program which measures half a
+megabyte, in a compacted form that we could call Obfuscript.  This
+compacted form is made from the source code, by deleting the extra
+spaces that make the code readable and the explanatory remarks that
+make it comprehensible, and replacing each meaningful name in the code
+with an arbitrary short name so we can't tell what it is supposed to
+mean.</p>
+
+<p>Part of the <a href="/philosophy/free-sw.html">meaning of free
+software</a> is that users have access to the program's source code
+(its plan).  The source code of a program means the preferred form for
+programmers to modify&mdash;including helpful spacing, explanatory
+remarks, and meaningful names.  Compacted code is a bogus, useless
+substitute for source code; the real source code of these programs is
+not available to the users, so users cannot understand it; therefore
+the programs are nonfree.</p>
+
+<p>In addition to being nonfree, many of these programs
+are <em>malware</em> because
+they <a href="https://github.com/w3c/fingerprinting-guidance/issues/8";>snoop
 on the user</a>.  Even nastier, some sites use services which record
 <a 
href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/";>all
 the user's actions while looking at the page</a>.  The services
@@ -67,29 +86,38 @@
 However, even in the free software community most users are not aware
 of this issue; the browsers' silence tends to conceal it.</p>
 
-<p>It is possible to release a JavaScript program as free software, by
+<p>To be clear, the language JavaScript is not inherently better or worse 
+for users' freedom than any other language.
+It is possible to release a JavaScript program as free software, by
 distributing the source code under a free software license.  If the
 program is self-contained&mdash;if its functioning and purpose are
 independent of the page it came in&mdash;that is fine; you can copy it
 to a file on your machine, modify it, and visit that file with a
-browser to run it.  But that is an unusual case.</p>
-
-<p>In the usual case, JavaScript programs are meant to work with a
+browser to run it.  It's even possible to package it for installation
+just like other free programs and invocation with a shell command.
+These programs present no special moral issue different from those
+of C programs.</p>
+
+<p>The issue of the JavaScript trap applies when the JavaScript
+program comes along with a web page that users visit.
+Those JavaScript programs are written to work with a
 particular page or site, and the page or site depends on them to
-function.  Then another problem arises: even if the program's source
+function.</p>
+
+<p>Suppose you copy and modify the page's JavaScript code.
+Then another problem arises: even if the program's source
 is available, browsers do not offer a way to run your modified version
 instead of the original when visiting that page or site.  The effect
 is comparable to tivoization, although in principle not quite so hard
 to overcome.</p>
 
 <p>JavaScript is not the only language web sites use for programs sent
-to the user.  Flash supports programming through an extended variant
-of JavaScript; if we ever have a sufficiently complete free Flash
-player, we will need to deal with the issue of nonfree Flash programs.
-Silverlight seems likely to create a problem similar to Flash, except
-worse, since Microsoft uses it as a platform for nonfree codecs.  A
-free replacement for Silverlight does not do the job for the free
-world unless it normally comes with free replacement codecs.</p>
+to the user.  Flash supported programming through an extended variant
+of JavaScript, but that is a thing of the past.  Microsoft Silverlight
+seems likely to create a problem similar to Flash, except worse, since
+Microsoft uses it as a platform for nonfree codecs.  A free
+replacement for Silverlight does not do the job adequately for the
+free world unless it normally comes with free replacement codecs.</p>
 
 <p>Java applets also run in the browser, and raise similar issues.  In
 general, any sort of applet system poses this sort of problem.  Having
@@ -100,24 +128,25 @@
 practice this capability is limited and inconvenient; merely to make
 it do something is an impressive hack.  Such programs ought to be
 free, but CSS is not a serious problem for users' freedom as of
-2016.</p>
+2019.</p>
 
 <p>A strong movement has developed that calls for web sites to
 communicate only through formats and protocols that are free (some say
-&quot;open&quot;); that is to say, whose documentation is published and which
-anyone is free to implement.  With the presence of programs in web
-pages, that criterion is necessary, but not sufficient.  JavaScript
+&ldquo;open&rdquo;); that is to say, whose documentation is published and which
+anyone is free to implement.  However, the presence of JavaScript programs
+in web pages makes that criterion insufficient.  The JavaScript language
 itself, as a format, is free, and use of JavaScript in a web site is
-not necessarily bad.  However, as we've seen above, it also isn't
-necessarily OK.  When the site transmits a program to the user, it is
+not necessarily bad.  However, as we've seen above, it can be bad&mdash;if
+the JavaScript program is nonfree.  When the site transmits a program
+to the user, it is
 not enough for the program to be written in a documented and
-unencumbered language; that program must be free, too.  &ldquo;Only free
-programs transmitted to the user&rdquo; must become part of the criterion
-for proper behavior by web sites.</p>
+unencumbered language; that program must be free, too.  &ldquo;Transmits only 
free
+programs to the user&rdquo; must become part of the criterion
+for an ethical web site.</p>
 
 <p>Silently loading and running nonfree programs is one among several
-issues raised by &quot;web applications&quot;.  The term &quot;web
-application&quot; was designed to disregard the fundamental
+issues raised by &ldquo;web applications.&rdquo;  The term &ldquo;web
+application&rdquo; was designed to disregard the fundamental
 distinction between software delivered to users and software running
 on a server.  It can refer to a specialized client program running
 in a browser; it can refer to specialized server software; it can
@@ -132,32 +161,44 @@
 JavaScript programs in web sites?  The first step is to avoid running
 it.</p>
 
-<p>What do we mean by &quot;nontrivial&quot;?  It is a matter of
+<p>What do we mean by &ldquo;nontrivial&rdquo;?  It is a matter of
 degree, so this is a matter of designing a simple criterion that gives
 good results, rather than finding the one correct answer.</p>
 <p>
-Our tentative policy is to consider a JavaScript program nontrivial if:</p>
+Our current criterion is to consider a JavaScript program nontrivial
+if any of these conditions is met:</p>
 
 <ul>
-  <li>it makes an AJAX request or is loaded along with scripts that make
-    an AJAX request,</li>
+  <li>it is referred to as an external script (from another page).</li>
+
+  <li>it declares an array more than 50 elements long.</li>
+
+  <li>it defines a named entity (function or method) that calls anything other
+      than a primitive.</li>
+
+  <li>it defines a named entity with more than three conditional
+      constructs and loop construction.</li>
 
-  <li>it loads external scripts dynamically or is loaded along with
-    scripts that do,</li>
+  <li>code outside of named definitions calls anything but primitives and
+      functions defined further up in the page.</li>
 
-  <li>it defines functions or methods and either loads an external script
-    (from html) or is loaded as one,</li>
+  <li>code outside of named definitions contains more than three
+      conditional constructs and loop construction, total.</li>
   
-  <li>it uses dynamic JavaScript constructs that are difficult to analyze
-    without interpreting the program, or is loaded along with scripts
-    that use such constructs.  These constructs are:
-    <ul>
-      <li>using the eval function,</li>
-      <li>calling methods with the square bracket notation,</li>
-      <li>using any other construct than a string literal with
-       certain methods (Obj.write, Obj.createElement, ...).</li>
-    </ul>
-  </li>
+  <li>it calls <b>eval</b>.</li>
+
+  <li>it does Ajax calls.</li>
+
+  <li>it uses bracket notation for dynamic object property access,
+which looks like <b><em>object</em>[<em>property</em>]</b>.</li>
+
+  <li>it alters the DOM.</li>
+  
+  <li>it uses dynamic JavaScript constructs that are difficult to
+    analyze without interpreting the program, or is loaded along with
+    scripts that use such constructs.  Specifically, using any other
+    construct than a string literal with certain methods
+    (<b>Obj.write</b>, <b>Obj.createElement</b>, and others).</li>
 </ul>
 
 <p>How do we tell whether the JavaScript code is free?  In a <a 
@@ -201,20 +242,23 @@
 <!-- any links that used to point to the appendices should point to
      free-your-javascript.html instead.  -->
 
-<blockquote>
+<div class="announcement">
+<hr class="no-display" />
 <p>Webmasters: there are
 <a href="/software/librejs/free-your-javascript.html">several ways</a>
 to indicate the license of JavaScript programs in a web site.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
 
 <p><strong>Acknowledgements:</strong> I thank <a 
href="/people/people.html#mattlee">Matt Lee</a>
-and <a href="http://ejohn.org";>John Resig</a> for their help in
+and <a href="https://johnresig.com/";>John Resig</a> for their help in
 defining our proposed criterion, and David Parunakian for
 bringing the problem to my attention.</p>
+</div>
 
 </div><!-- for id="content", starts in the include above -->
 <!--#include virtual="/server/footer.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
 <div class="unprintable">
 
 <p>Please send general FSF &amp; GNU inquiries to
@@ -232,13 +276,13 @@
         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
+        <p>For information on coordinating and contributing translations of
         our web pages, see <a
         href="/server/standards/README.translations.html">Translations
         README</a>. -->
 Please see the <a
 href="/server/standards/README.translations.html">Translations
-README</a> for information on coordinating and submitting translations
+README</a> for information on coordinating and contributing translations
 of this article.</p>
 </div>
 
@@ -259,7 +303,7 @@
      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 Richard Stallman</p>
+<p>Copyright &copy; 2009-2013, 2016-2019, 2021 Richard Stallman</p>
 
 <p>This page is licensed under a <a rel="license"
 href="http://creativecommons.org/licenses/by-nd/4.0/";>Creative
@@ -269,7 +313,7 @@
 
 <p class="unprintable">Updated:
 <!-- timestamp start -->
-$Date: 2019/02/02 18:59:23 $
+$Date: 2021/11/28 14:01:01 $
 <!-- timestamp end -->
 </p>
 </div>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]