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

[MAINT] Add GPL license #36

Merged
merged 2 commits into from
Mar 15, 2021
Merged

[MAINT] Add GPL license #36

merged 2 commits into from
Mar 15, 2021

Conversation

tsalo
Copy link
Member

@tsalo tsalo commented Feb 24, 2021

Closes #4, but I'm still a little unsure if this is enough on its own.

Per this SO post:

The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.

@eurunuela @notZaki WDYT?

Comment on lines +62 to +70
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's the relevant section.

@eurunuela
Copy link
Collaborator

Sounds like that's our case, yes. Thanks for finding out!

@tsalo
Copy link
Member Author

tsalo commented Feb 24, 2021

Should we add something to our docstrings then? Maybe something like the following:

This implementation is licensed under GPL-v2 by the GIFT developers.
It has been translated to Python by the ME-ICA developers.
Additional changes may have been made to the translated code that may impact behavior.
For more information about the changes that have been made, see mapca's release notes.

@notZaki
Copy link
Collaborator

notZaki commented Feb 24, 2021

Are there any popular python modules that use GPL? I would expect the viral nature of the license to be problematic.

I'm also not sure if GPL would allow this package to be merged into nilearn (BSD license).

@tsalo
Copy link
Member Author

tsalo commented Feb 25, 2021

Are there any popular python modules that use GPL?

I'm not sure, but we can look around.

I'm also not sure if GPL would allow this package to be merged into nilearn (BSD license).

That's a depressing thought...

@eurunuela
Copy link
Collaborator

I honestly have no idea about licenses... I know @smoia looked into the licensing world when he had to choose one for phys2bids, maybe he can help us here.

@smoia
Copy link

smoia commented Feb 25, 2021

I'm not sure how I can help you, but here's the little I know/understand:

  • I didn't see any licence in the GIFT toolbox. Could you please redirect me to it?
  • You cannot release a GPLv2 based program as a part of a BSD licenced program (you can do the opposite if the BSD is the revised version of the BSD, not the original one). So if GIFT is released under GPLv2, ATM this code can't be merged into nilearn.
  • However, you can contact the original authors of GIFT and ask them to use a more liberal licence in GIFT or more probably give you explicit permission to release this code with a more liberal licence that could be compatible with BSD (some forms of BSD and probably MIT?).

This is why everyone should use Apache-2 😜

This said and jokes aside, I'm not a lawyer nor have experience in that field, so if @tsalo you can contact the legal department of FIU that might be a safer way to proceed.

@eurunuela
Copy link
Collaborator

@smoia the GIFT license is in each of their files and if I remember correctly it's a GPU. See here.

@tsalo
Copy link
Member Author

tsalo commented Mar 4, 2021

@smoia Thanks for that info! It's really useful. Someone should really figure out cross-license interactions and share it in something easy to read.

EDIT: So... I say we hold off on contacting the GIFT folks about changing or supporting a new license unless nilearn shows a strong interest. However, I'm still not sure if what I've added in this PR is sufficient for us to publish this code. If we reach a consensus that it is enough, then we can just merge this PR and release.

@notZaki
Copy link
Collaborator

notZaki commented Mar 4, 2021

If we reach a consensus that it is enough, then we can just merge this PR and release.

I could be wrong, but I think that merging this PR means that any other package that decides to import this module in their code will also have to change their license to GPL. The LGPL, in comparison, is more permissive and wouldn't have this cascading effect.

That's why I was wondering if there even was a popular python module that is licensed under GPL.

@eurunuela
Copy link
Collaborator

I could be wrong, but I think that merging this PR means that any other package that decides to import this module in their code will also have to change their license to GPL. The LGPL, in comparison, is more permissive and wouldn't have this cascading effect.

LGPL makes more sense to me then. However, if we're not merging with nilearn, I'd keep the GPL license instead. I don't think we should be permissive if maPCA stays in ME-ICA as only we have permission from GIFT to release the code.

EDIT: So... I say we hold off on contacting the GIFT folks about changing or supporting a new license unless nilearn shows a strong interest. However, I'm still not sure if what I've added in this PR is sufficient for us to publish this code. If we reach a consensus that it is enough, then we can just merge this PR and release.

Yeah, I wouldn't bother GIFT folks with the license cause they're happy with whatever we do as long as the original work is cited and we share the link to it.

So, the way I see it is:

  • Nilearn wants maPCA in, we go for LGPL.
  • Nilearn is not interested in maPCA, we go for GPL.

@smoia
Copy link

smoia commented Mar 5, 2021

Hey there again!

Having seen GIFT's license (it's a GNUv2 and later, thank you @eurunuela for redirecting me to it!), I have to give you the bad news that without the original authors permission the only freedom you have in choosing license for this package is about which version of the standard GPL to adopt ("v2 only", "v2 and later", or "v3") - see here. "V3" is better in many ways (e.g. higher compatibility with other licenses, see here), although "v2 and later" is more compatible with other GPL licenses (nonetheless, I would adopt v3).

I know it's oftentimes overlooked (I think we're overlooking it in physiopy too), but independently of the type of licence you choose, adding the licence file to the package is not enough to "activate" the licence. I would at the very least add the full banner (see around line 280 of the file in this PR for an example) to the main source file of the package (mapca.py). Even better, you could add at least the copyright line (or again the full banner) to each file in the package.

In any case, I would suggest you to ask the original authors the permission to relicense this package as LGPL (v2.1, v2.1 and later, or v3 - v3 would be the best) or, since you're asking to relicense, as Apache 2.0. If you contact them, you might even ask if they want to update their licence to (L)GPLv3. That comes before contacting nilearn's team because otherwise you'd force nilearn to adopt GPL or do nothing.

Also don't worry too much on the finality of this PR. You can always change the licence at a later date, as long as it's compatible with GIFT's licence.

Also, did I mention that v3 is my favourite GPL version? 😜

possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's the part I was talking about.

@eurunuela
Copy link
Collaborator

Thank you so much @smoia !!

I'd stick to GPL3 for the moment and release. I feel like merging with nilearn will take long, so we can come back to choosing the license in the future. Mainly because there was interest in using the package and it's starting to feel like we're delaying things when we could already release.

@notZaki
Copy link
Collaborator

notZaki commented Mar 5, 2021

Mainly because there was interest in using the package and it's starting to feel like we're delaying things when we could already release.

I'm not sure if releasing under GPL would be useful to those interested groups, unless they're using GPL too, because every downstream dependency will have to change their license to GPL if they decide to use mapca.

So I think the options would be:

  • If nilearn is not interested, ask GIFT folks to let us license mapca under LGPL
  • If nilearn is interested, ask GIFT folks to let us license mapca under BSD (same as nilearn)

@eurunuela
Copy link
Collaborator

I'm not sure if releasing under GPL would be useful to those interested groups, unless they're using GPL too, because every downstream dependency will have to change their license to GPL if they decide to use mapca.

Maybe @tsalo knows, was the interest on mapca about developing more tools? Or was it about just using mapca for personal use, e.g. data analysis?

@smoia
Copy link

smoia commented Mar 5, 2021

- If nilearn is interested, ask GIFT folks to let us license mapca under BSD (same as nilearn)

It does sound the best idea now that I think about it, for the future. However,

I'd stick to GPL3 for the moment and release. I feel like merging with nilearn will take long, so we can come back to choosing the license in the future. Mainly because there was interest in using the package and it's starting to feel like we're delaying things when we could already release.

This is a better idea for the moment. By making this code publicly available without a (GPL) licence you are violating GIFT's GPLv2 licence. Adding a licence now is (to some extent) more important than which licence you choose - you can always change it at a later moment.

@tsalo
Copy link
Member Author

tsalo commented Mar 5, 2021

Currently, the only other package where the devs have expressed an interest is rapidtide, but I think mapca would be useful beyond tedana and rapidtide.

@notZaki
Copy link
Collaborator

notZaki commented Mar 5, 2021

@smoia That's a good point. In that case, I'm ok with merging this PR too.

@tsalo
Copy link
Member Author

tsalo commented Mar 15, 2021

This is a better idea for the moment. By making this code publicly available without a (GPL) licence you are violating GIFT's GPLv2 licence. Adding a licence now is (to some extent) more important than which licence you choose - you can always change it at a later moment.

@smoia Should I change GPLv2 to GPLv3 in this PR then? Or just merge now as-is?
EDIT: Never mind, it's clear that we should merge now and change the license later if necessary. Merging.

@tsalo tsalo merged commit 6300c36 into main Mar 15, 2021
@tsalo tsalo deleted the add-license-1 branch March 15, 2021 18:07
@tsalo tsalo mentioned this pull request Mar 15, 2021
@smoia
Copy link

smoia commented Mar 15, 2021

@tsalo good choice!

I would convert to GPL3 for international support, but that's really up to you people.

However, I would still suggest to add the notice around line 288 of the licence at least in the main workflow!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add license
4 participants