Open source (открытое программное обеспечение, ПО с открытым исходным кодом) — это программы, исходный код которых опубликован под лицензией, разрешающей любому человеку изучать его, запускать, изменять и распространять, в том числе в измененном виде. Главное здесь не «код можно посмотреть», а права, выданные лицензией: без нее опубликованный код по умолчанию остается под обычным авторским правом, и пользоваться им свободно нельзя.
Содержание
Ниже — чем open source отличается от свободного ПО и от «просто открытого» кода, какие лицензии встречаются чаще всего и что они требуют, реальные плюсы и минусы, примеры проектов и как сделать первый вклад.
Три понятия, которые путают
| Понятие | Что это | Пример |
|---|---|---|
| Open source | Код под лицензией, соответствующей определению Open Source Definition (OSD) от Open Source Initiative | Linux, Python, Kubernetes |
| Свободное ПО (free software) | Программа, дающая пользователю четыре свободы по определению Free Software Foundation | GNU Bash, GIMP |
| Source-available | Код открыт для чтения, но лицензия ограничивает использование (например, запрещает конкурирующий облачный сервис) | Продукты под Business Source License |
| Freeware | Бесплатная программа, код которой может быть закрыт | Многие бесплатные утилиты |
Бесплатность и открытость — разные вещи. Open source-программу можно продавать, а бесплатная программа может быть проприетарной (закрытой).
Откуда взялся термин
В 1983 году Ричард Столлман объявил о проекте GNU — свободной UNIX-совместимой операционной системе, а в 1985 году основал Free Software Foundation (FSF). FSF называет программу свободной, если она дает четыре свободы: запускать ее для любых целей; изучать и менять (для этого нужен исходный код); распространять копии; распространять измененные версии.
Слово «free» в английском значит и «свободный», и «бесплатный». Столлман поясняет: имеется в виду свобода, как в «свободе слова», а не бесплатное пиво. Свободное ПО можно продавать.
Эта двусмысленность мешала продвигать идею в бизнесе. В 1998 году появился термин «open source» и организация Open Source Initiative (OSI). Она опубликовала Open Source Definition — 10 критериев лицензии, выросших из принципов Debian. Среди них — свободное распространение, доступность исходного кода, разрешение производных работ, отсутствие дискриминации людей и сфер применения.
На практике почти все популярные лицензии признаны и OSI, и FSF. Различие скорее в акцентах: FSF говорит об этике и правах пользователя, OSI — о практической пользе открытой разработки.
Лицензии open source: какие бывают и что требуют
Лицензии делят на два больших семейства, плюс отдельно стоит отказ от прав.
- Разрешительные (permissive): MIT, BSD, Apache 2.0. Код можно встроить даже в закрытый продукт. Обычно достаточно сохранить уведомление об авторском праве и текст лицензии.
- Копилефт (copyleft): GPL, LGPL, AGPL, MPL. Если вы распространяете производную работу, ее нужно распространять под той же лицензией с исходным кодом. Название — игра слов на copyright.
- Передача в общественное достояние: CC0, Unlicense. Автор отказывается от прав, насколько это позволяет законодательство конкретной страны.
| Лицензия | Тип | Главное требование | Где встречается |
|---|---|---|---|
| MIT | Разрешительная | Сохранить копирайт и текст лицензии | React, Node.js, pip |
| BSD-2/3-Clause | Разрешительная | То же; 3-Clause запрещает без разрешения использовать имя автора для продвижения производных продуктов | nginx, idna |
| Apache 2.0 | Разрешительная | Сохранить NOTICE, отметить изменения; явная патентная лицензия | Kubernetes, Kotlin, requests |
| MPL 2.0 | Слабый копилефт на уровне файла | Измененные файлы проекта открывать под MPL, свой код рядом можно закрыть | Firefox, certifi |
| LGPL | Слабый копилефт на уровне библиотеки | Изменения самой библиотеки открывать; с программой можно связывать закрытый код | GNU C Library (glibc) |
| GPL v2 / v3 | Сильный копилефт | Распространяете программу — давайте получателям весь исходный код под GPL | Ядро Linux (GPL-2.0), Git |
| AGPL v3 | Сильный копилефт + сеть | То же, плюс исходный код нужно дать пользователям сетевого сервиса | Серверные приложения |
Важная граница: требования GPL срабатывают при распространении программы. Если компания изменила GPL-код и использует его только внутри себя, публиковать изменения GPL ее не обязывает. AGPL закрывает этот сценарий для сервисов, с которыми пользователи работают по сети.
Таблица — упрощение. Точные обязанности зависят от версии лицензии, способа связывания кода и законодательства. Для коммерческого продукта решение о лицензиях принимают вместе с юристом.
Как узнать лицензию проекта
Лицензию ищут в файле LICENSE или COPYING в корне репозитория и в метаданных пакета. Современные пакеты указывают ее SPDX-идентификатором — стандартным коротким именем вроде MIT или Apache-2.0. Скрипт ниже выводит лицензии всех установленных Python-пакетов:
from importlib.metadata import distributions
for dist in sorted(distributions(), key=lambda d: d.metadata["Name"].lower()):
meta = dist.metadata
# Новый способ (PEP 639): SPDX-выражение в поле License-Expression
license = meta.get("License-Expression")
if not license:
# Старый способ: свободный текст в поле License или классификаторы
classifiers = [c for c in (meta.get_all("Classifier") or [])
if c.startswith("License ::")]
license = meta.get("License") or "; ".join(classifiers) or "не указано"
print(f'{meta["Name"]:<20} {dist.version:<10} {license.splitlines()[0][:60]}')
Результат в чистом окружении Python 3.14.7 после pip install requests==2.34.2 (актуальная версия на сентябрь 2026; версии зависимостей у вас могут отличаться):
certifi 2026.7.22 MPL-2.0
charset-normalizer 3.5.1 MIT
idna 3.20 BSD-3-Clause
pip 26.2.1 MIT
requests 2.34.2 Apache-2.0
urllib3 2.8.0 MIT
Одна команда установки принесла пакеты под четырьмя разными лицензиями. Поэтому компании проверяют лицензии зависимостей автоматически. В старых пакетах поле License иногда содержит весь многострочный текст лицензии, поэтому скрипт берет только первую строку. Метаданные заполняет автор пакета, и они бывают неточными, так что окончательный источник — файл лицензии в самом проекте.
Плюсы и минусы открытого ПО
Плюсы, которые реально работают:
- Нет платы за лицензию. Но есть стоимость владения: внедрение, поддержка, обновления, специалисты.
- Прозрачность. Код можно проверить, найти и исправить ошибку самому, не дожидаясь вендора.
- Нет привязки к одному поставщику. Если проект свернули или сменили курс, сообщество может сделать форк и продолжить.
- Сообщество. Документация, плагины, ответы на вопросы, исправления от пользователей.
- Опыт для разработчика. Публичные вклады видны работодателю, а чтение чужого качественного кода — хорошая школа.
Минусы и риски:
- Нет гарантий по умолчанию. Почти все лицензии поставляют ПО «как есть». Гарантированную поддержку дает коммерческий договор, например подписка на Red Hat Enterprise Linux.
- Выгорание и нехватка мейнтейнеров. Критичные библиотеки нередко держатся на одном-двух людях.
- Смена лицензии. Компания может перевести следующие версии под source-available лицензию. Так было с Terraform в 2023 году; сообщество ответило форком OpenTofu.
- Атаки на цепочку поставок. В 2024 году в архиватор xz-utils внедрили бэкдор (CVE-2024-3094) через многолетнее «доверие» к новому мейнтейнеру.
- Юридические обязательства. Нарушение копилефта в продукте грозит претензиями.
Открытый код сам по себе не делает программу ни безопаснее, ни опаснее закрытой. Он дает возможность аудита, но кто-то должен его провести. Уязвимость Log4Shell (CVE-2021-44228) годами жила в популярной открытой библиотеке Log4j.
Примеры open source-проектов
| Проект | Что это | Лицензия |
|---|---|---|
| Linux | Ядро операционной системы | GPL-2.0 |
| Git | Система контроля версий | GPL-2.0 |
| Python | Язык программирования | PSF License |
| PostgreSQL | СУБД | PostgreSQL License (разрешительная) |
| Kubernetes | Оркестрация контейнеров | Apache 2.0 |
| Firefox | Браузер | MPL 2.0 |
| Android (AOSP) | Мобильная ОС | В основном Apache 2.0, ядро — GPL-2.0 |
Не все знакомое «открыто» целиком. Исходники редактора VS Code опубликованы под MIT (репозиторий Code — OSS), но сборка, которую скачивают с сайта Microsoft, распространяется под собственной лицензией Microsoft.
Как начать контрибьютить в open source
Вклад — это не только код. Проекту полезны исправления документации, переводы, воспроизведение ошибок, ответы в обсуждениях. Порядок для первого вклада:
- Выберите проект, которым пользуетесь сами: так проще понять, что улучшать.
- Прочитайте
README,CONTRIBUTING.mdиCODE_OF_CONDUCT.md. В них описаны правила оформления, тесты и требования к коммитам. - Найдите задачу с меткой
good first issueилиhelp wantedи напишите в ней, что беретесь. - Сделайте форк, отдельную ветку под задачу, коммит и откройте pull request (merge request).
- Отвечайте на ревью и правьте код в той же ветке.
Шаг 4 можно отрепетировать без GitHub: роль сервера сыграют локальные «голые» репозитории. Стенд ниже проверен в bash на Git 2.43 (Ubuntu 24.04) и Git 2.50 (macOS). Запускайте его в пустой временной папке:
set -e
# 1. "Чужой" проект: bare-репозиторий вместо GitHub
git init -q --bare -b main upstream.git
git clone -q upstream.git author && cd author
git config user.name "Author"; git config user.email "author@example.com"
echo "# demo" > README.md && git add README.md && git commit -q -m "Initial commit"
git push -q origin main && cd ..
# 2. Форк = своя копия; клонируем ее и подключаем оригинал как upstream
git clone -q --bare upstream.git fork.git
git clone -q fork.git work && cd work
git config user.name "Contributor"; git config user.email "you@example.com"
git remote add upstream ../upstream.git
# 3. Отдельная ветка под одну задачу, коммит с подписью DCO
git switch -q -c fix-readme-typo
echo "Demo project for first contribution." >> README.md
git commit -q -s -am "docs: describe project in README"
git push -q -u origin fix-readme-typo
git log -1 --format='%s%n%n%b'
git remote -v
Вывод (путь к fork.git будет вашим):
warning: You appear to have cloned an empty repository.
docs: describe project in README
Signed-off-by: Contributor <you@example.com>
origin /tmp/fork.git (fetch)
origin /tmp/fork.git (push)
upstream ../upstream.git (fetch)
upstream ../upstream.git (push)
Предупреждение в первой строке ожидаемо: автор клонирует пустой репозиторий, еще до первого коммита. Флаг -s добавляет строку Signed-off-by — так автор подтверждает Developer Certificate of Origin (DCO), право отдать этот код проекту. Некоторые проекты вместо DCO просят подписать соглашение контрибьютора (CLA). В реальном проекте после git push вы откроете pull request из своей ветки в ветку main оригинала.
Если не получилось
- Pull request закрыли без слияния. Чаще всего задачу не согласовали заранее или нарушили правила из
CONTRIBUTING.md. Сначала обсуждайте изменение в issue. - Проверка CI упала на DCO. В коммите нет строки
Signed-off-by: исправьте последний коммит черезgit commit --amend -s --no-editи отправьте ветку сgit push --force-with-lease. - Форк отстал от оригинала. Выполните
git fetch upstreamи перенесите ветку на свежийupstream/mainчерезgit rebase. - Долго нет ответа. У мейнтейнеров нет обязательств по срокам. Вежливо напомните через неделю-две или выберите более активный проект.
Выводы
- Open source — это код под лицензией, которая разрешает изучать, менять и распространять его; просто опубликованный код без лицензии открытым не является.
- Свободное ПО (FSF, 1985) и open source (OSI, 1998) в основном совпадают по лицензиям, но отличаются акцентами; бесплатность и открытость — разные свойства.
- Разрешительные лицензии (MIT, BSD, Apache 2.0) позволяют встраивать код в закрытые продукты, копилефт (GPL, AGPL, MPL) требует открывать производные работы при распространении.
- Открытость дает прозрачность и независимость от вендора, но не гарантирует безопасность и поддержку.
- Первый вклад проще начать с документации и задач
good first issue, по правилам изCONTRIBUTING.md.
Где применяется / связь с практикой
Освойте тему на практике
Больше всего открытого ПО системный администратор видит каждый день: ядро Linux, GNU-утилиты, OpenSSH, nginx, PostgreSQL. Администратору важно понимать и сами инструменты, и их лицензии, особенно когда компания собирает свой дистрибутив или поставляет ПО клиентам. Работу с Linux с нуля — установку, пакеты, права, сети и службы — разбирают на курсе «Администратор Linux. Базовый уровень». Чтобы познакомиться с темой и преподавателями бесплатно, загляните на открытые уроки Otus.
FAQ
Можно ли использовать open source в коммерческом продукте?
Да, лицензии OSD не запрещают коммерческое использование. Но нужно выполнить условия лицензии: для MIT сохранить уведомление, для GPL при распространении открыть исходный код производной программы.
Что будет, если в репозитории нет файла лицензии?
Такой код формально остается под авторским правом автора: читать его можно, а копировать и распространять без разрешения нельзя. Лучше попросить автора добавить лицензию.
Open source и открытое API — одно и то же?
Нет. Открытое API — публичный интерфейс сервиса, код которого может быть полностью закрыт. Open source касается исходного кода и прав на него.



