Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate

OK to sell?


  • Please log in to reply
96 replies to this topic
Nemroth
  • Members
  • 278 posts
  • Last active: Dec 31 2011 10:53 PM
  • Joined: 07 Sep 2004
Hi Litmus Red, of course it was a demonstration by the absurd...

But it's allways up to the creator of a software to decide what you can do or not with its software and at witch condition(s) you may use it.
He can decide that you can use it freely for all uses, or only for personnal use and with a payement for a commercial use, he can decide to allow you to see the source or not, to modify the source or not. He can decide to put the sofware in the public domain or to keep it's rights on the software.

In the case of a developpement environnment, the creator can ask the user to put credits in it's sofware, but it seems difficult to restrict the possible uses of a (script) language to certain uses or to a certain type of distribution off the generated app, as it must be very difficult to verify if the asked conditions are OK or not.
How much AHK generated apps exists ?

And I think that it is normal that it is up to Chris to decide if he allows the user of AHK to have the source code of AHK and if it can be modified or not, to decide wether AHK must be a commercial or an open source software. But it wouldn't be normal that Chris has rights on YOUR software, even if it's created with AHK. It wouldn't be normal that Chris forces you to publish your software under GPL. And even if he wants to, how can he control that all is OK ?

If it's what he want do do, I hope that Warclone (and all the others who wants to) will make as money as he (they) want with its(their) software.

corrupt
  • Members
  • 2558 posts
  • Last active: Nov 01 2014 03:23 PM
  • Joined: 29 Dec 2004
Nemroth, those are good points and would be true if AutoHotkey used a custom license. A canned license with specific restrictions, freedoms, etc... has been used however and may not always produce the result that the author intended. Chris has stated that a compiled program does not contain AutoHotkey and therefore would not have to be considered to be under the GPL (if I understood correctly). Could you give a bit more info please Chris?

Please don't misunderstand, I am in favour of a compiled AHK script not being considered under the GPL but I would hate to see someone sell a compiled script and have someone else challenge the license and demand that the source code be released to the public.

Litmus Red
  • Members
  • 139 posts
  • Last active: Nov 03 2005 05:01 PM
  • Joined: 25 Jul 2005
Yeah, those are good considerations for developing a license, Nemroth. However, I generally prefer to follow written law. So, I'm glad to know the GNU GPL does not apply to AHK EXEs.

Nemroth
  • Members
  • 278 posts
  • Last active: Dec 31 2011 10:53 PM
  • Joined: 07 Sep 2004

Yeah, those are good considerations for developing a license, Nemroth. However, I generally prefer to follow written law. So, I'm glad to know the GNU GPL does not apply to AHK EXEs.

I'm agree with you that it is the principle thing. Anybody can developp in AHK and sell his creation if he wish to. I'm OK that it's always better to follow the law ... I'm a lawyer ... But I'm not a specialist in international & software laws...

@corrupt : I'm OK with you that the AHK script creator must respect the conditions of use of AHK, if any

I think the rights applies to the source code (witch is unique), not to it's distribution form (ahk source, exe...) (there can be a lot of exes on different medias).

There is not any AHK source code (in C++) in an AHK script (in AHK). The owner of an AHK script is it's creator (or his boss...). The form under witch your AHK source code is distributed doesn't really mater. Your source code is always the same, but the "presentation" can be in an ini/ahk or exe form.

Chris has decieded to put the AHK source code under the GPL licence, but it is up to the AHK programmer to decide if he wants to do the same with it's code, as it is his creation. It's up to you to decide if you want that anybody can read and/or modify your code. You decide to put your AHK source code under the GPL licence or not.

So when Chris say that the GNU GPL does not apply to AHK generated EXEs, I think it can't be done in an other way.

And as I said before, AHK is coded under Visual C++, so we can consider that in the AHk executable code, there is Visual C++'s generated code (may be the code of AHK would a little different if Chris uses Borland C++ Builder or an other C++ compiler). But there isn't any Visual C++ source code in the AHK source code. If it was, I think that Micro$oft would ask Chris a fee for each AHK release !!!

Hope it helps...

Chris
  • Administrators
  • 10727 posts
  • Last active:
  • Joined: 02 Mar 2004
Technically, there is probably quite a lot of code in AHK written by Microsoft. This is because Microsoft wrote the code for the C runtime library -- things like atoi() and printf(). Any time a C++ program calls such a function, the code gets directly included in the resulting EXE. But the critical point is that Microsoft explicitly allows that code to be distributed in compiled form without any licensing or restrictions.

Chris has stated that a compiled program does not contain AutoHotkey and therefore would not have to be considered to be under the GPL (if I understood correctly). Could you give a bit more info please Chris?

...I would hate to see someone sell a compiled script and have someone else challenge the license and demand that the source code be released to the public.

I think an analogy might help: If someone were to distribute a GPL program such as AutoHotkey.exe with commercial software they had written -- and charge a fee for each license of that commercial software -- I don't think the presence of AutoHotkey.exe forces their entire product to become GPL.

I could be wrong on the above because I'm a little cloudy about the distribution of compiled GPL programs. But even if it's incorrect, a compiled script isn't the same as AutoHotkey.exe. Instead, it's analogous to writing a program in Visual C++ that makes heavy use of Microsoft's C library code.

Nemroth
  • Members
  • 278 posts
  • Last active: Dec 31 2011 10:53 PM
  • Joined: 07 Sep 2004

Technically, there is probably quite a lot of code in AHK written by Microsoft. This is because Microsoft wrote the code for the C runtime library -- things like atoi() and printf().
...
But even if it's incorrect, a compiled script isn't the same as AutoHotkey.exe. Instead, it's analogous to writing a program in Visual C++ that makes heavy use of Microsoft's C library code.

I'm OK with you, Chris. Of course there are parts of MS binary code in AHK and parts of AHK binary code in compiled AHK scripts. But I think that what is protected (and protectable) is the source code. Of course when you call printf() in the AHK source, the resultant binary code has MS code in it.

When in a script I use the AHK Send procedure, there are AHK and MS code in the resultant compiled (so binary) script, but there isn't any AHK or MS source code in the source code of my own script.

It's (I think) why I can protect it the way I want and the reason that make it my own creation, and not Chris's or MS one. So I can do what I want with it (in respect of legal rules, of course) : give it, sell it, rent it, put it under the GPL licence or not, decide that the resultant binary code can or can't be used for a commercial purpose, etc...

If I include another's AHK source code in my script, I must do it in respect of what his creator/owner said about this possibiliy. And of course I can do it only if the creator is OK with that possible use...

So if an AHK programmer make a script and compile it, I think he has no obligation to put it under GPL licence.

But as I'm not a specialist in software or international laws, may be I'm wrong. I say what seems to me juridically logic...

corrupt
  • Members
  • 2558 posts
  • Last active: Nov 01 2014 03:23 PM
  • Joined: 29 Dec 2004

I think an analogy might help: If someone were to distribute a GPL program such as AutoHotkey.exe with commercial software they had written -- and charge a fee for each license of that commercial software -- I don't think the presence of AutoHotkey.exe forces their entire product to become GPL.

AFAIK that is true but I'm not sure that the same applies if it was to be distributed in the same file.

I could be wrong on the above because I'm a little cloudy about the distribution of compiled GPL programs. But even if it's incorrect, a compiled script isn't the same as AutoHotkey.exe. Instead, it's analogous to writing a program in Visual C++ that makes heavy use of Microsoft's C library code.

The only part there that might make a difference is that there isn't any conditional compiling (AFAIK anyway), therefore autohotkey (as an interprteter? (.bin file - which is part of the package under the GPL?) is present in every compiled file?). This part seems a bit cloudy...

These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.


...but since a script (in most cases) would probably not be considered as a work based on the program it probably doesn't apply :) . Also the following seems to go in favour of a compiled script not to be considered under the GPL :) .

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.


ALthough that would seem to exclude a compiled script from the GPL as a whole... If it could be considered that AHK is included in a compiled script then the source to AHK and a copy of the GPL would still have to be distributed with a compiled script... (or maybe just a link to the source?)

Dewi Morgan
  • Members
  • 191 posts
  • Last active: Jun 07 2015 04:02 AM
  • Joined: 03 Oct 2005
Hate to burst your bubble, chaps, but I believe you're wrong.

No, I'll rephrase that, because this is an important point.

YOU ARE WRONG. YOU ARE BREAKING THE LAW.

[Edit]I retract the above.[/color] This is because I'm happy that exe2ahk causes the product of compilation to no longer be seen as a "derivative work", but just a "dependant work".]

Chris' description of how he interprets the license is a description of the LGPL, not the far stricter (and, to be honest, utterly evil and viral) GPL license.

Specifically, the GPL states:

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code.


That shatters the "it's not GPL if you're only distributing the compiled version". You can't distribute only the compiled version.

A compiled AHK exe, as I understand it, is a bytecode version of the script, and a compiled interpreter for that bytecode.

This interpreter, as with all parts of AHK, is covered by the GPL. You must make it available under the GPL, and make its source available, and must distribute the full text of the GPL license, and so forth.

But wait. What about your script, though? The bytecode? That's not covered... is it?

Yes, it is.

a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.


So if you've stuck your script and the entirety of the interpreter into a single exe, that's "a work containing the program".

What are the requirements for a "work containing the program", then?

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.


[emphasis throughout is mine. Those points in bold are important, folks!]

There is no wriggle room there. Any compiled executable made with ahk [b]MUST
be distributed as GPL.


Chris: If I am right in my understanding of how the exe works (and I am reasonably confident that I am), then I very, very strongly urge you to change the license from GPL to LGPL ("lesser" or "library" GPL), at least for the interpreter that's included in the exe. That way, the interpreter can be included in people's works as a "library" without virally infecting their work with the requirement that it, too, must be distributed under the GPL.

I am very confident that whatever license you distribute it under, you will not go after people who distribute the exes. But I do NOT trust whomever you pass the reins to: they may be lawyers who take ownership of it after you lose a fight over patent infringement. They may be bailiffs. They may be businessmen who bought the system off you: I do not, and cannot know who will be the next person to own the rights, or the next after them, and if I were to market a product made with ahk, I cannot trust them not to try to get a "slice of the pie".

You may want to consider a "dual license" system like perl uses.
Yet another hotkeyer.

Chris
  • Administrators
  • 10727 posts
  • Last active:
  • Joined: 02 Mar 2004

You can't distribute only the compiled version.

I don't think so because it says, "You must make sure that they, too, receive or can get the source code."

"Can get" is pretty open ended and I'm comfortable that just about anything reasonable satisfies it (such as a publicly available web site like autohotkey.com).

A compiled AHK exe, as I understand it, is a bytecode version of the script, and a compiled interpreter for that bytecode.

Not exactly. A compiled script consists of a modified version of AutoHotkey.exe and the plain text of the script itself (though it is encrypted and compressed inside).

[You] must distribute the full text of the GPL license, and so forth.

Assuming that distributing a compiled script is legally equivalent to distributing AutoHotkey.exe and your plain text script together in a zip file, I don't think this is true. But I'd have to do more research to find out for sure.

So if you've stuck your script and the entirety of the interpreter into a single exe, that's "a work containing the program".

Technically it doesn't contain the program, but rather a subset of it capable of running the plain text script inside. I think you could make a case that this is the same as distributing a "Hello World" program compiled by a GPL compiler. Such a program might consist of 32 KB of compiled GPL code and only 15 bytes of text you actually wrote.

I very, very strongly urge you to change the license from GPL to LGPL ("lesser" or "library" GPL), at least for the interpreter that's included in the exe.

That may happen someday (it may even become public domain). The barriers to this are that the program uses a considerable amount of GPL code from other sources.

I know what you mean about the GPL being viral. I'm lately leaning more toward releasing new works as public domain, but this is mostly due to lack of knowledge about LGPL vs. GPL. But with public domain, everyone can breathe a sigh of relief and the copyright lawyers can all recede into retirement :)

I am very confident that whatever license you distribute it under, you will not go after people who distribute the exes. But I do NOT trust whomever you pass the reins to: they may be lawyers who take ownership of it after you lose a fight over patent infringement.

That's a good point. In light of this, I'd welcome second opinions from any GPL experts in the house.

Thanks for the informative post.

Dewi Morgan
  • Members
  • 191 posts
  • Last active: Jun 07 2015 04:02 AM
  • Joined: 03 Oct 2005
Wow :D I am continually amazed by you, Chris: I feel that it is your generous and thoughtful outlook on life that makes this community so appealing.

I agree with you about PD: I try to use it for any scripts I write that I have cpyright to (I do some work as "work for hire" which grants the copyright to the hirer instead), and I avoid GPL at all costs.

The best argument against the GPL is their own "why not to use the LGPL and use the GPL instead because it means that people can't use your libraries" page, http://www.gnu.org/p...y-not-lgpl.html

It makes fascinating reading.

Proprietary software developers have the advantage of money; free software developers need to make advantages for each other. Using the ordinary GPL for a library gives free software developers an advantage over proprietary developers: a library that they can use, while proprietary developers cannot use it.


They see everyone who sells software as "evil big business". and don't appreciate that the majority are like yourself: doing their damndest for the community while scratching a living by it.

Chris wrote:

Technically it doesn't contain the program, but rather a subset of it capable of running the plain text script inside. I think you could make a case that this is the same as distributing a "Hello World" program compiled by a GPL compiler. Such a program might consist of 32 KB of compiled GPL code and only 15 bytes of text you actually wrote.


I'm afraid not. It's the same as distriburing 15b text plus 32k of libraries covered by whatever license the libraries are under.

That's why I made a point of "derivative work", and "includes a work or part thereof". This is also why libraries tend to use the LGPL, which allows derivative works to be distributed under other licenses (ie, it's non-viral).

If AHK uses GPL components, then I agree: it MUST be GPL, you have no choice, unless the authors of those components are willig to grant you an alternate license.

In that case, there is a kindof a workaround in the GPL fine print, I think!

Not sure how it could be implemented, but a derivative work is a thing as a whole:

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.


So, there needs to be a way to distribute a compiled script, where the script "can be reasonably considered independent and separate works in themselves" and not as "part of a whole which is a work based on the Program"

The requirement that it be "reasonably be considered independant and separate" would be satisfied, for example, by distributing the "library" and the "script" as two different files, with a license note on the "library" part.

But that would suck.

Or instead, having it so that all executables, given a specific commandline flag, will print out the text of the script, and given another, will replace the text of the script within the program with another.

Of course, that would totally shaft people who wanted to keep their script confidential (particularly if it had stuff like passwords in). To prevent the plaintext trivially appearing in the exe, they can use a variety of exe compressors/encryptors, but those commandline argument would break that security.

But if the arguments optionally took a keyphrase, so that the program could only print out the code if it was given the right keyphrase, then that would satisfy the "independant and separate" clause, wouldn't it?

In the script:
#keyphrase this is a password

On the commandline:
script.exe --print-source "this is a password"
script.exe --replace-source "this is a password" < inputfile

I suspect it'd be a lot of work to do, though. Various things within the exe may well depend on the size of the text file. Then again there're programs (eg reshack) that can edit string resources within a windows program, so maybe it's possible... I don't know enough to comment intelligently on that.

I'm not 100% sure this would even be a valid workaround. It'd take a professional lawyer to be sure I think. But to me it does LOOK like it'd work... what do you think?


But for the meantime, for me, there's a MUCH simpler solution: any script I write will be distributed as scripts only, which means I can release them happily on the public domain.
Yet another hotkeyer.

Chris
  • Administrators
  • 10727 posts
  • Last active:
  • Joined: 02 Mar 2004

The best argument against the GPL is their own "why not to use the LGPL and use the GPL instead because it means that people can't use your libraries" page, http://www.gnu.org/p...y-not-lgpl.html

That's very interesting, thanks. I hadn't realized that some standard GPL compiler libraries are "viral". Some people at the FSF obviously see this as a good thing because it gives free software a competitive edge. But my knee-jerk reaction is disgust. I'm more inclined to agree with you that its a decidedly bad thing because it reduces net benefit without sufficient cause -- and perhaps worse, strives to polarize software developers and make them adversaries.

They see everyone who sells software as "evil big business"

In fairness, some of them might have good cause: perhaps they've had bad experiences in the past.

I'm afraid not. It's the same as distributing 15b text plus 32k of libraries covered by whatever license the libraries are under.

Good point. I'll drop that line of reasoning for now and use the other one you kindly provided below.

So, there needs to be a way to distribute a compiled script, where the script "can be reasonably considered independent and separate works in themselves" and not as "part of a whole which is a work based on the Program"

...having it so that all executables, given a specific commandline flag, will print out the text of the script...

But if the arguments optionally took a keyphrase, so that the program could only print out the code if it was given the right keyphrase, then that would satisfy the "independent and separate" clause, wouldn't it?

You can use exe2ahk to extract the plain text script from a compiled script if you provide the right password. This supports the fact that the interpreter and the script are two separate things rather than a derivative work.

I'm not 100% sure this would even be a valid workaround. It'd take a professional lawyer to be sure I think. But to me it does LOOK like it'd work... what do you think?

I'm satisfied with it for now, especially since the GPL code used by AutoHotkey isn't rocket science. If the need arises, I think all the GPL code can be either:
1) license-changed to LGPL or PD by obtaining permission from the original author/contributor; or
2) replaced by functionally identical LGPL or PD code, which would be time-consuming but not difficult (with perhaps a few exceptions).

Thanks for all the great info.

AHKnow*
  • Guests
  • Last active:
  • Joined: --
I'm not a lawyer, but its my understanding the "purpose" of GPL is:

1. To ensure a program or any derivatives of it stay free and open source. GPL does kind of act like an "infection" that makes free and opens the source of software it comes in contact with. Furthermore, it appear that this "behavior" was the whole point of the license from the beginning.

2. It appears the point of LGPL is to allow others to use parts of freeware in proprietary applications in which the creator of the derived worked can close source code or charge money.

The GPL and the LGPL appeared to have been created for different situations in which one or the other could give an advantage to the freeware community. Sometimes, GPL is more advantageous (when you want your work and all derivatives to be free and open source) and sometimes the LGPL is advantageous when you want to make freeware available for even commercial purposes.

In the case of LGPL, trying to force derivatives of the freeware work to also be free and open source could be pointless because there is already other similar and competing programs, the commercial companies using the freeware work have/are helping to develop the freeware, or the freeware community will "get back" something by allowing people and companies to use the freeware.

I think the whole argument seems to come down to whether or not an executable compiled by AutoHotkey contains code that is under the GPL. If it does, than the LGPL seems better if Chris is going to allow people to sell AutoHotkey made applications.. If executables made from AutoHotkey does not contain code under the GPL within it than there is no problem.

Chris
  • Administrators
  • 10727 posts
  • Last active:
  • Joined: 02 Mar 2004

...the LGPL seems better if Chris is going to allow people to sell AutoHotkey made applications.. If executables made from AutoHotkey does not contain code under the GPL within it than there is no problem.

It does contain GPL code. But since switching to LGPL would be quite time-consuming, it seems best to defer it until someone with legal/GPL/copyright background makes a strong enough case that it's necessary.

Currently, it doesn't appear to be necessary because the script interpreter and the script itself are two separate entities that are packaged together into an EXE only for convenience. Upon launch, the two entities become separated again (in memory). They can also be physically and readily separated via a command line utility.

AHKnow*
  • Guests
  • Last active:
  • Joined: --
Chris, since the EXE that would be sold or has its source code closed contains GPL code than this would appear to be a problem.

If I make a program called the Apple game and it has a program called Apple.exe made with AutoHotkey, than the Apple.exe has GPL source code contained inside of it. I would be selling Apple.exe and not the Apple.AHK. It appears that somebody could challenge whether or not its legal for me to sell Apple.exe. If that person wins the legal challenge than I would be out of business, because I would not be able to sell just Apple.AHK.

Chris
  • Administrators
  • 10727 posts
  • Last active:
  • Joined: 02 Mar 2004

Chris, since the EXE that would be sold or has its source code closed contains GPL code than this would appear to be a problem.

But the GPL source code is in compiled form. The GPL makes a distinction between raw source and source that is both unaltered and compiled. This distinction appears to be enough to support the current line of reasoning that a compiled script is not a derived work but rather a stand-alone interpreter and a plain-text script that are bundled together for convenience only.

Still, some new concerns have been raised. So anyone with a large financial interest in selling compiled scripts could have a GPL legal expert assess the situation.