To speed up deliverability, JavaScript libraries — embedded in a website — are usually compressed by deleting all whitespace, line feeds, and comments. They are minified. As a result, they usually contain only very rudimentary license information — at least not the license text itself. But all FOSS licenses require us to ship some compliance artifacts with the code — especially the license text. This is the challenge with using JavaScript — in bootScore and elsewhere
Solution
- Use the Bootstrap JavaScript library as delivered by bootScore
- Use the JavaScript libraries as delivered by WordPress
- Create a table for containing the JavaScript compliance information
- For each JavaScript library delivered by bootScore or WordPress create a respective row in your JS table.
- Embed this table into your Open Source Compliance Page
- Make this Open Source Compliance Page accessible by the footer of your pages
Background
bootSCore contains some JS components. For example, its own unfolded JavaScript libraries1 — implicitly licensed under the MIT license but without any explicit licensing statement — and the minified Bootstrap JavaScript library2 — explicitly licensed under the MIT by a respective licensing statement. But none of them contain the license text itself. Also, WordPress brings with it some own and some minified 3rd party JavaScript libraries3, like the jQuery library4 that is licensed under the MIT and contains a respective licensing statement, but does not cover the license text itself. Regardless, of whom the site owner has got these libs — from bootScore or WordPress -, eventually it is she who has to fulfill the license requirements because it is her system that distributes the JavaScript libraries to her readers.
But what is actually the challenge?
Like the JavaScript libraries of Bootstrap and jQuery, most JS libraries are MIT licensed. This FOSS license requires that both — the copyright line and the license text — are distributed together with the open-source program: “The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.“5
For (L|A)GPL-licensed JavaScript libraries it is nearly the same. These licenses permit the distribution of the source code “provided that one conspicuously and appropriately publishes on each copy an appropriate copyright notice and disclaimer of warranty […] and gives any other recipients of the Program a copy of this License along with the Program”.6
So, we see a contradiction between the claim of the licenses and the everyday practice: On the one side, a browser not only loads down the page text (HTML) but also the JavaScript library. This download distributes the code and hence triggers the necessity to fulfill the open-source license requirements. On the other side, usually, the compressed libraries — although as a package often offered by the authors — no longer contain the required license information: the smaller the libs, the faster the site is presented on the reader’s machines.
As site owners, we have two options to deal with this challenge: Either we subsequently (and (semi) manually) heal the packages we implicitly have taken over by using WordPress and bootScore. Or we use them as we’ve got them. It’s clear: Healing would imply that we redo that job whenever we update WordPress or bootScore. So, we tend to go the other way — if there nevertheless was an option, not to violate the idea and the requirements of free software licenses.
The solution is this:
Whenever the developers of the JavaScript libraries have decided to distribute minified versions of their work, they also assume that they are used in that version. Thus — as we may derive from that fact — they simultaneously implicitly permit that kind of use even if it violated the license they’ve chosen. But — as a substitute of bundling the license text, the copyright information, etc. with the JavaScript libraries themselves — we should offer our users another option to get this information. However, we must additionally take care only to include the minified JavaScript libraries in our site that the developers themselves have provided. In the case of the Bootstrap-JS-Lib in bootScore and the Jquery-JS-Lib etc. in WordPress we may assume that they did so.
If we apply this process to our 3rd. party JS libraries, we have a strong argument for our position in case of a legal dispute — I’ve never heard of one — and we’re in good company: Even the FSF is proposing to do so.7 And the FSF really doesn’t have a reputation for taking license compliance lightly.
- cf.
./bootscore/js/theme.js
[↩] - cf.
./bootscore/js/lib/bootstrap.bundle.min.js
[↩] - cf. https://codex.wordpress.org/Javascript_Reference respectively
./wp-includes/js
[↩] - cf.
wp-includes/js/jquery/
[↩] - cf. MIT License [↩]
- pars pro toto cf. GPL‑2.0. Additionally, the (A)GPL requires that each code that uses the (A)GPL-licensed library, etc. is also licensed under the (A)GPL (copyleft effect). But that’s not the point in this context. [↩]
- cf. https://www.gnu.org/licenses/javascript-labels.html, https://www.gnu.org/licenses/javascript-labels-rationale.html, and https://www.iusmentis.com/computerprograms/opensourcesoftware/license-notices-web-applications [↩]