Re: Do C++ Programmers Overuse Templates?
On Dec 12, 10:22 pm, LR <lr...@superlink.net> wrote:
Pete Becker wrote:
On 2008-12-12 06:48:24 -0500, tonytech08
<tonytec...@gmail.com> said:
I suggest to you that software pattents disallow me to
enlighten you.
How? Patents are public disclosures of techniques. They in
no way prevent discussion of those techniques (indeed, their
purpose is to promote discussion and knowledge). What they
prevent is use of those techniques without permission.
I think I don't understand how IP law works in this regard.
Does this work the same way for code that it does for, say, an
apple peeler?
You can't patent "code". What you patent is an invention: a
process or a machine which is new and non-evident. And the
patent doesn't cover the "expression" of the invention, only the
invention itself. Also, you can't patent laws of nature or
algorithms (but you can patent particular applications of them).
At least traditionally, and in international law. I get the
feeling that the US is extending what patents were designed for.
There is no mention of the requirement to publish at
http://www.uspto.gov/web/offices/pac/doc/general/index.html#patent,
for example.
If someone invents a new apple peeler can I, at least in the
US, in aid of showing how the invention works, publish blue
prints, and maybe even make a virtual model in some simulation
software that emulates the apple peeling process to show how
truly good this type of apple peeler is?
In order to patent an apple peeler, you *must* make the plans,
showing how it works, public. Otherwise, no patent.
If I can do that with a patented apple peeler, can I do that
with patented software?
Software is the expression of an algorithm. As such, it isn't
patentable, at least under international law. The literal
expression can be copyrighted, of course, and the software may
be an integral part of a machine or process, which can be
patented. In that case, you do have to publish detailed
specifications of the machine or process, including detailed
specifications of what the code does, and (generally, I would
assume) the algorithms it uses to do it. I don't think you'd be
required to publis a particular "expression" of those
algorithms, i.e. you need an English language expression of
them, but no C++ code.
Different jurisdictions interpret this differently; in the
United States, there is a patent for a "Cryptographic
communications system and method" which uses the RSA algorithm;
in the rest of the world, the absence of any physical machine in
the patent meant that it wasn't patentable, and the patent is
only valid in the US. But even under the US law, the authors of
the patent were required to publish the algorithm, in enough
detail that any moderately competent programmer could understand
it.
Can I write code that shows how it is used? Distribute it on
paper? Distribute it on computer readable media? Write a
computer emulator that simulates the patented software, like I
could with the apple peeler?
And if I can do this, could there be a violation of, something
that I don't think exists for the peeler, a software
copyright?
Copyright covers a different aspect: expression. The blueprints
of the apple peeler could be copyrighted. The patent office
requires, however, that a copy (or several) of them be filed
with the patent, and anyone can consult them. And you can
legally draw up your own blueprints, based on what you learned
by consulting them (but not copying), and publish them. If your
publication was just of the blueprints, I suspect that you'd
have a hard time introducing enough originality in them that
they wouldn't be considered a derived work. But if you were
writing a book on the history of apple peelers, you could
certainly include the blueprints, or parts of them, under the
fair use doctrine.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34