aminueza / terraform-provider-minio

Terraform provider for managing MinIO S3 buckets and IAM Users.
https://registry.terraform.io/providers/aminueza/minio
GNU Affero General Public License v3.0
243 stars 73 forks source link

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

Closed BuJo closed 1 year ago

BuJo commented 1 year ago

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.

BuJo commented 1 year ago

Investigating the other way round:

What would it take to re-license the code.

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 commented 1 year ago

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

BuJo commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

felladrin commented 1 year ago

About the question from @Adphi in https://github.com/terraform-provider-minio/terraform-provider-minio/discussions/532#discussioncomment-7382524

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:

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

felladrin commented 1 year ago

@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 commented 1 year ago

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!