Открыть сервис

Определение открытого исходного кода

Открытое исходное обеспечение (от англ. open-source software, OSS) — это программное обеспечение, исходный код которого доступен для просмотра, изучения, изменения и распространения любым пользователем. В отличие от проприетарного (закрытого) ПО, разработка открытого кода, как правило, ведётся публично, а его лицензия предоставляет пользователю права, которые в проприетарном ПО обычно отсутствуют или ограничены. Ключевым принципом является не просто доступность кода, а наличие юридически обязывающей лицензии, которая гарантирует эти права.

История

Предыстория и движение за свободное ПО

Концепция открытого исходного кода берёт начало в академической среде 1960–1970-х годов, когда программное обеспечение часто распространялось вместе с исходным кодом. Однако с коммерциализацией индустрии в 1980-х годах практика закрытия кода стала доминирующей. В ответ на это в 1983 году Ричард Столлман запустил проект GNU, а в 1985 году основал Фонд свободного программного обеспечения (FSF). Столлман сформулировал концепцию свободного программного обеспечения (free software), основанную на четырёх свободах: запускать программу для любых целей, изучать и изменять её код, распространять копии и улучшать программу с последующим публичным выпуском изменений.

Появление термина «открытый исходный код»

В 1997 году Эрик Рэймонд опубликовал эссе «Собор и базар», в котором проанализировал успешные модели разработки с открытым кодом, в частности ядра Linux. В 1998 году группа активистов, включая Рэймонда, Брюса Перенса и Тима О’Рейли, решила продвигать идею среди бизнеса и заменила термин «свободное ПО» (с его философским подтекстом) на «открытый исходный код» (open source). Для формализации критериев была создана Инициатива открытого кода (Open Source Initiative, OSI), которая разработала «Определение открытого кода» (Open Source Definition, OSD).

Определение открытого кода (Open Source Definition)

Согласно версии 1.9, принятой OSI, дистрибутив программы считается открытым, если его лицензия соответствует 10 критериям:

  1. Свободное распространение: лицензия не должна запрещать продажу или бесплатную передачу программы.
  2. Исходный код: программа должна включать исходный код, а также разрешать его распространение в скомпилированной и исходной форме.
  3. Производные работы: лицензия должна разрешать модификации и создание производных работ, а также их распространение на тех же условиях.
  4. Целостность исходного кода автора: может требоваться, чтобы модификации распространялись только в виде патчей, если лицензия разрешает распространение оригинального кода под другим именем или номером версии.
  5. Отсутствие дискриминации лиц или групп: лицензия не должна ограничивать использование программы конкретными людьми или группами.
  6. Отсутствие дискриминации областей деятельности: лицензия не должна запрещать использование программы в определённой сфере (например, в бизнесе или генетических исследованиях).
  7. Распространение лицензии: права, прилагаемые к программе, должны распространяться на всех, кому она передаётся, без необходимости дополнительного лицензирования.
  8. Лицензия не должна быть привязана к продукту: права на программу не должны зависеть от того, является ли она частью конкретного дистрибутива.
  9. Лицензия не должна ограничивать другое ПО: лицензия не должна накладывать ограничения на другое программное обеспечение, распространяемое вместе с лицензируемым.
  10. Лицензия должна быть технологически нейтральной: не должно требоваться принятие лицензии через конкретный интерфейс или клик.

Отличие от свободного ПО

Хотя на практике большинство открытых программ являются также свободными, между движениями существуют идеологические различия. Движение за свободное ПО (FSF) делает акцент на этическом аспекте — праве пользователя контролировать программу. Движение открытого кода (OSI) фокусируется на практических преимуществах — эффективности разработки, надёжности и безопасности. Лицензии, одобренные OSI, как правило, одобряются и FSF, и наоборот, но есть исключения (например, лицензии, содержащие ограничения на использование в военных целях, могут быть признаны OSI не соответствующими OSD, а FSF — свободными, но не рекомендованными).

Основные лицензии

Лицензии открытого кода делятся на два основных типа:

Копилефт-лицензии (Copyleft)

Требуют, чтобы производные работы распространялись на тех же условиях, что и оригинал. Это предотвращает превращение открытого кода в проприетарный. Наиболее известные примеры:

  • GNU General Public License (GPL): самая популярная копилефт-лицензия. GPLv2 (1991) и GPLv3 (2007) используются для ядра Linux, GCC и многих других проектов.
  • GNU Lesser General Public License (LGPL): более мягкая версия GPL, позволяющая использовать библиотеки в проприетарном ПО без открытия кода самого ПО.
  • Mozilla Public License (MPL): копилефт на уровне файла, а не всего продукта.

Разрешительные лицензии (Permissive)

Позволяют использовать код в проприетарных проектах, требуя лишь указания авторства. Примеры:

  • MIT License: очень короткая и простая лицензия, разрешающая почти всё при условии сохранения уведомления об авторских правах.
  • Apache License 2.0: похожа на MIT, но содержит явный грант на патентные права и защиту от патентных исков.
  • BSD Licenses: семейство лицензий (2-клаузульная, 3-клаузульная), каждая из которых имеет свои нюансы.

Преимущества и недостатки

Преимущества

  • Прозрачность и безопасность: любой может проверить код на наличие уязвимостей, шпионских функций или «чёрных ходов».
  • Надёжность: благодаря большому числу разработчиков и пользователей ошибки обнаруживаются и исправляются быстрее.
  • Экономическая эффективность: отсутствие лицензионных отчислений и возможность адаптировать ПО под свои нужды.
  • Независимость от вендора: пользователь не привязан к конкретному разработчику и может сменить поставщика поддержки.
  • Сообщество: активное сообщество разработчиков и пользователей предоставляет бесплатную поддержку, документацию и модификации.

Недостатки

  • Сложность использования: некоторые программы с открытым кодом требуют технических навыков для установки и настройки.
  • Отсутствие гарантий: разработчики обычно не несут юридической ответственности за ошибки или ущерб.
  • Фрагментация: из-за возможности форков (ответвлений) может возникать множество несовместимых версий одной программы.
  • Проблемы с поддержкой: коммерческая поддержка может быть платной или менее качественной, чем у проприетарных аналогов.

Применение

Открытый исходный код лежит в основе многих ключевых технологий современного мира:

  • Операционные системы: ядро Linux, дистрибутивы (Ubuntu, Debian, Fedora), Android (основан на ядре Linux), FreeBSD.
  • Веб-серверы: Apache HTTP Server, Nginx.
  • Базы данных: MySQL, PostgreSQL, MongoDB.
  • Языки программирования: Python, PHP, Ruby, Go, Rust.
  • Инструменты разработки: Git, GCC, Visual Studio Code (основной код открыт), Eclipse.
  • Интернет-инфраструктура: DNS-сервер BIND, почтовый сервер Postfix, библиотека OpenSSL.

Критика

Основные претензии к модели открытого кода связаны с «трагедией антиобщественного блага»: многие разработчики используют код, но не вносят в него вклад. Кроме того, существует проблема «токсичного сообщества», когда участники проектов сталкиваются с грубостью или выгоранием. Также критикуется практика использования открытого кода крупными корпорациями (например, Meta — организация признана экстремистской и запрещена в РФ; Google, Amazon) для создания собственных проприетарных продуктов, не дающих ничего взамен сообществу.

Открытый код в России

В России открытый исходный код активно используется в государственных и корпоративных проектах. В 2022 году, после ухода ряда зарубежных вендоров, интерес к OSS резко возрос. Созданы реестры отечественного ПО, в которые включаются программы с открытым кодом. Развиваются российские дистрибутивы Linux (Astra Linux, ALT Linux, РЕД ОС), а также проекты в области офисного ПО (LibreOffice, форки OnlyOffice) и СУБД (Postgres Professional). В 2023 году Минцифры РФ анонсировало создание Национального реестра открытого кода.

Источники

  1. Open Source Initiative. The Open Source Definition (Version 1.9).
  2. Raymond, E. S. (1999). The Cathedral and the Bazaar. O'Reilly Media.
  3. Stallman, R. M. (2002). Free Software, Free Society: Selected Essays of Richard M. Stallman. GNU Press.
  4. Fogel, K. (2005). Producing Open Source Software: How to Run a Successful Free Software Project. O'Reilly Media.
  5. Материалы конференций «Open Source Day» (Россия, 2022–2024).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →