hi.
as thomas has said, this is indeed a neat example.
however, if someone could share a light on my ignorance on GPL:
my little program uses "freelib" a GPL-covered (not LGPL) library, for free speech. the only header file of this lib is freelib.h:
#ifndef FREELIB_H #define FREELIB_H #ifdef __cplusplus extern "C" { #endif void speak_free(char *string); #ifdef __cplusplus } #endif #endif
that's the little program i wrote:
#include <freelib.h> int main(){ speak_free("freedom sucks"); return 0; }
when i link my program against freelib, it surely has to be covered by the GPL (http://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL) only because i have because 2 lines in my source code refer to this library.
but hold on! what if i had written a header-file "freelib.h" on my own:
#define speak_free(x)
this header-file is under a very restrictive EULA which infects all source code which uses it (like the GPL, but worse). so my little program surely has to be covered by this license.
so can anybody tell me, which license my program has to be published under? i doubt that this has not been discussed to death at fsf. most likely the arguing will be about "intentioned use" and/or about 2 licenses to be applied to the final program (depending on the produced binary).
Frank Barknecht wrote:
Now would I be obliged to put my 2-line application under GPL, just because it uses a name, for which there also is a GPL-external? In my opinion: no. (In the light of the fact, that nameclashes still are a daily business, it even would be crazy to require that using certains identifiers would automatically make a patch need to follow the GPL.)
the occurence of "expr" in your .pd-file will not make your 2-liner to be covered by the GPL. this has nothing to with name-clashes, but with modularity: i can implement a free version of a non-free library, which share the interface (as long as the interface is not protected by some explicit legal "thing"; but even then i guess that you could find some loophole), just the same as i could implement a library totally differently (e.g. my libfree() could output the free speech to the console, a lineprinter or via blinkenlights.
typing "expr" within an object box is not enough to be caught by the GPL. however, using shahrokh's [expr] will make any patch GPL.
but of course i have not the slightest idea about legal issues....
mfga.sdr. IOhannes