(A Javascript-enabled browser is required to email me.)

Numerical Recipes: Claims for a software copyright

Harry George posted this letter he received from W. Press, of Numerical Recipes, on comp.lang.modula3. It makes far-reaching claims for the perogatives enjoyed by a software copyright holder. George notes in private correspondence to me that others have advised him that not all of these claims are valid. George's reply to Press follows. -- K. Dawson

m3nr is dead (Numerical Recipes in Modula-3)

From           hgeorge at eskimo dot com (Harry George)
Date           Mon, 22 Jan 1996 04:13:01 GMT
Newsgroups     comp.lang.modula3
Message-ID     <DLKEDr.Dv6 at eskimo dot com>

My effort to _reimplement_ Numerical Recipes in Modula-3 is dead.  Here
is W. Press's statement.  (my response is in the next posting)

Dear Harry George,

Thanks for your letter of 20 Jan, which has been forwarded to me
by my colleague Bill Vetterling for answering.  I regret that this
answer is not going to be much to your liking, so I want to begin
by thanking you for the up-front and straightforward approach
that you have taken in coming to us.

The problem is that, as you yourself state, you don't completely
understand how copyrights work.  While copyright doesn't protect
ideas, it does protect virtually all aspects of the "expression"
of those ideas.  Here are some (just some) of the aspects of
Numerical Recipes that come under our (or, in some cases, Cambridge
University Press') copyright:

1.  The names of the chapters, and the ordering of the collected
chapers by subject (even if you changed the exact names).

2.  The collected names (though not necessarily any individual name
out of context) of the Numerical Recipes routines.

3.  The ordering of the arguments in the calling sequence for each
routine (to the extent that any re-ordering would be equally functional).

4.  The choice of variable names within the individual routines.

5.  The ordering of statements *whenever* such ordering is not *required*
by the underlying mathematical algorithm being expressed.  This probably
makes the ordering of about 50% of all the code lines a matter of
"arbitrary choice" and therefore copyrightable.

6.  The ordering of sub-expressions within any line of code, *whenever*
such ordering is *arbitrary* (as for every use of commutative operators
like +, *, etc.).

7.  All other expressive choices in the code that are not strictly
required by the mathematics.

8.  Possibly (this is debated among the lawyers) also the collected
"choices" of which algorithm to use in implementing the goals of the
particular routines.  That is, NR is a collection of algorithms (even
if uncopyrightable individually) in the same sense that a dictionary
is a collection of words (uncopyrightable individually).

I think you can see that while it is possible, and even feasible, to
take some Recipes, extract the ideas, and re-implement them,
it is by no means easy.  Probably (the lawyers say) it requires at least
two people, one of whom has no access to the NR code but who only gets
"clean" communication of ideas only, and who writes the actual code --
which must remain untouched by anyone who has read the NR source.
(This is in fact how industry legally "breaks" copyrights, as in the
classic case of the original IBM PC bios.)

In practice, we think it would be virtually impossible for you to
do any significant number of NR routines (much less the whole book!)
without substantially violating our copyright.  One might think of
using automatic tools to (e.g.) change all variable names, re-order
all expressions randomly, etc.  However courts have held that doing
this -- if the only purpose is to defeat a copyright -- is itself
illegal!  That is, it does not constitute the genuine extraction and
understanding of the underlying "ideas" that the copyright does not

Now, here is the part that, I'm afraid, you really are not going to
like: We cannot give you permission to proceed with your project of
translating NR into Modulo 3.  There are several reasons for this, but
a sufficient one is that we have licensees who have purchased
translation rights to NR for very substantial amounts of money (and
with very strong controls by us on their quality).  Some of our
contracts specify that we are not allowed to sell comparable rights
for less than these licensees paid.  Letting you proceed would, in our
opinion, violate these contracts.

We must therefore ask you to terminate your project immediately, and
especially to remove all code derived from NR from your Web page and
any other public area.  Although we are not hereby giving you
permission to do so, I want to mention that it is probably "fair use"
for you to translate NR into Modulo 3 for your own use on specific
computers (to the extent that you have a valid license from us to use
NR on those computers), but those translations are in copyright limbo:
they are "derivative works" of our copyrighted work, and you can't
transfer them to anyone else, even to people who themselves already
have NR licenses.  (The transferring is what very likely goes beyond
"fair use" provisions in the law.)

I am genuinely sorry that I must write such a negative response
to your straightforward inquiry.

Bill Press
Numerical Recipes

Harry George
email: hgeorge at eskimo dot com
smail: 22608 90th Ave W / Edmonds WA 98026
quote: <under construction>

m3nr is dead (part 2)

From           hgeorge at eskimo dot com (Harry George)
Date           Mon, 22 Jan 1996 04:19:16 GMT
Newsgroups     comp.lang.modula3
Message-ID     <DLKEo5.E0r@eskimo.com>

Here is my reply to W. Press.  I have removed the web page. I'm pretty
disgusted with his insinuation that I cheated, but beyond that this
should be a positive experience in letting nr.com know there is a
potential market for m3 texts.  Personally I learned a lot about algorithms
I always took for granted in the past.

Thanks for your reply.  It does not match the statements in your
book regarding separate copyright, but I'll take your word for it
that it is a valid statement of the legal situation.  Simply on the
basis of using the same chapter ordering, function names, and parameter order,
my code is (and is intended to be) a close match to NR92.  If that,
despite the Supreme Court's standing on "look and feel", is a copyright
violation, then I have erred.  To rectify this, I will
remove the material from my web page. I will then publicize the
situation in the (only) newsgroup in which I have announced this work.

However, I most emphatically did not, have not, and will not do a
source-to-source translation.  My lab notes adequately demonstrate the
independent lines of reasoning used in my work, and the alternate sources.
The routines I have implemented are not brain surgery.  They require
reasonable math exposure and lots of attention to bookkeeping, plus
some insight into machine truncation.  Other functions I have had to
skip because I did not understand them.

Yes, I am aware of source-to-source translators.  I've written several myself,
and have used commercially available tools such as Refine.  I'm sure I could
manipulate NR code so that even statistical clustering would not show
commonality.  But that is not the nature of my work on this project. This is
true reimplementation.  The pace of my work is not due to such tricks,
but rather due to intense thinking, long hours, and use of Modula-3.  I am
typically an order of magnitude faster in M3 than in C, Lisp, Ada, Perl, C++,
or (god forbid) COBOL, Fortran, or Assembler. (Java at least has
similar semantics, but the syntax is a mess.)

Which raises my key concern.  I would like
to _strongly_ urge you to consider releasing a verison of NR in Modula-3.
The user community is small, but highly professional, and typically
multilingual.  An M3 version (particularly if you took my lead and used
idiomatically appropriate approaches rather than Fortran- and C-isms), could
serve as a generic text for many languages.  If Sedgewick can do his
Algorithms book in Modula-3 why not you guys?  It's a market.

If you have no such plans, then I intend to turn to one of the public domain
numerical analysis packages, and implement major portions in M3.  (That may
have to wait for a few other critical-mass building projects.)

>I am genuinely sorry that I must write such a negative response
>to your straightforward inquiry.
So am I :-}
>Bill Press
>Numerical Recipes

Harry George
email: hgeorge at eskimo dot com
smail: 22608 90th Ave W / Edmonds WA 98026
quote: <under construction>

[ TBTF for 1996-03-03 ]