Смысл свободного ПО и открытых систем.(1)
Написание компьютерных программ — не так уж давно возникшая форма интеллектуальной деятельности. В написании программы действительно много общего с написанием какого-нибудь литературного или другого нетривиального текста, поэтому совершенно естественно, что с точки зрения правовых отношений программы попали в один класс с такими текстами — «произведений».
Эти правовые отношения регулируются законодательством об авторском праве
Однако не менее широко распространена и другая модель, в которой к произведению относятся как к общественному достоянию, плоду интеллектуального творчества, который должен быть доступен любому и не принадлежать никому в отдельности1. Типичный пример — произведения давно умерших классиков, хотя и многие здравствующие авторы (например, учёные) распространяют свои произведения по этой, общественной модели. Несмотря на молодость, программное обеспечение тоже может следовать общественной модели распространения, и здесь возникают два ключевых понятия: свободное ПО и открытые системы.
Вообще говоря, свобода и открытость — независимые признаки, поэтому мы рассмотрим их по отдельности.
Степени открытости
1. Нулевая степень
То, что большинство программ используются в двоичной форме и не требуют для работы наличия исходного текста, приводит к возможности распространять двоичные экземпляры программы, никому не показывая исходные тексты. Это подкрепляется рассуждением: конечного пользователя в первую очередь интересует программа как работающий продукт, а не то, как и почему она работает. Такое программное обеспечение широко распространено на сегодняшнем рынке и может быть точно обозначено как программное обеспечение с закрытым исходным текстом.
2. Минимальная степень
Если каждую программу сделать «вещью в себе», которая работает одной ей ведомыми способами с одной ей понятными данными, то будет невозможно какое бы то ни было взаимодействие разных программ и их совместное использование. Недостатки очевидны: на каждого автора или производителя программы наваливается необходимость все задачи решать самостоятельно, не имея возможности перепоручить часть работы другой программе; невозможен будет обмен данными между пользователями, если у них нет одной и той же программы (а что будет, если разные версии программы обрабатывают данные слегка по-разному?). Поэтому естественно, что идеальная модель полностью закрытого ПО никогда не была реализована.
С другой стороны, чтобы обеспечить взаимодействие программ, совершенно не требуется целиком открывать их исходный текст. Достаточно чётко описать, каким способом можно обращаться к программе, чтобы добиться определённого результата, и в каком виде программа возвратит этот результат
Чтобы обеспечить обмен данными, необходимо составить набор правил, в соответствии с которыми определённые данные могут быть переведены в форму, доступную для обработки программой
В качестве примера можно привести текстовый документ.
Программа представляет документ в виде некоторого файла. Если у нас нет спецификации формата этого файла, то единственный способ получить содержащиеся в нём данные — прибегнуть к помощи этой самой программы, которая неизвестным же для нас образом их извлечёт и отобразит в понятном виде. Теперь представим себе, что это не просто текстовый документ, а государственная бумага, подписанная электронно-цифровой подписью официального лица. Поскольку мы не знаем, как именно программа делает из файла читаемый документ, то даже удостоверившись с помощью электронно-цифровой подписи в подлинности файла, мы не можем гарантировать, что видим тот же самый текст, который был подписан официальным лицом. Например, на одной из сторон программа настроена иначе и не отобразила примечания... Катастрофические государственные последствия очевидны.
Такое невозможно, если мы располагаем строгой спецификацией формата файла, содержащего документ. Мы всегда, даже без участия какой бы то ни было специальной программы, сможем восстановить из файла содержащийся в нём текст, если нам известен полный набор правил, по которым это делается.
3. Неполная открытость
Приведённый выше пример показывает, что есть случаи, когда требования пользователя программы шире, чем просто работающая программа: иногда необходимо точно знать устройство и принцип работы программы, например, чтобы иметь возможность исключить недостоверность и различное толкование данных. В такой ситуации автор или производитель вправе предоставить исходные тексты своей программы некоторому закрытому сообществу — клиенту или государственному органу — обычно на условиях неразглашения.
Тем не менее, такая условная открытость не может добавить общественного доверия, она только расширяет круг тех лиц, на авторитетном заявлении которых держится уверенность в тех или иных результатах работы программы.
Другая возможность — публичная демонстрация не полного исходного текста программы, а только отдельных его фрагментов. Принципиально такой подход не добавляет открытости и общественного доверия
4. Максимальная открытость
Программное обеспечение, исходные тексты которого опубликованы или предоставляются любому по первому запросу, называется программным обеспечением с открытым исходным текстом, это несколько многословный аналог более лаконичного термина Open Source Software.
Но даже если публике представлен исходный текст программы целиком, этого ещё не достаточно, чтобы считать программу полностью открытой, а её работу — полностью прозрачной для пользователя. Для этого ещё необходима уверенность в том, что используемая программа в двоичном виде действительно была получена непосредственно из данного исходного текста. Гарантировать это можно, если не только исходный текст, но и инструментарий, с помощью которого он преобразуется в двоичный вид, будут открыты для публики. В таком случае двоичную программу можно просто воспроизвести (заново скомпилировать), что даёт возможность контроля и аудита программного обеспечения.
Смысл открытых систем
Даже минимальная открытость уже даёт независимость от конкретного производителя ПО, гарантии целостности и однозначности данных, открывает дорогу взаимодействию и совместной работе программ. Большая открытость ведёт к повышению общественного доверия к программе. Если же программное обеспечение применяется в общественной и государственной сфере, его открытость является гарантией соблюдения принципов гражданского общества.
Комментарии