Josh @ Dreamland
|
|
Posted on: January 19, 2014, 06:29:05 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
A recent troll brought up that we still haven't taken care of this, so it's about time we do so. This is the first draft of the linking exception I expect us to start incorporating into the engine. DO NOT include this in anything right now. It is not only a bad idea for you to do so, it is probably illegal for you to do so. The purpose of this topic is to discuss the terms of the license before I ask third parties who know more about this than I do to review the exception and provide more professional feedback. The ENIGMA Linking Exception
Preamble
The purpose of this exception is to allow the ENIGMA project to maintain the freedoms ensured by the GNU General Public License while granting users the additional freedom of choosing a separate license for their own code.
This exception does not grant the ability to relicense the code in this engine, except by optionally removing this exception, leaving the standard GNU General Public License enforced.
This exception is wordy, but is meant to remove the threat of tactics such as Embrace, Extend, Extinguish. The point of this exception is to encourage Embracement and Extension, but in a way that keeps the extensions free and so eliminates the threat of extinguishment.
This exception, in essence, grants users the ability to use the engine, but not to modify it or extend it in a nontrivial manner without remaining free.
Terms
"GPL" refers to the GNU General Public License, as published by the Free Software Foundation, version 3, or any later version.
"GPL Code" refers to code covered by the GPL.
"Non-GPL Code" refers to code not covered by the GPL.
Exception Text
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give You the additional right to link the unmodified code of this Program with code not covered under the GNU General Public License ("Non-GPL Code") and to distribute linked combinations including the two, subject to the following limitations:
1. Non-GPL Code permitted under this exception must only link to the UNMODIFIED code of this Program through those well-defined interfaces identified as "Approved Interfaces". 2. You are not required to advertise publicly your use of the UNMODIFIED ENIGMA engine. However, if source code is requested, you must provide some means of obtaining the original ENIGMA source code covered by this exception. You may not deny the use of ENIGMA nor withold the version number used. Note, again, that this license does not and cannot grant your ability to withold your use of other GPL Code. 3. Non-GPL Code permitted under this exception may link to MODIFIED code from this program through those well-defined interfaces identified as "Approved Interfaces", provided that the modified code retain both the original license AND this exception, without modification, and that at least one of the following criteria are met: i. Every copy of the combined work is accompanied by a written statement that details to the recipient the version of ENIGMA used and an offer by yourself to provide the ENIGMA source code should the recipient request it. ii. Details of your modifications and all code are made available for integration with the code released by the copyright holders, publicly or otherwise. 4. The combined work is not itself a general purpose game framework, game engine, or related product. In such a case, this exception does not apply and may not be preserved: all code is to be considered GPL. 5. The combined work is not itself a binary library intended for linking into other software applications. In such a case, this exception does not apply and may not be preserved: all code is to be considered GPL.
Approved Interfaces
Subject to the limitations from the previous section,
1. The files of Non-GPL Code may include the ENIGMA distribution header files which explicitly grant this exception in their license.
2. The files of Non-GPL Code may link to the ENIGMA distribution source files which explicitly grant this exception, provided the following criteria are ALL met: i. Code not included with the UNMODIFIED ENIGMA distribution must access only data included within the unmodified ENIGMA distribution which are contained in the namespace "enigma_user" in order to be covered by this exception. ii. Code not included with the UNMODIFIED ENIGMA distribution may not include fixes for bugs or misbehaviors in the engine, except where these changes are considered as modifications to the original source and are subject accordingly to all terms of this exception (ie, where this license and exception are upheld in the new code, and the new code complies fully with this exception).
iii. The files of GPL Code covered by this exception, modified or otherwise, MAY NOT link to Non-GPL Code. That is, even if code not covered by the GPL may otherwise link to code that is covered by the GPL according to this exception, for this to be allowed, the GPL Code may not depend on any Non-GPL Code. It may, however, depend on GPL Code which is not covered by this exception.
Redistribution with this exception
Only the copyright holders of each concerned file the ENIGMA engine may make changes or additions to this exception, including the limitations and list of Approved Interfaces. This exception may not be modified without the consent of all of the covered file(s)' copyright holders.
When redistributing code covered by this exception, you may opt to exclude the exception in your release. You are FORBIDDEN to include the exception in the event that you have modified the contents of the "enigma_user" namespace in such a way that allows additional access to variables outside of namespace "enigma_user" by Non-GPL Code. To be explicit, all code manipulating data internal to ENIGMA must be GPL-licensed, with or without this exception.
You must obey the GNU General Public License in all respects for all of the Program code and other code used in conjunction with the Program except the Non-GPL Code covered by this exception.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
Goombert
|
|
Reply #1 Posted on: January 19, 2014, 06:53:54 pm |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
I would have considered this a general ENIGMA topic, and I am going to move it there.
|
|
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
|
Josh @ Dreamland
|
|
Reply #3 Posted on: January 20, 2014, 10:27:35 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
Most importantly for this project, clauses (4), (5), and approved interfaces (2) as using modified code is concerned. Most importantly for users, the fact that they don't have to credit us in an obvious way if they're just using our engine. Those clauses hit on two points: - We don't want assholes to be able to close-source their own ENIGMA. This is covered by (4) and (5). You cannot use or apply this exception to a release of ENIGMA as a new ENIGMA. The LGPL has no "related products" or "library release" clause.
- We don't want anyone to be able to hoard bug fixes. This is laid out in approved interfaces; you may only link to a modified ENIGMA while proliferating this exception if you don't access data outside of enigma_user (and other loophole-covering stipulations). Nothing in the LGPL will stop me from defining a new function (that is not broken) and hoarding it. Correct me if I'm wrong, of course; the LGPL does try to establish a difference between code which uses the library and code which does more than that. This exception allows users to define their own functions, provided they either make the changes known or open-source their entire game: two means to the same end.
Now, it seems you're examining this license from an honest user's perspective. Which means you're not worried about the way people can find holes in this license to screw us, but the way an evil developer could find holes in it to screw users. Admittedly, I paid less attention to that, and the weakest point in the license is where I state that users "must access only data included within the unmodified ENIGMA distribution which are contained in the namespace 'enigma_user'." This isn't well-defined, as the functions in enigma_user are considered by some to not be data, as they believe in a dichotomy between the two. Moreover, those functions themselves may involve data from outside that namespace in performing your task, and we want this to be allowed. But the license is set up so that it should be assumed that functions are data, and that whatever you are accessing is fine as long as you only linked to functions in the user namespace. The license also forbids keeping the exception while changing the contents of enigma_user, for that purpose. Couple that with disallowing backward link, and I believe you're air-tight preventing non-GPL bugfixes. So simply clarifying that you may link to those and only those variables and functions declared directly in namespace enigma_user will not compromise the rest of the license. Anyway, if the LGPL could protect points (1) and (2) above, I'd be inclined to use it. I'm certain, however, that it cannot. We are not the only people who use a linking exception instead of the LGPL. Many GNU libraries themselves use a linking exception instead of LGPL! It's sort of the bastard child of the whole GNU program. That said, I would appreciate help in reading this over for loopholes. I'd like to remove any obvious ones before I send it to any professionals.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
Josh @ Dreamland
|
|
Reply #5 Posted on: January 20, 2014, 01:39:00 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
You're operating under the assumption that if ENIGMA were identical to Game Maker, it would have a comparable user base. That just isn't the case. Small-game assholes can be ignored; when those assholes use the money they accrue to start marketing themselves, they become a problem. And when those assholes start paying developers to keep patching in their bug fixes, that's when they win. Now we have an inferior product. Just like WINE.
As far as I know, this exception does not prevent other code in the engine from being LGPL-licensed, but I will not license my own code that way, nor recommend that anyone else do so.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
Goombert
|
|
Reply #6 Posted on: January 20, 2014, 01:49:23 pm |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
What about picking our own license like with Qt?
|
|
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
|
Josh @ Dreamland
|
|
Reply #8 Posted on: January 20, 2014, 03:09:01 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
The compiler will always be GPL; it'd be silly to license it under anything else. But yes, if we continue to operate under the assumption that nothing in the engine is worth stealing by its own right, then sure, we don't have a problem. But despite how very true that is right now, I don't expect it to be in the future. The engine is, on its own, something worth pilfering. It's actually not much work to write wrappers for those functions and slap on a runner. You could do it in node.js. Allowing users to pick between GPL and a proprietary license (as Qt does, as Robert suggested) is an alternative. But that doesn't ensure people's freedom; we could very easily charge people to distribute their games. This license exception doesn't allow that very easily. Its entire purpose is to establish a mutual, "don't screw us and we won't screw you" sort of agreement.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
TGMG
|
|
Reply #9 Posted on: January 21, 2014, 03:09:35 am |
|
|
Joined: Jun 2008
Posts: 107
|
Ah good so the compiler is GPL Ok let's say the engine is worth stealing and a company created a closed source engine on top of it. They still have to make their changes available under the LGPL and if they are paying developers to work on it then it will benefit this project. From a consumers perspective I'm willing to pay for an engine based on enigma if it adds substantional features. For example unity adds a number of expensive 3rd party components integrated in their engine and it can be worth paying for it because of those components. I don't personally believe stopping enigma clones is a good idea, at the end of the day we are all trying to develop a really good game engine. The more built on the game engine the more stable it will become
|
|
|
Logged
|
meGMbed 2.0 :: Embed you gm games in websites.
|
|
|
Josh @ Dreamland
|
|
Reply #10 Posted on: January 21, 2014, 10:00:25 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
On top of it, or around it? Around it is legal by the LGPL, and the resulting work is not covered. As long as ENIGMA could be replaced by an engine of the same interface. Their work would all be closed-source, just like user code. They would keep the pieces of the engine that work well, and they would rewrite as a separate module the ones which do not. We wouldn't benefit at all.
Which reminds me, did LGPL get over that thing where you have to have the LGPL binaries separate from the non-LGPL ones? Because otherwise, it's not even a consideration. We can't have mandatory broken-up executables. They're supposed to be stand-alone.
Understand, this license doesn't stop extension; doing so would hurt users. It stops extensions which circumvent bugs. You see, you can't link any ENIGMA internals with anything, or anything with ENIGMA internals, so your odds of one-upping us legally are zero. You can, however, create a set of your own physics functions which use only the same ENIGMA API available to users. Anything a user can do, you can do and sell. We don't directly benefit, but we indirectly benefit because our users who don't mind spending money do have options.
And we aren't stopping ENIGMA clones; that would be against the spirit of free-software. We are stopping ENIGMA clones that stop clones.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
sorlok_reaves
|
|
Reply #12 Posted on: January 21, 2014, 03:32:20 pm |
|
|
Joined: Dec 2013
Posts: 260
|
Your license could potentially stop useful engines on top of enigma or companies that want to release multiple games with the same engine. From a user perspective the more open the license is the better, more choices for game engines, new engine ideas being tried out etc For reference, the CLASSPATH exception reads like so (my emphasis in bold): Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. 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. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version. It seems that games are "independent modules" (since they could be derived from GM rather than Enigma), and you could certainly include wording that indicates what kinds of files (.scr, .obj, etc.) are considered "independent". From personal experience, I feel that you would be best served by either: - Picking an established license, such as GPL+CLASSPATH, or
- Asking a lawyer to come up with a license that suits your needs.
Licenses are always infinitely tricky. Just look at the "oops, Tivo" example of the GPL2, which was professionally crafted. Unless you have personal legal expertise, you may want to reconsider drafting your own legal text. Anyway, any code I contribute will have whatever exception you all choose. Good luck, licenses are a pain.
|
|
|
Logged
|
|
|
|
Josh @ Dreamland
|
|
Reply #13 Posted on: January 21, 2014, 06:48:52 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
TGMG, I acknowledge your concern. It would be ideal to use a tried and true exception. But I'm not certain there is one. The CLASSPATH exception concerns me; it is very small. I'm no lawyer, but I could write that much. The point of the above exception was to extend CLASSPATH. I'm guessing you haven't attempted to read it, as you probably would have noticed that the text of the CLASSPATH exception appears almost verbatim as the first two paragraphs. At least the first half; the second half is expanded upon enormously, and in fact constitutes the entire remainder of the license. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you All of that is right in the text. Go ahead and do a control-F for it. 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. What I pasted has many more requirements than those terms, but echoes the equivalent at the bottom of the exception text ("You must obey the GNU General Public License..."). An independent module is a module which is not derived from or based on this library. This does not refer to the combined work. This refers to other libraries you are also linking against; it is how CLASSPATH points out that its text does not mean that you can ignore the GPL entirely for your project. It is clarifying that you may ignore GPL as it pertains to your use of that library. Other GPL libraries will cause your program to be GPL. This does not protect us at all, and is the reason for that huge collection of terms and conditions. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version. The exception I posted allows you to remove the exception at your option, too; it does not allow you to preserve it if you have exposed ENIGMA's internals in a way that opens it up for bug fixes. ...What I am trying to point out here is that CLASSPATH is not in itself right for us. Most users will never think of licensing. I recognize that some will, and they will be wary of the integrity of this exception. This is their opportunity to speak. We can argue philosophy all day; this exception is a tangible entity. I can, will, and have ripped holes in the other licenses and linking exceptions mentioned here; I am presenting the above with the hopes that someone will reciprocate. Problems we find now can be fixed. Problems we find later cannot. I will refrain from making an analogy to condoms in the hopes that it will prevent derailing this thread further. And to clarify, I intend to contact a lawyer on the matter; I just wanted to give everyone (TGMG) a chance to give their thoughts, first.
|
|
« Last Edit: January 21, 2014, 06:52:45 pm by Josh @ Dreamland »
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
|