vdo.ninja icon indicating copy to clipboard operation
vdo.ninja copied to clipboard

Licensing question about AGPL

Open TechnologyClassroom opened this issue 2 years ago • 5 comments

The readme.md says, "VDO.Ninja is available as 'mostly' open-source; please see the LICENCE.md file for details." What is not open source about it?

The license.md file says "The VDO.Ninja source repository is governed by the GNU AFFERO GENERAL PUBLIC LICENSE. (AGPL-3.0) That AGPL-3.0 licence can be found here: AGPLv3.md" and "Some individual source files may contain different licencing term and perhaps different copyright holders. Such licencing and copyright information will be contained in the file's header and be limited to those files. If no such header is present in a file, the default AGPL-3.0 licence applies." Are there any files that have incompatible licenses to AGPL?

I would recommend copying the contents of the license file into the license heading of the readme and moving the AGPLv3.md file to LICENSE.md so that the license for the repository is clear at a glance within the first page view.

TechnologyClassroom avatar Jan 06 '22 21:01 TechnologyClassroom

There are some files in the third party folder that are MIT licensed, for example, but nothing that I am aware of that is incompatible with AGPL-3. Also, I do obfuscate the webrtc.js file, for reasons given elsewhere, but there should not be licensing conflicts there. Thank you for the recommendation.

steveseguin avatar Jan 06 '22 21:01 steveseguin

Thank you for the response!

MIT is compatible with GPL so it does not need any special notices in the readme. Typically the MIT license is added to the license header of the MIT files to comply with the license.

I think as long as the unobfuscated file is available and linked, it is file.

Would you like a PR with these changes?

TechnologyClassroom avatar Jan 06 '22 22:01 TechnologyClassroom

You're welcome to create a PR; I'll need to consider the change, although I'll probably accept it; thank you. It's just I get anxious when thinking about legal topics, and found being able to prepend a few words a bit stress relieving on that front. If its causing issues though, I can find another way.

steveseguin avatar Jan 06 '22 22:01 steveseguin

TLDR; License Compliance Updates Needed

We need to add a something in the HTML files that shows a link back to the repo or change deployment to host LICENSE.md, AGPLv3.md and CHANGES.md so that forking and self-hosting is compliant with the requirements of AGPLv3.

Otherwise, if someone forks as-is and self-hosts on a new domain it is technically in breach of AGPLv3.

I know that's weird, but that's the way the AGPLv3 works...

Explanation of Compliance Issues

It's rather complicated to understand license compliance for AGPLv3 in the front end. For self-hosting there are technically several things more than need to be included in order to comply with the license. This isn't immediately apparent until you go through the license verbatim. According to the AGPLv3 users must do the following to comply:

  1. Include a copy of the full license text and the original copyright notice This could be done with a comment with a link in the html source is good enough since the UI does not display "Appropriate Legal Notices". Currently, modifications of this source would have to add this manually there is no link provided to the full text of the license. It might be a good idea to add this in... (e.g. https://vdo.ninja/LICENSE.md - Doesn't currently work...)

  2. State all significant changes made to the original software. This is done by a link to the changelog on the VDO.ninja website but for self-hosting a modified version this changelog needs to be distributed with the program. This could be a link in the source like the LICENSE. (e.g. https://vdo.ninja/CHANGES.md - Bug again doesn't currently work...)

  3. Make available the source code when you distribute any works based on the licensed software. This is done by default since the entire thing is frontend code accessible on a new domain. However, hosting other files on the same web-server without clearly specifying which files are which does present a harry situation where all files are assumed to be AGPLv3. (This is known as license pollution. Would be better to list all file distributed in the LICENSE.md file to clearly delineate what is licensed...)

  4. Include any installation information necessary to update and reinstall the software if the program is being used as part of a consumer device This only applies if you were shipping the Android App by default on a device.

Conclusion

It looks like there is a bit of deployment reword that is needed before users can legally fork and self-host. Namely, deploying the LICENSE.md, AGPLv3.md and CHANGES.md files and linking to them from the HTML apps and mentioning those files or alternately linking to a public GitHub, BitBucket or GitLab in their index.html. (But the caveat is if they don't change that link they are in breach of the license. Ether way its messy.

If the files are not modified only the LICENSE file needs to be present. (or a link back to https://github.com/steveseguin/vdo.ninja would be easier...) But the AGPLv3 text needs to be provided and changes need to be listed. Just forking doesn't immediately allow for this compliance.

Like I said, AGPL compliance for front end apps is odd. But it can be done. Just need to add a few links to keep things legal.

frink avatar May 22 '22 22:05 frink

I've pushed a quick fix which makes forks compliant. But I wanted to write out the above in full because the AGPL is a weird beast!

frink avatar May 22 '22 22:05 frink