Skip to content
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

Change terraform-provider-minio license to AGPL-3.0 and append /v2 to the module name #522

Merged
merged 10 commits into from
Nov 5, 2023

Conversation

BuJo
Copy link
Collaborator

@BuJo BuJo commented Sep 22, 2023

Since v2 of madmin (the SDK for administrative access to minio) switched to AGPL 3, the licenses used in this project are:

  1 AGPL-3.0
 18 Apache-2.0
  3 BSD-2-Clause
 14 BSD-3-Clause
 20 MIT
 14 MPL-2.0

Since AGPL 3 is a copyleft license, as opposed to the more permissive licenses before, this has to be addressed. At least the combined work (on building the provider) and publishing it to the terraform registry I believe must be done under AGPL 3.0.

Since v2 of madmin (the SDK for administrative access to minio)
switched to AGPL 3, the licenses used in this project are:

      1 AGPL-3.0
     18 Apache-2.0
      3 BSD-2-Clause
     14 BSD-3-Clause
     20 MIT
     14 MPL-2.0

Since AGPL 3 is a copyleft license, as opposed to the more permissive
licenses before, this has to be addressed.  At least the combined
work (on building the provider) and publishing it to the terraform
registry I believe must be done under AGPL 3.0.

* see https://min.io/compliance
* see https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses
* see https://en.wikipedia.org/wiki/GNU_General_Public_License#Compatibility_and_multi-licensing
* see https://softwareengineering.stackexchange.com/a/371435
felladrin

This comment was marked as resolved.

@felladrin felladrin added the help wanted Extra attention is needed label Sep 22, 2023
@BuJo
Copy link
Collaborator Author

BuJo commented Sep 26, 2023

Investigating the other way round:

What would it take to re-license the code.

  • I guess the contributors with significant contributions would have to agree.
  • All the current licenses have to be AGPL-3.0 compatible as we can't re-license the other code. I think that's the case. Afair it's something like "the other license can't have additional restrictions".
git ls-tree -r -z --name-only HEAD |
  xargs -0 -n1 git blame -w -M --line-porcelain HEAD |grep -ae "^author " |
  sort|uniq -c|sort -nr
   4782 author Amanda Souza
   2451 author Jonathan Buch
   1315 author Pat Sier
    964 author Paul Stack
    541 author aslak11
    453 author Victor Nogueira
    417 author Tobias Krischer
    236 author nolte
    182 author tomasherout
    157 author Adphi
    156 author renovate[bot]
    156 author Artem Usenko
    130 author Antoine Colombier
     88 author Christian
     64 author Pablo RUTH
     31 author Yarden Shoham
     22 author Sander Kuusemets
     19 author Teemu Matilainen
     14 author Capybara DevCloud
      7 author Lin Yinfeng
      6 author Richard Schwab
      5 author Harshavardhana
      4 author Renovate Bot
      2 author Sjoerd de Jong
      1 author y-yagi
      1 author Stefan Linke
      1 author ktaf
      1 author Jeremy Mayeres
      1 author Bishop Clark

@felladrin
Copy link
Collaborator

But migrating to AGPL-3.0 wouldn't force us to remove it from terraform registry? [Reference]

@BuJo
Copy link
Collaborator Author

BuJo commented Sep 27, 2023

Not really, it's fine, see partnerships in the Terraform Documentation. We simply would not be eligible to be "partner", we'll stay with a community badge. That's fine for now I guess?

The alternative is to replicate the needed functionality for the admin API. I'm not sure what that entails and how stable the interfaces are (historically my experience is that the admin interfaces break often when not using the same minioclient as minio).

@felladrin
Copy link
Collaborator

Not really, it's fine, see partnerships in the Terraform Documentation. We simply would not be eligible to be "partner", we'll stay with a community badge. That's fine for now I guess?

Let's do it then :)

I guess the contributors with significant contributions would have to agree.

What would be the best way to confirm if each one of them agrees?

@BuJo
Copy link
Collaborator Author

BuJo commented Oct 10, 2023

Let's just write everyone a mail if they are OK with that change?

How about something like:

Subject: Are you ok with a license change for minio terraform-provider?

Heya <Name>,

writing to you as you contributed to the minio terraform-provider before.

TL;DR:  Are you OK with your contribution changing to AGPL-3.0?

To upgrade to a newer minio Admin SDK (which itself changed to AGPL-3.0)
we need to do something[1].  To not write our own implementation for a
changing minio Admin API, we are trying to make the codebase for the
minio terraform-provider compatible.  Licensing is hard and we're trying
not to run into problems with corporate lawyers.

It'd be awesome if you replied a "yes" or "no" so we can gauge if
changing the License is OK with every major contributor.

If you have more questions, would like a chat, anything, just ask!

Warm greetings,

the terraform-provider-minio maintainers.

[1] https://github.com/terraform-provider-minio/terraform-provider-minio/pull/522

@felladrin
Copy link
Collaborator

Thanks for preparing it, BuJo! I'll collect everyone's e-mail and send the emails tonight.

@felladrin
Copy link
Collaborator

felladrin commented Oct 26, 2023

About the question from @Adphi in #532 (comment)

What are the consequences for Pulumi and their minio provider (https://github.com/pulumi/pulumi-minio)?

I've been thinking about it, and we will affect them. Here are the reasons:

Here are some possible solutions:

  • We create a v2.0.0 tag right after making the licence change to AGPL in our repo, and they continue using v1.x, so they are not forced to change their license.
  • We suggest dependants of our repository who want to keep their license to fork it, so it would be easier for them to continue supporting terraform-provider-minio with madmin-go v1.

Besides that, the Pulumi team also started a discussion on their repo (pulumi/pulumi-minio#200) and may propose more solutions.

@felladrin
Copy link
Collaborator

@BuJo, most contributors have responded and approved the license change; tonight, I'll re-contact a few who missed the email. Could you update this PR meanwhile?

And do we all agree on releasing v2.0.0 after the license change?

@felladrin felladrin changed the title Add AGPL 3.0 License to satisfy madmin Change terraform-provider-minio license to AGPL-3.0 and update module path to /v2 Nov 5, 2023
@felladrin
Copy link
Collaborator

We've received the remaining approvals from collaborators, and we are ready to merge this PR!

This change is safe for both consumers of the published provider (who will need to manually update their terraform config to version = ">= 2.0.0" if they decide to upgrade) and consumers of our Go package (who will need to change their import paths to github.com/aminueza/terraform-provider-minio/v2 if they decide to upgrade).

We've created a v1 branch, which is now protected and will live along with the main. The main branch, from now on, will contain the changes of terraform-provider-minio/v2.

We'll also clarify the reason for the breaking change in the Release Notes.

Gratitude to all those who participated and provided assistance in making this decision!

@felladrin felladrin changed the title Change terraform-provider-minio license to AGPL-3.0 and update module path to /v2 Change terraform-provider-minio license to AGPL-3.0 and append /v2 to the module name Nov 5, 2023
@felladrin felladrin merged commit f4464e5 into main Nov 5, 2023
2 checks passed
@felladrin felladrin deleted the revise-license branch November 5, 2023 03:38
kireque referenced this pull request in kireque/home-ops Mar 12, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [minio](https://registry.terraform.io/providers/aminueza/minio)
([source](https://togithub.com/aminueza/terraform-provider-minio)) |
required_provider | major | `1.20.1` -> `2.1.0` |

---

### Release Notes

<details>
<summary>aminueza/terraform-provider-minio (minio)</summary>

###
[`v2.1.0`](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v2.1.0)

[Compare
Source](https://togithub.com/aminueza/terraform-provider-minio/compare/v2.0.1...v2.1.0)

#### What's Changed

- Fixed group policy assign parameter typo by
[@&#8203;danielhass](https://togithub.com/danielhass) in
[https://github.com/aminueza/terraform-provider-minio/pull/553](https://togithub.com/aminueza/terraform-provider-minio/pull/553)
- Document `DeleteMarker` expiry in ilm policy by
[@&#8203;michaelruigrok](https://togithub.com/michaelruigrok) in
[https://github.com/aminueza/terraform-provider-minio/pull/558](https://togithub.com/aminueza/terraform-provider-minio/pull/558)
- Add resource_minio_s3\_object 'source' support by
[@&#8203;fhemberger](https://togithub.com/fhemberger) in
[https://github.com/aminueza/terraform-provider-minio/pull/555](https://togithub.com/aminueza/terraform-provider-minio/pull/555)

#### New Contributors

- [@&#8203;danielhass](https://togithub.com/danielhass) made their first
contribution in
[https://github.com/aminueza/terraform-provider-minio/pull/553](https://togithub.com/aminueza/terraform-provider-minio/pull/553)
- [@&#8203;michaelruigrok](https://togithub.com/michaelruigrok) made
their first contribution in
[https://github.com/aminueza/terraform-provider-minio/pull/558](https://togithub.com/aminueza/terraform-provider-minio/pull/558)
- [@&#8203;fhemberger](https://togithub.com/fhemberger) made their first
contribution in
[https://github.com/aminueza/terraform-provider-minio/pull/555](https://togithub.com/aminueza/terraform-provider-minio/pull/555)

**Full Changelog**:
aminueza/terraform-provider-minio@v2.0.1...v2.1.0

###
[`v2.0.1`](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v2.0.1)

[Compare
Source](https://togithub.com/aminueza/terraform-provider-minio/compare/v2.0.0...v2.0.1)

#### What's Changed

- Fix null expiration date handling by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[https://github.com/aminueza/terraform-provider-minio/pull/545](https://togithub.com/aminueza/terraform-provider-minio/pull/545)
- Update terraform version to 1.5.7 in GitHub Action by
[@&#8203;felladrin](https://togithub.com/felladrin) in
[https://github.com/aminueza/terraform-provider-minio/pull/540](https://togithub.com/aminueza/terraform-provider-minio/pull/540)

**Full Changelog**:
aminueza/terraform-provider-minio@v2.0.0...v2.0.1

###
[`v2.0.0`](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v2.0.0)

[Compare
Source](https://togithub.com/aminueza/terraform-provider-minio/compare/v1.20.1...v2.0.0)

#### What's Changed

- Update madmin-go to version 3 by
[@&#8203;acolombier](https://togithub.com/acolombier) in
[https://github.com/aminueza/terraform-provider-minio/pull/514](https://togithub.com/aminueza/terraform-provider-minio/pull/514)
- Handle empty service account policy by
[@&#8203;ArataEM](https://togithub.com/ArataEM) in
[https://github.com/aminueza/terraform-provider-minio/pull/518](https://togithub.com/aminueza/terraform-provider-minio/pull/518)
- Go 1.20 by [@&#8203;BuJo](https://togithub.com/BuJo) in
[https://github.com/aminueza/terraform-provider-minio/pull/519](https://togithub.com/aminueza/terraform-provider-minio/pull/519)
- Destroy object versions on bucket force_destroy by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[https://github.com/aminueza/terraform-provider-minio/pull/524](https://togithub.com/aminueza/terraform-provider-minio/pull/524)
- Update goreleaser-action to v5 and add permission for the workflow to
attach binaries to GitHub Releases by
[@&#8203;felladrin](https://togithub.com/felladrin) in
[https://github.com/aminueza/terraform-provider-minio/pull/521](https://togithub.com/aminueza/terraform-provider-minio/pull/521)
- Add Noncurrent Version expiration to ilm policy by
[@&#8203;ndejesus](https://togithub.com/ndejesus) in
[https://github.com/aminueza/terraform-provider-minio/pull/526](https://togithub.com/aminueza/terraform-provider-minio/pull/526)
- Add service account values to read and import by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[https://github.com/aminueza/terraform-provider-minio/pull/525](https://togithub.com/aminueza/terraform-provider-minio/pull/525)
- feat: add minio_s3\_bucket_replication resource by
[@&#8203;acolombier](https://togithub.com/acolombier) in
[https://github.com/aminueza/terraform-provider-minio/pull/528](https://togithub.com/aminueza/terraform-provider-minio/pull/528)
- feat: recreate user if not found anymore by
[@&#8203;tobikris](https://togithub.com/tobikris) in
[https://github.com/aminueza/terraform-provider-minio/pull/534](https://togithub.com/aminueza/terraform-provider-minio/pull/534)
- Bump google.golang.org/grpc from 1.58.0 to 1.58.3 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/aminueza/terraform-provider-minio/pull/535](https://togithub.com/aminueza/terraform-provider-minio/pull/535)
- Change terraform-provider-minio license to AGPL-3.0 and append `/v2`
to the module name by [@&#8203;BuJo](https://togithub.com/BuJo) in
[https://github.com/aminueza/terraform-provider-minio/pull/522](https://togithub.com/aminueza/terraform-provider-minio/pull/522)

#### Breaking Change: About the major version update

We've updated `madmin-go` to `v3` so we can use the new features from
the SDK, like the [bucket
replication](https://togithub.com/aminueza/terraform-provider-minio/pull/528).
As a consequence of this, we had to change our License to AGPL-3.0 to
comply with `madmin-go`, [which has been using AGPL-3.0 since its v2
release](https://togithub.com/minio/madmin-go/pull/154).

For those who can't upgrade to **terraform-provider-minio v2** due to
license incompatibilities, we recommend you keep using the **v1** until
you feel you need some of the new features.

To don't let anyone behind, we've created a
[v1](https://togithub.com/aminueza/terraform-provider-minio/tree/v1)
branch, which is now protected and will live along with the
[main](https://togithub.com/aminueza/terraform-provider-minio/tree/main).
So if users of `v1` want to push features/fixes, they can create pull
requests targeting that branch, and as soon as it's merged, we release a
new update for the `v1.x`.

For those importing this package in their software and want to upgrade,
here's the command to upgrade:

```bash
go get github.com/aminueza/terraform-provider-minio/v2@&#8203;v2.0.0
```

**Full Changelog**:
aminueza/terraform-provider-minio@v1.18.0...v2.0.0

> **Note**
> [v1](https://togithub.com/aminueza/terraform-provider-minio/tree/v1)
branch diverged from
[main](https://togithub.com/aminueza/terraform-provider-minio/tree/main)
at after the [release
v1.18.0](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v1.18.0).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMzUuNSIsInVwZGF0ZWRJblZlciI6IjM3LjIzNS42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: kireque-bot[bot] <143391978+kireque-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants