ENIGMA Forums

General fluff => Announcements => Topic started by: Josh @ Dreamland on September 30, 2010, 03:18:53 pm

Title: Proceedings
Post by: Josh @ Dreamland on September 30, 2010, 03:18:53 pm
More and more people have been taking an interest in helping with the ENIGMA Project lately, and I believe I need to recognize that.

TGMG sort of waltzed in one day and added support for three new operating systems, as most of you are aware. Since then, he has taken to improving ENIGMA full-time; adding functions, testing for bugs, and contributing to the system as a whole.

I am unsure whether or not r9k has an account here, but he worked with Ism on polygon collisions, online functions, and, independently, d3d_* functions.

Though dazappa is not a very active member on the forums, he has been trying to help Ism out with some Java aspects. He researched rendering font glyphs to pass to ENIGMA, and more recently has begun writing a YAML parser for Ism to use (apparently, porting my 200-liner to Java is a lost cause).

HaRRiKiRi, with a little help from TGMG and even less from myself, coded several graphics functions, including draw_sprite_tiled*, draw_sprite_general, and draw_background*.

As for myself, I've been working more with my network of YAML files, trying to make extending ENIGMA as simple as copying in a directory. I've also fixed some things in the syntax checker, but I'm pretty much always doing that.


I've also been up to something different. ENIGMA needs an exception written to the GPL. The problem is trying to define officialness. The reasoning is simple.
1) ENIGMA is GPL software.
2) ENIGMA links your game against its engine.
3) The engine is also GPL.
4) Therefore, your game must be open source, GPL software as well.
5) Game Maker doesn't require this, so something must be done.
6) Two options to correct this:
      a. Use a less restrictive license, such as BSD
      b. Write an exception to the GPL.

Opting to write a specific exception to the GPL just for official ENIGMA copies is, to use TGMG's words, "a good idea so a whole load of GM's don't pop up." But don't assume our motives are entirely selfish:  This exception grants an additional right to ENIGMA's users. The idea is that by NOT GRANTING this right to users of unofficial forks, we increase the likelihood of third-party development of ENIGMA vs that of a third party simply offing and doing their own thing with ENIGMA's source.

Basically, we are locking an incentive to use our official version instead of someone's clone. That way, if that person actually had anything to contribute, it will go to ENIGMA instead of staying with that individual.

Problem is, I'm not a lawyer. Neither's Ism. So if you think you can assist us in writing this exception, here's where we left off:

Quote
ENIGMA GPL Exception

Preamble
This Program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 3 of the License or any later version.

Disclaimer of Warranty
This Program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Full License Text
You should have received a copy of the GNU General Public License along with this program; if not, see <www.gnu.org/licenses>.

Additional Definitions
The GNU General Public License defines several generic terms. All of these terms apply here, in addition to the following.

"The ENIGMA Development Environment" refers to the Program as defined by the GNU General Public License, in its entirety.

"ENIGMA" (where not followed by either "Development" or "Environment") refers to the segment of the Program designed to behave as a compiler, parsing inputted code and invoking additional compilers and linkers.

"ENIGMA Website" refers to the series of pages accessible from http://www.enigma-dev.org or any site to which that URL redirects.

"Officially Endorsed" implies that the information or material has been officially published on the ENIGMA Website.

"Stable Release" refers to an Officially Endorsed release of the ENIGMA Development Environment.

"Approved Compilers" refer to any toolchain executables, including, but not limited to, Make, Compilers, Linkers, and Assemblers, invoked by an official Stable Release.

"Approved Interface" refers to any graphical user interface capable of taking user input and invoking ENIGMA, which in turn parses the user input and invokes Approved Compilers to compile the input. This group is composed EXCLUSIVELY of any such programs contained in a Stable Release of the Program, or outlined in the "Exception" section of the ENIGMA Website.

"The ENIGMA Team" refers to one or all of the group of individuals whose code is distributed in the Stable Release.

Special Exception
In addition, as a special exception, the ENIGMA Team gives You the additional right to link the 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 limitations in this section.

1. Non-GPL Code permitted under this exception must only be linked to the code of this Program by an OFFICIAL RELEASE of the ENIGMA Development Environment, as defined here:
    a. The ENIGMA Environment must be unmodified from its Stable Release as Officially Endorsed by the ENIGMA Team.
    b. The Compilation phase of the exempted Object Code must be Invoked from an Approved Interface.
    c. The programs Invoked by ENIGMA (including, but not limited to, the Compiler and Linker) must all be Approved Compilers.

2. The files of Non-GPL Code may instantiate templates or use macros or inline functions from the Approved Interfaces without causing the resulting work to be covered by the GNU General Public License.

3. Only the ENIGMA Team may make changes or additions to the list of Approved Interfaces.

4. 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.

5. If you modify this file, you may extend this exception to your version of the file, but you are not obligated to do so. If you do not wish to provide this exception without modification, you must delete this exception statement from your version and license this file solely under the GPL without exception.

Peace.
Title: Re: Proceedings
Post by: IsmAvatar on September 30, 2010, 04:24:31 pm
Proposed change:
Delete definition of "The ENIGMA Team"
Replace "as a special exception, the ENIGMA Team gives You" with appropriate rewording, such as "this exception gives You" or "as a special exception, You are granted"
1a: Delete "as Officially Endorsed by the ENIGMA Team"
Delete 3. Update following numbers.

The resulting license may be referred to as "License Ism 1"
Title: Re: Proceedings
Post by: Josh @ Dreamland on September 30, 2010, 06:27:16 pm
ENIGMA GPL Exception Ism 1

Preamble
This Program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 3 of the License or any later version.

Disclaimer of Warranty
This Program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Full License Text
You should have received a copy of the GNU General Public License along with this program; if not, see <www.gnu.org/licenses>.

Additional Definitions
The GNU General Public License defines several generic terms. All of these terms apply here, in addition to the following.

"The ENIGMA Development Environment" refers to the Program as defined by the GNU General Public License, in its entirety.

"ENIGMA" (where not followed by either "Development" or "Environment") refers to the segment of the Program designed to behave as a compiler, parsing inputted code and invoking additional compilers and linkers.

"ENIGMA Website" refers to the series of pages accessible from http://www.enigma-dev.org or any site to which that URL redirects.

"Officially Endorsed" implies that the information or material has been officially published on the ENIGMA Website.

"Stable Release" refers to an Officially Endorsed release of the ENIGMA Development Environment.

"Approved Compilers" refer to any toolchain executables, including, but not limited to, Make, Compilers, Linkers, and Assemblers, invoked by an official Stable Release.

"Approved Interface" refers to any graphical user interface capable of taking user input and invoking ENIGMA, which in turn parses the user input and invokes Approved Compilers to compile the input. This group is composed EXCLUSIVELY of any such programs contained in a Stable Release of the Program, or outlined in the "Exception" section of the ENIGMA Website.

Special Exception
In addition, as a special exception, You are granted the additional right to link the 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 limitations in this section.

1. Non-GPL Code permitted under this exception must only be linked to the code of this Program by an OFFICIAL RELEASE of the ENIGMA Development Environment, as defined here:
    a. ENIGMA must be unmodified from its original Stable Release form.
    b. The Compilation phase of the exempted Object Code must be Invoked by an Approved Interface.
    c. The programs invoked by ENIGMA (including, but not limited to, the Compiler and Linker) must all be Approved Compilers.

2. The files of Non-GPL Code may instantiate templates or use macros or inline functions from the Approved Interfaces without causing the resulting work to be covered by the GNU General Public License.

3. 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.

4. If you modify this file, you may extend this exception to your version of the file, but you are not obligated to do so. If you do not wish to provide this exception without modification, you must delete this exception statement from your version and license this file solely under the GPL without exception.
Title: Re: Proceedings
Post by: RetroX on September 30, 2010, 07:21:40 pm
I've read it, and as I see, this is what I read it as:
- ENIGMA, the environment, compiler, and sources, are GPL,  Modifications of these must be distributed under the GPL. (you don't really mention this, but it should be put there)
- Programs compiled with the ENIGMA sources, under an approved environment, with an approved compiler, do not have to be released under the GPL.  If additional, licensed code is used, those codes' licenses must be followed.
Title: Re: Proceedings
Post by: Josh @ Dreamland on September 30, 2010, 08:09:34 pm
"ENIGMA, the environment, compiler, and sources, are GPL,  Modifications of these must be distributed under the GPL. (you don't really mention this, but it should be put there)"
This covers all of that: "you can redistribute it and/or modify it under the terms of the GNU General Public License"

"Programs compiled with the ENIGMA sources, under an approved environment, with an approved compiler, do not have to be released under the GPL.  If additional, licensed code is used, those codes' licenses must be followed."
Good enough.
Title: Re: Proceedings
Post by: RetroX on September 30, 2010, 09:20:07 pm
Actually, never mind; that's dumb.
Title: Re: Proceedings
Post by: luiscubal on October 01, 2010, 04:24:43 am
I have to oppose some things.
Modified versions of ENIGMA should be allowed to be redistributed either under the GPL, or under the GPL+this exception.
I also dislike the concept of "Approved Interface"/"Approved Compilers".
Title: Re: Proceedings
Post by: The 11th plague of Egypt on October 01, 2010, 05:10:09 am
Couldn't we hire a lawyer, or ask the Software Freedom Law Center for free help?

GLPv2 was easy to understand, but GPLv3, the one you are using, is full of legalese. It may even contain something that prohibits this kind of exception

At best we could just copy the classpath exception of GCC. Netbeans is double-licensed CDDL and GPLv3 and has similar exceptions.
Title: Re: Proceedings
Post by: TGMG on October 01, 2010, 05:34:43 am
I do think modified versions of ENIGMA (compiler) should be allowed under GPL. One of the powerful features of enigma imo is the ability to modify the whole process (add new features to the compiler etc).
GPL will cover both LGM and the compiler, so if a modified version is released it will have to be GPL. As LGM talks to enigma through JNI the Interface also has to be GPL, so that stops any closed source game makers which just use a new interface.
If someone does want to release a game maker based on enigma it will have to be GPL (for both compiler and interface), which does benefit the project as the official team can decide whether to add those changes or not.
It allows other Gm's to go in completely different directions from enigma but still be open source and still be able to share useful code.
So an exception isn't really required for the interface or compiler imo. As long as projects based on it are GPL the whole community should benefit.

The runner on the other hand could be LGPL, any changes to it will have to be released back, but can still be used in commercial games. This allows games to optimize the runner for there game without having to get official approval from the enigma team. But the optimizations will have to be released, and others can benefit from them too.

I think that would protect from any misuse of enigma, while also using officially written licenses and allowing the end user to modify the compiler/interface and runner and still release a closed source game, while benefiting enigma by releasing any changes back.
Title: Re: Proceedings
Post by: Josh @ Dreamland on October 01, 2010, 05:58:12 am
#TGMG, Luis
You misread. Which is easy to do considering how I worded it.

Quote
"ENIGMA" (where not followed by either "Development" or "Environment") refers to the segment of the Program designed to behave as a compiler, parsing inputted code and invoking additional compilers and linkers.

Quote
a. ENIGMA must be unmodified from its original Stable Release form.

What this means together is that you can optimize your engine as much as you like, or make any changes you wish to it. You can even design ENIGMA for PSP and keep it to yourself like a real asshole (I -considered- adding a clause about that, but then I figured the license was picky enough as it is). You can even redo the entire string of makefiles ENIGMA will call. But you can't modify the compiler and still opt not to GPL your code. This is the most restrictive part of the license, but really, it's just covering more bases. Though the most obvious thing this will allow us to do is put "created in an unregistered version of ENIGMA" in all the games (Meaning you'd have to be more clever than the average bear to legally work around it), the purpose of the clause when I wrote it was to give people incentive to share any modifications they felt were necessary to make to the compiler with us. Down the road, we can remove this, but I feel we should be very restrictive with this exception to start: We can always grant more freedom, but we cannot take it away.

@luis
Yes, the concept of approved interfaces and compilers is a morally gray (or worse) decision when dealing with free software. But the reason ENIGMA exists and has existed is its ability to generate small crowds of people. If the first Google result for "Game Maker Compiler" is a terminal interface that calls ENIGMA without even mentioning that it's based off of ENIGMA, we could lose serious ground and odds of being ran into by GM users.


The purpose of this license is to keep ENIGMA from losing out to anyone that sees how it could be advertised more cleverly with a new purpose and a new name. As long as there is some sort of collaboration or linkback, I'll authorize more interfaces. But if someone just wants to leech off the project, they're going to enjoy a much more communistic sort of freedom than our users here are. Namely, mandatory freedom all around. ^_^
Title: Re: Proceedings
Post by: The 11th plague of Egypt on October 01, 2010, 07:04:48 am
Full License Text
You should have received a copy of the GNU General Public License along with this program; if not, see <www.gnu.org/licenses>.
You should really specify it is GPLv3 you are talking about, and link to http://www.gnu.org/licenses/gpl-3.0.html
Title: Re: Proceedings
Post by: Josh @ Dreamland on October 01, 2010, 09:45:25 am
@plague
Quote
under the terms of the GNU General Public License as published by the Free Software Foundation; version 3 of the License or any later version.
Title: Re: Proceedings
Post by: Rusky on October 01, 2010, 09:51:04 am
If the first Google result for "Game Maker Compiler" is a terminal interface that calls ENIGMA without even mentioning that it's based off of ENIGMA, we could lose serious ground and odds of being ran into by GM users.
Speaking of, googling "game maker compiler" gives a "did you mean: game maker decompiler." It also has YoYo's C++ and PSP runner work, a crossword generator, an idiotic discussion on the YoYo forums about converting GM to Java, DS Game Maker and even G-Java and assorted random game development tools before I give up several pages in looking for Enigma. That's rather depressing.

Enigma is rather well-known on the GMC right now, and/thus I don't think trying to compete by locking out potential forks (which I don't think would happen) is the best plan. Being the first result on Google is an SEO issue and has nothing to do with licensing- as it is now, there are no Enigma forks and yet it's not even on the first several pages of "game maker compiler," "gml compiler" or "enigma compiler" (although there are some related pages there), and the overly-specific "enigma game maker compiler" only finds pages about Enigma rather than the actual homepage.

What's wrong with just making the IDE and compiler GPL and the engine LGPL? If someone modifies the compiler, you can get the source. If someone modifies the engine, you can get the source. Everyone keeps their game source.
Title: Re: Proceedings
Post by: Josh @ Dreamland on October 01, 2010, 11:08:02 pm
I'm not so sure I am entitled to the source of all engine modifications in that case.

But the idea for now is still that we can always grant more rights, but we can never take them away. So if you're wrong, and shit happens, we lose. If you're right, though, the exception will be made all-pervasive, or we'll switch to LGPL (after I research why the Red Hat team chose to write the exception off of which ENIGMA's is based instead of doing the same themselves).
Title: Re: Proceedings
Post by: The 11th plague of Egypt on October 02, 2010, 06:15:05 am
the Red Hat team chose to write the exception off of which ENIGMA's is based
Ok, this makes me feel a little more secure.
Title: Re: Proceedings
Post by: Fede-lasse on October 02, 2010, 11:55:54 am
Why not use one of the GNU licenses as base and then edit it so that it fits ENIGMA best?
Title: Re: Proceedings
Post by: RetroX on October 02, 2010, 11:57:31 am
Why not use one of the GNU licenses as base and then edit it so that it fits ENIGMA best?
Because none of us are lawyers.
Title: Re: Proceedings
Post by: Josh @ Dreamland on October 02, 2010, 08:59:57 pm
So we're more likely to leave loopholes and get screwed over.