| 1 | This is librejs.info, produced by makeinfo version 5.2 from man.texi.
|
|---|
| 2 |
|
|---|
| 3 | This manual is for GNU LibreJS (version 7.2, 10 February 2018), a GNU
|
|---|
| 4 | IceCat extension to detect and block nonfree nontrivial JavaScript on
|
|---|
| 5 | webpages.
|
|---|
| 6 |
|
|---|
| 7 | Copyright (C) 2011 2012 2014 2015 Loic J. Duros
|
|---|
| 8 |
|
|---|
| 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".
|
|---|
| 15 | INFO-DIR-SECTION GNUzilla
|
|---|
| 16 | START-INFO-DIR-ENTRY
|
|---|
| 17 | * LibreJS: (librejs). Detect nonfree nontrivial in GNU Icecat
|
|---|
| 18 | END-INFO-DIR-ENTRY
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 | File: librejs.info, Node: Top, Next: Overview, Up: (dir)
|
|---|
| 22 |
|
|---|
| 23 | LibreJS
|
|---|
| 24 | *******
|
|---|
| 25 |
|
|---|
| 26 | This manual is for GNU LibreJS (version 7.2, 10 February 2018).
|
|---|
| 27 |
|
|---|
| 28 | * Menu:
|
|---|
| 29 |
|
|---|
| 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.
|
|---|
| 42 |
|
|---|
| 43 |
|
|---|
| 44 |
|
|---|
| 45 |
|
|---|
| 46 |
|
|---|
| 47 |
|
|---|
| 48 |
|
|---|
| 49 |
|
|---|
| 50 |
|
|---|
| 51 | File: librejs.info, Node: Overview, Next: Disclaimer, Prev: Top, Up: Top
|
|---|
| 52 |
|
|---|
| 53 | 1 Overview
|
|---|
| 54 | **********
|
|---|
| 55 |
|
|---|
| 56 | GNU LibreJS --an add-on for GNU IceCat and Mozilla Firefox-- detects and
|
|---|
| 57 | blocks nonfree nontrivial JavaScript while allowing its execution on
|
|---|
| 58 | pages containing code that is either trivial and/or free.
|
|---|
| 59 |
|
|---|
| 60 | Many websites run nontrivial JavaScript on your computer. Some use
|
|---|
| 61 | it for complex tasks; many use it gratuitously for minor jobs that could
|
|---|
| 62 | be done easily with plain HTML. Sometimes this JavaScript code is
|
|---|
| 63 | malicious. Either way, the JavaScript code is often nonfree. For
|
|---|
| 64 | explanation of the issue, see "The JavaScript
|
|---|
| 65 | Trap"(<http://www.gnu.org/philosophy/javascript-trap.html>).
|
|---|
| 66 |
|
|---|
| 67 | If you care about freedom in your computing, and don't wish to let
|
|---|
| 68 | all and sundry make you run nonfree programs, now you can prevent it by
|
|---|
| 69 | using LibreJS.
|
|---|
| 70 |
|
|---|
| 71 |
|
|---|
| 72 | File: librejs.info, Node: Disclaimer, Next: Installation, Prev: Overview, Up: Top
|
|---|
| 73 |
|
|---|
| 74 | 2 Disclaimer
|
|---|
| 75 | ************
|
|---|
| 76 |
|
|---|
| 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.
|
|---|
| 81 |
|
|---|
| 82 | * LibreJS is always a work in progress. If you find a bug, please
|
|---|
| 83 | report it to <bug-librejs@gnu.org>.
|
|---|
| 84 |
|
|---|
| 85 |
|
|---|
| 86 | File: librejs.info, Node: Installation, Next: How to Use, Prev: Disclaimer, Up: Top
|
|---|
| 87 |
|
|---|
| 88 | 3 Installation
|
|---|
| 89 | **************
|
|---|
| 90 |
|
|---|
| 91 | You can install LibreJS directly using a generated 'librejs.xpi' file,
|
|---|
| 92 | or by building it from source.
|
|---|
| 93 |
|
|---|
| 94 | You can also download it from Mozilla, but due to Mozilla's review
|
|---|
| 95 | process the download isn't always up to date.
|
|---|
| 96 |
|
|---|
| 97 |
|
|---|
| 98 | File: librejs.info, Node: How to Use, Next: JavaScript Detection, Prev: Installation, Up: Top
|
|---|
| 99 |
|
|---|
| 100 | 4 How to Use
|
|---|
| 101 | ************
|
|---|
| 102 |
|
|---|
| 103 | 4.1 LibreJS in action
|
|---|
| 104 | =====================
|
|---|
| 105 |
|
|---|
| 106 | After installing the add-on, you will see the LibreJS widget in the
|
|---|
| 107 | add-on bar at the top right of the browser window. After loading a
|
|---|
| 108 | page, left-click on the widget to view the deactivated JavaScript code
|
|---|
| 109 | from the page (both on page and external) and, if applicable, the
|
|---|
| 110 | scripts that were accepted.
|
|---|
| 111 |
|
|---|
| 112 | 4.2 Script Blacklist/whitelist
|
|---|
| 113 | ==============================
|
|---|
| 114 |
|
|---|
| 115 | Scripts may be blacklisted or whitelisted through the pop-up menu box.
|
|---|
| 116 |
|
|---|
| 117 | Whitelisted scripts will always be accepted and blacklisted scripts
|
|---|
| 118 | will always get rejected.
|
|---|
| 119 |
|
|---|
| 120 | It is important to note that this feature recognizes which scripts
|
|---|
| 121 | are blacklisted and whitelisted based on hash. This means that even a
|
|---|
| 122 | slight difference in a script's code will cause it to be recognized as a
|
|---|
| 123 | seperate script.
|
|---|
| 124 |
|
|---|
| 125 | Sometimes, JavaScript will be dynamically generated so that it is
|
|---|
| 126 | different every time a website is loaded. These types of scripts cannot
|
|---|
| 127 | be whitelisted or blacklisted since they cannot be recognized.
|
|---|
| 128 |
|
|---|
| 129 | LibreJS has a default whitelist of scripts that are known to be free
|
|---|
| 130 | but may not use the format for declaring a license that it can
|
|---|
| 131 | understand.
|
|---|
| 132 |
|
|---|
| 133 | 4.3 Complaint Feature
|
|---|
| 134 | =====================
|
|---|
| 135 |
|
|---|
| 136 | It is very important to complain when a site has nonfree JavaScript
|
|---|
| 137 | code, especially if it won't work without that code. LibreJS makes it
|
|---|
| 138 | easy to complain by heuristically finding where to send the complaint.
|
|---|
| 139 |
|
|---|
| 140 | When nonfree/nontrivial code is detected in a page, LibreJS attempts
|
|---|
| 141 | to find a relevant contact link or email for the website you are
|
|---|
| 142 | visiting. In order to do so, it will attempt to visit a few links from
|
|---|
| 143 | the current page (for instance, a link labeled "contact" on the same
|
|---|
| 144 | domain as the current page, ...)
|
|---|
| 145 |
|
|---|
| 146 | LibreJS detects contact pages, email addresses that are likely to be
|
|---|
| 147 | owned by the maintainer of the site, Twitter and identi.ca links, and
|
|---|
| 148 | phone numbers.
|
|---|
| 149 |
|
|---|
| 150 | When you complain to the website for their nonfree nontrivial
|
|---|
| 151 | JavaScript, provide them with the link to the JavaScript Trap essay so
|
|---|
| 152 | that they can get more information on what the issue is and how they can
|
|---|
| 153 | solve it on their own site.
|
|---|
| 154 |
|
|---|
| 155 | LibreJS includes a default subject line and body for the complaint
|
|---|
| 156 | email, with a link to the JavaScript Trap essay. This can be configured
|
|---|
| 157 | in the LibreJS add-on preferences in your web browser.
|
|---|
| 158 |
|
|---|
| 159 | 4.4 Options
|
|---|
| 160 | ===========
|
|---|
| 161 |
|
|---|
| 162 | "Whitelist"
|
|---|
| 163 |
|
|---|
| 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".
|
|---|
| 171 |
|
|---|
| 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>.
|
|---|
| 178 |
|
|---|
| 179 | "Complaint email subject"
|
|---|
| 180 | Configure the default subject used in complaint emails.
|
|---|
| 181 |
|
|---|
| 182 | "Complaint email body"
|
|---|
| 183 | Configure the default body used in complaint emails.
|
|---|
| 184 |
|
|---|
| 185 |
|
|---|
| 186 | File: librejs.info, Node: JavaScript Detection, Next: Free Licenses Detection, Prev: How to Use, Up: Top
|
|---|
| 187 |
|
|---|
| 188 | 5 JavaScript Detection
|
|---|
| 189 | **********************
|
|---|
| 190 |
|
|---|
| 191 | LibreJS considers a very strict subset of JavaScript to be acceptable
|
|---|
| 192 | for use in non-free scripts. This is meant to maximimize compatibility
|
|---|
| 193 | with websites that haven't tried to be LibreJS compatible.
|
|---|
| 194 |
|
|---|
| 195 | We consider modification of the document non-trivial. There isn't
|
|---|
| 196 | much that javascript could do that we would consider trivial, for
|
|---|
| 197 | anything else a free software license would be required.
|
|---|
| 198 |
|
|---|
| 199 | The criterion is as follows:
|
|---|
| 200 |
|
|---|
| 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
|
|---|
| 206 |
|
|---|
| 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.
|
|---|
| 211 |
|
|---|
| 212 | "function" means anything executable that gets a name, including
|
|---|
| 213 | methods.
|
|---|
| 214 |
|
|---|
| 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.
|
|---|
| 221 |
|
|---|
| 222 |
|
|---|
| 223 | File: librejs.info, Node: Free Licenses Detection, Next: Setting Your JavaScript Free, Prev: JavaScript Detection, Up: Top
|
|---|
| 224 |
|
|---|
| 225 | 6 Free Licenses Detection
|
|---|
| 226 | *************************
|
|---|
| 227 |
|
|---|
| 228 | The machine readable format for license declarations that LibreJS uses
|
|---|
| 229 | has changed in the most recent version. This was necessary in order to
|
|---|
| 230 | not break the asynchronous JS loading model that browsers use. Scripts
|
|---|
| 231 | are now evaluated independent of eachother and strictly as they arrive.
|
|---|
| 232 |
|
|---|
| 233 |
|
|---|
| 234 | File: librejs.info, Node: Setting Your JavaScript Free, Next: LibreJS Development Notes, Prev: Free Licenses Detection, Up: Top
|
|---|
| 235 |
|
|---|
| 236 | 7 Setting Your JavaScript Free
|
|---|
| 237 | ******************************
|
|---|
| 238 |
|
|---|
| 239 | The first step is releasing your JavaScript under a free license. If
|
|---|
| 240 | you are already using a free library, or you're not using any
|
|---|
| 241 | third-party libraries, it might only take a few minutes.
|
|---|
| 242 |
|
|---|
| 243 | On your website, take a look at your HTML source. You can identify
|
|---|
| 244 | distinct pieces of JavaScript that might be free and some other that are
|
|---|
| 245 | nonfree.
|
|---|
| 246 |
|
|---|
| 247 | This might be the case with an analytics tracker, social media
|
|---|
| 248 | widgets, and code that runs ads. Removing these pieces of code from
|
|---|
| 249 | your site is required to have the rest accepted as free. There are
|
|---|
| 250 | often alternatives to nonfree libraries or to third-party services:
|
|---|
| 251 |
|
|---|
| 252 | * If you have used nonfree third-party code as the base to write your
|
|---|
| 253 | own code, try to find a free alternative.
|
|---|
| 254 |
|
|---|
| 255 | * If you're using a third-party service such as an analytics service,
|
|---|
| 256 | replace it with a free alternative like Piwik.
|
|---|
| 257 |
|
|---|
| 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!
|
|---|
| 261 |
|
|---|
| 262 | 7.1 License tags
|
|---|
| 263 | ================
|
|---|
| 264 |
|
|---|
| 265 | LibreJS will allow non-trivial scripts to run as long as they use a free
|
|---|
| 266 | license.
|
|---|
| 267 |
|
|---|
| 268 | In order for the license of a script to be recognized by LibreJS, it
|
|---|
| 269 | must be declared using a machine-readable license format.
|
|---|
| 270 |
|
|---|
| 271 | This format is the same for both remote in-line scripts.
|
|---|
| 272 |
|
|---|
| 273 | "// @license [magnet link] [identifier]" [Script here] "//
|
|---|
| 274 | @license-end"
|
|---|
| 275 |
|
|---|
| 276 | "Identifier" is a name of a license from the following list and
|
|---|
| 277 | "magnet link" is that license's exact corresponding magnet link.
|
|---|
| 278 |
|
|---|
| 279 | {
|
|---|
| 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 | }
|
|---|
| 364 | }
|
|---|
| 365 |
|
|---|
| 366 | 7.2 Undetected Free Licenses
|
|---|
| 367 | ============================
|
|---|
| 368 |
|
|---|
| 369 | If you are using a free license that isn't detected by LibreJS and isn't
|
|---|
| 370 | listed in the previous section, please send a message to
|
|---|
| 371 | <bug-librejs@gnu.org> regarding this license, where code released under
|
|---|
| 372 | this license can be found, and where to find the license text and
|
|---|
| 373 | information.
|
|---|
| 374 |
|
|---|
| 375 | Many free licenses are listed in this page:
|
|---|
| 376 | <http://www.gnu.org/licenses/license-list.html>
|
|---|
| 377 |
|
|---|
| 378 |
|
|---|
| 379 | File: librejs.info, Node: LibreJS Development Notes, Next: Installation Requirements, Prev: Setting Your JavaScript Free, Up: Top
|
|---|
| 380 |
|
|---|
| 381 | 8 LibreJS Development Notes
|
|---|
| 382 | ***************************
|
|---|
| 383 |
|
|---|
| 384 | 8.1 Debugging
|
|---|
| 385 | =============
|
|---|
| 386 |
|
|---|
| 387 | To debug LibreJS, visit the special URL 'about:debugging'. Click on
|
|---|
| 388 | 'Enable add-on debugging' then 'Load Temporary Add-on'. Navigate to
|
|---|
| 389 | LibreJS's unpacked source directory and select 'manifest.json'.
|
|---|
| 390 |
|
|---|
| 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.
|
|---|
| 393 |
|
|---|
| 394 | 8.2 Adding new whitelisted libraries
|
|---|
| 395 | ====================================
|
|---|
| 396 |
|
|---|
| 397 | The script index.js in './hash_script' generates the default whitelist.
|
|---|
| 398 | Run it with the following command:
|
|---|
| 399 |
|
|---|
| 400 | 'node index.js > output'
|
|---|
| 401 |
|
|---|
| 402 | Then, just copy the contents of the file "output" to the appropriate
|
|---|
| 403 | place in main_background.js.
|
|---|
| 404 |
|
|---|
| 405 | 8.3 Releasing a new version
|
|---|
| 406 | ===========================
|
|---|
| 407 |
|
|---|
| 408 | Update the version number in manifest.json.
|
|---|
| 409 |
|
|---|
| 410 | Make sure debug statements are set to felse on lines 34/35 in
|
|---|
| 411 | 'main_background.js'.
|
|---|
| 412 |
|
|---|
| 413 | Then, run the build script 'build.sh'.
|
|---|
| 414 |
|
|---|
| 415 |
|
|---|
| 416 | File: librejs.info, Node: Installation Requirements, Next: LibreJS Internals, Prev: LibreJS Development Notes, Up: Top
|
|---|
| 417 |
|
|---|
| 418 | Appendix A Installation Requirements
|
|---|
| 419 | ************************************
|
|---|
| 420 |
|
|---|
| 421 | A.1 Mozilla Browser
|
|---|
| 422 | ===================
|
|---|
| 423 |
|
|---|
| 424 | You will need one of the many flavors of the Mozilla browser to use
|
|---|
| 425 | LibreJS. It can be installed on the following:
|
|---|
| 426 |
|
|---|
| 427 | GNU IceCat, Mozilla Firefox, Trisquel Abrowser, Debian Iceweasel.
|
|---|
| 428 |
|
|---|
| 429 | LibreJS works on these browsers starting from version 57. We
|
|---|
| 430 | recommend that you use the latest version of your Mozilla browser.
|
|---|
| 431 | LibreJS has been tested on a GNU/Linux distribution, but it is
|
|---|
| 432 | compatible any operating system as long as you're using a compatible
|
|---|
| 433 | Mozilla browser.
|
|---|
| 434 |
|
|---|
| 435 |
|
|---|
| 436 | File: librejs.info, Node: LibreJS Internals, Next: GNU Free Documentation License, Prev: Installation Requirements, Up: Top
|
|---|
| 437 |
|
|---|
| 438 | Appendix B LibreJS Internals
|
|---|
| 439 | ****************************
|
|---|
| 440 |
|
|---|
| 441 | LibreJS intercepts HTTP responses and rewrites their contents after
|
|---|
| 442 | analyzing JavaScript within them. It does not remove script nodes and
|
|---|
| 443 | attributes from the page, but instead "deactivates" them by replacing
|
|---|
| 444 | their content with a commented notice.
|
|---|
| 445 |
|
|---|
| 446 | LibreJS detects the most common cases using the HTTP response method
|
|---|
| 447 | described above, but in less common edge cases, or when running code
|
|---|
| 448 | locally, LibreJS cannot detect JavaScript during the response stage.
|
|---|
| 449 |
|
|---|
| 450 |
|
|---|
| 451 | File: librejs.info, Node: GNU Free Documentation License, Prev: LibreJS Internals, Up: Top
|
|---|
| 452 |
|
|---|
| 453 | Appendix C GNU Free Documentation License
|
|---|
| 454 | *****************************************
|
|---|
| 455 |
|
|---|
| 456 | Version 1.3, 3 November 2008
|
|---|
| 457 |
|
|---|
| 458 | Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
|
|---|
| 459 | <http://fsf.org/>
|
|---|
| 460 |
|
|---|
| 461 | Everyone is permitted to copy and distribute verbatim copies
|
|---|
| 462 | of this license document, but changing it is not allowed.
|
|---|
| 463 |
|
|---|
| 464 | 0. PREAMBLE
|
|---|
| 465 |
|
|---|
| 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.
|
|---|
| 473 |
|
|---|
| 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.
|
|---|
| 478 |
|
|---|
| 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.
|
|---|
| 487 |
|
|---|
| 488 | 1. APPLICABILITY AND DEFINITIONS
|
|---|
| 489 |
|
|---|
| 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.
|
|---|
| 499 |
|
|---|
| 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.
|
|---|
| 503 |
|
|---|
| 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.
|
|---|
| 514 |
|
|---|
| 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.
|
|---|
| 522 |
|
|---|
| 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.
|
|---|
| 528 |
|
|---|
| 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".
|
|---|
| 542 |
|
|---|
| 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.
|
|---|
| 553 |
|
|---|
| 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.
|
|---|
| 560 |
|
|---|
| 561 | The "publisher" means any person or entity that distributes copies
|
|---|
| 562 | of the Document to the public.
|
|---|
| 563 |
|
|---|
| 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.
|
|---|
| 572 |
|
|---|
| 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.
|
|---|
| 579 |
|
|---|
| 580 | 2. VERBATIM COPYING
|
|---|
| 581 |
|
|---|
| 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.
|
|---|
| 592 |
|
|---|
| 593 | You may also lend copies, under the same conditions stated above,
|
|---|
| 594 | and you may publicly display copies.
|
|---|
| 595 |
|
|---|
| 596 | 3. COPYING IN QUANTITY
|
|---|
| 597 |
|
|---|
| 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.
|
|---|
| 610 |
|
|---|
| 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.
|
|---|
| 615 |
|
|---|
| 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.
|
|---|
| 628 |
|
|---|
| 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.
|
|---|
| 633 |
|
|---|
| 634 | 4. MODIFICATIONS
|
|---|
| 635 |
|
|---|
| 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:
|
|---|
| 643 |
|
|---|
| 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.
|
|---|
| 650 |
|
|---|
| 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.
|
|---|
| 657 |
|
|---|
| 658 | C. State on the Title page the name of the publisher of the
|
|---|
| 659 | Modified Version, as the publisher.
|
|---|
| 660 |
|
|---|
| 661 | D. Preserve all the copyright notices of the Document.
|
|---|
| 662 |
|
|---|
| 663 | E. Add an appropriate copyright notice for your modifications
|
|---|
| 664 | adjacent to the other copyright notices.
|
|---|
| 665 |
|
|---|
| 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.
|
|---|
| 670 |
|
|---|
| 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.
|
|---|
| 674 |
|
|---|
| 675 | H. Include an unaltered copy of this License.
|
|---|
| 676 |
|
|---|
| 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.
|
|---|
| 685 |
|
|---|
| 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.
|
|---|
| 694 |
|
|---|
| 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.
|
|---|
| 699 |
|
|---|
| 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.
|
|---|
| 703 |
|
|---|
| 704 | M. Delete any section Entitled "Endorsements". Such a section
|
|---|
| 705 | may not be included in the Modified Version.
|
|---|
| 706 |
|
|---|
| 707 | N. Do not retitle any existing section to be Entitled
|
|---|
| 708 | "Endorsements" or to conflict in title with any Invariant
|
|---|
| 709 | Section.
|
|---|
| 710 |
|
|---|
| 711 | O. Preserve any Warranty Disclaimers.
|
|---|
| 712 |
|
|---|
| 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.
|
|---|
| 720 |
|
|---|
| 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.
|
|---|
| 726 |
|
|---|
| 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.
|
|---|
| 737 |
|
|---|
| 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.
|
|---|
| 741 |
|
|---|
| 742 | 5. COMBINING DOCUMENTS
|
|---|
| 743 |
|
|---|
| 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.
|
|---|
| 751 |
|
|---|
| 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.
|
|---|
| 761 |
|
|---|
| 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."
|
|---|
| 767 |
|
|---|
| 768 | 6. COLLECTIONS OF DOCUMENTS
|
|---|
| 769 |
|
|---|
| 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.
|
|---|
| 776 |
|
|---|
| 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.
|
|---|
| 782 |
|
|---|
| 783 | 7. AGGREGATION WITH INDEPENDENT WORKS
|
|---|
| 784 |
|
|---|
| 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.
|
|---|
| 793 |
|
|---|
| 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.
|
|---|
| 801 |
|
|---|
| 802 | 8. TRANSLATION
|
|---|
| 803 |
|
|---|
| 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.
|
|---|
| 817 |
|
|---|
| 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.
|
|---|
| 822 |
|
|---|
| 823 | 9. TERMINATION
|
|---|
| 824 |
|
|---|
| 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.
|
|---|
| 829 |
|
|---|
| 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.
|
|---|
| 836 |
|
|---|
| 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.
|
|---|
| 843 |
|
|---|
| 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.
|
|---|
| 849 |
|
|---|
| 850 | 10. FUTURE REVISIONS OF THIS LICENSE
|
|---|
| 851 |
|
|---|
| 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/>.
|
|---|
| 857 |
|
|---|
| 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.
|
|---|
| 870 |
|
|---|
| 871 | 11. RELICENSING
|
|---|
| 872 |
|
|---|
| 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.
|
|---|
| 880 |
|
|---|
| 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.
|
|---|
| 886 |
|
|---|
| 887 | "Incorporate" means to publish or republish a Document, in whole or
|
|---|
| 888 | in part, as part of another Document.
|
|---|
| 889 |
|
|---|
| 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.
|
|---|
| 896 |
|
|---|
| 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.
|
|---|
| 900 |
|
|---|
| 901 | ADDENDUM: How to use this License for your documents
|
|---|
| 902 | ====================================================
|
|---|
| 903 |
|
|---|
| 904 | To use this License in a document you have written, include a copy of
|
|---|
| 905 | the License in the document and put the following copyright and license
|
|---|
| 906 | notices just after the title page:
|
|---|
| 907 |
|
|---|
| 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''.
|
|---|
| 915 |
|
|---|
| 916 | If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
|---|
| 917 | Texts, replace the "with...Texts." line with this:
|
|---|
| 918 |
|
|---|
| 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.
|
|---|
| 922 |
|
|---|
| 923 | If you have Invariant Sections without Cover Texts, or some other
|
|---|
| 924 | combination of the three, merge those two alternatives to suit the
|
|---|
| 925 | situation.
|
|---|
| 926 |
|
|---|
| 927 | If your document contains nontrivial examples of program code, we
|
|---|
| 928 | recommend releasing these examples in parallel under your choice of free
|
|---|
| 929 | software license, such as the GNU General Public License, to permit
|
|---|
| 930 | their use in free software.
|
|---|
| 931 |
|
|---|
| 932 |
|
|---|
| 933 |
|
|---|
| 934 | Tag Table:
|
|---|
| 935 | Node: Top826
|
|---|
| 936 | Node: Overview1820
|
|---|
| 937 | Node: Disclaimer2667
|
|---|
| 938 | Node: Installation3163
|
|---|
| 939 | Node: How to Use3505
|
|---|
| 940 | Node: JavaScript Detection7002
|
|---|
| 941 | Node: Free Licenses Detection8289
|
|---|
| 942 | Node: Setting Your JavaScript Free8760
|
|---|
| 943 | Node: LibreJS Development Notes14487
|
|---|
| 944 | Node: Installation Requirements15601
|
|---|
| 945 | Node: LibreJS Internals16311
|
|---|
| 946 | Node: GNU Free Documentation License16961
|
|---|
| 947 |
|
|---|
| 948 | End Tag Table
|
|---|