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

Possible switch to a permissive license? #72

Closed
sumbricht opened this issue May 22, 2023 · 9 comments
Closed

Possible switch to a permissive license? #72

sumbricht opened this issue May 22, 2023 · 9 comments
Labels

Comments

@sumbricht
Copy link

I really like "terminate" as it does solve some child-process killing issues that I have faced in a project that I soon intent do pursue commercially. Now that I have executed a license check against all my project's dependencies, it appears that terminate is the only dependency that uses a non-permissive licensing model. In reality this means that I'll either have to implement "something like terminate" myself or be prepared to hand over the source code of my whole project if anyone asks for it (not really a viable option :-)).

Therefore I'd like to ask if you'd consider releasing this library also under a different (permissive) licensing model, such as MIT?
Thanks for your consideration and your efforts in making terminate 👍

@nelsonic
Copy link
Member

I don't know if I understand the question here.
GPL allows you to use the code for virtually any purpose including closed source software with attribution.
If you're using an Android Phone or Linux in any capacity you're using GPL code.
If there is a legitimate case for changing the license to MIT we can do that, but there really shouldn't be any "concern" with using GPL-licensed code.

https://en.wikipedia.org/wiki/Category:Software_using_the_GPL_license

Blender, Wordpress, MySQL, Telegram, VLC etc. all use the GPL license.
It hasn't prevented those projects from having hundreds of millions of people using them.

If your legal advisor/team tells you that you can't use a package because it's not MIT or Apache,
please remind them that the commercial router they are using to access the internet is running on Linux.
Everyone is using GPL code whether they know/like it or not.

@sumbricht
Copy link
Author

Thanks for getting back so quickly, @nelsonic.
You're right in the sense that GPL allows an end-user to use the software to be used in any way they desire, including closed-source uses, e.g. for a derivative software used only within their own company. Once the intention is however not only to use but to distribute any derivative work, the derivative work has to be licensed under the same conditions. As bundling a package such as terminate into a software can be seen as creating a derivative work, this would mean I'd need to open-source my code under the GPL license if anyone asked for it.

With GPL being a copyleft license, the related Wikipedia article is actually quite enlightening:

Copyleft software licenses are considered protective or reciprocal in contrast with permissive free software licenses,[2] and require that information necessary for reproducing and modifying the work must be made available to recipients of the software program, which are often distributed as binary executables. This information is most commonly in the form of source code files, which usually contain a copy of the license terms and acknowledge the authors of the code.

Therefore I feel that a license like MIT or even LGPL would be very helpful to enable commercial projects to be built upon your project. At the end of the day I'm also not a lawyer, but the permissibility of distributing derivative works (with proper attribution) is what differentiates permissive (MIT, LGPL, ...) from protective (GPL) licensing models.

Thanks again for considering :-)

@nelsonic
Copy link
Member

Simon, Thanks for quoting the Wikipedia interpretation of GPL to me. 😄
Trust me, I've read every license and tens of Millions of lines of code in 30+ years of coding. ⏳
Please watch this explanation from Linus Torvalds why he uses GPL: https://youtu.be/PaKIZ7gJlRU

Read the GNU FAQ: https://www.gnu.org/licenses/gpl-faq.en.html#GPLRequireSourcePostedPublic
image

Please read through the LICENSE: https://github.com/dwyl/terminate/blob/main/LICENSE
and if there is a specific line/clause that offends you, please share.

I'm not trying to be difficult.
This just seems like a non-issue to me.

Cisco one of the biggest closed source software/hardware companies
uses Linux as the basis for their (Closed Source) IOS XE product:
https://en.wikipedia.org/wiki/Cisco_IOS_XE
cisco-linux-glp

Yes, GPL is "reciprocal".
It means if I give you a 10 hours of my time for free [writing, testing & maintaining a package],
You can afford to spend 1 minute creating a patch if you make an improvement.

When Google uses Linux they don't call up Linus and say:
"Hey, can you change the LICENSE to be more permissive?"
They just get on with building their product and maybe send him a free penguin. 🐧

@sumbricht
Copy link
Author

Hi @nelsonic. Thanks for the link to Linus' explanation on GPL v2 vs v3, that was quite interesting to hear his argumentation :-) and I fully share his sentiment when it comes to improving a product such as Linux jointly. I would also be happy to share my modifications to terminate publicly if I made any.

As for my use case, I'm not actually modifying terminate but just including it in my product in a way that would force me to use GPL. I think the passage that you quoted from the GPL FAQ actually summarizes it quite well as my intention is to commercially distribute the software I'm building / sell licenses to use it. Therefore I will be releasing it (closed-source) and not only use it privately within my own organization. Please note the passages I highlighted in bold for emphasis:

Does the GPL require that source code of modified versions be posted to the public?
The GPL does not require you to release your modified version. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization.
But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program's users, under the GPL.

The following FAQ section is also quite enlightening in this context as it shows that merely bundling your code together with mine would force me to use GPL v2 for my whole project:

What is the difference between “mere aggregation” and “combining two modules into one program”?
Mere aggregation of two programs means putting them side by side on the same CD-ROM or hard disk. We use this term in the case where they are separate programs, not parts of a single program. In this case, if one of the programs is covered by the GPL, it has no effect on the other program.
Combining two modules means connecting them together so that they form a single larger program. If either part is covered by the GPL, the whole combination must also be released under the GPL—if you can't, or won't, do that, you may not combine them.
What constitutes combining two parts into one program? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged).
If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.

In the case of JavaScript, a bundled version of code is typically regarded as the equivalent of an executable file; but also the second paragraph above states that even linking (e.g. loading a node module) "almost surely" means they would form a combined program and thus force me to release the source code under GPL if anyone I ever sold a license to asked for it.

The other reference projects that you mentioned (such as MySQL) would probably be considered "mere aggregations" as per the snippet above as you'd use them together with your software but not in a tightly coupled manner that would execute in the same address space.

I hope this helps to understand my concerns and shown why I unfortunately wouldn't be able to use terminate for a commercially distributed product as long as it's only released under GPL v2.
Thanks again for taking the time to have this conversation and for fixing a real-life issue with your library; this is truly appreciated.

@sumbricht
Copy link
Author

PS: regarding the "free penguin", as your library is named terminate, this one might be a good fit ;-)
https://www.designcrowd.com/design/8890044

@sumbricht
Copy link
Author

Hi @nelsonic, any additional thoughts? If you wish to keep GPL, which is of course your right, I'll have to move away from terminate within the next weeks :-/

@acidjazz
Copy link

acidjazz commented Nov 7, 2023

+1 with @sumbricht , would be easier for my project if we were under another license @nelsonic

@asntc
Copy link
Member

asntc commented Jan 18, 2024

image

@harlan-zw
Copy link

harlan-zw commented May 29, 2024

Can someone smarter than me please reply to this 🙏 nuxt-modules/og-image#212?

Is it the case? I'll likely drop the package if so :/

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

No branches or pull requests

5 participants