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 terms clarification for end user (developer) applications #534

Open
bogen85 opened this issue Aug 31, 2023 · 8 comments
Open

Licensing terms clarification for end user (developer) applications #534

bogen85 opened this issue Aug 31, 2023 · 8 comments
Assignees

Comments

@bogen85
Copy link

bogen85 commented Aug 31, 2023

Since this unikernel is GPL, what does not mean for applications written to use it? Are not the end user (developer) applications linked directly to the unikernel, causing them to fall under the same licensing terms?

@MatiasVara
Copy link
Collaborator

MatiasVara commented Aug 31, 2023

Hello @bogen85, I am not really sure what happen in case you link something non-GPL with GPL. I think GPL has an exception for allowing it without making the non-GPL program to become GPL. Let me double check that.

@MatiasVara
Copy link
Collaborator

I asked a few people about this and it seems GPL does force the non-GPL to become GPL in that case. I think the only way could be to change Toro's license.

@bogen85
Copy link
Author

bogen85 commented Sep 9, 2023

https://en.wikipedia.org/wiki/GPL_linking_exception
https://opensource.stackexchange.com/questions/10944/adding-gpl-classpath-exception-to-program

LGPL allows for dynamic linking, but applications using a unikernel are statically linked with it, as a unikernal is an application and library OS aggregate.

So the Torokernel could stay GPL, but to allow non-GPL applications to stay non-GPL, an explicit linking exception would be needed.

@MatiasVara
Copy link
Collaborator

You are right, thank for the clarification. Does it mean that adding the following statement to COPYING would be enough?

Classpath Exception: As a special exception, copyright holders give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you must extend this exception to your version of the library.

@bogen85
Copy link
Author

bogen85 commented Sep 10, 2023

The classpath exception is an example, it likely does not fit the use case for torokernel exactly. It does not have to worded exactly the same as it is your exception to the license.

An application using torokernel uses FPC to combine torokernel sources and the application sources into a single kernel image bootable by qemu/kvm.

Applying a torokernel license exception to the GPL might make more sense if the torokernel license is LGPL, not GPL.

While GPL can be used for libraries, using it make might make an exception like this a bit more difficult to word.

What is requirement is trying to undone is this one: https://www.gnu.org/licenses/gpl-faq.html#LinkingWithGPL

You have a GPLed program that I'd like to link with my code to build a proprietary program.
Does the fact that I link with your program mean I have to GPL my program?

(#LinkingWithGPL)

Not exactly. It means you must release your program under a license compatible with the GPL
(more precisely, compatible with one or more GPL versions accepted by all the rest of the
code in the combination that you link). The combination itself is then available under those
GPL versions.

So an exception maybe could be worded something to the effect as follows:

End User Application Exception: As a special exception, copyright holders give you permission to create
a kernel image that can be distributed to others on your licensing terms and that is based on this library
and your application source code without having to having to release your application source code under
the terms of the GPL.

Allowing end users to distribute to others without requiring their software to be GPL'ed would be the only
real reason for an exception.

That would certainly undo the linking with GPL restrictions noted in the FAQ, but it might makes sine of
of the other GPL terms for torokernel not make as much sense.

Basically what you be saying is:
If user distributes an application kernel to other based on torokernel they must:

  1. Indicate they used sources from the torokernel and include the license for those.
  2. If asked provide the source code for the torokernel. (of course link to this git site and commit hash used is typically sufficient).
  3. If asked provide the any modified torokernel source code with the above.
  4. The user does not have license the application kernel under the GPL due to the exception in your license.
  5. The GPL does not have to apply to their application source due to the exception in your license.

If that is what you want to say, I'm not sure the best way to word your exception. What I provided above was an attempt that could maybe be worded a bit better.

@bogen85
Copy link
Author

bogen85 commented Sep 10, 2023

Something like this:

https://spdx.org/licenses/Qt-GPL-exception-1.0.html

Text

The Qt Company GPL Exception 1.0

Exception 1:

As a special exception, you may create a larger work which contains the output of this application and distribute that work under terms of your choice, so long as the work is not otherwise derived from or based on this application and so long as the work does not in itself generate output that contains the output from this application in its original or modified form.

Exception 2:

As a special exception, you have permission to combine this application with Plugins licensed under the terms of your choice, to produce an executable, and to copy and distribute the resulting executable under the terms of your choice. However, the executable must be accompanied by a prominent notice offering all users of the executable the entire source code to this application, excluding the source code of the independent modules, but including any changes you have made to this application, under the terms of this license.

But reworded to fit torokernel.

@MatiasVara
Copy link
Collaborator

MatiasVara commented Sep 10, 2023

I think I could add something like:

The modification to the GPL is included to allow you to distribute a combined work that includes Toro unikernel without being obliged to provide the source code for proprietary components outside of the Toro unikernel source code.

And then, to add the following exception to the license:

As a special exception, the copyright holder of Toro unikernel gives you permission to compile and link Toro unikernel with independent modules that communicate with Toro unikernel through the Toro API interface,  regardless of the license terms of these independent modules, and to copy and distribute the resulting combined work under terms of your choice

I got inspired from https://av.jpn.support.panasonic.com/support/share2/eww/en/audio/rbm700b_500b_300b/LicenseNotice.pdf

@MatiasVara MatiasVara self-assigned this Sep 11, 2023
@MatiasVara
Copy link
Collaborator

MatiasVara commented Sep 12, 2023

@bogen85 if you have a project that requires some help, do not hesitate to let me now.

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

No branches or pull requests

2 participants