toobaz/mpl_sankey

license

amueller opened this issue · 14 comments

Hey toobaz!
Any chance you could relicense this to BSD?
I love it and I'd love to add some functionality but GPL is scary to companies.

Cheers,
Andreas

Hey amueller!

Do you have any specific company in mind? Companies that use free software but are scared by having to redistribute their improvements are scary to me (and I do have several specific companies in mind)... so if there are no pressing practical reasons, this project will remain copyleft.

Let me mention however that one very practical reason I would accept would be the inclusion in matplotlib.

@amueller only now I checked your profile and saw your employer... just to clarify I didn't mean to be sarcastic.

... but my argument still stands.

@amueller of your company/employer is interested in using this source in a closed source project, can always propose to buy a custom license. GPL permits the usage of dual licensing.

I find BSD a license too much corporate friendly.

Thanks for your thoughts! Just for a bit of background, I've been at MSFT for about a year, and active in the OSS PyData and Scipy community for about 10 years.

Yes, I have a very specific employer, but I didn't talk to legal about this yet. Basically the same is true in nearly all big companies, and also for all pydata / scipy projects, who won't take GPL code. If any project in the ecosystem wanted to pick this up, say matplotlib, or pandas or scikit-learn, that would require a re-license as well (if they want to modify it or vendor it). Apart from using this in a (currently) closed source project, I would like to use it in my OSS library dabl but can't, as I won't pick up a GPL dependency (same as other projects above). There is certainly political and philosophical arguments to make in either direction, but I think the scipy/pydata community basically made a decision.

I prefer to do everything I do in the open, but right now that is not practical. My goal is to make my current work OSS (as is all my past work) but that's a process. This library is awesome, but it's missing some features that I'd like to add.

So speaking practically, there's two options: You relicense, and I can potentially contribute, and it might end up in matplotlib, I can use it in dabl, any library in the ecosystem can easily include it.
Or you don't relicense, I'll have to reimplement, I'll use my reimplementation it in my internal project, but getting it open sourced will be work for me and probably not happen immediately, so my contributions will remain closed for now and I can't use it in dabl.

[third option is I reimplement it in my free time and publish it with BSD license and everybody can use it, though that would probably also require me to talk to my manager]

It's a new experience for me to be pegged as the industry guy ;)

Cheers
Andreas

Thanks for your extensive explanation. I didn't find it a practical enough argument, though.

As I said, inclusion in matplotlib, a powerful and widely adopted library which already made a license decision years ago, is something I consider a "practical argument". I sacrifice my preferred model ("if you benefit from my code, you need to allow me to benefit from your improvements") but I gain something (much easier access to my code for all matplotlib users). So that might be a reason to relicense my code to non-copyleft sooner or later.

But you are talking about your personal project possibly depending on this library. There is no reason why your BSD code can't depend on my GPL library, it ultimately all boils down to your personal "political and philosophical" perspective, which I respect but do not agree with. (Notice writing BSD code is one thing, requiring all dependencies to be BSD is a strictly more extreme "political and philosophical" perspective... I wonder if you also avoid using GCC-compiled Python execs in your environment). By the way, the sentence

nearly all big companies, and also for all pydata / scipy projects, who won't take GPL code.

needs at least a clarification now that even MSFT is Linux's best friend :-D

Projects in the scipy/pydata community also made licensing choices which I fully respect - I'm a contributor to several BSD-licensed projects, and as I said, I'm not excluding I might relicense my code for matplotlib in the future. Basically, the choice is to trade a potentially wider user base for a licensing model which is less friendly for the author.

So ultimately your argument for asking me to switch is your tastes... and their consequences. And while I thank you for describing the consequences of your tastes, since it is ultimately a matter of tastes, it's gonna be my tastes which matter, just because I wrote the code :-)

(But thanks - no pun intended - for clarifying that it's you, not your employer, who are so strict about avoiding copyleft software in your work environment. I did learn something - which to me is surprising.)

Ok, thank you for your thoughts.
My "strict views" are probably a consequence of long work with scikit-learn for example, and I certainly would like to change your code as well.

Really the main practical reason is "do you want my contributions or not", which, as you said, is me asking whether you want to align with my preferences, and of course it is reasonable to deny.

I would argue that BSD is more friendly to the author (as I don't sign away my own rights), but again, one can certainly have a spirited discussion about that.

Cheers,
A.

I would argue that BSD is more friendly to the author (as I don't sign away my own rights)

While I agree to not delve in the philosophical argument, this, unless I misunderstand, is factually false. As suggested also by @kowalski7cc , the author can always do whatever he or she wants, including relicensing with any license. That's what I will actually do if I ever merge my code in matplotlib!

As soon as you merged another person's PR you need their permission, though, or need to exclude their work [or need to want to defend in court that their addition was not substantial, maybe?]. Depending on the time frame, it might be hard to reach all of them.

As soon as you merged another person's PR you need their permission, though, or need to exclude their work [or need to want to defend in court that their addition was not substantial, maybe?]. Depending on the time frame, it might be hard to reach all of them.

Well, yes, if there are multiple authors (and no copyright waivers between them) they need to agree. That's still a way the GPL protects authors - however "authors" is defined for a specific project.

There is no reason why your BSD code can't depend on my GPL library

Oops, this is wrong (at least according to the FSF). Lost in the philosophical/economic debate, I forgot that this is precisely the difference between the LGPL and the GPL, and realized my actual intention was to license my library as LGPL since the beginning. So I just relicensed it.

This probably won't change your position, but I just wanted to clarify this mistake of mine.

Thanks. That means that I can use it, but changing it will have to go via upstream very carefully.
Also, LGPL and GPL are distinguished in terms of linking vs deriving, which is not really defined for Python code (there is no legal precedence saying importing is linking as opposed to derived code last time I checked. And what if I'm monkey patching?).

If you didn't ask @sandrotosi before relicensing, relicensing just now was probably not legally binding and/or you violated their copyright. never mind, saw you didn't merge the PR but applied a different solution instead. If you looked at their solution before writing yours, you might still have violated their copyright, though, it gets a bit murky there.

if it helps, i can state here (or on the PR i opened) that my code is in the public domain

i would also consider any license change to be looked from the perspective of having this code eventually merged into matplotlib upstream, which means most likely using their license

Thanks for pitching in. Btw I hope this didn't come across as me being a troll, I just wanted to illustrate that relicensing is hard and gets harder over time to do correctly.

To be honest I considered both the PR and my own version to be well below the copyrightable threshold of creativity. But thanks @sandrotosi for removing any doubt.

I added a simple PR template for contributors to avoid any possible misunderstanding on this issue:

https://github.com/toobaz/mpl_sankey/blob/master/.github/PULL_REQUEST_TEMPLATE.md