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

Форк в информатике

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

Форк программного обеспечения

В разработке ПО форк означает разделение кодовой базы: часть разработчиков продолжает работу над исходным проектом, а другая создаёт его производную версию. Форк не является копированием в обычном смысле — он подразумевает дальнейшее независимое развитие с собственной дорожкой релизов, политикой и сообществом.

Форки особенно распространены в свободном и открытом ПО, где лицензии (GPL, MIT, Apache) прямо допускают создание производных работ. В проприетарном ПО форки редки, так как исходный код недоступен, а лицензии запрещают модификацию.

Причины форков

Основные причины создания форков:

  • Расхождения в видении проекта — разработчики не могут согласовать приоритеты развития, целевую аудиторию или набор функций.
  • Политические и организационные конфликты — споры вокруг управления проектом, авторских прав или коммерциализации.
  • Технический стагнация — оригинальный проект перестаёт обновляться, и сообщество возобновляет развитие самостоятельно.
  • Специализация — создание узкоспециализированной версии для конкретной задачи или платформы.

Известные примеры форков

ФоркОригиналГодПричина
LibreOfficeOpenOffice.org2010Расхождения с Oracle после покупки Sun Microsystems
MariaDBMySQL2009Опасения сообщества после покупки Sun/MySQL Oracle
OpenSSL—2014Проект LibreSSL, созданный после инцидента Heartbleed
Linux MintUbuntu2006Желание изменить рабочий стол и набор приложений
CinnamonGNOME Shell2011Недовольство новым интерфейсом GNOME 3
Xfce——Продолжение после сворачивания разработки

Один из самых известных случаев — разделение сообщества вокруг GNU Emacs и XEmacs в 1990-х годах, а также раскол между LibreOffice и OpenOffice после перехода последнего под контроль Apache Foundation.

Форк в системах контроля версий

В системах контроля версий (Git, Mercurial) fork — операция клонирования репозитория на сервере хостинга (GitHub, GitLab, Gitea). В отличие от локального клонирования, форк создаёт полную независимую копию репозитория в аккаунте пользователя, что позволяет вносить изменения без прав записи в оригинальный проект.

Модель «форк и pull request» стала стандартным способом внесения вклада в открытые проекты: разработчик форкает репозиторий, вносит изменения и отправляет запрос на слияние (pull request / merge request). Так работают крупнейшие проекты — Linux kernel, Chromium, VS Code.

Форк протоколов и стандартов

Форк возникает и на уровне сетевых протоколов и стандартов. Пример — разделение IRC-протокола и его расширений, создание альтернативных реализаций XMPP-серверов, а также появление форков криптовалют: Bitcoin породил Litecoin (2011), Bitcoin Cash (2017) и десятки других монет, отличающихся параметрами блока, алгоритмами майнинга или экономической моделью.

Последствия форков

Форк имеет двоякие последствия. С положительной стороны он обеспечивает:

  • продолжение жизни проекта при устаревании или сворачивании оригинала;
  • конкуренцию между версиями, стимулирующую развитие;
  • возможность экспериментов без риска для основной ветки.

С отрицательной стороны форки приводят к:

  • фрагментации сообщества — разработчики и пользователи распыляются между несколькими версиями;
  • дублированию усилий — исправления и функции приходится переносить вручную;
  • путанице для пользователей — несколько похожих проектов с разными названиями.

Форк и ветвление

Термин «форк» не следует путать с ветвлением (branching) в системах контроля версий. Ветка — это временная линия разработки внутри одного репозитория, предназначенная для слияния обратно. Форк — это отделение на постоянной основе с созданием независимого репозитория, у которого нет обязательств по слиянию с оригиналом.

Интересные факты

  • Термин «fork» в контексте разработки ПО популяризировался в 1980-х годах в среде GNU и BSD-проектов.
  • Раскол между BSD-системами (FreeBSD, NetBSD, OpenBSD) в начале 1990-х — один из самых известных «великих форков» в истории Unix.
  • Некоторые компании намеренно создают форки популярных открытых проектов, чтобы снизить зависимость от чужих решений (например, Amazon с форками Elasticsearch и Redis).

Источники:

  • «Профессиональная разработка программного обеспечения» — Роджер Прессман
  • «Открытый код. Создание успешных открытых проектов» — Карл Фогель
  • Документация Git (git-scm.com)
  • Статьи и обсуждения на GitHub, LWN.net
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru