ENIGMA Development Environment
Website is in read-only mode due to a recent attack.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Josh @ Dreamland

General ENIGMA / Re: HTML5 based IDE
« on: January 22, 2014, 10:17:03 AM »
A static page is doable; JDI can generate that, no sweat.

As for Bison... you might be better off just emscripten'ing the piece of the compiler that actually builds the AST. If that succeeds, the code at least checks out from a context-free perspective.

I think a good approach to those server models is to code the libraries as though they are to be used natively (ie, application→library), then instead, code a new library that calls a remote application to work with them (application→networking library → server application→library), so that the actual code for the file and ENIGMA server isn't actually aware it's ever remote.

Also, keep plans for multiple ENIGMA servers at heart—if a server is doing the compiling, there's no reason not to have a farm of (virtual) servers running each OS. That way you can build for all, on-demand.

General ENIGMA / Re: Linking Exception Draft
« on: January 22, 2014, 09:55:03 AM »
I would rather any holes be on the users' side. We can always grant new rights; we can never take rights away. And including a clause that says, "we reserve the right to retroactively cancel this exception" would not bode well. So the idea is, fortify the hell out of the exception, then grant additional rights as they become required.

I wouldn't worry about (4). The GPL grants users the ability to use code internally however they like. As long as GPL code never leaves your machine, you can use it in proprietary applications to your heart's content. I trust this idea applies to corporate entities, too. You can modify GPL code in any way you like, as long as you're doing so on your own machine; it only becomes a problem for you once you try distributing it. So as long as their engine obeys the other terms, when they link the game for stand-alone release, it will be fine.

Your concern for (5), however, is definitely legitimate. What was meant when that was written was clear, I hope, but you are definitely right; the phrase intended for linking into other software applications is saying too much, as Android itself is still "another software application." I will have to re-phrase that, or get a lawyer's help in doing so. I will give it some thought over the next day or so; I don't want to jump the gun on it.

But like I said, all we need to fix a concern on a user's part is consent from the contributors to tweak the license. All we need to fix a concern on the project's part is an act of God. So I'm tending toward not giving users all necessary clearance. I'm glad to have someone who is defending from the users' perspective, because I find it harder to put myself in that position. :)

Developing ENIGMA / Re: Style guidelines
« on: January 22, 2014, 12:57:03 AM »
For objective articles, yes, but a huge portion of the Wiki is opinions, personalized instructions, and tutorials. In those situations, there's no point to trying to formalize everything; you're there to listen to what someone has to say.

I have already bothered to address the actual points you brought up, elsewhere on these forums. You seem to be under the impression that you had brought up more than that, and so I'll address a couple of the statements you may have mistaken for points here, as well. For instance, you seemed displeased with the behavior of the developers.

ENIGMA's developer base is not a coherent entity. No one is paid for their work, here. Everyone is expendable, without exception. We are not a company, and these contributors do not represent a company in any way. If you have a problem with one or more developers, that is not to do with this project.

Moreover, contributors are free, here, to share their opinions. This includes opinions that are not founded, not publicly founded, or even downright incorrect. In this country, and on this forum, they are protected in doing so by their freedom of speech. While it is the right of the forum administrators to suppress this, we do not make a habit of doing so. Unlike, I will point out, Yoyo Games. Mentioning competing software on that site, especially in a positive light, is prohibited. Users who do so will have their posts deleted, and will be banned on repeated offense. Meanwhile, we left all twelve of your very rude, often distracting posts up, in the hopes that most of our readers are mature enough to ignore them. Quite a stark contrast, but not really material to this argument.

I usually dislike dabbling in outright fallacy, but while we're on the ad-hominem train, I'll point out that many on the Yoyo staff, including forum staff and developers alike, are quite quick to bash this project when it it mentioned. I bring this up to remind you that in a corporate environment, employees do represent their respective companies when they speak. As paid "professionals," you should hold them to a higher standard than you hold contributors to a free software project. But it is fine by me that you choose not to; just don't expect warm reception for an ad hominem.

Now, on to the points of substance (the things you said which were not informal fallacies).

You mentioned that you were displeased with ENIGMA's lack of updates.

ENIGMA has a constant flow of updates. That's actually part of its problem. ENIGMA does not have a formal release schedule. This is to do with the fact that it does not have a formal development team. Instead, ENIGMA has what are basically rolling releases. It may seem broken and rag-tag, but it all comes down to the simple fact that we don't tag git revisions as stable. Many larger projects do so, and then commit only bug fixes to the tags for some length of time. We do not. While there's no profound reason we do not, there is still a reason: no one wants to do that, and no one is getting paid to do that. Solve either of those, and we're golden.

You mentioned that no one has ever made a large game in ENIGMA.

You don't know that, and we don't know that. ENIGMA does not have a marketing team. We don't strive to make our engine look artificially popular. We don't take people's work that is not ours, put it up on a pedestal and say, "LOOK WHAT WE CAN DO!" The EDC has a good selection of games which were made in Game Maker and happen to work in ENIGMA. It also has a good collection of games which were made in ENIGMA, and happen to still work in ENIGMA (this being the far rarer occurrence). The source is included for all of these games. At no point do we shove any of these in anyone's face for the sole purpose of marketing.

TGMG has, however, recently decided to sponsor a game development contest. This isn't to do with your whining so much as a lucky coincidence; you may yet see the artificial popularity charade you seem to crave.

You mentioned that our documentation can't be downloaded.

No one has automated anything to crawl the Wiki and export pages. That isn't to say it won't happen, just that it has not happened. Once again, the lack of developer interest or subsidization thereof is at issue. It really isn't a big to-do item, though there has been interest in the topic (both from Robert and from various users). In fact, Robert has apparently already worked out a system for downloading pieces of the wiki for offline use. So apparently he is interested in the prospect; now you just have to find a couple more people who feel the same way.

Lastly, you mentioned that our licensing was not worked out.

This one, we actually intend to correct, even though it is not our responsibility to do so. I would be content to mandate all ENIGMA games be free, but of the sake of the users, am consenting to a license which gives users autonomy over the license of their own executables. The other contributors are also inclined to do so. This problem, largely catalyzed by you, is being addressed in another topic, and you are welcomed to weigh in. I would request that you do so calmly and with the understanding that ENIGMA, while free, is still the intellectual property of its contributors, each of whom holds the prerogative to maintain the restrictions of the GNU General Public License on his or her code indefinitely.

And let me emphasize once more that it does not matter who you are, or who I am, or who any other contributor is. A point is a point, and they are handled or ignored as such, regardless of the speaker or his or her intentions.

General ENIGMA / Re: Linking Exception Draft
« on: January 21, 2014, 06:48:52 PM »
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. :P

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.

General ENIGMA / Re: Linking Exception Draft
« on: January 21, 2014, 10:00:25 AM »
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.

General ENIGMA / Re: HTML5 based IDE
« on: January 21, 2014, 09:53:26 AM »
Reusing the code base would definitely be easier, but might introduce unnecessary overhead since the components are no longer on separate machines (resource manager, compiler, IDE).

I don't think that a JavaScript checker is suitable for doing any checking on EDL. EDL has types, for starters.

Reviewing the image editors I have seen in the past, none of them offer flood fill, and many of them are based on HTML entities rather than pixels. So they're not, in fact, great candidates for this IDE. So apparently, there is work left to be done on them. As far as the code editor is concerned, Ace seems to be your best bet. It already supports code completion and everything, though another concern is getting all the code completion definitions in.

Ideas and Design / Re: Include Files
« on: January 20, 2014, 06:42:24 PM »
Resources are no longer compressed at all, in ENIGMA, as far as I know. They used to  be zlib compressed. If you want it to be smaller for internet purposes, zip the executable before you upload. Most upload sites make you do so, anyway. As do browsers.

We are much more likely to allow specifying that resources be stored in an external zip archive or directory. The reason for that would be to remove resource overhead during compile time.

General ENIGMA / Re: Linking Exception Draft
« on: January 20, 2014, 03:09:01 PM »
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. :P

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.

General ENIGMA / Re: HTML5 based IDE
« on: January 20, 2014, 03:01:31 PM »
TogetherJS seems like a lofty goal; the rest sounds reasonable. I'm aware that other widget libraries have methods of embedding HTML, but I expect them to be awful compared to Webkit (meaning those which likewise utilize Webkit and V8 are the only real contenders). And using them wouldn't help with the continuity of C++ vs JavaScript, at all. You still don't have any low-level access; the only difference is now it's in a system widget library instead of a browser or node.js.

Doing even basic syntax checking client-side means more code to maintain. Yeah, you can color-code strings and do brace matching; you completely have to. All IDEs do that. But you can't do a tenth of the required syntax checking client side in a language as complicated as EDL, so users will still be sticking to the syntax button like glue.

As far as the contest goes, we already have the code editor, we already have the image editor; the other editors are GUI-heavy, but shouldn't take someone more than a few hours to set up, but forever to make work. For example, playing sounds in the sound editor. You're limited by your HTML environment's capabilities. And without a format to save to and load from, which is a critical part of the IDE's communication, it's hard to just jump into such specific dialogs.

What I'm saying is, all the general work is already done. The specifics are all that's left, and that's not the sort of substance for a competition. But yeah, I'm interested to see what happens, as well.

General ENIGMA / Re: Linking Exception Draft
« on: January 20, 2014, 01:39:00 PM »
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.

General ENIGMA / HTML5 based IDE
« on: January 20, 2014, 12:26:29 PM »
I've never interfaced node.js with anything, personally (though I have linked V8 with things). It would be ideal to interface ENIGMA with it as a shared library, as it makes syntax checking faster and allows the compiler to keep relevant information in memory. A JavaScript IDE does exhibit a lot of promise—as I mentioned, there are already great code editing and image editing tools available in HTML5. I suppose the ENIGMA/node interface could be put off until the IDE actually worked, but I wouldn't run with this idea without involving some C++ code.

That said, your new biggest concern is speed. That code editor can get laggy on single big files. People will want to have multiple code files open at any given time... it can get messy. It's too bad there's no <html:use> similar to <svg:use>; another big emerging topic is the ability to have the same file open in multiple windows/tabs, and edit it concurrently. That tag is perfect for such occasions.

At this juncture, it might be best to split this topic. The requirements and ideals of this IDE project are larger than the entire rest of the contest; it should probably get its own thread.

General ENIGMA / Re: Linking Exception Draft
« on: January 20, 2014, 10:27:35 AM »
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.

General ENIGMA / Linking Exception Draft
« on: January 19, 2014, 06:29:05 PM »
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


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.


"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

   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.

Developing ENIGMA / Style guidelines
« on: January 19, 2014, 06:00:06 PM »
New developers and old developers alike: I've noticed some bullshit happening in the engine. Specifically, one of the region_ functions is returning a variant. Don't do that.

I've started a page of basic guidelines on the wiki. Read it there, discuss here.