[OT} How to un-GPL parts of a GPL'd module.

Erik Max Francis max at alcyone.com
Wed Oct 9 03:25:00 CEST 2002

Anton Vredegoor wrote:

> This is a strange coincidence.

You just weren't wearing your foil cap, so I could read your mind :-). 
For the record, the software he's referring to is:


which is a really simple implementation of some Lindenmayer systems.

> In the end I decided not to use the lindenmeyer system simulator
> because I can just as soon write a tuple conversion script as wait for
> you to answer my email. I do not want to imply that you are not
> answering e-mail, just that the time it would take would be longer
> than just writing a convertor myself. That's what I thought *then*.

I didn't receive any email (my response to you in this thread was indeed
mere coincidence).  I checked my recent spam filters and didn't find
anything either; when did you send me this?

> By the way the lindenmeyer system algorithms themselves *are* in the
> public domain, I think?

Algorithms are patentable (whether that's wise or not), not
copyrightable, so "public domain" doesn't quite have the same
applicabilty.  It's certainly not the case that Lindenmayer systems are
patented (that I'm aware of), and I certainly wouldn't hold any such
patent.  Perhaps you were referring to the "obviousness" of the
algorithm, which I'll address below.

I'm presuming the algorithm you're referring to is that which is used to
updated the Lindenmayer system each generation; i.e., the core routine
inside LSystem.step.

> However, just because the two systems would work so well together for
> other implementations I got a bit frustrated about the license
> imcompatibilities and started this thread in order to adress the issue
> in a more general way. Now it seems not so hard at all to get in
> contact with the author: The author contacts me voluntarily!

At your service!  If you tried to contact me in the past, I didn't get
the email for whatever reason.

> Since my program is public domain I have no problem with someone
> relicensing (parts of) it as GPL, but then the problem for me would be
> that I could not use the GPL'd derivates myself, because I want my
> code in the public domain. I could get into a lenghty explanation
> about this but lets just say I am a postmodernist and I want my code
> snippets to survive seperately if my complete script would not be
> used.
> Maybe we can work something out? Thanks for writing free sourcecode,

As others have pointed out, GPL involves copyright, not patents, and
copyright only applies to fix works; i.e., ideas, algorithms, and the
like are not copyrightable and so a GPL license for some software
implementing them does not apply to them directly.

Furthermore, reading some copyrighted (GPL or otherwise) code that
implements and algorithm doesn't preclude you from using the
_algorithm_, even if it really didn't occur to you before seeing the
code how to do it.  This preclusion doesn't happen anymore than a
company paying for training you in some skill now owns your skill.

Despite however proud I might feel about my code, the Lindenmayer system
implementation in question is really a very straightforward
implementation of a well-defined, very well-known algorithm.  Even if it
were patented (by me or someone else contemporary), there would
certainly be obviousness (can't remember the legal term) and prior art
objections to it.  This is even a special case, where usually a
description of what a Lindenmayer system _is_ contains an outline of the
algorithm for implementing one, so it's hard to see anybody could defend
a patent on the algorithm (should one hypothetically exist).

The core algorithm which I presume you're referring to is implemented in
less than ten lines of Python code.  That you read the copyrighted code
and realized the algorithm doesn't preclude you from using the
_algorithm_, just the _code_. 

So go ahead and reimplement the algorithm in your own code, just don't
cut and paste.  (If you're feeling nice you can credit me with the
inspiration.)  It's likely that another implementation of the algorithm
would look very similar, but that shouldn't be too surprising in an
expressive but concise language like Python.

Certainly you should be commended on your presence of mind to actually
publicly ask such questions rather than just making up your own mind to
begin with, or, worse yet, ignore the GPL restrictions on the lsystem
code and just use it to your heart's content anyway.

 Erik Max Francis / max at alcyone.com / http://www.alcyone.com/max/
 __ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/  \ Granted that I must die, how shall I live?
\__/ Michael Novak
    Max Pandaemonium / http://www.maxpandaemonium.com/
 A sampling of Max Pandameonium's music.

More information about the Python-list mailing list