alvarotrigo / alvarotrigo/fullPage.js
GPLv3 license inconsistencies and violations
- Lenguaje dominante
- JavaScript
- Estrellas
- 35.4k
- Forks
- 7.1k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
Dear copyright holders,
I believe there are issues with the way fullPages.js is licensed. I specifically address all copyright holders since this project has taken contributions from others, which means that Alvaro Trigo is not the only copyright holder any longer, unless all contributors have waived their copyright with a form or so, something that could still happen by the way.
Please do not regard this as criticism on the choices made or an attack on the business model, I merely want to point out that I believe the licensing terms violate GPLv3 whereas GPLv3 itself is an option to the licensing. By the way, great library! I would like to use it, non-commercially, but also not open source in the way fullPage.js suggests. However, I came across several licensing restrictions and violations that I cannot resolve.
I will first go over smaller issues that I recognize and will increasingly discuss more severe issues leading up to violations of GPLv3, sometimes exemplified with use cases. I'm not sure how to resolve it, but I do make some suggestions.
### Missing headers in the files
The files do not contain the notices that are suggested for use of GPLv3. Instead there is a header with a restriction that in my opinion violates GPLv3. This is not apparent now but I will make my point clear below.
### Dubious terminology
The website uses dubious terminology when GPLv3 is concerned: I interpret the sentence 'Free for Open Source' as 'Gratis for Free [software]' where the latter means software that respects users' freedom. Whether software is open source is not the point of GPLv3, the point is whether the software is 'free' and respects the users' freedoms, see . In addition, price is also not the point: free software may be gratis or not.
### Distinction commercial / open source
The licensing plan suggests multiple, orthogonal options: that you can either use it for commercial or non-commercial projects or that you can use it for open-source or non-open-source projects (fullPage.js terminology). This suggests that commercial projects can never be open source projects.
### Conditional choice
If you want to use fullPage.js you have to make a choice for open sourcing your project (website or application) or to keep you project proprietary, depending on whether your website is commercial or not. First of all, this assumes that GPLv3 also covers websites or applications, which is dubious, see the next point. Second, this does not allow something that GPLv3 allows, namely using the software in an internal project that is never released to the public. Since the licensing scheme does not allow this, you could consider it a violation of freedom 0: the freedom to use the software for any purpose . This is also valid for the previous point, the licensing scheme seems to suggest that you cannot use fullPage.js licensed under GPLv3 if you use the project commercially.
### Does extend fullPage.js GPLv3 to the rest of a website?
The viewpoint of fullPage.js is that it does. The licensing scheme of the project tries to enforce with GPLv3 that if you use fullPage.js on website A then website A should have the GPLv3 license too, covering the content of the whole website, so CSS, HTML, and JavaScript. This is highly dubious. I could perhaps agree on the JavaScript of the website, however, it is completely conceivable that JavaScript libraries exist that operate completely independently of fullPage.js.
From my point of view, a JavaScript library such as fullPage.js takes as input HTML and CSS specified in HTML and CSS files and transforms that as data to different HTML and CSS, similar to how a compiler such as GCC takes as input a (possibly proprietary) program and transforms it to output. This would mean that GPLv3 does not cover the HTML and CSS.
As a use-case, the FSF releases its content under license CC BY-ND [because they express opinions](https://www.gnu.org/licenses/license-list.html#OpinionLicenses). This license prohibits to make a derivative of the opinions and redistribute them attributing the modified opinions to the original copyright holder (that would make no sense). However, suppose they would want to use the GPLv3 licensed fullPage.js library for this, they would need to release their opinion under GPLv3? That would make no sense. This means that fullPage.js cannot be used for their purpose, restricting them to use the software for any purpose, violating freedom 0 (). Hence, either fullPage.js is not GPLv3, or the terms of fullPage.js are incorrect.
For web applications, fully written in JavaScript based on fullPage.js I agree that the web application should be released under GPLv3 as well.
### More freedom 0 violations
The software requires each user to have a license key (see [line 95](https://github.com/alvarotrigo/fullPage.js/blob/master/dist/fullpage.js#L95) and [line 3419](https://github.com/alvarotrigo/fullPage.js/blob/master/dist/fullpage.js#L3419)). This is also true for users that want to choose GPLv3. However, to obtain such a key, users must fill in a [form](https://alvarotrigo.com/fullPage/extensions/requestKey.html), requiring users to tell one of the copyright holders
1. the license of the project,
1. the public repository,
1. what the project is about, and
1. an email address.
In addition, it seems to have the requirement that you be open about how the repository is promoted, assuming that a license can be denied if you are not actively promoting the website.
All this violates [freedom 0 of GPLv3](https://www.gnu.org/philosophy/free-sw.html): "The freedom to run the program means the freedom for any kind of person or organization to use it on any kind of computer system, for any kind of overall job and purpose, without being required to communicate about it with the developer or any other specific entity."
Hence, either fullPage.js is not GPLv3 or the terms of fullPage.js are incorrect.
As a use-case, since fullPage.js is GPLv3 licensed, I could make a derivative removing the restrictions above and re-release it under GPLv3. Please note that GPLv3 explicitly states that it is allowed to remove additional restrictions, see section 7 of the license.
### Freedom 2 and 3 violations
By requiring licensing keys, freedom 2 and 3 are restricted. It seems to suggest that only one copyright holder has the power to distribute the software and charge for it. However, GPLv3 states that anyone should be able to redistribute the software.
### Suggestions
Please, again, do not consider this as criticism and I am sympathetic to the goal that is pursued: charging for the library if the software is used commercially. However, in my opinion, the GPLv3 license is misused for this purpose and I would advise to find a different means to achieving this goal.
It seems to be the case that the goal is to enforce websites to be public and open source if there is no charge for fullPage.js. The assumption is that a commercial website would never want to be in this situation, so they will choose a commercial license. So, if this is true, the copyleft clause is used as an economic tool rather than a tool that helps respecting freedom. On the other hand, being an open source project, it accepts modifications and improvements from a community.
I do not believe this holds up. As stated earlier, in my opinion, users, also large commercial organizations could just use fullPage.js in their websites based on the GPLv3 license. They could simply remove the further restrictions. However, if users build upon fullPage.js with extensions, other JavaScript libraries that are dependent on fullPage.js, then these extensions should also be released under GPLv3. I do not believe the copyleft clause of GPLv3 extends to the rest of a website given the use of fullPage.js under GPLv3.
Given this situation, I'm not sure how to proceed in a correct way but let me suggest two options with their benefits and drawbacks:
#### Remove restrictions and apply dual licensing
This would be the easiest option and closest to the original intention. Release the software under GPLv3 without any violation of it and release it under a commercial (better, non-free) license where users are allowed to choose the license themselves. This requires no permission from all copyright holders, because you could assume that all copyright holders agreed on the licensing anyway, probably unaware of the inconsistencies and violations it contained. Large organizations will probably choose the non-free license anyway since you could argue that the GPLv3 does extend to the website's CSS and HTML. (I argue against it but large organizations will probably not take the risk given the current pricing.)
#### Remove GPLv3 and apply a custom license
Since the above arguments show that GPLv3 is violated, perhaps it would be best to remove GPLv3 altogether and apply a custom license. In some way this has already been attempted by adding additional restrictions that violate GPLv3. However, this would require permission from all copyright holders which may be difficult to acquire. It may be the case that all contributors already waived the copyright and it solely belongs to Alvaro Trigo, then this would be easy to do. However, it is may be possible that fullPage.js is then forked based on the GPLv3 license removing the current restrictions.
Let me finish by reiterating that there is no judgement from my side, I think I understand the reasons and the goal, but I do believe that GPLv3 is misused for the goal.
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.