KyoSherlock / MidiDriver

android MIDI synthesizer (soundfont2)
Apache License 2.0
49 stars 35 forks source link

Incorrect license given - should be GPLv2 #8

Open chriscoomber opened 4 years ago

chriscoomber commented 4 years ago

The license given on this repository (and therefore on this Android library) is Apache 2.0. However, this is incorrect since it contains code which is under the GPLv2 license. I am not a lawyer, but the short explanation of this is that code derived from GPLv2-licensed code must also be GPLv2-licensed: the GPL licenses declare that the licensed code is free, and must only be used in free products, and the way they ensure that it's never used in any non-free products is to require that derivative works are also licensed under the same GPL license.

The consequence of this is that this entire repository should be GPLv2 licensed. (I'm not even sure if you're allowed to have Apache-2.0-licensed code in a GPLv2-licensed project, but let's assume for now that's OK.) This means that this Android library cannot be used in commercial products - you cannot make money from any app that uses this code. Even releasing a free app on the Play Store with a GPLv2 license has its complications.

Please fix the license given with this repository. I don't want other people like me wasting time thinking this library was Apache-2.0 licensed when it's illegal for it to be, and worse I don't want other people getting sued by Sun (now Oracle) for breaching their license.

bmaupin commented 2 years ago

TL;DR The license on this repository appears to be fine and this issue can be closed.

The license given on this repository (and therefore on this Android library) is Apache 2.0. However, this is incorrect since it contains code which is under the GPLv2 license.

This is incorrect. If you look closer at that file, it's not using the normal GPLv2 license; it's using the GPLv2 license with the classpath exception which is a completely different beast. You can read more about it here:

Here is where the Classpath Exception is invaluable. It clearly states that the code under the license is (L)GPL, but anything using that code can follow whatever license they'd like.

https://softwareengineering.stackexchange.com/a/326325/160348

So the entire crux of this issue is incorrect, and therefore it can safely be closed without taking any action.

However, in case it's helpful to correct a couple other misunderstandings:

I'm not even sure if you're allowed to have Apache-2.0-licensed code in a GPLv2-licensed project, but let's assume for now that's OK.

If this project were using the normal GPLv2 license (which it isn't), it's not okay to mix it with Apache 2.0 licensed code, as those two licenses are incompatible: https://en.wikipedia.org/wiki/Apache_License#Compatibility

This means that this Android library cannot be used in commercial products - you cannot make money from any app that uses this code.

This is incorrect; even for the "normal" GPL license (without the classpath exception), there is nothing preventing the use of GPL in a commercial product:

Does the GPL allow me to sell copies of the program for money?

Yes, the GPL allows everyone to do this. The right to sell copies is part of the definition of free software. Except in one special situation, there is no limit on what price you can charge. (The one exception is the required written offer to provide source code that must accompany binary-only release.)

https://www.gnu.org/licenses/gpl-faq.html#DoesTheGPLAllowMoney

This might be due to a misunderstanding of what the word "free" means in English, which is doing double duty. There is free as in cost and free as in freedom. The GPL is the latter. Many people use the word "libre" to make this distinction more clear: https://en.wikipedia.org/wiki/Free_software