ENIGMA Forums

General fluff => General ENIGMA => Topic started by: Rezolyze on October 03, 2014, 06:12:56 am

Title: ENIGMA's Engine Code - License Comparison Table
Post by: Rezolyze on October 03, 2014, 06:12:56 am
   The discussion over changing ENIGMA's engine code license has spanned multiple years and multiple threads. In an ongoing effort to simplify this discussion, I'm posting this table for each of the possible license choices. ENIGMA's engine is currently licensed under the GPLv3 which is included in the table as a starting point for comparison. The licenses are in descending order from least permissive to most permissive. Each answer in the table is followed by a reference number or letter leading to more information. The goal of this table is to be a public collaboration of facts about each possible license choice for ENIGMA's engine code.


License Comparison Table


Licenses
GPLv3 Compatible1 (http://www.gnu.org/licenses/gpl-faq.html#WhatIsCompatible),2 (http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean)
Release changes under
a different license
8 (http://en.wikipedia.org/wiki/Multi-licensing)
Link with code under
a different license
10 (http://en.wikipedia.org/wiki/Static_library),11 (http://en.wikipedia.org/wiki/Dynamic_linker)
Link with
proprietary code
15 (http://en.wikipedia.org/wiki/Proprietary_software),16 (http://en.wikipedia.org/wiki/CrossOver_(software))
Compatible with
Apple's App Stores
17 (http://www.apple.com/legal/internet-services/itunes/us/terms.html)
GNU General Public License v3.0 (GPLv3) (http://www.gnu.org/copyleft/gpl.html)
Yes3 (http://www.gnu.org/licenses/license-list.html#GNUGPL)
Nob
   No12 (http://www.gnu.org/licenses/gpl-faq.html#GPLStaticVsDynamic)
  No12 (http://www.gnu.org/licenses/gpl-faq.html#GPLStaticVsDynamic)
           No18 (http://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement),19 (http://www.fsf.org/blogs/licensing/vlc-enforcement),20 (http://adium.im/pipermail/devel_adium.im/2011-January/007973.html),e
GNU Lesser General Public License v3.0 (LGPLv3) (http://gnu.org/licenses/lgpl.html)
Yes4 (http://www.gnu.org/licenses/license-list.html#LGPL)
Yes under GPLv39 (http://www.gnu.org/licenses/gpl-faq.html#compat-matrix-footnote-8)
  Yes with conditions13 (http://gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic)
  Yes with conditions13 (http://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic)
           No18 (http://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement),19 (http://www.fsf.org/blogs/licensing/vlc-enforcement),20 (http://adium.im/pipermail/devel_adium.im/2011-January/007973.html),e
GNU General Public License v3.0 (GPLv3) (http://www.gnu.org/copyleft/gpl.html)
with Classpath Exception (http://www.gnu.org/software/classpath/license.html)
Yesa
Yes under GPLv3a
  Yesd
Yesd
           No18 (http://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement),19 (http://www.fsf.org/blogs/licensing/vlc-enforcement),20 (http://adium.im/pipermail/devel_adium.im/2011-January/007973.html),e
Mozilla Public License Version 2.0 (MPLv2.0) (http://www.mozilla.org/MPL/2.0/)
Yes5 (http://www.gnu.org/licenses/license-list.html#MPL-2.0)
  Yes under GNU licenses5 (http://www.gnu.org/licenses/license-list.html#MPL-2.0)
   Yes14 (https://www.mozilla.org/MPL/2.0/FAQ.html#virality)
  Yes14 (https://www.mozilla.org/MPL/2.0/FAQ.html#virality)
Yesf
The MIT License (MIT) (http://opensource.org/licenses/MIT) or The BSD License (BSD) (http://opensource.org/licenses/BSD-3-Clause)
   Yes6 (http://www.gnu.org/licenses/license-list.html#X11License),7 (http://www.gnu.org/licenses/license-list.html#ModifiedBSD)
Yesc
  Yesc
Yesc
Yesf

* The superscript letters refer to the list below. The superscript numbers are external links and are listed further down.



a.  The Classpath exception states: "If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version." Thus, you are able to release your changes under the original GPLv3 which makes this license, with the Classpath exception, GPLv3 compatible.

b. To change the license of GPLv3 code requires the permission of all the copyright holders of said code. For any copyright holders that don't agree to the change, their code would need to be removed or rewritten.

c.  Both The MIT License and The BSD 3-Clause License are permissive. Your rights to modify and link to code licensed this way are unobstructed, as long as you meet all the license requirements for each piece of code within the combined work.

d.  The Classpath exception states: "As a special exception, the copyright holders of this library 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." Thus, linking to proprietary code or code under a different license is permissible with this exception.

e.  Section 10 of the GPLv3 states: "You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License." Apple's terms and conditions for the "Mac App Store" and the "App Store" state: "You agree that the iTunes Service and certain iTunes Products include security technology that limits your use of iTunes Products and that, whether or not iTunes Products are limited by security technology, you shall use iTunes Products in compliance with the applicable usage rules established by Apple and its licensors (“Usage Rules”), and that any other use of the iTunes Products may constitute a copyright infringement." Thus, Apple's usage rules conflict with section 10 of the GPLv3. As the LGPLv3 and Classpath exception also fall under the section 10 terms of the GPLv3, Apple's terms and conditions conflict with these exceptions as well. Apple would be in violation of the GPLv3 by distributing software under this license or the stated license exceptions.

f.  There is nothing within the terms of the MPLv2, MIT or BSD licenses that would conflict with the terms and conditions of Apple's App Stores.


1.  Free Software Foundation. Frequently Asked Questions about the GNU Licenses - What does it mean to say that two licenses are “compatible”? (http://www.gnu.org/licenses/gpl-faq.html#WhatIsCompatible)
2.  Free Software Foundation. Frequently Asked Questions about the GNU Licenses - What does it mean to say a license is “compatible with the GPL?” (http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean)
3.  Free Software Foundation. GPL-Compatible Free Software Licenses - GNU General Public License (GPL) version 3 (http://www.gnu.org/licenses/license-list.html#GNUGPL)
4.  Free Software Foundation. GPL-Compatible Free Software Licenses - GNU Lesser General Public License (LGPL) version 3 (http://www.gnu.org/licenses/license-list.html#LGPL)
5.  Free Software Foundation. GPL-Compatible Free Software Licenses - Mozilla Public License (MPL) version 2.0 (http://www.gnu.org/licenses/license-list.html#MPL-2.0)
6.  Free Software Foundation. GPL-Compatible Free Software Licenses - X11 License (http://www.gnu.org/licenses/license-list.html#X11License)
7.  Free Software Foundation. GPL-Compatible Free Software Licenses - Modified BSD license (http://www.gnu.org/licenses/license-list.html#ModifiedBSD)
8.  Wikipedia. Multi-licensing (http://en.wikipedia.org/wiki/Multi-licensing)
9.  Free Software Foundation. Frequently Asked Questions about the GNU Licenses - Compatibility matrix footnote 8 (http://www.gnu.org/licenses/gpl-faq.html#compat-matrix-footnote-8)
10.  Wikipedia. Static library (http://en.wikipedia.org/wiki/Static_library)
11.  Wikipedia. Dynamic linker (http://en.wikipedia.org/wiki/Dynamic_linker)
12.  Free Software Foundation. Frequently Asked Questions about the GNU Licenses - Does the GPL have different requirements for statically vs dynamically linked modules with a covered work? (http://www.gnu.org/licenses/gpl-faq.html#GPLStaticVsDynamic)
13.  Free Software Foundation. Frequently Asked Questions about the GNU Licenses - Does the LGPL have different requirements for statically vs dynamically linked modules with a covered work? (http://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic)
14.  Mozilla Foundation. MPL 2.0 FAQ - Q11: How 'viral' is the MPL? If I use MPL-licensed code in my proprietary application, will I have to give all the source code away? (https://www.mozilla.org/MPL/2.0/FAQ.html#virality)
15.  Wikipedia. Proprietary software (http://en.wikipedia.org/wiki/Proprietary_software)
16.  Wikipedia. CrossOver (software) (http://en.wikipedia.org/wiki/CrossOver_(software))
17.  Apple. iTunes Store - Terms and Conditions (http://www.apple.com/legal/internet-services/itunes/us/terms.html)
18.  Free Software Foundation. Blog - More about the App Store GPL Enforcement (http://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement)
19.  Free Software Foundation. Blog - VLC developer takes a stand against DRM enforcement in Apple's App Store (http://www.fsf.org/blogs/licensing/vlc-enforcement)
20.  Adium. Mailing List - GPL and the Mac App Store (https://adium.im/pipermail/devel_adium.im/2011-January/007973.html)



   This table will be updated with contributions from the forums where appropriate. If you'd like to add, change or remove something within this post, please reply with the license you are posting about, what you want added, changed or removed, any external references and your reason(s). If I've made an error of some sort, please let me know. Please keep your replies as relevant to this table as possible. Discussion or debate about "your license choice" should take place elsewhere. This thread is for posting facts about each license and updating the table as needed.

Thank you for your help with this endeavor!

EDIT: This topic is now locked, because I have no desire to update it in the future. As far as I know, it is accurate and hopefully useful.
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: onpon on October 03, 2014, 09:20:52 am
What does "Prevent proprietary fixes or features" mean? You claim that the LGPL doesn't do this, but the way I interpret "proprietary fixes or features" is "make proprietary versions of the library", which the LGPL prohibits.
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: Rezolyze on October 03, 2014, 09:33:18 am
Let's take this discussion elsewhere. (http://enigma-dev.org/forums/index.php?topic=1832.msg22827#msg22827)
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: Goombert on October 03, 2014, 10:44:14 pm
Rezolyze, I really like your topic, it is very informative and this is the best way to approach a license change. I really like this topic, I am thinking about setting it pinned somewhere but I don't know the best place for it. Additionally the information you've provided also helps me because I do not know that much about the various licensing options myself, though I have no problem understanding legal jargon.

I think personally my choice is the BSD license and MPL second. But my primary concern is that I have stated in the past and will reiterate that I do believe users should retain the rights to even sell extensions that would implement things like video functions, other graphics libraries, etc, etc. I just do not want fixes for anything in /SHELL being commercialized, I think this is primarily our biggest concern.
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: edsquare on October 04, 2014, 01:11:58 am
Rezolyze, I really like your topic, it is very informative and this is the best way to approach a license change. I really like this topic, I am thinking about setting it pinned somewhere but I don't know the best place for it. Additionally the information you've provided also helps me because I do not know that much about the various licensing options myself, though I have no problem understanding legal jargon.

I think personally my choice is the BSD license and MPL second. But my primary concern is that I have stated in the past and will reiterate that I do believe users should retain the rights to even sell extensions that would implement things like video functions, other graphics libraries, etc, etc. I just do not want fixes for anything in /SHELL being commercialized, I think this is primarily our biggest concern.

You should read the MPLv2 with care, it allows the linking of the files (Pieces of a library) with your software in any way and under any license, but you must allow the recipient of your software access to the same files (Those of the library not your code) under the same license, not a problem since enigma is of easy access. What this means in short is that any change you do to a MPLed code you must give access to it but not to your code that only links against that MPLed code. It's like the LGPL + Static linking exception all in one!
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: Rezolyze on October 04, 2014, 01:42:33 am
While I welcome a discussion on the topic of licensing, this is not the thread for it. I'd like for all replies in this thread to be about changing or adding something in the top post.

edsquare: All the information in your reply is available in my initial post.

Robert: While I do appreciate the praise, I'm trying to keep personal opinion out of this thread as much as possible.


I'm looking for replies like: "I think your answer regarding the LGPLv3 in the "Link with code under a different license" column is incorrect. Here's my reasoning and here are some external sources to back up my point."

I've done a lot of reading and research to create this table and back up my findings with references, but if I made a mistake, I'd like to know about it. If I left out a license you think is a valid choice, I'd like read about why you think it's valid. If you think the wording of something should be changed for some reason, I'd like to know. I'm looking for suggestions and criticisms regarding my initial post. Please, let's not derail this thread any more. Thank you.
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: Goombert on October 04, 2014, 02:18:42 am
Right I understand Rez, and I agree. Now, don't everybody freak out, but what about Creative Commons? I know I know, but still it is a choice.
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: Rezolyze on October 04, 2014, 02:43:52 am
Thank you for your suggestion.

Here's what the Creative Commons organization has to say about using CC licenses with software. (https://wiki.creativecommons.org/Frequently_Asked_Questions#Can_I_apply_a_Creative_Commons_license_to_software.3F) To sum it up, they don't recommend it and their CC0 Public Domain license is their only license compatible with the GPL. I don't think the CC licenses would properly protect the users or developers of ENIGMA's engine code.

If you disagree, please explain why.
Title: Re: ENIGMA's Engine Code - License Comparison
Post by: edsquare on October 04, 2014, 12:53:09 pm
While I welcome a discussion on the topic of licensing, this is not the thread for it. I'd like for all replies in this thread to be about changing or adding something in the top post.

edsquare: All the information in your reply is available in my initial post.


Actually no it isn't. (read on to know why I think so)

I'm looking for replies like: "I think your answer regarding the LGPLv3 in the "Link with code under a different license" column is incorrect. Here's my reasoning and here are some external sources to back up my point."

Preciselly what I tried to do but without much succes:

The MPLv2 explicity protects the files (Parts of a library) released under the MPL, and says that any modification to said files should be released under the same license; this in contrast doesn't apply to files with your code only (Files that doesn't contain a single line of MPLed code), and it allows to link in any way with MPLed code even for sale, provided that you give the recipients of your work access to the MPLed code (Which includes any modification you may have done to it).

And yet you say it doesn't prevent taking the code, modifiying it and then closing it.

That is why I put a link to the FAQ of  the MPLv2.

I've done a lot of reading and research to create this table and back up my findings with references, but if I made a mistake, I'd like to know about it. If I left out a license you think is a valid choice, I'd like read about why you think it's valid. If you think the wording of something should be changed for some reason, I'd like to know. I'm looking for suggestions and criticisms regarding my initial post. Please, let's not derail this thread any more. Thank you.

Thank you.
Title: Re: ENIGMA's Engine Code - License Comparison Table
Post by: Rezolyze on October 04, 2014, 11:20:14 pm
I appreciate that you are trying to contribute, but please be more specific in the future.

I'm looking for replies like: "I think your answer regarding the LGPLv3 in the "Link with code under a different license" column is incorrect. Here's my reasoning and here are some external sources to back up my point."

My example reply tells me exactly where someone has an issue with the table. It tells me which license someone is referring to and which column. Your reply included everything, but the column header. I can only assume that you are taking issue with the MPLv2 answer under the "Prevent proprietary fixes or features" column. That's twice now that someone has questioned the validity of this column, so I'll try rewording the header to be more clear.

Many times throughout the licensing discussion on the forums, someone has suggested a license like the the MPLv2 and been told that such a license would not prevent proprietary fixes or features being implemented through linking. These types of licenses (LGPLv3, MPLv2, etc) are meant to allow linking with code that has a different license. Of course, we want people to be able to legally link their proprietary game code to ENIGMA's engine code.

However, the MPLv2, and other licenses like it, would also allow someone to link proprietary fixes or features to ENIGMA's engine as well. They would probably need to modify some of ENIGMA'S engine code to do it, but the fixes and features would remain proprietary and unshared within their own separate but linked code. To be in compliance with ENIGMA's engine license, they would need to release their changes to the engine code, but their changes would not contain any of their fixes or features. So, in this way, the MPLv2 would not prevent proprietary fixes or features.

Depending on your point of view, this is not necessarily a bad thing. Someone could create an extension that ENIGMA lacked and sell it. It wouldn't directly benefit the ENIGMA project, but it could benefit the game developers that buy the extension and the programmer selling it. Although, I think the major fear is someone creating software like CrossOver (http://en.wikipedia.org/wiki/CrossOver_(software)) which harnesses the power of Wine (http://en.wikipedia.org/wiki/Wine_(software)) while adding it's own proprietary features. That's not a fear I share, but some people do.

If you can't follow my example, try this example (http://enigma-dev.org/forums/index.php?topic=1719.msg17326#msg17326) by The 11th plague of Egypt.

The "Prevent proprietary fixes or features" column is meant to illustrate this issue, but I can see why the column header could be misleading. Hopefully the reworded header will clear up the confusion. I misunderstood the replies from both onpon and edsqure. To both of you, I'm sorry for the misunderstanding and thank you for bringing this to my attention.
Title: Re: ENIGMA's Engine Code - License Comparison Table
Post by: edsquare on October 05, 2014, 12:59:23 am
I appreciate that you are trying to contribute, but please be more specific in the future.

I'm looking for replies like: "I think your answer regarding the LGPLv3 in the "Link with code under a different license" column is incorrect. Here's my reasoning and here are some external sources to back up my point."

My example reply tells me exactly where someone has an issue with the table. It tells me which license someone is referring to and which column. Your reply included everything, but the column header. I can only assume that you are taking issue with the MPLv2 answer under the "Prevent proprietary fixes or features" column. That's twice now that someone has questioned the validity of this column, so I'll try rewording the header to be more clear.

Many times throughout the licensing discussion on the forums, someone has suggested a license like the the MPLv2 and been told that such a license would not prevent proprietary fixes or features being implemented through linking. These types of licenses (LGPLv3, MPLv2, etc) are meant to allow linking with code that has a different license. Of course, we want people to be able to legally link their proprietary game code to ENIGMA's engine code.

However, the MPLv2, and other licenses like it, would also allow someone to link proprietary fixes or features to ENIGMA's engine as well. They would probably need to modify some of ENIGMA'S engine code to do it, but the fixes and features would remain proprietary and unshared within their own separate but linked code. To be in compliance with ENIGMA's engine license, they would need to release their changes to the engine code, but their changes would not contain any of their fixes or features. So, in this way, the MPLv2 would not prevent proprietary fixes or features.

Depending on your point of view, this is not necessarily a bad thing. Someone could create an extension that ENIGMA lacked and sell it. It wouldn't directly benefit the ENIGMA project, but it could benefit the game developers that buy the extension and the programmer selling it. Although, I think the major fear is someone creating software like CrossOver (http://en.wikipedia.org/wiki/CrossOver_(software)) which harnesses the power of Wine (http://en.wikipedia.org/wiki/Wine_(software)) while adding it's own proprietary features. That's not a fear I share, but some people do.

If you can't follow my example, try this example (http://enigma-dev.org/forums/index.php?topic=1719.msg17326#msg17326) by The 11th plague of Egypt.

The "Prevent proprietary fixes or features" column is meant to illustrate this issue, but I can see why the column header could be misleading. Hopefully the reworded header will clear up the confusion. I misunderstood the replies from both onpon and edsqure. To both of you, I'm sorry for the misunderstanding and thank you for bringing this to my attention.

Sorry for the lack of specifity (Is that a word?), will try to be more specific in the future. But in my defense what I understood was that it allowed modifications to the MPLed code being made propietary.

Now if I understood correctly you say the MPLv2 would also allow someone to create a closed source extension to enigma and sell it, I tend to agree with you in that it allows such a thing but I fail to see why that is bad. As long as the engine's code is safe why should the developers worry about that?

In some cases it would be enough to add an #include and in others the modifications to the engine will help other people to develop a similar extension, hell even by knowing what it does a capable developer (And all the developers involved in this project strike me as very capable) could deduce how it works internally and with time develop an opensource extension to the same efect.

Although I would not mind seing closed source extensions, it would mean the project is mature enough and with a big enough user base to merit so.

Sorry for derailing your post I will not do it again.