Ticket #5502: librejs.info

File librejs.info, 41.5 KB (added by Andreas Nilsson, 5 years ago)


1This is librejs.info, produced by makeinfo version 5.2 from man.texi.
3This manual is for GNU LibreJS (version 7.2, 10 February 2018), a GNU
4IceCat extension to detect and block nonfree nontrivial JavaScript on
7 Copyright (C) 2011 2012 2014 2015 Loic J. Duros
9 Permission is granted to copy, distribute and/or modify this
10 document under the terms of the GNU Free Documentation License,
11 Version 1.3 or any later version published by the Free Software
12 Foundation; with no Invariant Sections, with no Front-Cover Texts,
13 and with no Back-Cover Texts. A copy of the license is included in
14 the section entitled "GNU Free Documentation License".
17* LibreJS: (librejs). Detect nonfree nontrivial in GNU Icecat
21File: librejs.info, Node: Top, Next: Overview, Up: (dir)
26This manual is for GNU LibreJS (version 7.2, 10 February 2018).
28* Menu:
30* Overview:: General purpose and information.
31* Disclaimer:: Emphasize what LibreJS does and does not.
32* Installation:: Installing LibreJS from source.
33* How to Use:: How to use LibreJS in IceCat.
34* JavaScript Detection:: How LibreJS detects nontrivial Javascript.
35* Free Licenses Detection:: List of licenses detected by LibreJS.
36* Setting Your JavaScript Free:: Information for website owners/maintainers.
37* LibreJS Development Notes:: Documentation about the development of
38 LibreJS itself.
39* Installation Requirements:: Requirements to build and install LibreJS.
40* LibreJS Internals:: How LibreJS works under the hood.
41* GNU Free Documentation License:: Copying and sharing this documentation.
51File: librejs.info, Node: Overview, Next: Disclaimer, Prev: Top, Up: Top
531 Overview
56GNU LibreJS --an add-on for GNU IceCat and Mozilla Firefox-- detects and
57blocks nonfree nontrivial JavaScript while allowing its execution on
58pages containing code that is either trivial and/or free.
60 Many websites run nontrivial JavaScript on your computer. Some use
61it for complex tasks; many use it gratuitously for minor jobs that could
62be done easily with plain HTML. Sometimes this JavaScript code is
63malicious. Either way, the JavaScript code is often nonfree. For
64explanation of the issue, see "The JavaScript
67 If you care about freedom in your computing, and don't wish to let
68all and sundry make you run nonfree programs, now you can prevent it by
69using LibreJS.
72File: librejs.info, Node: Disclaimer, Next: Installation, Prev: Overview, Up: Top
742 Disclaimer
77 * LibreJS is not a security tool. Its goal is to detect nonfree
78 nontrivial JavaScript, and it currently does not detect whether
79 free or trivial code is malicious or not. Other free Mozilla
80 extensions and add-ons may be available for this purpose.
82 * LibreJS is always a work in progress. If you find a bug, please
83 report it to <bug-librejs@gnu.org>.
86File: librejs.info, Node: Installation, Next: How to Use, Prev: Disclaimer, Up: Top
883 Installation
91You can install LibreJS directly using a generated 'librejs.xpi' file,
92or by building it from source.
94 You can also download it from Mozilla, but due to Mozilla's review
95process the download isn't always up to date.
98File: librejs.info, Node: How to Use, Next: JavaScript Detection, Prev: Installation, Up: Top
1004 How to Use
1034.1 LibreJS in action
106After installing the add-on, you will see the LibreJS widget in the
107add-on bar at the top right of the browser window. After loading a
108page, left-click on the widget to view the deactivated JavaScript code
109from the page (both on page and external) and, if applicable, the
110scripts that were accepted.
1124.2 Script Blacklist/whitelist
115Scripts may be blacklisted or whitelisted through the pop-up menu box.
117 Whitelisted scripts will always be accepted and blacklisted scripts
118will always get rejected.
120 It is important to note that this feature recognizes which scripts
121are blacklisted and whitelisted based on hash. This means that even a
122slight difference in a script's code will cause it to be recognized as a
123seperate script.
125 Sometimes, JavaScript will be dynamically generated so that it is
126different every time a website is loaded. These types of scripts cannot
127be whitelisted or blacklisted since they cannot be recognized.
129 LibreJS has a default whitelist of scripts that are known to be free
130but may not use the format for declaring a license that it can
1334.3 Complaint Feature
136It is very important to complain when a site has nonfree JavaScript
137code, especially if it won't work without that code. LibreJS makes it
138easy to complain by heuristically finding where to send the complaint.
140 When nonfree/nontrivial code is detected in a page, LibreJS attempts
141to find a relevant contact link or email for the website you are
142visiting. In order to do so, it will attempt to visit a few links from
143the current page (for instance, a link labeled "contact" on the same
144domain as the current page, ...)
146 LibreJS detects contact pages, email addresses that are likely to be
147owned by the maintainer of the site, Twitter and identi.ca links, and
148phone numbers.
150 When you complain to the website for their nonfree nontrivial
151JavaScript, provide them with the link to the JavaScript Trap essay so
152that they can get more information on what the issue is and how they can
153solve it on their own site.
155 LibreJS includes a default subject line and body for the complaint
156email, with a link to the JavaScript Trap essay. This can be configured
157in the LibreJS add-on preferences in your web browser.
1594.4 Options
164 LibreJS lets you whitelist domain names and subdomains to bypass
165 the regular JavaScript check. This might be useful, for example,
166 if you are running your own code in a local web server. In order
167 to add a whitelisted domain or url, go to Tools >> Add-ons. Inside
168 the add-on window, click on "Extensions", and in the list, where
169 you see LibreJS, click on the "Preferences" button. You will see
170 an input field labeled "Whitelist".
172 In the field, enter comma-separated domain names. Do not enter the
173 protocol. For instance to whitelist all the pages of
174 <http://www.gnu.org> and <https://gnu.org>, enter 'gnu.org'. To
175 allow all subdomains from gnu.org, enter: '*.gnu.org'. This will
176 match such sites as <http://savannah.gnu.org> and
177 <http://audio-video.gnu.org>.
179"Complaint email subject"
180 Configure the default subject used in complaint emails.
182"Complaint email body"
183 Configure the default body used in complaint emails.
186File: librejs.info, Node: JavaScript Detection, Next: Free Licenses Detection, Prev: How to Use, Up: Top
1885 JavaScript Detection
191LibreJS considers a very strict subset of JavaScript to be acceptable
192for use in non-free scripts. This is meant to maximimize compatibility
193with websites that haven't tried to be LibreJS compatible.
195 We consider modification of the document non-trivial. There isn't
196much that javascript could do that we would consider trivial, for
197anything else a free software license would be required.
199 The criterion is as follows:
201 For each function definition:
202 * It must call only primitives.
203 * The number of conditionals and loops must be at most 3.
204 * It does not declare an array more than 50 elements long.
205 * It must not call itself
207 For the rest of the script, outside of function definitions:
208 * It must call only primitives and functions defined above in the
209 page.
210 * The number of conditionals and loops must be at most 3.
212 "function" means anything executable that gets a name, including
215 Allowed primitives exclude:
216 * eval()
217 * ajax
218 * calling methods with the square bracket notation
219 * altering the dom
220 * most other items found as methods of the '.window' object.
223File: librejs.info, Node: Free Licenses Detection, Next: Setting Your JavaScript Free, Prev: JavaScript Detection, Up: Top
2256 Free Licenses Detection
228The machine readable format for license declarations that LibreJS uses
229has changed in the most recent version. This was necessary in order to
230not break the asynchronous JS loading model that browsers use. Scripts
231are now evaluated independent of eachother and strictly as they arrive.
234File: librejs.info, Node: Setting Your JavaScript Free, Next: LibreJS Development Notes, Prev: Free Licenses Detection, Up: Top
2367 Setting Your JavaScript Free
239The first step is releasing your JavaScript under a free license. If
240you are already using a free library, or you're not using any
241third-party libraries, it might only take a few minutes.
243 On your website, take a look at your HTML source. You can identify
244distinct pieces of JavaScript that might be free and some other that are
247 This might be the case with an analytics tracker, social media
248widgets, and code that runs ads. Removing these pieces of code from
249your site is required to have the rest accepted as free. There are
250often alternatives to nonfree libraries or to third-party services:
252 * If you have used nonfree third-party code as the base to write your
253 own code, try to find a free alternative.
255 * If you're using a third-party service such as an analytics service,
256 replace it with a free alternative like Piwik.
258 * If you can't find free JavaScript that has already been developed,
259 write it yourself! Who knows, your own solution might be the start
260 of a brilliant project!
2627.1 License tags
265LibreJS will allow non-trivial scripts to run as long as they use a free
268 In order for the license of a script to be recognized by LibreJS, it
269must be declared using a machine-readable license format.
271 This format is the same for both remote in-line scripts.
273 "// @license [magnet link] [identifier]" [Script here] "//
276 "Identifier" is a name of a license from the following list and
277"magnet link" is that license's exact corresponding magnet link.
280 'Apache-2.0':{
281 'URL': 'http://www.apache.org/licenses/LICENSE-2.0',
282 'Magnet link': 'magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt'
283 },
284 'Artistic-2.0':{
285 'URL': 'http://www.perlfoundation.org/artistic_license_2_0',
286 'Magnet link': 'magnet:?xt=urn:btih:54fd2283f9dbdf29466d2df1a98bf8f65cafe314&dn=artistic-2.0.txt'
287 },
288 'Boost':{
289 'URL': 'http://www.boost.org/LICENSE_1_0.txt',
290 'Magnet link': 'magnet:?xt=urn:btih:89a97c535628232f2f3888c2b7b8ffd4c078cec0&dn=Boost-1.0.txt'
291 },
292 'BSD-3-Clause':{
293 'URL': 'http://opensource.org/licenses/BSD-3-Clause',
294 'Magnet link': 'magnet:?xt=urn:btih:c80d50af7d3db9be66a4d0a86db0286e4fd33292&dn=bsd-3-clause.txt',
295 },
296 'CPAL-1.0':{
297 'URL': 'http://opensource.org/licenses/cpal_1.0',
298 'Magnet link': 'magnet:?xt=urn:btih:84143bc45939fc8fa42921d619a95462c2031c5c&dn=cpal-1.0.txt'
299 },
300 'CC0-1.0':{
301 'URL': 'http://creativecommons.org/publicdomain/zero/1.0/legalcode',
302 'Magnet link': 'magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt'
303 },
304 'EPL-1.0':{
305 'URL': 'http://www.eclipse.org/legal/epl-v10.html',
306 'Magnet link': 'magnet:?xt=urn:btih:4c6a2ad0018cd461e9b0fc44e1b340d2c1828b22&dn=epl-1.0.txt'
307 },
308 'Expat':{
309 'URL': 'http://www.jclark.com/xml/copying.txt',
310 'Magnet link': 'magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt'
311 },
312 'FreeBSD':{
313 'URL': 'http://www.freebsd.org/copyright/freebsd-license.html',
314 'Magnet link': 'magnet:?xt=urn:btih:87f119ba0b429ba17a44b4bffcab33165ebdacc0&dn=freebsd.txt'
315 },
316 'GPL-2.0':{
317 'URL': 'http://www.gnu.org/licenses/gpl-2.0.html',
318 'Magnet link': 'magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt'
319 },
320 'GPL-3.0':{
321 'URL': 'http://www.gnu.org/licenses/gpl-3.0.html',
322 'Magnet link': 'magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt'
323 },
324 'LGPL-2.1':{
325 'URL': 'http://www.gnu.org/licenses/lgpl-2.1.html',
326 'Magnet link': 'magnet:?xt=urn:btih:5de60da917303dbfad4f93fb1b985ced5a89eac2&dn=lgpl-2.1.txt'
327 },
328 'LGPL-3.0':{
329 'URL': 'http://www.gnu.org/licenses/lgpl-3.0.html',
330 'Magnet link': 'magnet:?xt=urn:btih:0ef1b8170b3b615170ff270def6427c317705f85&dn=lgpl-3.0.txt'
331 },
332 'AGPL-3.0':{
333 'URL': 'http://www.gnu.org/licenses/agpl-3.0.html',
334 'Magnet link': 'magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt'
335 },
336 'ISC':{
337 'URL': 'https://www.isc.org/downloads/software-support-policy/isc-license/',
338 'Magnet link': 'magnet:?xt=urn:btih:b8999bbaf509c08d127678643c515b9ab0836bae&dn=ISC.txt'
339 },
340 'MPL-2.0':{
341 'URL': 'http://www.mozilla.org/MPL/2.0',
342 'Magnet link': 'magnet:?xt=urn:btih:3877d6d54b3accd4bc32f8a48bf32ebc0901502a&dn=mpl-2.0.txt'
343 },
344 'UPL-1.0': {
345 'URL': 'https://oss.oracle.com/licenses/upl/',
346 'Magnet link': 'magnet:?xt=urn:btih:478974f4d41c3fa84c4befba25f283527fad107d&dn=upl-1.0.txt'
347 },
348 'WTFPL': {
349 'URL': 'http://www.wtfpl.net/txt/copying/',
350 'Magnet link': 'magnet:?xt=urn:btih:723febf9f6185544f57f0660a41489c7d6b4931b&dn=wtfpl.txt'
351 },
352 'Unlicense':{
353 'URL': 'http://unlicense.org/UNLICENSE',
354 'Magnet link': 'magnet:?xt=urn:btih:5ac446d35272cc2e4e85e4325b146d0b7ca8f50c&dn=unlicense.txt'
355 },
356 'X11':{
357 'URL': 'http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3',
358 'Magnet link': 'magnet:?xt=urn:btih:5305d91886084f776adcf57509a648432709a7c7&dn=x11.txt'
359 },
360 'Modified-BSD':{
361 'URL': 'http://www.xfree86.org/current/LICENSE4.html',
362 'Magnet link': 'magnet:?xt=urn:btih:12f2ec9e8de2a3b0002a33d518d6010cc8ab2ae9&dn=xfree86.txt'
363 }
3667.2 Undetected Free Licenses
369If you are using a free license that isn't detected by LibreJS and isn't
370listed in the previous section, please send a message to
371<bug-librejs@gnu.org> regarding this license, where code released under
372this license can be found, and where to find the license text and
375 Many free licenses are listed in this page:
379File: librejs.info, Node: LibreJS Development Notes, Next: Installation Requirements, Prev: Setting Your JavaScript Free, Up: Top
3818 LibreJS Development Notes
3848.1 Debugging
387To debug LibreJS, visit the special URL 'about:debugging'. Click on
388'Enable add-on debugging' then 'Load Temporary Add-on'. Navigate to
389LibreJS's unpacked source directory and select 'manifest.json'.
391 Lines 34 and 35 in 'main_background.js' control the printing of
392'dbg_print()' statements. Make sure these are set to false in releases.
3948.2 Adding new whitelisted libraries
397The script index.js in './hash_script' generates the default whitelist.
398Run it with the following command:
400 'node index.js > output'
402 Then, just copy the contents of the file "output" to the appropriate
403place in main_background.js.
4058.3 Releasing a new version
408Update the version number in manifest.json.
410 Make sure debug statements are set to felse on lines 34/35 in
413 Then, run the build script 'build.sh'.
416File: librejs.info, Node: Installation Requirements, Next: LibreJS Internals, Prev: LibreJS Development Notes, Up: Top
418Appendix A Installation Requirements
421A.1 Mozilla Browser
424You will need one of the many flavors of the Mozilla browser to use
425LibreJS. It can be installed on the following:
427 GNU IceCat, Mozilla Firefox, Trisquel Abrowser, Debian Iceweasel.
429 LibreJS works on these browsers starting from version 57. We
430recommend that you use the latest version of your Mozilla browser.
431LibreJS has been tested on a GNU/Linux distribution, but it is
432compatible any operating system as long as you're using a compatible
433Mozilla browser.
436File: librejs.info, Node: LibreJS Internals, Next: GNU Free Documentation License, Prev: Installation Requirements, Up: Top
438Appendix B LibreJS Internals
441LibreJS intercepts HTTP responses and rewrites their contents after
442analyzing JavaScript within them. It does not remove script nodes and
443attributes from the page, but instead "deactivates" them by replacing
444their content with a commented notice.
446 LibreJS detects the most common cases using the HTTP response method
447described above, but in less common edge cases, or when running code
448locally, LibreJS cannot detect JavaScript during the response stage.
451File: librejs.info, Node: GNU Free Documentation License, Prev: LibreJS Internals, Up: Top
453Appendix C GNU Free Documentation License
456 Version 1.3, 3 November 2008
458 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
459 <http://fsf.org/>
461 Everyone is permitted to copy and distribute verbatim copies
462 of this license document, but changing it is not allowed.
466 The purpose of this License is to make a manual, textbook, or other
467 functional and useful document "free" in the sense of freedom: to
468 assure everyone the effective freedom to copy and redistribute it,
469 with or without modifying it, either commercially or
470 noncommercially. Secondarily, this License preserves for the
471 author and publisher a way to get credit for their work, while not
472 being considered responsible for modifications made by others.
474 This License is a kind of "copyleft", which means that derivative
475 works of the document must themselves be free in the same sense.
476 It complements the GNU General Public License, which is a copyleft
477 license designed for free software.
479 We have designed this License in order to use it for manuals for
480 free software, because free software needs free documentation: a
481 free program should come with manuals providing the same freedoms
482 that the software does. But this License is not limited to
483 software manuals; it can be used for any textual work, regardless
484 of subject matter or whether it is published as a printed book. We
485 recommend this License principally for works whose purpose is
486 instruction or reference.
490 This License applies to any manual or other work, in any medium,
491 that contains a notice placed by the copyright holder saying it can
492 be distributed under the terms of this License. Such a notice
493 grants a world-wide, royalty-free license, unlimited in duration,
494 to use that work under the conditions stated herein. The
495 "Document", below, refers to any such manual or work. Any member
496 of the public is a licensee, and is addressed as "you". You accept
497 the license if you copy, modify or distribute the work in a way
498 requiring permission under copyright law.
500 A "Modified Version" of the Document means any work containing the
501 Document or a portion of it, either copied verbatim, or with
502 modifications and/or translated into another language.
504 A "Secondary Section" is a named appendix or a front-matter section
505 of the Document that deals exclusively with the relationship of the
506 publishers or authors of the Document to the Document's overall
507 subject (or to related matters) and contains nothing that could
508 fall directly within that overall subject. (Thus, if the Document
509 is in part a textbook of mathematics, a Secondary Section may not
510 explain any mathematics.) The relationship could be a matter of
511 historical connection with the subject or with related matters, or
512 of legal, commercial, philosophical, ethical or political position
513 regarding them.
515 The "Invariant Sections" are certain Secondary Sections whose
516 titles are designated, as being those of Invariant Sections, in the
517 notice that says that the Document is released under this License.
518 If a section does not fit the above definition of Secondary then it
519 is not allowed to be designated as Invariant. The Document may
520 contain zero Invariant Sections. If the Document does not identify
521 any Invariant Sections then there are none.
523 The "Cover Texts" are certain short passages of text that are
524 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
525 that says that the Document is released under this License. A
526 Front-Cover Text may be at most 5 words, and a Back-Cover Text may
527 be at most 25 words.
529 A "Transparent" copy of the Document means a machine-readable copy,
530 represented in a format whose specification is available to the
531 general public, that is suitable for revising the document
532 straightforwardly with generic text editors or (for images composed
533 of pixels) generic paint programs or (for drawings) some widely
534 available drawing editor, and that is suitable for input to text
535 formatters or for automatic translation to a variety of formats
536 suitable for input to text formatters. A copy made in an otherwise
537 Transparent file format whose markup, or absence of markup, has
538 been arranged to thwart or discourage subsequent modification by
539 readers is not Transparent. An image format is not Transparent if
540 used for any substantial amount of text. A copy that is not
541 "Transparent" is called "Opaque".
543 Examples of suitable formats for Transparent copies include plain
544 ASCII without markup, Texinfo input format, LaTeX input format,
545 SGML or XML using a publicly available DTD, and standard-conforming
546 simple HTML, PostScript or PDF designed for human modification.
547 Examples of transparent image formats include PNG, XCF and JPG.
548 Opaque formats include proprietary formats that can be read and
549 edited only by proprietary word processors, SGML or XML for which
550 the DTD and/or processing tools are not generally available, and
551 the machine-generated HTML, PostScript or PDF produced by some word
552 processors for output purposes only.
554 The "Title Page" means, for a printed book, the title page itself,
555 plus such following pages as are needed to hold, legibly, the
556 material this License requires to appear in the title page. For
557 works in formats which do not have any title page as such, "Title
558 Page" means the text near the most prominent appearance of the
559 work's title, preceding the beginning of the body of the text.
561 The "publisher" means any person or entity that distributes copies
562 of the Document to the public.
564 A section "Entitled XYZ" means a named subunit of the Document
565 whose title either is precisely XYZ or contains XYZ in parentheses
566 following text that translates XYZ in another language. (Here XYZ
567 stands for a specific section name mentioned below, such as
568 "Acknowledgements", "Dedications", "Endorsements", or "History".)
569 To "Preserve the Title" of such a section when you modify the
570 Document means that it remains a section "Entitled XYZ" according
571 to this definition.
573 The Document may include Warranty Disclaimers next to the notice
574 which states that this License applies to the Document. These
575 Warranty Disclaimers are considered to be included by reference in
576 this License, but only as regards disclaiming warranties: any other
577 implication that these Warranty Disclaimers may have is void and
578 has no effect on the meaning of this License.
582 You may copy and distribute the Document in any medium, either
583 commercially or noncommercially, provided that this License, the
584 copyright notices, and the license notice saying this License
585 applies to the Document are reproduced in all copies, and that you
586 add no other conditions whatsoever to those of this License. You
587 may not use technical measures to obstruct or control the reading
588 or further copying of the copies you make or distribute. However,
589 you may accept compensation in exchange for copies. If you
590 distribute a large enough number of copies you must also follow the
591 conditions in section 3.
593 You may also lend copies, under the same conditions stated above,
594 and you may publicly display copies.
598 If you publish printed copies (or copies in media that commonly
599 have printed covers) of the Document, numbering more than 100, and
600 the Document's license notice requires Cover Texts, you must
601 enclose the copies in covers that carry, clearly and legibly, all
602 these Cover Texts: Front-Cover Texts on the front cover, and
603 Back-Cover Texts on the back cover. Both covers must also clearly
604 and legibly identify you as the publisher of these copies. The
605 front cover must present the full title with all words of the title
606 equally prominent and visible. You may add other material on the
607 covers in addition. Copying with changes limited to the covers, as
608 long as they preserve the title of the Document and satisfy these
609 conditions, can be treated as verbatim copying in other respects.
611 If the required texts for either cover are too voluminous to fit
612 legibly, you should put the first ones listed (as many as fit
613 reasonably) on the actual cover, and continue the rest onto
614 adjacent pages.
616 If you publish or distribute Opaque copies of the Document
617 numbering more than 100, you must either include a machine-readable
618 Transparent copy along with each Opaque copy, or state in or with
619 each Opaque copy a computer-network location from which the general
620 network-using public has access to download using public-standard
621 network protocols a complete Transparent copy of the Document, free
622 of added material. If you use the latter option, you must take
623 reasonably prudent steps, when you begin distribution of Opaque
624 copies in quantity, to ensure that this Transparent copy will
625 remain thus accessible at the stated location until at least one
626 year after the last time you distribute an Opaque copy (directly or
627 through your agents or retailers) of that edition to the public.
629 It is requested, but not required, that you contact the authors of
630 the Document well before redistributing any large number of copies,
631 to give them a chance to provide you with an updated version of the
632 Document.
636 You may copy and distribute a Modified Version of the Document
637 under the conditions of sections 2 and 3 above, provided that you
638 release the Modified Version under precisely this License, with the
639 Modified Version filling the role of the Document, thus licensing
640 distribution and modification of the Modified Version to whoever
641 possesses a copy of it. In addition, you must do these things in
642 the Modified Version:
644 A. Use in the Title Page (and on the covers, if any) a title
645 distinct from that of the Document, and from those of previous
646 versions (which should, if there were any, be listed in the
647 History section of the Document). You may use the same title
648 as a previous version if the original publisher of that
649 version gives permission.
651 B. List on the Title Page, as authors, one or more persons or
652 entities responsible for authorship of the modifications in
653 the Modified Version, together with at least five of the
654 principal authors of the Document (all of its principal
655 authors, if it has fewer than five), unless they release you
656 from this requirement.
658 C. State on the Title page the name of the publisher of the
659 Modified Version, as the publisher.
661 D. Preserve all the copyright notices of the Document.
663 E. Add an appropriate copyright notice for your modifications
664 adjacent to the other copyright notices.
666 F. Include, immediately after the copyright notices, a license
667 notice giving the public permission to use the Modified
668 Version under the terms of this License, in the form shown in
669 the Addendum below.
671 G. Preserve in that license notice the full lists of Invariant
672 Sections and required Cover Texts given in the Document's
673 license notice.
675 H. Include an unaltered copy of this License.
677 I. Preserve the section Entitled "History", Preserve its Title,
678 and add to it an item stating at least the title, year, new
679 authors, and publisher of the Modified Version as given on the
680 Title Page. If there is no section Entitled "History" in the
681 Document, create one stating the title, year, authors, and
682 publisher of the Document as given on its Title Page, then add
683 an item describing the Modified Version as stated in the
684 previous sentence.
686 J. Preserve the network location, if any, given in the Document
687 for public access to a Transparent copy of the Document, and
688 likewise the network locations given in the Document for
689 previous versions it was based on. These may be placed in the
690 "History" section. You may omit a network location for a work
691 that was published at least four years before the Document
692 itself, or if the original publisher of the version it refers
693 to gives permission.
695 K. For any section Entitled "Acknowledgements" or "Dedications",
696 Preserve the Title of the section, and preserve in the section
697 all the substance and tone of each of the contributor
698 acknowledgements and/or dedications given therein.
700 L. Preserve all the Invariant Sections of the Document, unaltered
701 in their text and in their titles. Section numbers or the
702 equivalent are not considered part of the section titles.
704 M. Delete any section Entitled "Endorsements". Such a section
705 may not be included in the Modified Version.
707 N. Do not retitle any existing section to be Entitled
708 "Endorsements" or to conflict in title with any Invariant
709 Section.
711 O. Preserve any Warranty Disclaimers.
713 If the Modified Version includes new front-matter sections or
714 appendices that qualify as Secondary Sections and contain no
715 material copied from the Document, you may at your option designate
716 some or all of these sections as invariant. To do this, add their
717 titles to the list of Invariant Sections in the Modified Version's
718 license notice. These titles must be distinct from any other
719 section titles.
721 You may add a section Entitled "Endorsements", provided it contains
722 nothing but endorsements of your Modified Version by various
723 parties--for example, statements of peer review or that the text
724 has been approved by an organization as the authoritative
725 definition of a standard.
727 You may add a passage of up to five words as a Front-Cover Text,
728 and a passage of up to 25 words as a Back-Cover Text, to the end of
729 the list of Cover Texts in the Modified Version. Only one passage
730 of Front-Cover Text and one of Back-Cover Text may be added by (or
731 through arrangements made by) any one entity. If the Document
732 already includes a cover text for the same cover, previously added
733 by you or by arrangement made by the same entity you are acting on
734 behalf of, you may not add another; but you may replace the old
735 one, on explicit permission from the previous publisher that added
736 the old one.
738 The author(s) and publisher(s) of the Document do not by this
739 License give permission to use their names for publicity for or to
740 assert or imply endorsement of any Modified Version.
744 You may combine the Document with other documents released under
745 this License, under the terms defined in section 4 above for
746 modified versions, provided that you include in the combination all
747 of the Invariant Sections of all of the original documents,
748 unmodified, and list them all as Invariant Sections of your
749 combined work in its license notice, and that you preserve all
750 their Warranty Disclaimers.
752 The combined work need only contain one copy of this License, and
753 multiple identical Invariant Sections may be replaced with a single
754 copy. If there are multiple Invariant Sections with the same name
755 but different contents, make the title of each such section unique
756 by adding at the end of it, in parentheses, the name of the
757 original author or publisher of that section if known, or else a
758 unique number. Make the same adjustment to the section titles in
759 the list of Invariant Sections in the license notice of the
760 combined work.
762 In the combination, you must combine any sections Entitled
763 "History" in the various original documents, forming one section
764 Entitled "History"; likewise combine any sections Entitled
765 "Acknowledgements", and any sections Entitled "Dedications". You
766 must delete all sections Entitled "Endorsements."
770 You may make a collection consisting of the Document and other
771 documents released under this License, and replace the individual
772 copies of this License in the various documents with a single copy
773 that is included in the collection, provided that you follow the
774 rules of this License for verbatim copying of each of the documents
775 in all other respects.
777 You may extract a single document from such a collection, and
778 distribute it individually under this License, provided you insert
779 a copy of this License into the extracted document, and follow this
780 License in all other respects regarding verbatim copying of that
781 document.
785 A compilation of the Document or its derivatives with other
786 separate and independent documents or works, in or on a volume of a
787 storage or distribution medium, is called an "aggregate" if the
788 copyright resulting from the compilation is not used to limit the
789 legal rights of the compilation's users beyond what the individual
790 works permit. When the Document is included in an aggregate, this
791 License does not apply to the other works in the aggregate which
792 are not themselves derivative works of the Document.
794 If the Cover Text requirement of section 3 is applicable to these
795 copies of the Document, then if the Document is less than one half
796 of the entire aggregate, the Document's Cover Texts may be placed
797 on covers that bracket the Document within the aggregate, or the
798 electronic equivalent of covers if the Document is in electronic
799 form. Otherwise they must appear on printed covers that bracket
800 the whole aggregate.
804 Translation is considered a kind of modification, so you may
805 distribute translations of the Document under the terms of section
806 4. Replacing Invariant Sections with translations requires special
807 permission from their copyright holders, but you may include
808 translations of some or all Invariant Sections in addition to the
809 original versions of these Invariant Sections. You may include a
810 translation of this License, and all the license notices in the
811 Document, and any Warranty Disclaimers, provided that you also
812 include the original English version of this License and the
813 original versions of those notices and disclaimers. In case of a
814 disagreement between the translation and the original version of
815 this License or a notice or disclaimer, the original version will
816 prevail.
818 If a section in the Document is Entitled "Acknowledgements",
819 "Dedications", or "History", the requirement (section 4) to
820 Preserve its Title (section 1) will typically require changing the
821 actual title.
825 You may not copy, modify, sublicense, or distribute the Document
826 except as expressly provided under this License. Any attempt
827 otherwise to copy, modify, sublicense, or distribute it is void,
828 and will automatically terminate your rights under this License.
830 However, if you cease all violation of this License, then your
831 license from a particular copyright holder is reinstated (a)
832 provisionally, unless and until the copyright holder explicitly and
833 finally terminates your license, and (b) permanently, if the
834 copyright holder fails to notify you of the violation by some
835 reasonable means prior to 60 days after the cessation.
837 Moreover, your license from a particular copyright holder is
838 reinstated permanently if the copyright holder notifies you of the
839 violation by some reasonable means, this is the first time you have
840 received notice of violation of this License (for any work) from
841 that copyright holder, and you cure the violation prior to 30 days
842 after your receipt of the notice.
844 Termination of your rights under this section does not terminate
845 the licenses of parties who have received copies or rights from you
846 under this License. If your rights have been terminated and not
847 permanently reinstated, receipt of a copy of some or all of the
848 same material does not give you any rights to use it.
852 The Free Software Foundation may publish new, revised versions of
853 the GNU Free Documentation License from time to time. Such new
854 versions will be similar in spirit to the present version, but may
855 differ in detail to address new problems or concerns. See
856 <http://www.gnu.org/copyleft/>.
858 Each version of the License is given a distinguishing version
859 number. If the Document specifies that a particular numbered
860 version of this License "or any later version" applies to it, you
861 have the option of following the terms and conditions either of
862 that specified version or of any later version that has been
863 published (not as a draft) by the Free Software Foundation. If the
864 Document does not specify a version number of this License, you may
865 choose any version ever published (not as a draft) by the Free
866 Software Foundation. If the Document specifies that a proxy can
867 decide which future versions of this License can be used, that
868 proxy's public statement of acceptance of a version permanently
869 authorizes you to choose that version for the Document.
873 "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
874 World Wide Web server that publishes copyrightable works and also
875 provides prominent facilities for anybody to edit those works. A
876 public wiki that anybody can edit is an example of such a server.
877 A "Massive Multiauthor Collaboration" (or "MMC") contained in the
878 site means any set of copyrightable works thus published on the MMC
879 site.
881 "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
882 license published by Creative Commons Corporation, a not-for-profit
883 corporation with a principal place of business in San Francisco,
884 California, as well as future copyleft versions of that license
885 published by that same organization.
887 "Incorporate" means to publish or republish a Document, in whole or
888 in part, as part of another Document.
890 An MMC is "eligible for relicensing" if it is licensed under this
891 License, and if all works that were first published under this
892 License somewhere other than this MMC, and subsequently
893 incorporated in whole or in part into the MMC, (1) had no cover
894 texts or invariant sections, and (2) were thus incorporated prior
895 to November 1, 2008.
897 The operator of an MMC Site may republish an MMC contained in the
898 site under CC-BY-SA on the same site at any time before August 1,
899 2009, provided the MMC is eligible for relicensing.
901ADDENDUM: How to use this License for your documents
904To use this License in a document you have written, include a copy of
905the License in the document and put the following copyright and license
906notices just after the title page:
908 Copyright (C) YEAR YOUR NAME.
909 Permission is granted to copy, distribute and/or modify this document
910 under the terms of the GNU Free Documentation License, Version 1.3
911 or any later version published by the Free Software Foundation;
912 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
913 Texts. A copy of the license is included in the section entitled ``GNU
914 Free Documentation License''.
916 If you have Invariant Sections, Front-Cover Texts and Back-Cover
917Texts, replace the "with...Texts." line with this:
919 with the Invariant Sections being LIST THEIR TITLES, with
920 the Front-Cover Texts being LIST, and with the Back-Cover Texts
921 being LIST.
923 If you have Invariant Sections without Cover Texts, or some other
924combination of the three, merge those two alternatives to suit the
927 If your document contains nontrivial examples of program code, we
928recommend releasing these examples in parallel under your choice of free
929software license, such as the GNU General Public License, to permit
930their use in free software.
934Tag Table:
935Node: Top826
936Node: Overview1820
937Node: Disclaimer2667
938Node: Installation3163
939Node: How to Use3505
940Node: JavaScript Detection7002
941Node: Free Licenses Detection8289
942Node: Setting Your JavaScript Free8760
943Node: LibreJS Development Notes14487
944Node: Installation Requirements15601
945Node: LibreJS Internals16311
946Node: GNU Free Documentation License16961
948End Tag Table