Chilipp / docrep

A Python Module for intelligent reuse of docstrings
Apache License 2.0
30 stars 4 forks source link

issue with GPL license #22

Closed rabernat closed 3 years ago

rabernat commented 3 years ago

Hello and thanks for providing this excellent and useful package! We use it in xgcm: https://github.com/xgcm/xgcm

Some users of xgcm conducted a license audit and found that docrep (a xgcm dependency) is licensed under GPL (https://github.com/xgcm/xgcm/issues/308). These users can't use GPL-licensed code. Many commercial users can't use GPL-licensed code at all, which is why most of the scientific python stack avoids it.

Was GPL with its "copyleft" attributes a deliberate choice for docrep? If not, I was wondering if you would be open to changing your license to a "permissive" license like MIT or Apache.

Thanks for considering this question.

nbren12 commented 3 years ago

Just to chime in since I opened the upstream issue. The reason we can't use it is mostly because we would LIKE to open source our code under MIT so that others can freely use it without restriction. For us, GPL only becomes a problem once we distribute our code to others, for example by open sourcing it.

rabernat commented 3 years ago

Thanks for the clarification Noah. It's a subtle point.

Chilipp commented 3 years ago

hey @rabernat and @nbren12! Glad you hear that docrep helps your project! I must admit that I am not a license expert, so please correct me when I am wrong. To my knowledge, GPL only makes a problem when you want to include the source code of docrep in your own package or software and redistribute it further. There should not be a problem if you just use it as a dependency. Isn't the latter an option for you?

nbren12 commented 3 years ago

There should not be a problem if you just use it as a dependency.

I believe that any library code links against (imports) GPL code is considered a "derived work" and subject to the copyleft restrictions. Our lawyers certainly see it this way. There are ways around this (e.g. we can call ffmpeg, a GPL code, from a python script under MIT because ffmpeg runs as a separate process). See this stack overflow thread. The key quote is:

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means that combination of the GPL-covered plug-in with the non-free main program would violate the GPL.

This is the main difference between GPL and more permissive licenses like Apache or MIT, and is why most python packages avoid GPL.

Chilipp commented 3 years ago

oh wow, thanks for the lesson and the explanation @nbren12! @geyerb and @tobstac, this might be interesting for you, too.

I'll change the license of docrep to Apache then and close this issue when it is done.

nbren12 commented 3 years ago

Thanks so much @Chilipp!

rabernat commented 3 years ago

Amazing! Thanks @Chilipp! 🏆