Skip to content

Relicense project as AGPL-3.0-or-later #708

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
May 11, 2022
Merged

Relicense project as AGPL-3.0-or-later #708

merged 6 commits into from
May 11, 2022

Conversation

per1234
Copy link
Contributor

@per1234 per1234 commented May 9, 2022

Please check if the PR fulfills these requirements

  • The PR has no duplicates (please search among the Pull Requests
    before creating one)
  • Tests for the changes have been added (for bug fixes / features)

What kind of change does this PR introduce?

Infrastructure update and enhancement.

What is the current behavior?

Arduino Create Agent is licensed under the "GNU General Public License v2.0" (SPDX ID GPL-2.0-only) license

What is the new behavior?

Arduino Create Agent is licensed under the "GNU Affero General Public License v3.0".

The "or any later version" clause is provided (SPDX license identifier AGPL-3.0-or-later).

I did my best to assess the intellectual property of this codebase and make sure all contributors and copyright owners
granted us permission to relicense their code. For any inquiry, report or claim please contact us at [email protected].


Automation infrastructure has been put in place to validate the licensing and assist with its ongoing maintenance:

  • Use the licensee tool to check whether the license can be recognized and whether it is of the expected type
  • Use the Licensed tool to check that all dependencies use approved license types.

Does this PR introduce a breaking change?

No breaking change

Other information

Huge thanks to the project's contributors @johnlauer, @chilipeppr, @hannobraun, @jarretluft for their assistance with this effort, and for their commendably speedy responses to my messages!

per1234 added 6 commits May 9, 2022 03:07
The file is not written in Markdown, so `.md` is not an appropriate file extension.
This changes the licensing of Arduino Create Agent from GNU General Public License v2.0 to GNU Affero General
Public License v3.0.

The "or any later version" clause is provided (SPDX license identifier AGPL-3.0-or-later).

I did my best to assess the intellectual property of this codebase and make sure all contributors and copyright owners
granted us permission to relicense their code. For any inquiry, report or claim please contact us at [email protected].
Whenever one of the recognized license file names are modified in the repository, the workflow runs to check whether the
license can be recognized and whether it is of the expected type.

GitHub has a useful automated license detection system that determines the license type used by a repository, and
surfaces that information in the repository home page, the search web interface, and the GitHub API. This license
detection system requires that the license be defined by a dedicated file with one of several standardized filenames and
paths.

GitHub's license detection system uses the popular licensee tool, so this file also serves to define the license type
for any other usages of licensee, as well as to human readers of the file.

For this reason, and to ensure it remains a valid legal instrument, it's important that there be no non-standard
modifications to the license file or collisions with other supported licence files. This workflow ensures that any
changes which would change the license type or which license file is used by the detection are caught automatically.
A task and GitHub Actions workflow are provided here for checking the license types of Go project dependencies.

On every push and pull request that affects relevant files, the CI workflow will check:

- If the dependency licenses cache is up to date
- If any of the project's dependencies have an unapproved license type.

Approval can be based on:

- Universally allowed license type
- Individual dependency
The `.licenses` folder contains a cache of license metadata for all the project's Go dependencies. This serves two purposes:

- Allow the Licensed dependency license checker tool to only check licenses when a dependency is added or updated
- Allow the maintainer to manually define license metadata when the licensee tool is unable to automatically detect it
The "Licensed" dependency license checker tool uses the licensee tool to automatically determine the license type based
on metadata provided by the dependency author. This must be in a standardized format without any modifications. In cases
where that wasn't done, it is necessary to determine the license type and update the dependency license metadata cache in
the `.licenses` folder manually.

The Licensed tool will check this data whenever the dependency version is updated to make sure the license hasn't changed.
@per1234 per1234 added type: enhancement Proposed improvement topic: infrastructure Related to project infrastructure labels May 9, 2022
@per1234 per1234 requested a review from umbynos May 9, 2022 11:31
@per1234 per1234 self-assigned this May 9, 2022
@codecov-commenter
Copy link

Codecov Report

Merging #708 (60fa00b) into main (1ae5584) will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##            main    #708   +/-   ##
=====================================
  Coverage   8.45%   8.45%           
=====================================
  Files         64      64           
  Lines       5051    5051           
=====================================
  Hits         427     427           
  Misses      4570    4570           
  Partials      54      54           
Flag Coverage Δ
unit 8.45% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
bufferflow_default.go 0.00% <ø> (ø)
bufferflow_timed.go 0.00% <ø> (ø)
bufferflow_timedraw.go 0.00% <ø> (ø)
conn.go 0.00% <ø> (ø)
design/design.go 0.00% <ø> (ø)
design/pkgs.go 0.00% <ø> (ø)
hub.go 0.00% <ø> (ø)
info.go 0.00% <ø> (ø)
killbrowser.go 0.00% <ø> (ø)
killbrowser/killbrowser_linux.go 0.00% <ø> (ø)
... and 19 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1ae5584...60fa00b. Read the comment docs.

@umbynos
Copy link
Contributor

umbynos commented May 9, 2022

Awesome work Per!

@per1234 per1234 merged commit ac00b56 into arduino:main May 11, 2022
@per1234 per1234 deleted the relicense branch May 11, 2022 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: infrastructure Related to project infrastructure type: enhancement Proposed improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants