Welcome to docker.ru hosting provider linux mirror located at Moscow, Russian Federation.
Server configuration: Linux with OpenZFS, 2 x E5-2670v2, 128 GB ECC memory, 12 x 4 TB raidz2 + 1 TB SSD for L2ARC.
Network: 20 gbps uplink, IPv4 (185.253.23.31), IPv6 (2a04:8580:ffff:fffe::2).
My hostname is mirror.docker.ru
Написание компьютерных программ — не так уж давно возникшая форма интеллектуальной деятельности. В написании программы действительно много общего с написанием какого-нибудь литературного или другого нетривиального текста, поэтому совершенно естественно, что с точки зрения правовых отношений программы попали в один класс с такими текстами — «произведений».
Эти правовые отношения регулируются законодательством об авторском праве и на сегодняшний день тесно ассоциируются с широко распространённой системой экономического использования этих прав: торговля экземплярами произведения и запрет на тиражирование произведения (создание новых экземпляров) для всех, кроме обладателя прав. В этой модели распространения к произведению относятся как к собственности правообладателя. Программы, которые распространяются по такой модели, называются точным, но не очень благозвучным в русской огласовке термином проприетарные.
Однако не менее широко распространена и другая модель, в которой к произведению относятся как к общественному достоянию, плоду интеллектуального творчества, который должен быть доступен любому и не принадлежать никому в отдельности1. Типичный пример — произведения давно умерших классиков, хотя и многие здравствующие авторы (например, учёные) распространяют свои произведения по этой, общественной модели. Несмотря на молодость, программное обеспечение тоже может следовать общественной модели распространения, и здесь возникают два ключевых понятия: свободное ПО и открытые системы.
У программ для компьютера есть всё-таки несколько существенных свойств, которые отличают их от текстов на естественном языке, поэтому и при распространении ПО возникают некоторые специфические особенности. Чтобы разобраться в смысле понятий «открытые системы» и «свободное ПО», нам потребуется сформулировать два свойства компьютерных программ:
Вообще говоря, свобода и открытость — независимые признаки, поэтому мы рассмотрим их по отдельности.
То, что большинство программ используются в двоичной форме и не требуют для работы наличия исходного текста, приводит к возможности распространять двоичные экземпляры программы, никому не показывая исходные тексты. Это подкрепляется рассуждением: конечного пользователя в первую очередь интересует программа как работающий продукт, а не то, как и почему она работает. Такое программное обеспечение широко распространено на сегодняшнем рынке и может быть точно обозначено как программное обеспечение с закрытым исходным текстом.
Если каждую программу сделать «вещью в себе», которая работает одной ей ведомыми способами с одной ей понятными данными, то будет невозможно какое бы то ни было взаимодействие разных программ и их совместное использование. Недостатки очевидны: на каждого автора или производителя программы наваливается необходимость все задачи решать самостоятельно, не имея возможности перепоручить часть работы другой программе; невозможен будет обмен данными между пользователями, если у них нет одной и той же программы (а что будет, если разные версии программы обрабатывают данные слегка по-разному?). Поэтому естественно, что идеальная модель полностью закрытого ПО никогда не была реализована.
С другой стороны, чтобы обеспечить взаимодействие программ, совершенно не требуется целиком открывать их исходный текст. Достаточно чётко описать, каким способом можно обращаться к программе, чтобы добиться определённого результата, и в каком виде программа возвратит этот результат. Такое описание называется спецификация интерфейса взаимодействия или API.
Чтобы обеспечить обмен данными, необходимо составить набор правил, в соответствии с которыми определённые данные могут быть переведены в форму, доступную для обработки программой, и наоборот, как из этой формы восстановить смысл закодированных в ней данных. Такой набор правил называется спецификацией формата данных.
В качестве примера можно привести текстовый документ. Программа представляет документ в виде некоторого файла. Если у нас нет спецификации формата этого файла, то единственный способ получить содержащиеся в нём данные — прибегнуть к помощи этой самой программы, которая неизвестным же для нас образом их извлечёт и отобразит в понятном виде. Теперь представим себе, что это не просто текстовый документ, а государственная бумага, подписанная электронно-цифровой подписью официального лица. Поскольку мы не знаем, как именно программа делает из файла читаемый документ, то даже удостоверившись с помощью электронно-цифровой подписи в подлинности файла, мы не можем гарантировать, что видим тот же самый текст, который был подписан официальным лицом. Например, на одной из сторон программа настроена иначе и не отобразила примечания... Катастрофические государственные последствия очевидны.
Такое невозможно, если мы располагаем строгой спецификацией формата файла, содержащего документ. Мы всегда, даже без участия какой бы то ни было специальной программы, сможем восстановить из файла содержащийся в нём текст, если нам известен полный набор правил, по которым это делается. При необходимости мы можем создать собственную программу, которая будет работать с файлами в этом формате.
Приведённый выше пример показывает, что есть случаи, когда требования пользователя программы шире, чем просто работающая программа: иногда необходимо точно знать устройство и принцип работы программы, например, чтобы иметь возможность исключить недостоверность и различное толкование данных. В такой ситуации автор или производитель вправе предоставить исходные тексты своей программы некоторому закрытому сообществу — клиенту или государственному органу — обычно на условиях неразглашения.
Тем не менее, такая условная открытость не может добавить общественного доверия, она только расширяет круг тех лиц, на авторитетном заявлении которых держится уверенность в тех или иных результатах работы программы.
Другая возможность — публичная демонстрация не полного исходного текста программы, а только отдельных его фрагментов. Принципиально такой подход не добавляет открытости и общественного доверия.
Программное обеспечение, исходные тексты которого опубликованы или предоставляются любому по первому запросу, называется программным обеспечением с открытым исходным текстом, это несколько многословный аналог более лаконичного термина Open Source Software.
Но даже если публике представлен исходный текст программы целиком, этого ещё не достаточно, чтобы считать программу полностью открытой, а её работу — полностью прозрачной для пользователя. Для этого ещё необходима уверенность в том, что используемая программа в двоичном виде действительно была получена непосредственно из данного исходного текста. Гарантировать это можно, если не только исходный текст, но и инструментарий, с помощью которого он преобразуется в двоичный вид, будут открыты для публики. В таком случае двоичную программу можно просто воспроизвести (заново скомпилировать), что даёт возможность контроля и аудита программного обеспечения.
Даже минимальная открытость уже даёт независимость от конкретного производителя ПО, гарантии целостности и однозначности данных, открывает дорогу взаимодействию и совместной работе программ. Большая открытость ведёт к повышению общественного доверия к программе. Если же программное обеспечение применяется в общественной и государственной сфере, его открытость является гарантией соблюдения принципов гражданского общества2.
По российскому законодательству программное обеспечение не может быть запатентовано, поэтому все связанные с ним имущественные и неимущественные отношения в России регулируются только законодательством о программах для ЭВМ (ЗоПЭВМ) и об авторском праве и смежных правах.
Право автора подписывать произведение своим именем и прочие неимущественные авторские права всегда сохраняются за автором и не могут быть переданы другому лицу; в дальнейшем изложении эта сторона авторского права не будет обсуждаться. Имущественные же авторские права касаются разных форм тиражирования произведения, в том числе передачи в эфир, переработки и т. д. В момент создания произведения все имущественные права принадлежат исключительно автору, а всем остальным тиражирование произведения запрещается законом. С имущественными правами автор волен поступать по своему усмотрению, главным образом, передавать их любому лицу или организации. Условия передачи определяются в авторском договоре, и могут быть произвольными в рамках допустимых договорных обязательств.
В современном мире появилась новая форма заключения договора: одна из сторон предлагает текст договора в электронном виде, а другая, прочтя его с экрана, принимает условия, нажав на какую-нибудь кнопку. В частности, таким образом производитель или автор программы может распространять вместе со своей программой и авторский договор. Текст договора может быть и просто приложен к программе. Для обозначения такой формы договора часто используют слово «лицензия» — кальку с английского license. Однако в России юридического смысла это слово не имеет, правильно в данном случае говорить об авторском договоре.
Общественная модель распространения произведений предполагает известную степень свободы в тиражировании произведения. Законодательством об авторском праве предусмотрен срок, по прошествии которого произведение переходит в общественное достояние, фактически имущественные права на произведение в этот момент уничтожаются3. Однако пока, видимо, ещё ни одна компьютерная программа не достигла преклонного возраста, достаточного для перехода в общественное достояние. Тем не менее, в силах автора сделать своё произведение распространяемым по общественной модели — вопрос только в объёме имущественных прав, которые автор или законный правообладатель готовы передать в общественное достояние.
Минимальная степень свободы — использовать программу любым способом и с любой целью. Для российских пользователей ПО эта свобода действительно «нулевая», в том смысле, что она присутствует всегда, что бы ни говорилось в авторском договоре. По российскому законодательству обладатель имущественных авторских прав волен ограничивать право пользователей на тиражирование своего произведения, однако у него нет никаких прав каким бы то ни было образом ограничивать владельца экземпляра произведения в использовании программы.
Нулевая свобода — это некоторая гарантия личной свободы пользователя от посягательств производителей ПО, но она ещё не является свободой для самого произведения.
Первая свобода собственно для произведения — свобода распространения. Для автора она означает, с одной стороны, снятие всяких ограничений на тиражирование произведения (и потенциально — его более широкое распространение); с другой стороны, фактический отказ от получения вознаграждения за передачу имущественных прав.
Известно огромное число примеров свободно распространяемых программ. Однако свобода распространения никак не предполагает, что должны быть доступны исходные тексты программы, вполне можно распространять программу только в двоичном виде. Зачастую именно так и происходит: производитель ПО стремится максимально широко распространить свою программу среди пользователей, даже отказываясь от платы за экземпляры, при этом не делает свою программу открытой. Отпущенная «в свободное плавание» программа ещё не может считаться вполне общественным достоянием, если её исходный текст — который и является собственно произведением — недоступен публике.
Одно из имущественных авторских прав, оговорённых в законодательстве, — право на переработку произведения. Это право приобретает очень большое значение, если в качестве произведения рассматривается компьютерная программа. В отличие от литературных и прочих текстов, программа должна работать. Это значит, что в ней необходимо исправлять ошибки, приспосабливать для работы в новых системах и т. п. Если исходный текст программы открыт, то в силах любого компетентного человека внести необходимые исправления. Для общественности эта возможность имеет значение, если есть свобода распространения модифицированных версий программы. Ведь автор не всегда доступен, не всегда заинтересован и имеет возможность вносить исправления или переносить программу на другие системы.
Если в авторском договоре, сопровождающем программу, автор передаёт право модифицировать и распространять модифицированные версии программы, то такую программу можно с полным правом отнести к свободному ПО (Free Software), в том понимании, которое было сформулировано Ричардом Столлманом4. Естественно, свобода модификации предполагает, что открыт исходный текст программы.
На сегодняшний день распространено довольно много типовых форм авторских договоров для распространения свободных программ. Те из них, которые удовлетворяют требованиям к свободному ПО, перечислены на сайте Фонда свободного программного обеспечения. Названную свободу модификации в полной мере реализует лицензия BSD5.
Может ли общественность злоупотребить данной ей свободой в обращении с программой? Вполне. Самое страшное злоупотребление, которое можно себе представить — модифицировав программу, запретить свободное распространение модифицированной версии и даже закрыть её исходный текст. Таким образом программа может быть изъята из свободного обращения и переведена в частное владение. В соответствии с лицензией BSD такое поведение является абсолютно законным и предусмотренным: объём передаваемых авторских прав достаточен для таких действий.
Однако не всегда автор, отдавая своё произведение общественности, согласится на такое его использование. Чтобы избежать «закрепощения» своей программы, автор может воспользоваться тем же самым законным инструментом — авторским договором. Главный прототип такого договора (да и вообще главный прототип всех свободных лицензий) — GPL, общественная лицензия GNU (GNU General Public License), впервые сформулированная тем же Ричардом Столлманом. Эта лицензия, помимо предоставления всех необходимых свобод, включает условие copyleft: никто не имеет права, сделав модифицированную версию свободной программы, распространять её, не соблюдая всех принципов свободного ПО, ограничивая тем самым права других пользователей по отношению к программе. Говоря короче, запрещает модификацию свободной программы делать несвободной.
Любой авторский договор, включающий такое условие, может быть назван «copyleft». Это игра слов с умыслом: по-английски авторское право называется «copyright», буквально «копироватьправо», а «copyleft», соответственно, «копироватьлево». Действительно, условие «copyleft» прямо противоположно по смыслу авторскому праву: авторское право призвано ограничить пользователя в копировании и распространении копий продукта, а «авторское лево», наоборот, строго запрещает его ограничивать. «Авторское лево» реализует идею о том, что интеллектуальные достижения человека не могут и не должны находиться в чьей-то частной собственности, и сохраняет свободу наилучшим способом — пользуясь теми самыми механизмами ограничения, которые предоставлены законодательством об авторском праве.
Несмотря на то, что лицензия BSD с юридической точки зрения передаёт больший объём прав, в нашем изложении она оказалась ниже на шкале свободы именно по той причине, что она даёт меньше гарантий свободы программе.
Причины, по которым люди и организации выбирают свободную модель распространения своего программного обеспечения, очень разнообразны и индивидуальны. Одна из важнейших и самых общих причин для авторов — это стремление к свободе интеллектуальной деятельности. Яркое выражение этого стремления и опасений за интеллектуальную свободу можно найти в очень коротком антиутопическом рассказе Ричарда Столлмена «Право читать». Однако здесь не всё универсально, и в общем случае существуют две противоположные стратегии поведения по отношению к полученным интеллектуальным результатам: спрятать подальше или распространить пошире, предполагающие, соответственно, частную и общественную модели распространения. Научные и университетские традиции склоняются в пользу второй стратегии, но стоит науке подойти достаточно близко к технологии — как нередко актуализируется частная модель, возникают патенты и закрытые результаты.
Для индивидуальных авторов на некоммерческом поприще общественная модель — это хорошая возможность для самореализации: на свободно распространяемых программах всегда стоят имена их авторов; здесь же и возможности для социализации — вокруг удачных и востребованных свободных программ всегда складывается сообщество разработчиков и пользователей.
Общественная модель распространения ПО представляет хорошие возможности и для бизнеса. К началу XXI века уже стало традиционным строить бизнес в области программного обеспечения из двух компонент: собственно разработки и торговли лицензиями (правом производить ограниченное количество экземпляров), причём вторая часть значительно прибыльнее первой, поскольку расходы не увеличиваются пропорционально числу проданных лицензий. На рынке свободного ПО вторая компонента просто отпадает — производить экземпляры разрешено всем в неограниченных количествах, а первая — собственно разработка — остаётся в полном объёме. В результате преимущество получают те, кто делает реальную разработку — это открывает дорогу конкуренции и инновациям. В целом, на рынке свободного ПО значительно ниже финансовый порог вхождения при достаточно высоком интеллектуальном пороге.
Если быть точным, слово Linux обозначает только ядро операционной системы, хоть и самый главный, но всё же только один из компонентов сложнейшей системы, какой является операционная среда, в которой работает пользователь. Всё остальное — утилиты, графическая среда, пользовательские приложения, — это независимые друг от друга свободные программы, над каждой из которых работает своя команда разработчиков и пользователей. Само по себе ядро Linux тоже является совершенно независимой свободной программой. Современные дистрибутивы, включающие в себя все эти компоненты, тоже обозначают словом Linux, но это уже его расширительное понимание.
Сформировать целостную операционную систему из независимо разрабатываемых компонентов может только одно — соблюдение открытых стандартов на форматы и интерфейсы, что позволяет организовать взаимодействие программ и обмен данными. В этом отношении Linux наследует традициям открытого проектирования семейства операционных систем, обозначаемых общим и несколько собирательным именем Unix. Исторически в Unix сложился фактический стандарт на интерфейс операционной системы (API), который впоследствии был даже зафиксирован в виде официального стандарта под именем POSIX. Ядро Linux было написано финским студентом, Линусом Торвальдсом, как независимая и свободная реализация Unix API с открытым исходным текстом.
К моменту первой публикации Linux в 1991 году уже существовало значительное количество свободных программ для Unix, самые важные разрабатывались в рамках проекта GNU Ричарда Столлмана. Однако не существовало свободного Unix-совместимого ядра. Сложилось так, что ядро Linux стало тем связующим звеном, которое позволило собрать вместе ПО, которое уже было свободным, и создать первую полностью свободную и открытую операционную систему. Это одновременно дало толчок к появлению нового свободного ПО. Поэтому сегодня свободное и открытое ПО в первую очередь ассоциируются с Linux, а Linux — со свободным ПО.
Но это совершенно не означает, что свободного и открытого нет за пределами Linux. Сам смысл свободы и открытости гарантирует то, что они никогда не окажутся неотделимы от конкретной ОС, или любого другого имени собственного. Свободное ПО пишется для самых разнообразных платформ, в том числе для Windows.
Открытость стандартов гарантирует, что инструментарий может быть перенесён на любые платформы, а следствие — многоплатформенность приложений. Пример тому — проект cygwin, реализующий инструментарий Unix на платформе Windows.
1Нужно отметить, что это относится только к имущественной стороне авторского права, неимущественные же права, в частности, право на имя, на сохранение целостности произведения и т. п., в конечном итоге, право на репутацию автора, всегда сохраняются за автором, вне зависимости от модели распространения. Такие права не могут быть проданы или переданы другому лицу.
2Если и делать государственный документооборот электронным, то этот механизм должен быть полностью открытым, так как он служит ограничению прав. Это полностью аналогично тому, как должны быть полностью открыты для публики тексты законов.
3На сегодняшний день по российскому законодательству этот срок весьма долог — 70 лет с момента смерти автора.
4Имеются в виду 4 свободы Столлмана, декларированные в манифесте созданного им Фонда свободного программного обеспечения (Free Software Foundation).
5BSD — Berkeley Software Distribution, пакет совместимого с UNIX программного обеспечения, разработанный в университете Беркли и распространявшийся свободно.