[comp.sources.d] What documentation is fair/legal to use to develop clone software?

mason@tmsoft.uucp (Dave Mason) (07/27/90)

I just resubscribed to comp.sources.d to post this question &
discovered the end of a related discussion.  Hopefully I've phrased my
question in a slightly less controversial way.

I am developing a clone of some major AT&T software (exactly *what* is a
secret for now).  I obviously don't want the result legally
encumbered, as it is to be freely distributable (a la FSF or less
restrictive rules).

The question is: What can I base my knowledge on?

Some answers: The X/Open manuals?  The Posix manuals?  The UNIX
manuals?  The Bach book?  Reading the .h files?  The SVID?  Other
people reading the source & answering questions (this seems to be
breaking their trade-secret agreement with AT&T)?  The Lyons book?  Me
reading the sources (I'm sure this is not kosher)?  I've listed these
in descreasing likelyhood of being OK.  To this point I have looked at
the X/Open & UNIX manuals & read the Bach book & very occasionally
looked at .h files.  The X/Open manuals don't give binary encodings...
does Posix? 

For example, suppose I were doing a STDIO?  How would I know the
function names, valid parameters, binary values of #defined values
(such as _IOFBF, _IOLBF, _IONBF in setvbuff(3))?  This last point is
the most tricky - short of looking in stdio.h (or writing a program
that tried random values until it got a result I was looking for) I
can't see how one could get the correct semantics.  And the .h are
clearly copyrighted...

I'd really like to hear from people that have actually developed PD
clones (Henry, Ozan, AST, RMS, other FSF, ...) or other people who
KNOW what they're talking about, rather than from people saying ``I
think the law ought to say blah...''.  That's an interesting
discussion too, but I'm looking for facts.  If FSF has a ``Guidelines
to writing freed software'', I'm sure it would be helpful.

Thanks muchly,	../Dave <mason%tmsoft@toronto.edu>

sean@ms.uky.edu (Sean Casey) (07/28/90)

mason@tmsoft.uucp (Dave Mason) writes:

|I am developing a clone of some major AT&T software (exactly *what* is a
|secret for now).  I obviously don't want the result legally
|encumbered, as it is to be freely distributable (a la FSF or less
|restrictive rules).

|The question is: What can I base my knowledge on?

And so it begins. How horribly sad that programmers even have to ask such
questions.
-- 
***  Sean Casey          sean@ms.uky.edu, sean@ukma.bitnet, ukma!sean

jcmorris@mwunix.mitre.org (Joe Morris) (07/29/90)

In article <jb0lh55m9@tmsoft.uucp> mason@tmsoft.UUCP (Dave Mason) writes:
>
>The question is: What can I base my knowledge on [in writing a clone]?
>  [...]
>I'd really like to hear from people that have actually developed PD
>clones (Henry, Ozan, AST, RMS, other FSF, ...) 
>  [...]
For an example of a quite successful cloning of UNIX (tm and all that) see
Andy Tannenbaum's MINIX system.  He took the UNIX externals and wrote the
entire system to support them without using a single line of AT&T copyrighted
code.  The text (which includes a lot of the MINIX 1.0 source) is titled
_Operating_Systems:_Design_and_Implementation_.  Both the book and the
machine-readable (including SOURCE!!!) are available from Prentiss-Hall
by mail order.  Some software storefronts (WaldenSoftware, Computer Literacy,
etc.) stock the book; I haven't ever seen the disks in a store (but haven't
really looked that hard).

There's also a USENET newsgroup on MINIX: comp.os.minix .

brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (07/29/90)

In article <jb0lh55m9@tmsoft.uucp> mason@tmsoft.UUCP (Dave Mason) writes:
> I am developing a clone of some major AT&T software (exactly *what* is a
> secret for now).  I obviously don't want the result legally
> encumbered, as it is to be freely distributable (a la FSF or less
> restrictive rules).
> The question is: What can I base my knowledge on?

The real question isn't what you can do, but what you can't. You have to
worry about (among other things, and in order of difficulty) trademark
law, copyright law, patent law, trade secret law, and contract law.

Trademark law: Make sure that you don't use a trademarked product symbol
or name without giving AT&T (or whoever owns the trademark) credit. You
probably don't have many names to worry about.

Copyright law: Unless you make copies of or derivative works from the
AT&T manuals and code, you're safe. Asking someone else to do the dirty
work is no good: you're liable for contributory infringement.

Patent law: Almost certainly inapplicable. Don't worry about it. (Yet.)

Trade secret law: You're not allowed to steal someone's secrets. So if
AT&T uses some neat coding techniques that they're not telling anyone
about, and if you sneak a look at code saying ``Trade secrets in here!
Go away!'' and figure out those coding techniques, you're in trouble.

Contract law: Whatever you've signed, you'd better obey.

The easiest test for safety in cloning is whether you've looked at (or
disassembled, or pried into) the original code. If you haven't, then
you can't possibly be breaking copyright law or trade secret law.

> Some answers: The X/Open manuals?  The Posix manuals?  The UNIX
> manuals?  The Bach book?  Reading the .h files?  The SVID?

Fine. Information can only be protected by trade secret, and nothing
you've listed is a trade secret. Anything you can legally read, you can
legally learn from, and legally apply. (A particular *expression* of
information is protected by copyright, but the information itself cannot
be.)

> Other
> people reading the source & answering questions (this seems to be
> breaking their trade-secret agreement with AT&T)?

It is more likely that they signed a contract agreeing to respect the
trade secret. In any case, they lose their license.

> Me
> reading the sources (I'm sure this is not kosher)?

If you *don't* read the sources, your position is very difficult to
attack, so I recommend taking that strategy. Reading the sources may not
be a tort, but what happens if you subconsciously reproduce the same
variable names in your code? The same function names? The entire
original? It's safer not to.

> To this point I have looked at
> the X/Open & UNIX manuals & read the Bach book & very occasionally
> looked at .h files.

Fine. When I want to clone a program, I read the man page. Then I write
the program, applying knowledge gleaned from books and other man pages.
Then I rewrite the man page. As a last step, I often check that my
program uses the same output format as the original, though in extreme
cases this may violate copyright law. (Visual images are copyrightable.)

> For example, suppose I were doing a STDIO?  How would I know the
> function names, valid parameters, binary values of #defined values
> (such as _IOFBF, _IOLBF, _IONBF in setvbuff(3))?

You read stdio.h. You hope that the Lotus decision and the proposed
European copyright law don't stand up to criticism.

> And the .h are
> clearly copyrighted...

Unless you copy them (or display them in public :-) ), this is
irrelevant.

---Dan

hollaar%basset.utah.edu@cs.utah.edu (Lee Hollaar) (07/29/90)

In article <337:Jul2821:30:4090@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes:
>In article <jb0lh55m9@tmsoft.uucp> mason@tmsoft.UUCP (Dave Mason) writes:
>> I am developing a clone of some major AT&T software (exactly *what* is a
>> secret for now).  I obviously don't want the result legally
>> encumbered, as it is to be freely distributable (a la FSF or less
>> restrictive rules).
>> The question is: What can I base my knowledge on?
>The real question isn't what you can do, but what you can't. You have to
>worry about (among other things, and in order of difficulty) trademark
>law, copyright law, patent law, trade secret law, and contract law.

>Copyright law: Unless you make copies of or derivative works from the
>AT&T manuals and code, you're safe.
   In Lotus Development Corp. v. Paperback Software International
   and Stephenson Software, Ltd., Judge Keeton of the U.S. District
   Court, District of Massachusetts, ruled that nonliteral elements
   of a computer program (such as menu structure and command names)
   can be copyrighted, and a program that copies those nonliteral
   elements infringes the copyright, even though all the source code
   is original and not copied.

   He proposed a three-part legal test:
   FIRST, in making the determination of "copyrightability," the
   decisionmaker must focus upon alternatives that counsel may
   suggest, or the court may conceive, along the scale from most
   generalized conception to the most particularized, and choose
   some formulation -- some conception or definition of the "idea" --
   for the purpose of distinguishing between the idea and its
   expression.
   SECOND, the decisionmaker must focus upon whether an alleged
   expression of the idea is limited to elements essential to expression
   of that idea (or is one of only a few ways of expressing the idea)
   or instead includes indentifiable elements of expression not
   essential to every expression of that idea.
   THIRD, having identified elements of expression not essential
   to every expression of the idea, the decisionmaker must focus on
   whether those elements are a substantial part of the allegedly
   copyrightable "work".

   In the 1-2-3 case, there was no copying of the Lotus code.  However,
   the screen looked the same and the same commands were used in each
   menu in the same order.  The "idea" that could not be protected by
   copyright (but probably now could be patented) was a computerized
   spreadsheet (not original to Lotus).  An expression of that idea
   essential to the idea is the "rotated L" that labels the rows and
   columns, since virtually every spreadsheet uses it.  A copyrightable
   nonliteral expression is the ordering of menus and commands, since
   spreadsheets that are not clones of 1-2-3 express the spreadsheet
   idea using different commands and menus.

   So, at least in one court, you can infringe a copyright without
   copying or even seeing the code of the copyrighted program.  This is
   very likely if you are cloning a user interface or other display.

>Patent law: Almost certainly inapplicable. Don't worry about it. (Yet.)
   There are now hundreds of software patents, and the number is
   increasing every year.  Some of them are flakey, but even those
   could be a problem, since the legal presumption is that they are
   valid.  Remember, it doesn't matter you have ever seen or heard
   of the patented invention for you to infringe the patent.

>The easiest test for safety in cloning is whether you've looked at (or
>disassembled, or pried into) the original code. If you haven't, then
>you can't possibly be breaking copyright law or trade secret law.
   I'm sure Paperback Software wishes that were true.  It's not
   that simple.

			Lee Hollaar
			Professor of Computer Science
			Registered Patent Agent

johnl@esegue.segue.boston.ma.us (John R. Levine) (07/29/90)

In article <jb0lh55m9@tmsoft.uucp> mason@tmsoft.UUCP (Dave Mason) writes:
>I am developing a clone of some major AT&T software ...
>
>The question is: What can I base my knowledge on?

Until last week, I would have said that reverse engineering software based
on publicly available sources, e.g. commercially published books, but not
using restricted or licensed materials, e.g. the header files or the Lions
boos, would be safe.  Since the 1-2-3 look and feel decision, though, it's
entirely up in the air.  In that case, which is being appealed, the judge
held that even though there was no claim whatsoever that the defendants
used any licensed or secret materials, their program was infringing merely
because of its functional similarities to 1-2-3.

So it's anyone's guess.  Good luck.

-- 
John R. Levine, Segue Software, POB 349, Cambridge MA 02238, +1 617 864 9650
johnl@esegue.segue.boston.ma.us, {ima|lotus|spdcc}!esegue!johnl
Marlon Brando and Doris Day were born on the same day.

drd@siia.mv.com (David Dick) (08/03/90)

In <sean.649170360@s.ms.uky.edu> sean@ms.uky.edu (Sean Casey) writes:

>mason@tmsoft.uucp (Dave Mason) writes:

>|I am developing a clone of some major AT&T software (exactly *what* is a
>|secret for now).  I obviously don't want the result legally
>|encumbered, as it is to be freely distributable (a la FSF or less
>|restrictive rules).

>|The question is: What can I base my knowledge on?

>And so it begins. How horribly sad that programmers even have to ask such
>questions.

There is nothing sad or horrible about it.  

Doctors and lawyers ask their colleagues questions 
about ethics from time to time; are programmers to
be less professional or less ethical?

David Dick 
Software Innovations, Inc. [the Software Moving Company(sm)]
drd@siia.mv.com -or- uunet!siia!alton!drdick