www-commits
[Top][All Lists]
Advanced

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

www/philosophy javascript-trap.lt.html javascri...


From: GNUN
Subject: www/philosophy javascript-trap.lt.html javascri...
Date: Thu, 26 May 2016 22:28:56 +0000 (UTC)

CVSROOT:        /web/www
Module name:    www
Changes by:     GNUN <gnun>     16/05/26 22:28:56

Modified files:
        philosophy     : javascript-trap.lt.html javascript-trap.nl.html 
                         javascript-trap.pl.html 
Added files:
        philosophy/po  : javascript-trap.lt-diff.html 
                         javascript-trap.nl-diff.html 
                         javascript-trap.pl-diff.html 

Log message:
        Automatic update by GNUnited Nations.

CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/javascript-trap.lt.html?cvsroot=www&r1=1.1&r2=1.2
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/javascript-trap.nl.html?cvsroot=www&r1=1.1&r2=1.2
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/javascript-trap.pl.html?cvsroot=www&r1=1.38&r2=1.39
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/po/javascript-trap.lt-diff.html?cvsroot=www&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/po/javascript-trap.nl-diff.html?cvsroot=www&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/po/javascript-trap.pl-diff.html?cvsroot=www&rev=1.1

Patches:
Index: javascript-trap.lt.html
===================================================================
RCS file: /web/www/www/philosophy/javascript-trap.lt.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- javascript-trap.lt.html     26 Jan 2016 06:35:16 -0000      1.1
+++ javascript-trap.lt.html     26 May 2016 22:28:55 -0000      1.2
@@ -1,4 +1,9 @@
-<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
+<!--#set var="PO_FILE"
+ value='<a href="/philosophy/po/javascript-trap.lt.po">
+ http://www.gnu.org/philosophy/po/javascript-trap.lt.po</a>'
+ --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
+ --><!--#set var="DIFF_FILE" 
value="/philosophy/po/javascript-trap.lt-diff.html"
+ --><!--#set var="OUTDATED_SINCE" value="2016-03-27" --><!--#set 
var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
 
 <!--#include virtual="/server/header.lt.html" -->
 <!-- Parent-Version: 1.77 -->
@@ -8,6 +13,7 @@
 
 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
 <!--#include virtual="/server/banner.lt.html" -->
+<!--#include virtual="/server/outdated.lt.html" -->
 <h2>JavaScript spąstai</h2>
 
 <p>Pagal <a href="http://www.stallman.org/";>Richard Stallman</a></p>
@@ -333,7 +339,7 @@
 <p class="unprintable"><!-- timestamp start -->
 Atnaujinta:
 
-$Date: 2016/01/26 06:35:16 $
+$Date: 2016/05/26 22:28:55 $
 
 <!-- timestamp end -->
 </p>

Index: javascript-trap.nl.html
===================================================================
RCS file: /web/www/www/philosophy/javascript-trap.nl.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- javascript-trap.nl.html     27 Mar 2016 17:28:48 -0000      1.1
+++ javascript-trap.nl.html     26 May 2016 22:28:56 -0000      1.2
@@ -1,4 +1,9 @@
-<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
+<!--#set var="PO_FILE"
+ value='<a href="/philosophy/po/javascript-trap.nl.po">
+ http://www.gnu.org/philosophy/po/javascript-trap.nl.po</a>'
+ --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
+ --><!--#set var="DIFF_FILE" 
value="/philosophy/po/javascript-trap.nl-diff.html"
+ --><!--#set var="OUTDATED_SINCE" value="2016-03-27" --><!--#set 
var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
 
 <!--#include virtual="/server/header.nl.html" -->
 <!-- Parent-Version: 1.77 -->
@@ -8,6 +13,7 @@
 
 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
 <!--#include virtual="/server/banner.nl.html" -->
+<!--#include virtual="/server/outdated.nl.html" -->
 <h2>De JavaScript-valstrik</h2>
 
 <p>door <a href="http://www.stallman.org/";>Richard Stallman</a></p>
@@ -344,7 +350,7 @@
 <p class="unprintable"><!-- timestamp start -->
 Bijgewerkt:
 
-$Date: 2016/03/27 17:28:48 $
+$Date: 2016/05/26 22:28:56 $
 
 <!-- timestamp end -->
 </p>

Index: javascript-trap.pl.html
===================================================================
RCS file: /web/www/www/philosophy/javascript-trap.pl.html,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- javascript-trap.pl.html     8 Feb 2016 06:34:41 -0000       1.38
+++ javascript-trap.pl.html     26 May 2016 22:28:56 -0000      1.39
@@ -1,4 +1,9 @@
-<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
+<!--#set var="PO_FILE"
+ value='<a href="/philosophy/po/javascript-trap.pl.po">
+ http://www.gnu.org/philosophy/po/javascript-trap.pl.po</a>'
+ --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
+ --><!--#set var="DIFF_FILE" 
value="/philosophy/po/javascript-trap.pl-diff.html"
+ --><!--#set var="OUTDATED_SINCE" value="2016-03-27" --><!--#set 
var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
 
 <!--#include virtual="/server/header.pl.html" -->
 <!-- Parent-Version: 1.77 -->
@@ -8,6 +13,7 @@
 
 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
 <!--#include virtual="/server/banner.pl.html" -->
+<!--#include virtual="/server/outdated.pl.html" -->
 <h2>Pułapka JavaScript'u</h2>
 
 <p><a href="http://www.stallman.org/";>Richard Stallman</a></p>
@@ -359,7 +365,7 @@
 <p class="unprintable"><!-- timestamp start -->
 Aktualizowane:
 
-$Date: 2016/02/08 06:34:41 $
+$Date: 2016/05/26 22:28:56 $
 
 <!-- timestamp end -->
 </p>

Index: po/javascript-trap.lt-diff.html
===================================================================
RCS file: po/javascript-trap.lt-diff.html
diff -N po/javascript-trap.lt-diff.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ po/javascript-trap.lt-diff.html     26 May 2016 22:28:56 -0000      1.1
@@ -0,0 +1,338 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<!-- Generated by GNUN -->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>/philosophy/javascript-trap.html-diff</title>
+<style type="text/css">
+span.removed { background-color: #f22; color: #000; }
+span.inserted { background-color: #2f2; color: #000; }
+</style></head>
+<body><pre>
+&lt;!--#include virtual="/server/header.html" --&gt;
+&lt;!-- Parent-Version: 1.77 --&gt;
+&lt;title&gt;The JavaScript Trap&lt;/title&gt;
+&lt;!--#include virtual="/philosophy/po/javascript-trap.translist" --&gt;
+&lt;!--#include virtual="/server/banner.html" --&gt;
+
+&lt;h2&gt;The JavaScript Trap&lt;/h2&gt;
+
+&lt;p&gt;by &lt;a href="http://www.stallman.org/"&gt;Richard 
Stallman&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;You may be running nonfree programs on your computer 
every
+day without realizing it&mdash;through your web 
browser.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;In the free software community, the idea that nonfree programs
+mistreat their users is familiar.  Some of us refuse entirely to
+install proprietary software, and many others consider nonfreedom a
+strike against the program.  Many users are aware that this issue
+applies to the plug-ins that browsers offer to install, since they can
+be free or nonfree.&lt;/p&gt;
+
+&lt;p&gt;But browsers run other nonfree programs which they don't ask you
+about or even tell you about&mdash;programs that web pages contain or
+link to.  These programs are most often written in JavaScript, though
+other languages are also used.&lt;/p&gt;
+
+&lt;p&gt;JavaScript (officially called ECMAScript, but few use that name) was
+once used for minor frills in web pages, such as cute but inessential
+navigation and display features.  It was acceptable to consider these
+as mere extensions of HTML markup, rather than as true software; they
+did not constitute a significant issue.&lt;/p&gt;
+
+&lt;p&gt;Many sites still use JavaScript that way, but some 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.&lt;/p&gt;
+
+<span class="inserted"><ins><em>&lt;p&gt;In addition to being nonfree, many of 
these programs are malware
+because
+they &lt;a 
href="http://github.com/w3c/fingerprinting-guidance/issues/8"&gt;snoop
+on the user&lt;/a&gt;.&lt;/p&gt;</em></ins></span>
+
+&lt;p&gt;Browsers don't normally tell you when they load JavaScript
+programs.  Some browsers have a way to turn off JavaScript entirely,
+but even if you're aware of this issue, it would take you considerable
+trouble to identify the nontrivial nonfree programs and block them.
+However, even in the free software community most users are not aware
+of this issue; the browsers' silence tends to conceal it.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;In the usual case, JavaScript programs are meant 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
+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.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;Java applets also run in the browser, and raise similar issues.  In
+general, any sort of applet system poses this sort of problem.  Having
+a free execution environment for an applet only brings us far enough
+to encounter the problem.&lt;/p&gt;
+
+&lt;p&gt;It is theoretically possible to program in HTML and CSS, but in
+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.&lt;/p&gt;
+
+&lt;p&gt;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
+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 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.&lt;/p&gt;
+
+&lt;p&gt;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
+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
+refer to a specialized client program that works hand in hand with
+specialized server software.  The client and server sides raise
+different ethical issues, even if they are so closely integrated that
+they arguably form parts of a single program.  This article addresses
+only the issue of the client-side software.  We are addressing the
+server issue separately.&lt;/p&gt;
+
+&lt;p&gt;In practical terms, how can we deal with the problem of nonfree
+JavaScript programs in web sites?  The first step is to avoid running
+it.&lt;/p&gt;
+
+&lt;p&gt;What do we mean by &quot;nontrivial&quot;?  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.&lt;/p&gt;
+&lt;p&gt;
+Our tentative policy is to consider a JavaScript program nontrivial 
if:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;it makes an AJAX request or is loaded along with scripts that make
+    an AJAX request,&lt;/li&gt;
+
+  &lt;li&gt;it loads external scripts dynamically or is loaded along with
+    scripts that do,&lt;/li&gt;
+
+  &lt;li&gt;it defines functions or methods and either loads an external script
+    (from html) or is loaded as one,&lt;/li&gt;
+  
+  &lt;li&gt;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:
+    &lt;ul&gt;
+      &lt;li&gt;using the eval function,&lt;/li&gt;
+      &lt;li&gt;calling methods with the square bracket notation,&lt;/li&gt;
+      &lt;li&gt;using any other construct than a string literal with
+       certain methods (Obj.write, Obj.createElement, ...).&lt;/li&gt;
+    &lt;/ul&gt;
+  &lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;How do we tell whether the JavaScript code is free?  At the end of
+this article we propose a convention by which a nontrivial JavaScript
+program in a web page can state the URL where its source code is
+located, and can state its license too, using stylized comments.&lt;/p&gt;
+
+&lt;p&gt;Finally, we need to change free browsers to detect and block
+nontrivial nonfree JavaScript in web pages.  The program
+&lt;a href="/software/librejs/"&gt;LibreJS&lt;/a&gt; detects nonfree,
+nontrivial JavaScript in pages you visit, and blocks it.  LibreJS is
+<span class="inserted"><ins><em>included in IceCat, and available 
as</em></ins></span> an add-on for <span class="removed"><del><strong>IceCat 
and IceWeasel (and Firefox).&lt;/p&gt;</strong></del></span> <span 
class="inserted"><ins><em>Firefox.&lt;/p&gt;</em></ins></span>
+
+&lt;p&gt;Browser users also need a convenient facility to specify JavaScript
+code to use &lt;em&gt;instead&lt;/em&gt; of the JavaScript in a certain page.
+(The specified code might be total replacement, or a modified version
+of the free JavaScript program in that page.)  Greasemonkey comes close
+to being able to do this, but not quite, since it doesn't guarantee to
+modify the JavaScript code in a page before that program starts to
+execute.  Using a local proxy works, but is too inconvenient now to be
+a real solution.  We need to construct a solution that is reliable and
+convenient, as well as sites for sharing changes.  The GNU Project
+would like to recommend sites which are dedicated to free changes
+only.&lt;/p&gt;
+
+&lt;p&gt;These features will make it possible for a JavaScript program included
+in a web page to be free in a real and practical sense.  JavaScript
+will no longer be a particular obstacle to our freedom&mdash;no more than
+C and Java are now.  We will be able to reject and even replace the
+nonfree nontrivial JavaScript programs, just as we reject and replace
+nonfree packages that are offered for installation in the usual way.
+Our campaign for web sites to free their JavaScript can then begin.&lt;/p&gt;
+
+&lt;p&gt;In the mean time, there's one case where it is acceptable to run a
+nonfree JavaScript program: to send a complaint to the website
+operators saying they should free or remove the JavaScript code in the
+site.  Please don't hesitate to enable JavaScript temporarily to do
+that&mdash;but remember to disable it again afterwards.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Thank you to &lt;a 
href="/people/people.html#mattlee"&gt;Matt Lee&lt;/a&gt;
+and &lt;a href="http://ejohn.org"&gt;John Resig&lt;/a&gt; for their help in
+defining our proposed criterion, and to David Parunakian for
+helping to make me aware of the problem.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;h3 id="AppendixA"&gt;Appendix A: a convention for releasing free 
JavaScript programs&lt;/h3&gt;
+
+&lt;p&gt;For references to corresponding source code, we recommend&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+
+    // @source:
+
+&lt;/pre&gt;
+
+&lt;p&gt;followed by the URL.  This satisfies the GNU GPL's requirement to
+distribute source code.  If the source is on a different site, you
+must take care
+to &lt;a href="/licenses/gpl-faq.html#SourceAndBinaryOnDifferentSites"&gt;
+handle that properly&lt;/a&gt;.  Source code is necessary for the program to
+be free.
+&lt;/p&gt;
+
+&lt;p&gt;To indicate the license of the JavaScript code embedded in a page, we
+recommend putting the license notice between two notes of this form:&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+&lt;!--TRANSLATORS: Do not translate these license notices.  The &lt;pre&gt;
+    elements have dir="ltr" explicitly set to cater for RTL languages.--&gt;
+    @licstart  The following is the entire license notice for the 
+    JavaScript code in this page.
+    ...
+    @licend  The above is the entire license notice
+    for the JavaScript code in this page.
+
+&lt;/pre&gt;
+&lt;p&gt;Of course, all of this should be contained in a multiline 
comment.&lt;/p&gt;
+
+&lt;p&gt;The &lt;a href="/licenses/gpl.html"&gt;GNU GPL&lt;/a&gt;, like many 
other free
+software licenses, requires distribution of a copy of the license with
+both source and binary forms of the program.  However, the GNU GPL is
+long enough that including it in a page with a JavaScript program can
+be inconvenient.  You can remove that requirement, for code that you
+have the copyright on, with a license notice like this:&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+
+    Copyright (C) YYYY  Developer
+
+    The JavaScript code in this page is free software: you can
+    redistribute it and/or modify it under the terms of the GNU
+    General Public License (GNU GPL) as published by the Free Software
+    Foundation, either version 3 of the License, or (at your option)
+    any later version.  The code is distributed WITHOUT ANY WARRANTY;
+    without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
+
+    As additional permission under GNU GPL version 3 section 7, you
+    may distribute non-source (e.g., minimized or compacted) forms of
+    that code without the copy of the GNU GPL normally required by
+    section 4, provided you include this license notice and a URL
+    through which recipients can access the Corresponding Source.
+
+&lt;/pre&gt;
+
+&lt;p&gt;I thank Jaffar Rumith for bringing this issue to my 
attention.&lt;/p&gt;
+
+&lt;h3 id="AppendixB"&gt;Appendix B: Publishing free JavaScript programs as
+  a webmaster&lt;/h3&gt;
+
+&lt;p&gt;If you're a webmaster deploying free JavaScript software
+  on your site, clearly and consistently publishing information about
+  those files' licenses and source code helps your visitors make
+  sure that they're running free software, and help you comply with
+  license conditions.&lt;/p&gt;
+
+&lt;p&gt;One method of stating the licenses is the one described above in
+  &lt;a href="#AppendixA"&gt;Appendix A&lt;/a&gt;.  A second
+  method, &lt;a href="/licenses/javascript-labels.html"&gt; JavaScript
+  license web labels&lt;/a&gt;, can be more convenient for libraries of
+  minified JavaScript code, especially when you didn't write them.&lt;/p&gt;
+
+&lt;/div&gt;&lt;!-- for id="content", starts in the include above --&gt;
+&lt;!--#include virtual="/server/footer.html" --&gt;
+&lt;div id="footer"&gt;
+&lt;div class="unprintable"&gt;
+
+&lt;p&gt;Please send general FSF &amp; GNU inquiries to
+&lt;a href="mailto:address@hidden"&gt;&lt;address@hidden&gt;&lt;/a&gt;.
+There are also &lt;a href="/contact/"&gt;other ways to contact&lt;/a&gt;
+the FSF.  Broken links and other corrections or suggestions can be sent
+to &lt;a 
href="mailto:address@hidden"&gt;&lt;address@hidden&gt;&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;!-- 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 &lt;a href="mailto:address@hidden"&gt;
+        &lt;address@hidden&gt;&lt;/a&gt;.&lt;/p&gt;
+
+        &lt;p&gt;For information on coordinating and submitting translations of
+        our web pages, see &lt;a
+        href="/server/standards/README.translations.html"&gt;Translations
+        README&lt;/a&gt;. --&gt;
+Please see the &lt;a
+href="/server/standards/README.translations.html"&gt;Translations
+README&lt;/a&gt; for information on coordinating and submitting translations
+of this article.&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;!-- 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. --&gt;
+
+&lt;p&gt;Copyright &copy; 2009-2013, 2016 Richard Stallman&lt;/p&gt;
+
+&lt;p&gt;This page is licensed under a &lt;a rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/"&gt;Creative
+Commons Attribution-NoDerivatives 4.0 International 
License&lt;/a&gt;.&lt;/p&gt;
+
+&lt;!--#include virtual="/server/bottom-notes.html" --&gt;
+
+&lt;p class="unprintable"&gt;Updated:
+&lt;!-- timestamp start --&gt;
+$Date: 2016/05/26 22:28:56 $
+&lt;!-- timestamp end --&gt;
+&lt;/p&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></body></html>

Index: po/javascript-trap.nl-diff.html
===================================================================
RCS file: po/javascript-trap.nl-diff.html
diff -N po/javascript-trap.nl-diff.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ po/javascript-trap.nl-diff.html     26 May 2016 22:28:56 -0000      1.1
@@ -0,0 +1,338 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<!-- Generated by GNUN -->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>/philosophy/javascript-trap.html-diff</title>
+<style type="text/css">
+span.removed { background-color: #f22; color: #000; }
+span.inserted { background-color: #2f2; color: #000; }
+</style></head>
+<body><pre>
+&lt;!--#include virtual="/server/header.html" --&gt;
+&lt;!-- Parent-Version: 1.77 --&gt;
+&lt;title&gt;The JavaScript Trap&lt;/title&gt;
+&lt;!--#include virtual="/philosophy/po/javascript-trap.translist" --&gt;
+&lt;!--#include virtual="/server/banner.html" --&gt;
+
+&lt;h2&gt;The JavaScript Trap&lt;/h2&gt;
+
+&lt;p&gt;by &lt;a href="http://www.stallman.org/"&gt;Richard 
Stallman&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;You may be running nonfree programs on your computer 
every
+day without realizing it&mdash;through your web 
browser.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;In the free software community, the idea that nonfree programs
+mistreat their users is familiar.  Some of us refuse entirely to
+install proprietary software, and many others consider nonfreedom a
+strike against the program.  Many users are aware that this issue
+applies to the plug-ins that browsers offer to install, since they can
+be free or nonfree.&lt;/p&gt;
+
+&lt;p&gt;But browsers run other nonfree programs which they don't ask you
+about or even tell you about&mdash;programs that web pages contain or
+link to.  These programs are most often written in JavaScript, though
+other languages are also used.&lt;/p&gt;
+
+&lt;p&gt;JavaScript (officially called ECMAScript, but few use that name) was
+once used for minor frills in web pages, such as cute but inessential
+navigation and display features.  It was acceptable to consider these
+as mere extensions of HTML markup, rather than as true software; they
+did not constitute a significant issue.&lt;/p&gt;
+
+&lt;p&gt;Many sites still use JavaScript that way, but some 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.&lt;/p&gt;
+
+<span class="inserted"><ins><em>&lt;p&gt;In addition to being nonfree, many of 
these programs are malware
+because
+they &lt;a 
href="http://github.com/w3c/fingerprinting-guidance/issues/8"&gt;snoop
+on the user&lt;/a&gt;.&lt;/p&gt;</em></ins></span>
+
+&lt;p&gt;Browsers don't normally tell you when they load JavaScript
+programs.  Some browsers have a way to turn off JavaScript entirely,
+but even if you're aware of this issue, it would take you considerable
+trouble to identify the nontrivial nonfree programs and block them.
+However, even in the free software community most users are not aware
+of this issue; the browsers' silence tends to conceal it.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;In the usual case, JavaScript programs are meant 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
+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.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;Java applets also run in the browser, and raise similar issues.  In
+general, any sort of applet system poses this sort of problem.  Having
+a free execution environment for an applet only brings us far enough
+to encounter the problem.&lt;/p&gt;
+
+&lt;p&gt;It is theoretically possible to program in HTML and CSS, but in
+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.&lt;/p&gt;
+
+&lt;p&gt;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
+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 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.&lt;/p&gt;
+
+&lt;p&gt;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
+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
+refer to a specialized client program that works hand in hand with
+specialized server software.  The client and server sides raise
+different ethical issues, even if they are so closely integrated that
+they arguably form parts of a single program.  This article addresses
+only the issue of the client-side software.  We are addressing the
+server issue separately.&lt;/p&gt;
+
+&lt;p&gt;In practical terms, how can we deal with the problem of nonfree
+JavaScript programs in web sites?  The first step is to avoid running
+it.&lt;/p&gt;
+
+&lt;p&gt;What do we mean by &quot;nontrivial&quot;?  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.&lt;/p&gt;
+&lt;p&gt;
+Our tentative policy is to consider a JavaScript program nontrivial 
if:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;it makes an AJAX request or is loaded along with scripts that make
+    an AJAX request,&lt;/li&gt;
+
+  &lt;li&gt;it loads external scripts dynamically or is loaded along with
+    scripts that do,&lt;/li&gt;
+
+  &lt;li&gt;it defines functions or methods and either loads an external script
+    (from html) or is loaded as one,&lt;/li&gt;
+  
+  &lt;li&gt;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:
+    &lt;ul&gt;
+      &lt;li&gt;using the eval function,&lt;/li&gt;
+      &lt;li&gt;calling methods with the square bracket notation,&lt;/li&gt;
+      &lt;li&gt;using any other construct than a string literal with
+       certain methods (Obj.write, Obj.createElement, ...).&lt;/li&gt;
+    &lt;/ul&gt;
+  &lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;How do we tell whether the JavaScript code is free?  At the end of
+this article we propose a convention by which a nontrivial JavaScript
+program in a web page can state the URL where its source code is
+located, and can state its license too, using stylized comments.&lt;/p&gt;
+
+&lt;p&gt;Finally, we need to change free browsers to detect and block
+nontrivial nonfree JavaScript in web pages.  The program
+&lt;a href="/software/librejs/"&gt;LibreJS&lt;/a&gt; detects nonfree,
+nontrivial JavaScript in pages you visit, and blocks it.  LibreJS is
+<span class="inserted"><ins><em>included in IceCat, and available 
as</em></ins></span> an add-on for <span class="removed"><del><strong>IceCat 
and IceWeasel (and Firefox).&lt;/p&gt;</strong></del></span> <span 
class="inserted"><ins><em>Firefox.&lt;/p&gt;</em></ins></span>
+
+&lt;p&gt;Browser users also need a convenient facility to specify JavaScript
+code to use &lt;em&gt;instead&lt;/em&gt; of the JavaScript in a certain page.
+(The specified code might be total replacement, or a modified version
+of the free JavaScript program in that page.)  Greasemonkey comes close
+to being able to do this, but not quite, since it doesn't guarantee to
+modify the JavaScript code in a page before that program starts to
+execute.  Using a local proxy works, but is too inconvenient now to be
+a real solution.  We need to construct a solution that is reliable and
+convenient, as well as sites for sharing changes.  The GNU Project
+would like to recommend sites which are dedicated to free changes
+only.&lt;/p&gt;
+
+&lt;p&gt;These features will make it possible for a JavaScript program included
+in a web page to be free in a real and practical sense.  JavaScript
+will no longer be a particular obstacle to our freedom&mdash;no more than
+C and Java are now.  We will be able to reject and even replace the
+nonfree nontrivial JavaScript programs, just as we reject and replace
+nonfree packages that are offered for installation in the usual way.
+Our campaign for web sites to free their JavaScript can then begin.&lt;/p&gt;
+
+&lt;p&gt;In the mean time, there's one case where it is acceptable to run a
+nonfree JavaScript program: to send a complaint to the website
+operators saying they should free or remove the JavaScript code in the
+site.  Please don't hesitate to enable JavaScript temporarily to do
+that&mdash;but remember to disable it again afterwards.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Thank you to &lt;a 
href="/people/people.html#mattlee"&gt;Matt Lee&lt;/a&gt;
+and &lt;a href="http://ejohn.org"&gt;John Resig&lt;/a&gt; for their help in
+defining our proposed criterion, and to David Parunakian for
+helping to make me aware of the problem.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;h3 id="AppendixA"&gt;Appendix A: a convention for releasing free 
JavaScript programs&lt;/h3&gt;
+
+&lt;p&gt;For references to corresponding source code, we recommend&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+
+    // @source:
+
+&lt;/pre&gt;
+
+&lt;p&gt;followed by the URL.  This satisfies the GNU GPL's requirement to
+distribute source code.  If the source is on a different site, you
+must take care
+to &lt;a href="/licenses/gpl-faq.html#SourceAndBinaryOnDifferentSites"&gt;
+handle that properly&lt;/a&gt;.  Source code is necessary for the program to
+be free.
+&lt;/p&gt;
+
+&lt;p&gt;To indicate the license of the JavaScript code embedded in a page, we
+recommend putting the license notice between two notes of this form:&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+&lt;!--TRANSLATORS: Do not translate these license notices.  The &lt;pre&gt;
+    elements have dir="ltr" explicitly set to cater for RTL languages.--&gt;
+    @licstart  The following is the entire license notice for the 
+    JavaScript code in this page.
+    ...
+    @licend  The above is the entire license notice
+    for the JavaScript code in this page.
+
+&lt;/pre&gt;
+&lt;p&gt;Of course, all of this should be contained in a multiline 
comment.&lt;/p&gt;
+
+&lt;p&gt;The &lt;a href="/licenses/gpl.html"&gt;GNU GPL&lt;/a&gt;, like many 
other free
+software licenses, requires distribution of a copy of the license with
+both source and binary forms of the program.  However, the GNU GPL is
+long enough that including it in a page with a JavaScript program can
+be inconvenient.  You can remove that requirement, for code that you
+have the copyright on, with a license notice like this:&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+
+    Copyright (C) YYYY  Developer
+
+    The JavaScript code in this page is free software: you can
+    redistribute it and/or modify it under the terms of the GNU
+    General Public License (GNU GPL) as published by the Free Software
+    Foundation, either version 3 of the License, or (at your option)
+    any later version.  The code is distributed WITHOUT ANY WARRANTY;
+    without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
+
+    As additional permission under GNU GPL version 3 section 7, you
+    may distribute non-source (e.g., minimized or compacted) forms of
+    that code without the copy of the GNU GPL normally required by
+    section 4, provided you include this license notice and a URL
+    through which recipients can access the Corresponding Source.
+
+&lt;/pre&gt;
+
+&lt;p&gt;I thank Jaffar Rumith for bringing this issue to my 
attention.&lt;/p&gt;
+
+&lt;h3 id="AppendixB"&gt;Appendix B: Publishing free JavaScript programs as
+  a webmaster&lt;/h3&gt;
+
+&lt;p&gt;If you're a webmaster deploying free JavaScript software
+  on your site, clearly and consistently publishing information about
+  those files' licenses and source code helps your visitors make
+  sure that they're running free software, and help you comply with
+  license conditions.&lt;/p&gt;
+
+&lt;p&gt;One method of stating the licenses is the one described above in
+  &lt;a href="#AppendixA"&gt;Appendix A&lt;/a&gt;.  A second
+  method, &lt;a href="/licenses/javascript-labels.html"&gt; JavaScript
+  license web labels&lt;/a&gt;, can be more convenient for libraries of
+  minified JavaScript code, especially when you didn't write them.&lt;/p&gt;
+
+&lt;/div&gt;&lt;!-- for id="content", starts in the include above --&gt;
+&lt;!--#include virtual="/server/footer.html" --&gt;
+&lt;div id="footer"&gt;
+&lt;div class="unprintable"&gt;
+
+&lt;p&gt;Please send general FSF &amp; GNU inquiries to
+&lt;a href="mailto:address@hidden"&gt;&lt;address@hidden&gt;&lt;/a&gt;.
+There are also &lt;a href="/contact/"&gt;other ways to contact&lt;/a&gt;
+the FSF.  Broken links and other corrections or suggestions can be sent
+to &lt;a 
href="mailto:address@hidden"&gt;&lt;address@hidden&gt;&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;!-- 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 &lt;a href="mailto:address@hidden"&gt;
+        &lt;address@hidden&gt;&lt;/a&gt;.&lt;/p&gt;
+
+        &lt;p&gt;For information on coordinating and submitting translations of
+        our web pages, see &lt;a
+        href="/server/standards/README.translations.html"&gt;Translations
+        README&lt;/a&gt;. --&gt;
+Please see the &lt;a
+href="/server/standards/README.translations.html"&gt;Translations
+README&lt;/a&gt; for information on coordinating and submitting translations
+of this article.&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;!-- 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. --&gt;
+
+&lt;p&gt;Copyright &copy; 2009-2013, 2016 Richard Stallman&lt;/p&gt;
+
+&lt;p&gt;This page is licensed under a &lt;a rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/"&gt;Creative
+Commons Attribution-NoDerivatives 4.0 International 
License&lt;/a&gt;.&lt;/p&gt;
+
+&lt;!--#include virtual="/server/bottom-notes.html" --&gt;
+
+&lt;p class="unprintable"&gt;Updated:
+&lt;!-- timestamp start --&gt;
+$Date: 2016/05/26 22:28:56 $
+&lt;!-- timestamp end --&gt;
+&lt;/p&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></body></html>

Index: po/javascript-trap.pl-diff.html
===================================================================
RCS file: po/javascript-trap.pl-diff.html
diff -N po/javascript-trap.pl-diff.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ po/javascript-trap.pl-diff.html     26 May 2016 22:28:56 -0000      1.1
@@ -0,0 +1,338 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<!-- Generated by GNUN -->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>/philosophy/javascript-trap.html-diff</title>
+<style type="text/css">
+span.removed { background-color: #f22; color: #000; }
+span.inserted { background-color: #2f2; color: #000; }
+</style></head>
+<body><pre>
+&lt;!--#include virtual="/server/header.html" --&gt;
+&lt;!-- Parent-Version: 1.77 --&gt;
+&lt;title&gt;The JavaScript Trap&lt;/title&gt;
+&lt;!--#include virtual="/philosophy/po/javascript-trap.translist" --&gt;
+&lt;!--#include virtual="/server/banner.html" --&gt;
+
+&lt;h2&gt;The JavaScript Trap&lt;/h2&gt;
+
+&lt;p&gt;by &lt;a href="http://www.stallman.org/"&gt;Richard 
Stallman&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;You may be running nonfree programs on your computer 
every
+day without realizing it&mdash;through your web 
browser.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;In the free software community, the idea that nonfree programs
+mistreat their users is familiar.  Some of us refuse entirely to
+install proprietary software, and many others consider nonfreedom a
+strike against the program.  Many users are aware that this issue
+applies to the plug-ins that browsers offer to install, since they can
+be free or nonfree.&lt;/p&gt;
+
+&lt;p&gt;But browsers run other nonfree programs which they don't ask you
+about or even tell you about&mdash;programs that web pages contain or
+link to.  These programs are most often written in JavaScript, though
+other languages are also used.&lt;/p&gt;
+
+&lt;p&gt;JavaScript (officially called ECMAScript, but few use that name) was
+once used for minor frills in web pages, such as cute but inessential
+navigation and display features.  It was acceptable to consider these
+as mere extensions of HTML markup, rather than as true software; they
+did not constitute a significant issue.&lt;/p&gt;
+
+&lt;p&gt;Many sites still use JavaScript that way, but some 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.&lt;/p&gt;
+
+<span class="inserted"><ins><em>&lt;p&gt;In addition to being nonfree, many of 
these programs are malware
+because
+they &lt;a 
href="http://github.com/w3c/fingerprinting-guidance/issues/8"&gt;snoop
+on the user&lt;/a&gt;.&lt;/p&gt;</em></ins></span>
+
+&lt;p&gt;Browsers don't normally tell you when they load JavaScript
+programs.  Some browsers have a way to turn off JavaScript entirely,
+but even if you're aware of this issue, it would take you considerable
+trouble to identify the nontrivial nonfree programs and block them.
+However, even in the free software community most users are not aware
+of this issue; the browsers' silence tends to conceal it.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;In the usual case, JavaScript programs are meant 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
+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.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;Java applets also run in the browser, and raise similar issues.  In
+general, any sort of applet system poses this sort of problem.  Having
+a free execution environment for an applet only brings us far enough
+to encounter the problem.&lt;/p&gt;
+
+&lt;p&gt;It is theoretically possible to program in HTML and CSS, but in
+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.&lt;/p&gt;
+
+&lt;p&gt;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
+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 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.&lt;/p&gt;
+
+&lt;p&gt;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
+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
+refer to a specialized client program that works hand in hand with
+specialized server software.  The client and server sides raise
+different ethical issues, even if they are so closely integrated that
+they arguably form parts of a single program.  This article addresses
+only the issue of the client-side software.  We are addressing the
+server issue separately.&lt;/p&gt;
+
+&lt;p&gt;In practical terms, how can we deal with the problem of nonfree
+JavaScript programs in web sites?  The first step is to avoid running
+it.&lt;/p&gt;
+
+&lt;p&gt;What do we mean by &quot;nontrivial&quot;?  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.&lt;/p&gt;
+&lt;p&gt;
+Our tentative policy is to consider a JavaScript program nontrivial 
if:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;it makes an AJAX request or is loaded along with scripts that make
+    an AJAX request,&lt;/li&gt;
+
+  &lt;li&gt;it loads external scripts dynamically or is loaded along with
+    scripts that do,&lt;/li&gt;
+
+  &lt;li&gt;it defines functions or methods and either loads an external script
+    (from html) or is loaded as one,&lt;/li&gt;
+  
+  &lt;li&gt;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:
+    &lt;ul&gt;
+      &lt;li&gt;using the eval function,&lt;/li&gt;
+      &lt;li&gt;calling methods with the square bracket notation,&lt;/li&gt;
+      &lt;li&gt;using any other construct than a string literal with
+       certain methods (Obj.write, Obj.createElement, ...).&lt;/li&gt;
+    &lt;/ul&gt;
+  &lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;How do we tell whether the JavaScript code is free?  At the end of
+this article we propose a convention by which a nontrivial JavaScript
+program in a web page can state the URL where its source code is
+located, and can state its license too, using stylized comments.&lt;/p&gt;
+
+&lt;p&gt;Finally, we need to change free browsers to detect and block
+nontrivial nonfree JavaScript in web pages.  The program
+&lt;a href="/software/librejs/"&gt;LibreJS&lt;/a&gt; detects nonfree,
+nontrivial JavaScript in pages you visit, and blocks it.  LibreJS is
+<span class="inserted"><ins><em>included in IceCat, and available 
as</em></ins></span> an add-on for <span class="removed"><del><strong>IceCat 
and IceWeasel (and Firefox).&lt;/p&gt;</strong></del></span> <span 
class="inserted"><ins><em>Firefox.&lt;/p&gt;</em></ins></span>
+
+&lt;p&gt;Browser users also need a convenient facility to specify JavaScript
+code to use &lt;em&gt;instead&lt;/em&gt; of the JavaScript in a certain page.
+(The specified code might be total replacement, or a modified version
+of the free JavaScript program in that page.)  Greasemonkey comes close
+to being able to do this, but not quite, since it doesn't guarantee to
+modify the JavaScript code in a page before that program starts to
+execute.  Using a local proxy works, but is too inconvenient now to be
+a real solution.  We need to construct a solution that is reliable and
+convenient, as well as sites for sharing changes.  The GNU Project
+would like to recommend sites which are dedicated to free changes
+only.&lt;/p&gt;
+
+&lt;p&gt;These features will make it possible for a JavaScript program included
+in a web page to be free in a real and practical sense.  JavaScript
+will no longer be a particular obstacle to our freedom&mdash;no more than
+C and Java are now.  We will be able to reject and even replace the
+nonfree nontrivial JavaScript programs, just as we reject and replace
+nonfree packages that are offered for installation in the usual way.
+Our campaign for web sites to free their JavaScript can then begin.&lt;/p&gt;
+
+&lt;p&gt;In the mean time, there's one case where it is acceptable to run a
+nonfree JavaScript program: to send a complaint to the website
+operators saying they should free or remove the JavaScript code in the
+site.  Please don't hesitate to enable JavaScript temporarily to do
+that&mdash;but remember to disable it again afterwards.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Thank you to &lt;a 
href="/people/people.html#mattlee"&gt;Matt Lee&lt;/a&gt;
+and &lt;a href="http://ejohn.org"&gt;John Resig&lt;/a&gt; for their help in
+defining our proposed criterion, and to David Parunakian for
+helping to make me aware of the problem.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;h3 id="AppendixA"&gt;Appendix A: a convention for releasing free 
JavaScript programs&lt;/h3&gt;
+
+&lt;p&gt;For references to corresponding source code, we recommend&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+
+    // @source:
+
+&lt;/pre&gt;
+
+&lt;p&gt;followed by the URL.  This satisfies the GNU GPL's requirement to
+distribute source code.  If the source is on a different site, you
+must take care
+to &lt;a href="/licenses/gpl-faq.html#SourceAndBinaryOnDifferentSites"&gt;
+handle that properly&lt;/a&gt;.  Source code is necessary for the program to
+be free.
+&lt;/p&gt;
+
+&lt;p&gt;To indicate the license of the JavaScript code embedded in a page, we
+recommend putting the license notice between two notes of this form:&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+&lt;!--TRANSLATORS: Do not translate these license notices.  The &lt;pre&gt;
+    elements have dir="ltr" explicitly set to cater for RTL languages.--&gt;
+    @licstart  The following is the entire license notice for the 
+    JavaScript code in this page.
+    ...
+    @licend  The above is the entire license notice
+    for the JavaScript code in this page.
+
+&lt;/pre&gt;
+&lt;p&gt;Of course, all of this should be contained in a multiline 
comment.&lt;/p&gt;
+
+&lt;p&gt;The &lt;a href="/licenses/gpl.html"&gt;GNU GPL&lt;/a&gt;, like many 
other free
+software licenses, requires distribution of a copy of the license with
+both source and binary forms of the program.  However, the GNU GPL is
+long enough that including it in a page with a JavaScript program can
+be inconvenient.  You can remove that requirement, for code that you
+have the copyright on, with a license notice like this:&lt;/p&gt;
+&lt;pre dir="ltr"&gt;
+
+    Copyright (C) YYYY  Developer
+
+    The JavaScript code in this page is free software: you can
+    redistribute it and/or modify it under the terms of the GNU
+    General Public License (GNU GPL) as published by the Free Software
+    Foundation, either version 3 of the License, or (at your option)
+    any later version.  The code is distributed WITHOUT ANY WARRANTY;
+    without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
+
+    As additional permission under GNU GPL version 3 section 7, you
+    may distribute non-source (e.g., minimized or compacted) forms of
+    that code without the copy of the GNU GPL normally required by
+    section 4, provided you include this license notice and a URL
+    through which recipients can access the Corresponding Source.
+
+&lt;/pre&gt;
+
+&lt;p&gt;I thank Jaffar Rumith for bringing this issue to my 
attention.&lt;/p&gt;
+
+&lt;h3 id="AppendixB"&gt;Appendix B: Publishing free JavaScript programs as
+  a webmaster&lt;/h3&gt;
+
+&lt;p&gt;If you're a webmaster deploying free JavaScript software
+  on your site, clearly and consistently publishing information about
+  those files' licenses and source code helps your visitors make
+  sure that they're running free software, and help you comply with
+  license conditions.&lt;/p&gt;
+
+&lt;p&gt;One method of stating the licenses is the one described above in
+  &lt;a href="#AppendixA"&gt;Appendix A&lt;/a&gt;.  A second
+  method, &lt;a href="/licenses/javascript-labels.html"&gt; JavaScript
+  license web labels&lt;/a&gt;, can be more convenient for libraries of
+  minified JavaScript code, especially when you didn't write them.&lt;/p&gt;
+
+&lt;/div&gt;&lt;!-- for id="content", starts in the include above --&gt;
+&lt;!--#include virtual="/server/footer.html" --&gt;
+&lt;div id="footer"&gt;
+&lt;div class="unprintable"&gt;
+
+&lt;p&gt;Please send general FSF &amp; GNU inquiries to
+&lt;a href="mailto:address@hidden"&gt;&lt;address@hidden&gt;&lt;/a&gt;.
+There are also &lt;a href="/contact/"&gt;other ways to contact&lt;/a&gt;
+the FSF.  Broken links and other corrections or suggestions can be sent
+to &lt;a 
href="mailto:address@hidden"&gt;&lt;address@hidden&gt;&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;!-- 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 &lt;a href="mailto:address@hidden"&gt;
+        &lt;address@hidden&gt;&lt;/a&gt;.&lt;/p&gt;
+
+        &lt;p&gt;For information on coordinating and submitting translations of
+        our web pages, see &lt;a
+        href="/server/standards/README.translations.html"&gt;Translations
+        README&lt;/a&gt;. --&gt;
+Please see the &lt;a
+href="/server/standards/README.translations.html"&gt;Translations
+README&lt;/a&gt; for information on coordinating and submitting translations
+of this article.&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;!-- 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. --&gt;
+
+&lt;p&gt;Copyright &copy; 2009-2013, 2016 Richard Stallman&lt;/p&gt;
+
+&lt;p&gt;This page is licensed under a &lt;a rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/"&gt;Creative
+Commons Attribution-NoDerivatives 4.0 International 
License&lt;/a&gt;.&lt;/p&gt;
+
+&lt;!--#include virtual="/server/bottom-notes.html" --&gt;
+
+&lt;p class="unprintable"&gt;Updated:
+&lt;!-- timestamp start --&gt;
+$Date: 2016/05/26 22:28:56 $
+&lt;!-- timestamp end --&gt;
+&lt;/p&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></body></html>



reply via email to

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