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

More questions about the QPL for compilers and other things (was Re: More questions about the QPL for a compiler)

Matthew Palmer <mpalmer@debian.org> writes:

>> But second, it uses better template code -- its idea of how to compile
>> a for loop over short integers is beautiful.  The structures into
>> which it compiles a break-free switch statement are elegant.  There is
>> much creativity there.
> But the creativity and elegance exist in the compiler itself.  The output is
> nothing more than the result of mechanical transformation.

Yes, but that mechanical transformation has two sources: the program I
feed it as input, and various copyrightable elements in the compiler.

Those copyrightable elements are mixed with mine in the output.

> I'm think of an analogy with a certain children's toy called a spirograph. 
> You may have heard of it, or maybe not.  It basically consists of a large
> ring, with cog teeth on the inside, and several smaller cogged circles, each
> with lots of holes in it.  You placed the circle in the ring and a pen in
> one of the holes, and turned it around and around.  It created beautiful
> patterns.

Yes.  I know what you mean.

> But it's simply the result of a mechanical process.  The only copyright that
> could exist in a spirograph artwork would be the selection of circle, pen
> hole, and pen colour -- equivalent to source code.

But what if the spirograph cogs were not uniform?  What if they had
wiggly sides, and so contained the essence of some spirograph
drawings?  Those are your programs.  They are copyrightable.

Now imagine the outer wheel is also nonuniform, and has been
creatively sculpted.  It has an impact on the output as well.

The output is just a mechanical transformation, yes -- but of the pair
(wheel, cog).  It carries copyrightable elements of both along.

As it happens, it's not *just* the OCaml compiler which is licensed
under the QPL.  It is the byte compiler, the native-code compiler, the
debugger, the interactive toplevel, the OCaml-specific 'lex' and
'yacc' tools, the linker, the documentation generator, and the camlp4
macro engine, pretty-printer and preprocessor.


Brian Sniffen                                       bts@alum.mit.edu

Reply to: