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

Licensing conflict with xclim #12

Open
6 of 7 tasks
saschahofmann opened this issue Jan 24, 2024 · 19 comments
Open
6 of 7 tasks

Licensing conflict with xclim #12

saschahofmann opened this issue Jan 24, 2024 · 19 comments
Labels
question Further information is requested support

Comments

@saschahofmann
Copy link

saschahofmann commented Jan 24, 2024

As mentioned in this discussion on the xclim forum. There currently is a licensing conflict with xclim's Apache 2.0 license and lmoments3 GPL 3 license. The easiest way to resolve this conflict would be to change lmoments 3 license to a more permissive license (e.g. like Apache 2.0). I am using this issue to reach to all lmoments3 contributors and ask whether they'd be willing to change lmoments3 license?

The repo mentions

@Zeitsperre Zeitsperre added question Further information is requested support labels Jan 24, 2024
@Zeitsperre
Copy link
Contributor

@saschahofmann

Just to clarify that @faph is Florenz A.P. Hollebrandse!

@saschahofmann
Copy link
Author

In the code I can also see these J. R. M. Hosking, William Asquith, Pierre Gérard-Marchant mentioned do you by any chance have contact details for any of them?

@Zeitsperre
Copy link
Contributor

Unfortunately, no. I have no idea how to contact them.

@aulemahal
Copy link
Contributor

I think those names are associated with the Fortran code, which has a much more permissive licence, no ?

@saschahofmann
Copy link
Author

They are mentioned in distr.py: https://github.com/Ouranosinc/lmoments3/blob/main/lmoments3/distr.py#L2
But yes the fortran code has a more permissive disclaimer.

@faph
Copy link
Contributor

faph commented Jan 25, 2024

I have no problem with that as far as my own contributions are concerned.

@huard
Copy link
Contributor

huard commented Jan 25, 2024

Good for me as well.

@Zeitsperre
Copy link
Contributor

I've already expressed this elsewhere, but just for official purposes, I am comfortable with the licensing changes so long as the other authors are on board!

@SarahG-579462
Copy link

FYI William Asquith is active on github as @wasquith, for the R code. His code is under GPL v3.0. I'm not sure who provided the translation, it doesn't appear to be in Sam Gillespie's original translation (https://github.com/samgillespie/Python-L-Moments).

Sam Gillespie is also on github @samgillespie, they might be able to be contacted through there, but from what I understand their licensing is more permissive, IANAL, but simply including their license would likely be sufficient.

@saschahofmann
Copy link
Author

Thanks. Two good resources but yeah seems pretty hard to deduce who needs to give their consent. I added both to the list above for now.

@samgillespie
Copy link

I'm also comfortable with these licensing changes, I'm happy for this code to be as freely distributable as possible.

@Zeitsperre
Copy link
Contributor

I'm going to send an email directly to @monocongo to see if we can get his OK on this. I'll ask if he can weigh in on the issue here.

Unfortunately, I'm still not sure what we can do about gaining @wasquith's approval. Perhaps we could also email him directly?

@saschahofmann
Copy link
Author

Great. I just emailed @wasquith

@Zeitsperre
Copy link
Contributor

Zeitsperre commented Jan 30, 2024

Email sent to @monocongo

Hi James,

Happy (late) new year! Hope things are going well on your end.

I wanted to contact you directly about a development happening in the lmoments3 project. Last year, due to the fact that lmoments3 hadn't received any updates in several years, Ouranos managed to negotiate the maintenance of that project with the last owner (faph) and PyPI. Since then, we extended some optional functionality in xclim using it. Seeing as we were the maintainers and the module was optional, I didn't think that the GPLv3 license applied to xclim, but in fact it still does apply.

It was brought to our attention last week (Ouranosinc/xclim#1619) that my interpretation was off; The GPLv3 license extends to xclim regardless of the fact that we maintain the project. As such, we're working to resolve this by refactoring xclim to no longer extend lmoments3 in the interest of allowing users to provide lmoments3 themselves, but there's also the option of changing the license from GPLv3.

I'm wondering if you would be willing to sign off on changing the GPLv3 license to the BSD 3-Clause license (relevant issue: #14). A downstream user of xclim has been contacting all contributors to lmoments3, and we've gotten the OK from all except William Asquith and yourself (relevant issue: #12).

If you were open to changing the license (or not), would you be willing to weigh in on this? Credit will still be given to all developers in the new license, but we won't go forward with any license changes if there are any authors not on board.

Thanks and all the best,

And his response:

Hi Trevor,

I'm happy to follow you guys' lead. Please let me know what I can do to help. Kudos on all your hard work around this. I rewrote the L-moments code into Java and Python, more than once, from the original Hoskins Fortran code and it flummoxed me every time. This stuff is hard even without the additional licensing complexity. Godspeed!

--James

All good!

@aulemahal
Copy link
Contributor

Due to missing approbation from William Asquith, whose work is cited in the code as the source for part of the implementation, we decided to remove lmoments3 from the dependencies of xclim.

One can now pass a lmoments3 object to xclim's functions to retrieve the previous behaviour, see the PR linked above.

We can easily add lmoments3 as a dependency as soon as we have a positive response from that last person!

Zeitsperre added a commit to Ouranosinc/xclim that referenced this issue Feb 16, 2024
### What kind of change does this PR introduce?

* Remove `lmoments3` from xclim's dependencies.
* Accept `rv_continuous` instances for the `dist` arguments of the
statistical indices

### Does this PR introduce a breaking change?

Yes. Passing a mere string and `method='PWM'` is now broken. It will
raise a ValueError with a message asking to pass an instance of
`lmoments3` instead.

This also makes some functions awkward to use. Before, we relied on the
`scipy_dist` attribute of `params` to retrieve the distribution when
computing statistics. As one can now pass an object that has nothing to
do with scipy, those functions (`parametric_quantile` for example) must
now also accept the dist as an argument.

### Other information:

See Ouranosinc/lmoments3#12.

I kinda cheated and made it so the `dist` argument would show up as a
"String" parameter to the indicator. This only changes the metadata,
distributions objects can still be passed to indicators.
@Zeitsperre
Copy link
Contributor

Just as an FYI, xclim no longer requires (or links to) the lmoments3 package, but we've changed the way that scipy distribution functions are used in order to allow for users to still perform the same analyses, though. This change can always be reverted when the licensing situation changes.

We'll leave this issue open for the time being.

@aulemahal
Copy link
Contributor

I just found out that most of the L-moments fortran code is implemented here : https://cran.r-project.org/web/packages/lmom/index.html. This package is (actively) maintained by Hosking himself and is released under the CPL 1.0.
According to this https://www.tldrlegal.com/license/common-public-license-1-0-cpl-1-0, I think this license would allow sublicensing.

Thus a solution for this issue would be to say that this package is a derivative of that R package, and we could go forward with #14. I think.

@saschahofmann
Copy link
Author

But is that accurate? My understanding was that this repo is a derivative of this https://github.com/wasquith/lmomco ?

@aulemahal
Copy link
Contributor

You are right, I kinda read our license too fast, it does mention « Additional code » from R's lmomco. I have no idea which parts it concerns, so I can't judge on the scale of the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested support
Projects
None yet
Development

No branches or pull requests

7 participants