/ bin / trueコマンドの著作権

著作権に関するすべての誇大広告の中で、1つの面白い例があります。これは、AT&Tが1980年代に生み出した著作権を使用する極端なケースです。 これはプログラム/ビン/ trueです。 これは空のプログラムで、通常はシェルスクリプトで無限ループ(true do ...)を記述するためにのみ使用されます。 「true」プログラムは何も行いませんが、ゼロコードでのみ終了します。 この動作は簡単に実現できます。空のファイルを作成して実行可能にするだけです。これは最初のUnixシステムの作成者によって行われました。 空のファイルは、まったく何もしないシェルスクリプトとして解釈されます。 そして、それは彼と共に非常にうまくいくので、シェルはゼロ終了コードを返します。 しかし、AT&Tの弁護士は、これにより著作権保護が妨げられることはないと判断しました。



私が見つけた著作権で最も古いバージョンの/ bin / trueは、1984年に関するものです。



# Copyright (c) 1984 AT&T # All Rights Reserved # THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T # The copyright notice above does not evidence any # actual or intended publication of such source code. #ident "@(#)cmd/true.sh 50.1"
      
      





そして、これがファイル全体です。 空行が3行とコメントが1行しかないことに注意してください(#identの行は、それがどのようなプログラムであるかを示しています)。 はい、正しく理解しました。 AT&Tは、3つの空白行に著作権を持っています。 そのため、ファイルの一部に空の行がある場合、AT&Tの著作権を著しく侵害しています。



すぐに修正したのは単なる事故ではないと思います。AT&Tが1989年にリリースしたSys / Vの/ bin / trueプログラムを見てください。



  # Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T # All Rights Reserved # THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T # The copyright notice above does not evidence any # actual or intended publication of such source code. #ident "@(#)true.sh 1.6 93/01/11 SMI" /* SVr4.0 1.4 */
      
      





ご覧のとおり、3行の空白行と著作権メッセージを除いて、ここにはまだ何もありません。 ああ、#indentを含む別の行は、このプログラムのバージョンが1.6になったことを示しています。



ちなみに、私はAT&Tプログラム全体を「公開」しているため、恥ずかしがらず彼らの著作権を侵害しています。 1980年代以来、さまざまな技術フォーラムでこれを繰り返し公に指摘してきました。 これまでのところ、AT&Tの弁護士は私に連絡していません。 なぜこのような重大な違反を無視しているのか誰もが知っていますか?



Linuxでは、/ bin / trueのコンパイル済みバージョンを使用するため、このような違反はありません。 ちなみに、すぐに終了するようにするためだけに余分なプログラム(/ bin / sh)を実行しないため、前述のシェルスクリプトよりもはるかに高速に動作します。 ここに、LinuxがUNIXよりも高速である理由があります。 そして、AT&Tの著作権を侵害しないように、必然的にこの改善を行わなければなりませんでした;-)



追加


これを行うのはAT&Tだけではありません。 1993年のSolarisの同じプログラムを次に示します。



  $ cat /usr/bin/true #!/usr/bin/sh # Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T # All Rights Reserved # THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T # The copyright notice above does not evidence any # actual or intended publication of such source code. #ident "@(#)true.sh 1.6 93/01/11 SMI" /* SVr4.0 1.4 */
      
      





ここに空行が1つ少ないことに注意してください。 「#!/ usr / bin / sh」に置き換えられました。 残りのプログラムは同じです。 Sunは同じコメントを残しました。 興味深いことに、Sunはこれらの空白行を使用するための書面による許可をAT&Tから受け取りましたか? そして、SunがAT&TをSun Microsystemsに置き換えさえしなかったことに少し気になります。 おそらく彼らの弁護士は、これを行うべきではないと判断したのでしょうか?



そして、みんなとGNUは、Cで「true」コマンドを再実装することでこの問題を回避しました。このプログラムは、何もしないためにまったく新しいプロセスを実行する必要がある古いスクリプトよりも小さくて速いだけではありません。 また、重要なオプションが追加されました。



  --help display this help and exit --version output version information and exit
      
      





おそらく彼らはこれらのオプションを追加したので、単にAT&Tからコードを盗んだとは言えません。 GNUのバージョンは少なくとも何かをするからです。 GNU連中はユーモアのセンスを持っているようです。 以下に、2007年に「true --version」からknoppixにメッセージをコピーしました。 これは既にバージョン5.94であることに注意してください。 プログラムに保証はないという。 どうやら、これは、プログラムがその目的に反して何かをした場合、その著者を訴えることができないことを意味します。 また、このバージョンは非常に「異常な」ことを行います。つまり、作成者の名前を教えてくれます。



  $ /bin/true --version true (GNU coreutils) 5.94 Copyright (C) 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. Written by Jim Meyering. $
      
      





コマンド/ bin / true(または/ usr / bin / true)は、今日ではほとんど使用されていません。これは、ほとんどのシェルが単に組み込みコマンドに置き換えているためです。 しかし、さまざまな理由で依然として必要な場合があり、それに対する著作権を宣言する試みは依然としてジョークの正当な理由として機能します。 GNUがバージョンの著作権を指定する理由があるのは特に面白いです。 これにより、AT&T、Sun、またはSCOはGNUコードを取得できず、GNUコードを自分のものであると言って、表面上は違反としてLinuxを訴えることができません。



All Articles