tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] Using TinyCC with GPL


From: Rob Landley
Subject: Re: [Tinycc-devel] Using TinyCC with GPL
Date: Sun, 15 Jun 2008 21:16:19 -0500
User-agent: KMail/1.9.6 (enterprise 0.20070907.709405)

On Friday 06 June 2008 15:34:41 Ivo wrote:
> If you use Rob Landley's fork, your application must be GPL as Rob switched
> to the GPL for all of tinycc.

Thanks for the FUD, but if you'd bothered to read the README:

> License:
> -------
>
> Tinycc is distributed under GPL version 2.  (This is a specific version of
> the GPL, included in the file LICENSE in this tarball.  It may not be
> distributed under later versions.)
>
> The license on tinycc does not apply to output files produced by tinycc
> (which are under whatever licenses the corresponding source files were
> under), nor does it affect the header files in the include directory (look
> up "Scenes a Faire" and the merger doctrine).

By your logic, #including standard headers out of /usr/include would make your 
program GPL.  For example, the glibc /usr/include/errno.h includes the glibc 
bits/errno.h, which includes linux/errno.h which is a file taken from the 
Linux kernel and licensed under GPLv2 (not LGPL).  So any code that #includes 
the standard header errno.h is sucking in source code from the Linux kernel 
when it compiles.

If it worked that way then every program ever compiled for Linux would be GPL 
version 2.  There would be no binaries available under GPLv3, or the artistic 
license, or mozilla license, or BSD, or any proprietary license.

Luckily, copyright law isn't that insane.  (DMCA notwithstanding.)  If your 
program accesses functionality through a defined API, then that API acts as a 
barrier to derived work status as far as copyright law is concerned.  Not 
only does your code not include any of the other program's code, but your 
program is based on information contained in documentation (such as the C99 
standard) and _not_ any specific implementation of what it documents.  All 
tinyinc.h contains is a pile of C99 symbols culled from other header files 
(and ultimately from a standards document); as such it's probably not even 
copyrightable because there's no creative element.  (That would be the "look 
up scenes a faire and the merger doctrine" part of the readme.)

More fundamentally, if you're using C as a scripting language, then you're not 
even distributing your code as a binary, so you don't have to worry 
about "tainting" your binary with other code used at compile time to produce 
that binary.  You're not _distributing_ a binary of your code, the 
compilation occurs on the target machine, every character of the source file 
_you_ are distributing was written by you.

The tinycc binary is copyrighted and licensed separately from your code, and 
if you distribute that you have to abide by the license terms on that binary.  
But the same is true of a perl or python interpreter.  Starting your python 
script with "import io, sys" doesn't suddenly mean your python script is 
under the same license is the python runtime.

Rob
-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]