[Adium-devl] GPL and Objective C
Adam Iser
adam at mutablecopy.net
Sun Mar 5 22:16:38 UTC 2006
I just wrote a block of assembly which JMPs into GPL code (A JMP is not
a function call! HA! HA!). All your GPL code are belong to me.
- Adam
Ofri Wolfus wrote:
>Hi everyone,
>
>A discussion with David in IRC has lead me to talk with a friend of
>mine (who is a lawyer) about the nature of objc code released under
>GPL. As you probably know, a message to an object is translated by
>the compiler to a call to one of the objc_msgSend() functions.
>Therefor, you never get to call any 'real' function from your code
>and you only indirectly call GPL functions.
>Well, GPL code forbids you from linking to it unless your code is GPL
>as well, but what happens if the GPL code lives in a plugin which is
>dynamically loaded? This is what GPL has to say about it (taken from
>http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins):
>
>"It depends on how the program invokes its plug-ins. If the program
>uses fork and exec to invoke plug-ins, then the plug-ins are separate
>programs, so the license of the plug-in makes no requirements about
>the main program.
>If the program dynamically links plug-ins, and they make function
>calls to each other and share data structures, we believe they form a
>single program, which must be treated as an extension of both the
>main program and the plug-ins. In order to use the GPL-covered plug-
>ins, the main program must be released under the GPL or a GPL-
>compatible free software license, and that the terms of the GPL must
>be followed when the main program is distributed for use with these
>plug-ins.
>If the program dynamically links plug-ins, but the communication
>between them is limited to invoking the `main' function of the plug-
>in with some options and waiting for it to return, that is a
>borderline case."
>
>But message sending is not a function call... Therefor, a message
>being sent to a GPL class, does not force the sender to be GPL as
>well. As long as your code does not set instance variables of a GPL
>class (directly - accessors are fine), use IMP caching or use the
>@defs() directive, your code DOES NOT have to be released under GPL
>license.
>
>But what about the classes themselves? GPL specifically says that one
>can not use GPL data structures in a non-GPL code. Well... it doesn't
>bother us at all since classes are translated by the compiler to the
>objc_class struct which has no effect on us. The same goes with
>instances of classes which are translated to pointers to an
>objc_object struct.
>
>Quite revolutionary ha? ;-) Using plugins, commercial apps can take
>advantage of ANY GPL code that can be wrapped in a cocoa class. Not
>so good... But for us it also means some good stuff. It means that
>Adium and ChatKit can use protocol libraries which are not GPL. :D
>
>- Ofri
>
>
>_______________________________________________
>Adium-devl mailing list
>Adium-devl at adiumx.com
>http://adiumx.com/mailman/listinfo/adium-devl_adiumx.com
>
>
>
>
>
More information about the devel
mailing list