Открытый исходный код
Открытый исходный код (англ. open source) — это подход к разработке и распространению программного обеспечения, при котором исходный код программы предоставляется в открытом доступе для просмотра, изучения, изменения и распространения любым пользователем. В отличие от проприетарного (закрытого) ПО, открытый исходный код базируется на принципах прозрачности, совместной работы и свободы использования, хотя конкретные условия регулируются лицензиями, которые могут накладывать определённые ограничения (например, требование распространять производные работы под той же лицензией).
История
Предыстория и ранние сообщества
Идея открытого доступа к исходному коду возникла задолго до появления термина «open source». В 1950–1960-х годах программное обеспечение часто распространялось вместе с исходным кодом, особенно в академической среде и среди пользователей мейнфреймов. Однако с коммерциализацией ПО в 1970-х годах (например, компания IBM начала лицензировать программы отдельно от аппаратного обеспечения) практика закрытого кода стала доминирующей.
В 1983 году Ричард Столлман, программист из Массачусетского технологического института (MIT), запустил проект GNU (GNU’s Not Unix), целью которого было создание полностью свободной операционной системы. В 1985 году он основал Фонд свободного программного обеспечения (FSF) и сформулировал четыре фундаментальные свободы: свобода запуска программы, изучения её кода, распространения копий и улучшения программы. Этот подход получил название «свободное программное обеспечение» (free software). Однако термин «free» в английском языке неоднозначен (означает как «свободный», так и «бесплатный»), что вызывало путаницу в деловых кругах.
Появление термина «open source»
В 1998 году группа разработчиков, включая Эрика Рэймонда, Брюса Перенса и Тима О’Рейли, решила продвигать идею открытого кода, используя более нейтральный и прагматичный термин — «open source». Они основали организацию Open Source Initiative (OSI), которая разработала определение открытого исходного кода (Open Source Definition), состоящее из 10 критериев. Ключевые из них включают свободное распространение, доступность исходного кода, возможность создания производных работ и отсутствие дискриминации в отношении лиц или групп.
Этот шаг позволил привлечь внимание бизнеса. В том же 1998 году компания Netscape выпустила исходный код своего браузера под открытой лицензией, что привело к созданию проекта Mozilla (впоследствии — Firefox). К началу 2000-х годов открытый исходный код стал массовым явлением: появились такие проекты, как Linux (ядро операционной системы, начатое Линусом Торвальдсом в 1991 году), Apache HTTP Server, MySQL, PHP и многие другие.
Определение и критерии
Open Source Initiative (OSI) определяет открытый исходный код через 10 обязательных условий:
- Свободное распространение — лицензия не должна ограничивать продажу или бесплатную передачу программы.
- Доступность исходного кода — код должен быть легко доступен (например, через интернет).
- Возможность создания производных работ — разрешается модифицировать код и распространять изменения.
- Целостность авторского кода — может требоваться, чтобы изменения распространялись отдельно или под другим именем.
- Отсутствие дискриминации лиц или групп — лицензия не должна ограничивать использование кода определёнными категориями людей.
- Отсутствие дискриминации областей применения — например, нельзя запрещать использование в коммерческих целях.
- Распространение лицензии — права автоматически переходят ко всем, кто получает программу.
- Лицензия не должна быть привязана к конкретному продукту — код может использоваться в других программах.
- Лицензия не должна ограничивать другое ПО — не требуется, чтобы все сопутствующие программы тоже были открытыми.
- Лицензия должна быть технологически нейтральной — не допускаются условия, зависящие от конкретной технологии.
Лицензии открытого исходного кода
Существует множество лицензий, которые OSI признаёт соответствующими определению. Они делятся на две основные категории:
Копилефтные (copyleft)
Требуют, чтобы производные работы распространялись под той же лицензией. Это обеспечивает сохранение открытости всех модификаций. Примеры:
- GNU General Public License (GPL) — самая известная копилефтная лицензия. Текущая версия — GPLv3 (2007). Используется ядром Linux, проектом GNU.
- GNU Lesser General Public License (LGPL) — более мягкая версия GPL, позволяющая связывать код с проприетарными программами.
- Mozilla Public License (MPL) — гибридная лицензия, позволяющая комбинировать открытый и закрытый код в одном файле.
Разрешительные (permissive)
Позволяют использовать код в проприетарных проектах без обязательного раскрытия изменений. Примеры:
- MIT License — крайне простая лицензия, разрешающая практически любое использование с условием сохранения уведомления об авторстве.
- Apache License 2.0 — включает явное предоставление патентных прав и защиту от патентных исков.
- BSD Licenses — существуют в вариантах (2-, 3- и 4-клаузульные), различающихся требованиями к упоминанию и запрету на использование имён авторов для рекламы.
Модели разработки
Модель «базар» и «собор»
Эрик Рэймонд в эссе «Собор и базар» (1999) описал две модели разработки:
- Собор — централизованная, закрытая разработка с чётким планом и иерархией (типична для проприетарного ПО).
- Базар — децентрализованная, открытая разработка, где множество добровольцев независимо работают над кодом, а координация осуществляется через систему контроля версий и лидеров проекта.
На практике большинство успешных проектов с открытым исходным кодом сочетают элементы обеих моделей: лидеры (например, Линус Торвальдс для ядра Linux) принимают окончательные решения, но вклад может делать любой желающий.
Инструменты совместной работы
- Системы контроля версий (Git, Mercurial) — позволяют отслеживать изменения, создавать ветки и сливать код.
- Платформы для хостинга кода (GitHub, GitLab, Bitbucket) — предоставляют интерфейс для pull request’ов, issue tracking и рецензирования кода.
- Непрерывная интеграция (CI/CD) — автоматическая сборка и тестирование кода после каждого изменения.
Применение
Открытый исходный код используется в самых разных областях:
Операционные системы
- Linux — ядро, используемое в дистрибутивах (Ubuntu, Debian, Fedora) на серверах, суперкомпьютерах (более 90% из топ-500), встраиваемых системах и Android.
- FreeBSD, OpenBSD — Unix-подобные системы с акцентом на производительность и безопасность.
Веб-серверы и базы данных
- Apache HTTP Server — долгое время был самым популярным веб-сервером.
- Nginx — высокопроизводительный сервер, используемый крупными сайтами.
- MySQL, MariaDB, PostgreSQL — реляционные базы данных.
- MongoDB, Redis — NoSQL-решения.
Языки программирования и инструменты
- Python, Ruby, PHP, JavaScript (Node.js) — интерпретируемые языки с открытыми реализациями.
- GCC, LLVM/Clang — компиляторы.
- Docker, Kubernetes — контейнеризация и оркестрация.
- TensorFlow, PyTorch — библиотеки машинного обучения.
Прикладное ПО
- LibreOffice — офисный пакет.
- GIMP — редактор растровой графики.
- Blender — 3D-моделирование и анимация.
- VLC media player — мультимедийный проигрыватель.
Экономические аспекты
Открытый исходный код создаёт новые бизнес-модели:
- Поддержка и консалтинг — компании (Red Hat, Canonical) зарабатывают на технической поддержке, обучении и сертификации.
- Двойное лицензирование — продукт распространяется под открытой лицензией, но для коммерческого использования предлагается платная проприетарная версия (MySQL, Qt).
- Open Core — базовая версия открыта, а расширенные функции — проприетарные (GitLab, Elasticsearch).
- Облачные сервисы — компании предоставляют ПО как услугу (SaaS), используя открытый код (WordPress.com, MongoDB Atlas).
По данным отчётов, более 90% компаний используют открытый исходный код в своей IT-инфраструктуре. Однако существуют проблемы: уязвимости в популярных библиотеках (например, Heartbleed в OpenSSL), «выгорание» мейнтейнеров и конфликты вокруг лицензий (например, переход некоторых проектов на ограничительные лицензии, такие как SSPL от MongoDB).
Критика и ограничения
- Отсутствие гарантий — открытое ПО не подлежит обязательной сертификации, и разработчики не несут юридической ответственности за ошибки.
- Фрагментация — множество форков (ответвлений) может затруднить совместимость (например, многообразие дистрибутивов Linux).
- Безопасность — открытый код может быть проанализирован злоумышленниками для поиска уязвимостей, хотя прозрачность также позволяет быстрее находить и исправлять ошибки.
- Трудности монетизации — многие проекты существуют за счёт пожертвований или добровольного труда, что приводит к нехватке ресурсов.
Влияние на законодательство и стандарты
В ряде стран принимаются законы, стимулирующие использование открытого исходного кода в государственном секторе. Например, в России в 2020 году была утверждена «Стратегия развития информационного общества», предусматривающая приоритетное использование отечественного ПО, в том числе с открытым кодом. В Евросоюзе действует программа «Open Source Software Strategy 2020–2023», направленная на внедрение открытых решений в госорганах.
Открытый исходный код также лежит в основе многих международных стандартов (например, OpenDocument Format для офисных документов) и протоколов (HTTP, TCP/IP).
Источники
- Raymond E. S. The Cathedral and the Bazaar. — O’Reilly Media, 1999.
- Open Source Initiative. The Open Source Definition (Version 1.9).
- Stallman R. Free Software, Free Society: Selected Essays. — GNU Press, 2002.
- Fitzgerald B. The Transformation of Open Source Software // MIS Quarterly. — 2006. — Vol. 30, No. 3.
- Документы Фонда свободного программного обеспечения (FSF).
- Отчёты GitHub Octoverse (2020–2023).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →