
The /bin/true Command and Copyright (1990) - tosh
http://trillian.mit.edu/~jc/humor/ATT_Copyright_true.html
======
gkya
This is really silly. Not fun or interesting at all. Gnu coreutils wants all
the command line utilities to respond to --help and --version. The version
number is that of the coreutils package, if your ls is Gnu ls, it'll say the
same number too:

    
    
        [2] g@alpha (0)$ /bin/true --version
        true (GNU coreutils) 8.26
        Copyright (C) 2016 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.
        
        Written by Jim Meyering.
        [3] g@alpha (0)$ ls --version
        ls (GNU coreutils) 8.26
        Copyright (C) 2016 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.
        
        Written by Richard M. Stallman and David MacKenzie.
        [4] g@alpha (0)$ 
    

WRT AT&T true(1), well they probably were required to put a header in a
certain format in every source file, and they put that in this one to.
Probably the implementor just copied from a template and left it like that.
Also I don't beleive they manually edit the years in copyright notices, one
usually has a script to do that.

~~~
racer-v
> Also I don't beleive they manually edit the years in copyright notices, one
> usually has a script to do that.

It's not clear if you're referring to the copyright notices displayed to the
user, or the copyright notices embedded in the source code. In the former
case: I have been told to programmatically print $CURRENT_YEAR in a program's
displayed copyright notice, which I refused to comply with. After all, someone
running the program 200 years in the future should be able to determine that
the copyright has long since expired.

~~~
michaelhoffman
At the rate things are going, nothing since Mickey Mouse will ever again have
expired copyright, as lawmakers will keep extending the copyright term.

~~~
Iv
Well, think about us in Europe who have a chance to have a sane copyright
reform one day.

------
bdowling
There is a lot of space between (1) a copyright notice, (2) a valid copyright,
and (3) a valid claim against a third party for copyright infringement. On
(1), authors can attach copyright notices to their work, but it isn't
necessary to secure their copyright interests, nor is it sufficient to make
the work protectable. On (2), validity will depend on whether the work is
protectable expression and whether or not the expression merges with the idea.
On (3), there are a whole host of defenses to infringement including Fair Use
and a de minimis defense (copying is so small it doesn't matter).

Here, I'd expect that an expression of an empty program would merge with the
idea of an empty program, which would make it not copyrightable. Of course,
that doesn't stop someone from putting a copyright notice on it anyway.

~~~
nolemurs
This is entirely the right way to see things.

I'd like to emphasize that a copyright notice' purpose is to serve as
evidence, should a copyright claim be made. As you said, it is neither
necessary nor sufficient to establish a copyright. There's no harm in putting
a copyright notice on uncopyrightable material. With that understanding,
including a copyright notice just makes sense.

If you're AT&T you have two options. You can tell your engineers to just
always include the copyright notice, or you can ask your engineers to
understand copyright law well enough to decide whether the notice is called
for. The decision is pretty obvious.

EDIT: Ohh, there is a third option. You can pay lawyers to review every code
file.

------
bjornsing
From a strictly legal perspective I suspect /bin/true (or at least AT&Ts
implementation) do not live up to the law's requirements of originality and
expressiveness.

~~~
cat199
Considering that they were the copyright holders for unix at the time, and
that this 'default interpreter processing'/ return code mechanism was part of
the kernel/userland interface, I'm not so sure that's the case..

not to defend AT&T over unix, as a BSD guy..

~~~
KGIII
My guess is that the copyright is for the whole body of work, and not just for
the single file. The copyright notice in the single file is probably not a
requirement from a legal standpoint and is merely indicative.

------
morpheuskafka
These days most IDEs automatically add a copyright/license default text to the
top of each new file. It makes sense to instruct software engineers to follow
a simple copyright rule rather than expecting them to play JDs and keep up
with all the standards and developments in what was at the time (and still is)
quickly changing copyright laws.

------
jasonkostempski
I find the man pages descriptions of both true and false zen like and have
wanted to make t-shirts out of them for years. On Ubuntu, the man page
copyright is claimed by FSF, can I make a shirt?

~~~
fasquoika
Only if you provide the source code for the shirt upon request

~~~
nobodyorother
It's provided on the shirt itself (self-evident), so it should be fine to
distribute copies of the shirt.

~~~
tedunangst
The GPL also requires providing a copy of the license.

~~~
wiml
You could include it on the care instructions tag in tiny tiny print.

~~~
tedunangst
Problematic if you wear the shirt in public and allow someone to take your
picture. You must provide them a copy too or your license to wear the shirt is
revoked.

~~~
pksadiq
> ... your license to wear the shirt is revoked.

Well, you have 30 days time to comply.

------
jhauris
It's more interesting that they incremented the version of the script.
Apparently modifying comments justifies increasing the minor version.

~~~
bonzini
The number is placed there automatically by some old version control system
(probably SCCS or RCS) and is incremented on every commit. The commits were
likely just adding a new year to the copyright line.

~~~
cat199
"@(#)true.sh 1.6 93/01/11 SMI" /* SVr4.0 1.4 */

is an sccs id.

Anecdotally (wasn't there at the time): sccs was more common everywhere before
RCS because sccs was part of all unix (e.g including BSD UNIX).. it was
encumbered as part of the UCB USL suit and rcs use grew after that, then cvs,
then svn, then git

------
wnissen
What's even more interesting is to see how much code is needed in the GNU
true.

[http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true...](http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true.c)

4 includes, 3 ifdefs or define blocks, the whole thing is 80 lines, more than
half of it code!

~~~
ams6110
By comparison, OpenBSD's version:

    
    
      /*      $OpenBSD: true.c,v 1.1 2015/11/11 19:05:28 deraadt Exp $        */
    
      /* Public domain - Theo de Raadt */
    
      int
      main(int argc, char *argv[])
      {
            return (0);
      }

~~~
kobeya
Which is, actually, far too large due to the standard library, program state
initialization, and stack frame management. If there's ever a practical use
for code golf, this is probably it. /bin/true should be a bare minimum ELF
executable with no stack or heap that does nothing except immediately make the
system call to terminate.

~~~
cat199
As mentioned in the article:

" This can be done with an empty file that's marked executable, and that's
what it was in the earliest unix system libraries. "

    
    
        $ uname -sr
        OpenBSD 6.1
        $ install -m 755 /dev/null /tmp/muhtrue && /tmp/muhtrue && echo yup 
        yup
    

not sure why it was ever switched.. probably the 'return 0;' version is
cheaper than a shell fork? hmm..

~~~
kobeya
She’ll forks are expensive. Very expensive.

Of course the system could have special cased a zero length executable file.

~~~
kobeya
*shell forks

------
TheRealPomax
I was hoping this would also go into whether AT&T actually acted to enforce
this copyright, as copyright covers "The work" and "significant subsets", but
will not cover things like newlines. For that kind of content (as well as "int
i= 0" and the like) there is both prior art, and the claimed-copied content
cannot be used to identify the work, and where in that work, the line would
have been lifted from.

The article seems mostly about the fact that AT&T intentionally added a
copyright notice in their otherwise empty program's comment block, in an era
that predates the era of widespread availability of software and copyright
wars. Which is honestly not really all that surprising.

~~~
cat199
> The article seems mostly about the fact that AT&T intentionally added a
> copyright notice in their otherwise empty program's comment block, in an era
> that predates the era of widespread availability of software and copyright
> wars. Which is honestly not really all that surprising.

This page was likely written exactly because of the 'era of widespread
availability of software and copyright wars' \- e.g. the statement:

"One of the fun examples among all the copyright fuss"

combined with the edit dates (90,93) seem to me to indicate this was written
exactly as a response to the UCB vs USL suit..

[https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc....](https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc._v._Berkeley_Software_Design,_Inc).

as well as the 'unix wars'

[https://en.wikipedia.org/wiki/Unix_wars](https://en.wikipedia.org/wiki/Unix_wars)

------
paulddraper
There is essentially no downside to overclaiming, whether in copyrights or
patents. Worst consequence is wasting several dozen bytes.

~~~
waqf
So you could say that the algorithm for "should I claim any given intellectual
property right?" is the one implemented by /bin/true.

------
mmagin
I recall last I looked at Solaris, it was far bigger than that. Microsoft was
even in there (due to Xenix.)

------
jasonmp85
Random thought: it's pretty absurd to claim copyright on an empty program, but
if this behavior was sufficiently innovative, could one patent an empty
program?

~~~
bdowling
Patentable subject matter under U.S. law consists exclusively of "any new and
useful process, machine, manufacture, or composition of matter, or any new and
useful improvement thereof". 35 USC 101. So, a program may implement a
patented process or it may be a piece of a patented machine, but it won't be
patentable in itself.

------
ryanpcmcquen
I love seeing pieces of history like this, thank you for sharing it.

------
PopsiclePete
> I've pointed this out publicly on numerous occations, in various technical
> forums, since the early 1980's. So far I haven't heard a word from any AT&T
> lawyers. Anyone have any idea why they are ignoring such a violation?

Ah, one of _those_ people.

~~~
nobodyorother
Imagine what a wonderful world it would be if someone took lawyers to task for
every absurdity!

~~~
habibalamin
We'd have to do the same for developers. A program that does nothing is an
absurdity. The equivalent function, `id`, is an absurdity. I'm sure I could
think of more if I tried.

ninjedit: I understand that they are a logical consequence of a reasonable way
of doing things; my point is that law is basically the same (you could argue
that a law is unreasonable, but a seemingly absurd law is not prima facie
unreasonable).

