Лицензирование – один из аспектов разработки программного обеспечения, о котором многие забывают. Лицензия на программное обеспечение определяет, как лицензиаты (конечные пользователи) могут использовать и распространять код. Это может существенно повлиять на то, как широко будет внедряться та или иная технология. Большинство современных программных продуктов продается под закрытой лицензией, которая позволяет создателю сохранить интеллектуальные права на программное обеспечение.
Однако есть альтернативная точка зрения, согласно которой лицензия – устаревающий и ненужный инструмент контроля программного обеспечения его создателями. Закрытая лицензия не позволяет копировать и изменять исходный код программного обеспечения, а это наталкивает на мысль, что создатели программного обеспечения подавляют потенциальный рост новых технологий. Эта позиция вдохновила на создание лицензий, которые предоставляют пользователям право изучать, изменять и распространять исходный код программного обеспечения на свое усмотрение. Программное обеспечение, лицензированное таким образом, обычно называется «свободным» (также «бесплатным») или «открытым».
В широком смысле оба понятия обозначают одно и то же – программное обеспечение с небольшими ограничениями на то, как его можно использовать. С точки зрения их сторонников, как свободное, так и открытое программное обеспечение является более безопасным, эффективным и надежным, чем закрытые программы. Однако зачем нужно целых два термина для одного и того же понятия? Чтобы понять это, нужно знать историю развития и понимать нюансы этих отдельных, но тесно связанных терминов.
Немного истории
Идея о том, что пользователи программ должны иметь право просматривать, редактировать и делиться своим исходным кодом без юридических последствий, совсем не нова. До 1970-х годов программное обеспечение, как правило, распространялось вместе с его исходным кодом, потому что в большинстве ПО было аппаратно-ориентированным, и конечным пользователям приходилось модифицировать, чтобы запустить на конкретной машине или добавить специальные функции.
Большинство пользователей тогда делали это в строго академических или исследовательских условиях. Вычислительные ресурсы, как правило, были разделены, и изменение программного обеспечения для создания более эффективных рабочих процессов или более надежных решений было широко распространенной практикой. Например, проект Genie UC Berkeley разработал операционную систему Berkeley Timesharing System, взломав исходный код компьютера лаборатории SDS 930.
Поскольку программное обеспечение стало более сложным и дорогим в производстве, компании-разработчики программного обеспечения искали способы остановить неконтролируемый обмен исходным кодом, чтобы защитить свои доходы и лишить конкурентов доступа к их коду. Они начали вводить юридические ограничения на свою продукцию, а также распространять свою продукцию под закрытыми лицензиями. К концу 1970-х годов большинство компаний-разработчиков перестали поставлять ПО с исходным кодом. Это вызвало недовольство многих пользователей компьютеров и, в конечном итоге, стало основой Движения свободного программного обеспечения.
Появление свободного программного обеспечения
Движение свободного программного обеспечения было детищем Ричарда Столлмана. Столлман начал изучать информатику в начале 1970-х годов, до появления закрытых лицензий на программное обеспечение. В начале 1980-х годов он работал научным сотрудником Лаборатории искусственного интеллекта Массачусетского технологического института. Будучи членом академического сообщества хакеров более десяти лет, он не мог не возмутиться из-за распространения закрытого программного обеспечения. Столлман стал рассматривать его как нарушение прав пользователей на инновации и совершенствование существующего программного обеспечения.
В 1983 году Столлман запустил проект GNU – попытку создать полноценную операционную систему, которая предоставила бы своим пользователям свободу просматривать, изменять и делиться исходным кодом. Столлман сформулировал мотивацию проекта в GNU Manifesto. В нем он заявляет о своей убежденности в том, что закрытое лицензирование блокирует разработку программ, пресекает инновации и наносит ущерб развитию технологий.
По словам Столлмана, это несправедливо по отношению к пользователям и разработчикам, которые в противном случае могли бы изменить код в соответствии со своими потребностями или добавить новые функции. Таким образом, проект GNU можно рассматривать как ответ на разработку закрытого ПО, а также как отсылку к предыдущей эпохе – эпохе свободно распространяемого исходного кода и совместной разработки программного обеспечения.
В 1985 году Столлман учредил Free Software Foundation (FSF), некоммерческую организацию, занимающуюся продвижением концепции бесплатного программного обеспечения для широкой общественности. Позже Столлман разработает GNU General Public License, лицензию на программное обеспечение, которая обеспечивает конечным пользователям права свободно запускать, просматривать и совместно использовать исходный код.
Согласно FSF, чтобы ПО могло считаться по-настоящему «свободным», его лицензия должна гарантировать своим пользователям четыре основные свободы:
- Свободу запуска программы для любых целей.
- Свободу изучать работу программы и изменять ее согласно собственным потребностям. Непременным условием для этого является доступ к исходному коду.
- Свободу делиться программным обеспечением с другими пользователями.
- Свободу распространять копии пользовательского исходного кода. Так вы можете дать сообществу возможность пользоваться новым кодом. Непременным условием для этого является доступ к исходному коду.
Любое программное обеспечение, которое не соответствует этим критериям, FSF рассматривает как «несвободное».
Развитие открытого ПО
Столлман выбрал термин «свободное программное обеспечение», чтобы отобразить идею о том, что пользователи могут свободно изменять и совместно использовать исходный код по своему усмотрению. На протяжении многих лет это создавало путаницу: многие пользователи считали, что свободное программное обеспечение – это любое ПО, которое можно получить за нулевую стоимость (что более точно обозначается как «бесплатное» или «условно-бесплатное»).
К концу 1990-х годов сторонники GNU и Linux стали беспокоиться, что неоднозначность слова «free» приведет к тому, что пользователи перестанут понимать философию свободного программного обеспечения и его преимущества по сравнению с закрытым кодом. Организация FSF стала известна своей жесткой этической позицией относительно закрытого программного обеспечения всех видов. Среди некоторых сторонников свободного программного обеспечения появилась обеспокоенность по поводу того, что этот подход был слишком недружественным в деловом смысле и в конечном итоге препятствовал распространению Движения свободного программного обеспечения.
Собор и базар
В 1997 году Эрик С. Рэймонд, на тот момент сторонник и разработчик свободного программного обеспечения, написал широко цитируемое эссе «Собор и базар» (The Cathedral and the Bazaar), в котором сравниваются две разные модели разработки, используемые в различных проектах свободного программного обеспечения. Соборной называется модель, в которой исходный код открывается с выходом нового релиза программы, а во время работы на кодом доступ к нему имеет только ограниченная группа разработчиков (примером такой модели является разработка GNU Emacs). Базарной называется модель, в которой код разрабатывается на виду у сообщества через Интернет (как, например, было в случае ядра Linux).
Главный аргумент эссе заключается в том, что базарная модель по своей сути более эффективна при поиске и устранении ошибок, поскольку просматривать и экспериментировать с исходным кодом может больше людей. Таким образом, Рэймонд утверждал, что базарная модель разработки дает более безопасное и надежное программное обеспечение.
Отчасти в ответ на идеи «Собора и базара» в начале 1998 года Netscape выпустила исходный код своего веб-браузера Communicator в качестве свободного программного обеспечения (исходный код Communicator позже станет основой Mozilla FireFox 1.0).
Вдохновившись коммерческим потенциалом, который видела Netscape в этом релизе кода, группа энтузиастов свободного программного обеспечения (включая Рэймонда, Линуса Торвальдса, Филиппа Циммермана) стала стремиться к ребрендингу Движения свободного программного обеспечения и смещению его внимания с этических и философских мотивов. Группа выбрала название «open source» («открытое ПО» или «ПО с открытым исходным кодом») для свободно распространяемого программного обеспечения в надежде на то, что она лучше отразится на стоимости совместной модели развития.
Вскоре после этого Рэймонд и Брюс Перенс основали Open Source Initiative (OSI), чтобы поощрить использование нового термина и распространение принципов открытого ПО. Организация OSI также разработала Open Source Definition – список из десяти принципов, которым должна соответствовать лицензия на программное обеспечение, чтобы оно могло считаться открытым:
- Свободное распространение: лицензия не должна налагать ограничений на продажу и распространение ПО.
- Доступный исходный код: даже если ПО не поставляется с исходным кодом, этот код должен быть легко доступным. Это должен быть редактируемый человеком исходный код, а не его промежуточные формы.
- Возможность модификации: простая возможность читать исходный код не позволяет экспериментировать с ним и выпускать модификации. Лицензия, претендующая на звание «открытой», должна поддерживать не только чтение, но и изменение кода, использование частей этого кода в других проектах и распространение полученных программ на условиях той же лицензии.
- Целостность авторского исходного кода: лицензия может налагать ограничения на распространение модифицированного исходного кода, только если она разрешает распространять патчи для модификации программы при сборке.
- Отсутствие дискриминации против людей и групп людей: лицензия не должна дискриминировать людей и группы людей.
- Отсутствие дискриминации по цели применения: лицензия не должна ограничивать использование программы в определенных областях деятельности.
- Распространение лицензии: права на открытую программу должны применяться ко всем пользователям, которым была перераспределена программа, без заключения дополнительных соглашений.
- Лицензия не должна быть привязана к конкретному продукту: права на программу не должны зависеть от того, является ли программа частью какого-то продукта.
- Лицензия не должна ограничивать другие программные продукты: лицензия не должна налагать ограничения на другие программы, которые распространяются вместе с лицензированным ПО (не считая банальной несовместимости).
- Лицензия должна быть технологически нейтральной: она не должна требовать что-либо от интерфейса или технологий, используемых в производной программе.
Разница между свободным и открытым программным обеспечением
Многие считают, что разница между «свободным» и «открытым» программным обеспечением незначительна и объясняется небольшой разницей в подходах или философии. Согласно Open Source Initiative, оба термина означают одно и то же, и их можно использовать взаимозаменяемо практически в любом контексте. Просто Open Source Initiative предпочитает термин «открытое ПО», потому что он дает более четкое описание программного обеспечения и представлений его создателей о том, как его использовать.
Однако сторонники «свободного программного обеспечения» считают, что «открытый код» не полностью передает важность движения и потенциальных долгосрочных социальных проблем, вызванных закрытым программным обеспечением. Free Software Foundation считает, что организация OSI слишком много внимания уделяет продвижению практических преимуществ закрытого программного обеспечения (включая его прибыльность и эффективность модели разработки на основе сообществ) и недостаточно обеспокоена этической стороной и ограничением прав пользователей.
Является ли та или иная программа свободной или открытой зависит от лицензии, по которой она распространяется и от того, одобрена ли эта лицензия Open Source Initiative, Free Software Foundation (или обеими организациями). В этом организации часто совпадают, но есть несколько исключений. Например, лицензия NASA Open Source Agreement одобрена OSI, но FSF считает ее слишком ограничительной. Таким образом, FSF отговаривает других от использования программного обеспечения, распространяемого по этой лицензии.
Как правило, если программное обеспечение можно охарактеризовать как свободное, оно, скорее всего, также будет и открытым.
Альтернативы
На протяжении многих лет предлагались и другие названия для такого программного обеспечения, чтобы положить конец этой дискуссии. Свободное программное обеспечение с открытым исходным кодом (часто сокращается как FOSS) является одной из наиболее широко используемых альтернатив и считается нейтральным вариантом. Термин «libre software» (libre – слово из романских языков, которое означает свободу) стал настолько популярным, что со временем появился акроним FLOSS (free/libre and open-source software).
Следует отметить, что и свободное и открытое программное обеспечение отличается от общедоступного программного обеспечения. Свободное программное обеспечение с открытым исходным кодом определяет права посредством лицензирования, в то время как общедоступное программное обеспечение не использует лицензий. Важным отличием как свободного, так и открытого программного обеспечения является то, что все производные программы также должны распространяться по лицензии FOSS. Общедоступное программное обеспечение не выдвигает такого требования.
Еще одна проблема общедоступного ПО связана с тем, что контент, не защищенный авторским правом, признают далеко не все страны. Ни FSF, ни OSI не рекомендуют разработчикам выпускать общедоступное программное обеспечение.
Заключение
Термины «свободное ПО» и «открытое ПО» взаимозаменяемы в большинстве контекстов; предпочтение одного из них, как правило, сводится к вопросу о семантике или философии. Однако для многих программистов, которые создают ПО и хотят изменить способ использования и взаимодействия с технологией, разница может быть важной. При выпуске нового программного обеспечения важно тщательно взвешивать плюсы и минусы различных лицензий, включая закрытые лицензии, и выбирать ту, которая наилучшим образом соответствует вашим индивидуальным потребностям.
Если вы хотите узнать больше, ознакомьтесь с этим списком лицензий Free Software Foundation, в котором содержится подробное описание свободных и несвободных лицензий. Кроме того, вас также может заинтересовать страница лицензий и стандартов Open Source Initiative.