From: Bruno H. <br...@cl...> - 2003-05-18 16:30:06
|
Don Cohen wrote: > > The license seems to say that any program using FFI must be GPL. > > If I understand correctly, that means that if you wanted to sell a > > program that runs in clisp and uses some library like openGL or X > > windows you could still break it into two pieces: > > - the clisp interface to the library, which would have to be released > > under GPL > > - your application that uses the interface, which you could still > > sell without disclosing the source > > > > Is this correct? The interface (i.e. the FFI code that is used to generate a modified _executable_) would have to be released under GPL; this is clear. Now about the second part, the Lisp code that uses this interface. You're hitting two rules in the copyright notice which in your case vote against each other: 1) Your code doesn't use clisp internals (it uses only the interface which you have added to clisp yourself!), so you don't have to give source code of it. 2) Since your code is not portable (it requires your interface which in turn is specific to clisp), you would have to give the source of it. To break this tie, let me look back at the ideas behind this copyright rules: - Extensions of clisp must be under GPL. - Code running in clisp should not need to be under GPL, if it's not an extension of clisp. Under this light, the argumentation behind 2) reveals to be misguided - just because your code uses your interface, it doesn't make it an extension of clisp. You could also implement the same interface on top of any other CL's FFI. (And whether you actually do so, is irrelevant.) In summary, only point 1) survives, and the answer is: yes you are right. > Note that due to the intended nature of GPL, the above _must_ be > _wrong_, i.e., if your application uses the GPLed interface, then it > _must_ be GPLed. CLISP COPYRIGHT says that the applications that can > run in _any_ CL, do not have to be GPLed; so if your application relies > on the openGL interface which is available also to, say, CMUCL, then > your application is not GPLed. But it would be very underhanded to tell someone: "Oh your interface is an extension of clisp, give it to us in GPL'ed source code", and after he's done that and after we've added his code to clisp, we tell him "So you are now using a clisp internal, you must give us your whole application". That's the letter of the GPL, yes, but it's unethical. Strictly speaking, we could have enumerated clearly in the COPYRIGHT file which packages are to be considered "clisp internals". But common sense tells that a third party contributed interface is not a "clisp internal". But the case could be more complicated if, after the contributor has given his interface into clisp but has kept his application under closed source, now someone else builds a different application which uses the same interface, and the question arises whether this interface now is a "clisp internal" or not... So the question is: How does clisp's copyright scale when someone adds a new package to it? My proposal is: Let the contributor decide whether the new package shall be considered a "clisp internal" or a "public package" (like #<PACKAGE EXT>). What do you think, Sam? Bruno |