Копирайт на команду /bin/true

Среди всей этой шумихи по поводу авторских прав есть один забавный пример — это крайний случай использования копирайта, который породила AT&T где-то в 1980-х. Речь идёт о программе /bin/true.

Это пустая программа, которую обычно используют только для того, чтобы писать бесконечные циклы (while 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"

И это весь файл. Заметьте, здесь всего три пустые строки и комментарий (строчка с #ident указывает, что это за программа). Да, вы правильно поняли; у AT&T есть копирайт на три пустые строки. Так что, если в каких-то ваших файлах есть пустые строки, вы нагло нарушаете копирайт AT&T.

Чтобы вы не подумали, что это просто случайность, которую быстро исправили, посмотрите на программу /bin/true из Sys/V, которую AT&T выпустила в 1989:

#     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   */

Как видите, здесь по-прежнему нет ничего, кроме трёх пустых строк и сообщения о копирайте. Ах, ещё строчка с #indent нам сообщает, что версия этой программы теперь 1.6.

Кстати, раз я «публикую» целую программу AT&T, я бесстыдно нарушаю их копирайт. Я неоднократно публично указывал на это на разных технических форумах, начиная с 1980-х. До сих пор юристы из AT&T ко мне не обращались. Кто-нибудь в курсе, почему они игнорируют такое вопиющее нарушение?

В linux такого нарушения нет, потому что там используют скомпилированную версию /bin/true. К слову, она работает гораздо быстрее, чем упомянутый шелл-скрипт, потому что не запускает лишнюю программу (/bin/sh) только ради того, чтобы она сразу же завершилась. Вот она, причина, по которой linux работает быстрее unix. И это улучшение неизбежно пришлось сделать, чтобы не нарушить копирайт AT&T ;-)

Дополнение

AT&T — не единственная компания, которая делает такое. Вот та же программа из Solaris, 1993:

 $ 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   */

Обратите внимание, здесь на одну пустую строку меньше; её заменили на "#!/usr/bin/sh". В остальном программы идентичны. Sun просто оставили тот же самый комментарий. Интересно, а Sun получила от AT&T письменное разрешение использовать эти пустые строки? И ещё меня немного смущает, что Sun даже не заменили «AT&T» на «Sun Microsystems». Может, их юристы решили, что не стоит этого делать?

А ребята и GNU обошли эту проблему, заново реализовав команду «true» на C. Эта программа не только меньше и быстрее, чем старый скрипт, которому надо запустить целый новый процесс, чтобы успешно ничего не сделать. Они также добавили важные опции:

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

Возможно, они добавили эти опции, чтобы нельзя было сказать, что они просто украли код у AT&T; ведь версия от GNU хоть что-то делает. Похоже, у ребят из GNU есть чувство юмора. Ниже я скопировал сообщение от «true --version» в knoppix в 2007-ом. Заметьте, это уже версия 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, сказать что он их собственный, а потом засудить линуксоидов якобы за нарушение.

Ваша оценка: Нет Средняя оценка: 2.5 (2 votes)
9
Dmitry

Забавно, но есть еще и противоположная ей команда. Автор тот же :)
/bin/false --help

Usage: /bin/false [ignored command line arguments]
  or:  /bin/false OPTION
Exit with a status code indicating failure.
      --help     display this help and exit
      --version  output version information and exit
NOTE: your shell may have its own version of false, which usually supersedes
the version described here.  Please refer to your shell's documentation
for details about the options it supports.
Report false bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
For complete documentation, run: info coreutils 'false invocation'
Ваша оценка: Нет
11
pomodor

Какой одаренный программист этот автор! Надо полагать, что и /dev/null он же разрабатывал.

Ваша оценка: Нет
8

К сожалению, нет. Но он является одним из разработчиков GNU Hello.

Ваша оценка: Нет
11
pomodor

Одним из? Там что, коллектив трудился? =8[]

Ваша оценка: Нет
8

Да, над GNU Hello трудился коллектив.

А если серьёзно, то GNU Hello является скорее примером для других разработчиков по

1) Созданию локализуемого софта
2) Стилю кода, используемого в программах проекта GNU
3) Практике мэйнтейнеров проектов GNU
4) Созданию man-страниц...

Ваша оценка: Нет
11
pomodor

Сайт разработчика воистину прекрасен: http://meyering.net/
Такого прекрасного вебдванольного великолепия свет давно не видывал.

Ваша оценка: Нет
8
Platon

Истинный дзен)))
Ничего лишнего - ну совсем ничего...

Ваша оценка: Нет
11
pomodor

Вы дзен с ленью не путаете? :) Не только ничего лишнего, но даже и ничего полезного.

Ваша оценка: Нет Средняя оценка: 1 (1 vote)
a

Пора заявить копирайт на слово "копирайт" и патент на копирастию и патентный троллинг. То-то копирасты обрадуются. ) А я бы еще провел серию показательных рейдов по квартиркам и офисам копирастов с целью проверки легальности софта и остального контента. Так и представляю лица борцов за копирайт всего и вся со слезами благодарности и умиления. )

Ваша оценка: Нет Средняя оценка: 3 (2 votes)
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.
Linux I класса
Linux II класса
Linux III класса
Счетчики
  • Самый популярный сайт о Linux и Windows 10
О Либератуме

Liberatum — это новости мира дистрибутивов Linux, обзоры, сборки, блоги, а также лучший сайт об Ubuntu*.