У разработчиков есть понятие «форк» — оно часто встречается в командной разработке и в проектах с открытым кодом. Посмотрите, что это, и когда вам предложат сделать форк, вы будете во всеоружии.
Пример: игра в дурака
Игра в дурака — одна из самых простых карточных игр. У всех на старте по 6 карт, есть колода, есть козырные карты, все ходят по очереди и подкидывают друг другу карты, чтобы самому остаться без карт.
Но в разных компаниях принято играть в дурака по-разному:
- можно подкидывать карты не только тому, кто ходил, но и всем остальным — это подкидной дурак;
- можно подкидывать карты без ограничений по их количеству — это подкидной до кучи;
- можно класть такую же карту и переводить ход другому игроку, чтобы не отбиваться самому — это переводной дурак;
- можно не класть, а показать козырную карту, чтобы перевести ход — это переводной с проездным.
И ещё десяток разных вариантов в зависимости от компании или от того, как принято в этом месте.
Все основные правила дурака сохраняются, просто каждая версия добавляет в него что-то своё (например, возможность перевести ход). Но в основе это всё тот же дурак. Если вы знаете основные правила, то легко сможете разобраться в каждом новом варианте игры.
Все эти разные версии игры — это форки исходного дурака. Запомните пока эту аналогию, а чтобы было проще разбираться дальше, вот вам ещё одна мысль:
👉 Форк — это новая программа на базе какой-то версии исходной программы. Она может дальше развиваться самостоятельно, без оглядки на исходную программу.
Откуда такое название
Форк в переводе с английского — это вилка, развилка или ответвление (fork). Этот термин стали использовать, потому что ручка вилки — это как будто основная программа, а зубцы — ответвления от неё. Чтобы было понятнее, вот картинка с форками игры в дурака.
Каждое ответвление — это своя отдельная версия игры, которая живёт и развивается по своим правилам. А вместе все эти ответвления напоминают вилку — отсюда и название.
Если есть время, посмотрите ветку форков Линукса в википедии. Предупреждаем: она большая и это надолго.
Форки в программировании
В программировании всё работает точно так же: у некоторых программ появляются самостоятельные ответвления, которые начинают жить своей жизнью. Но для этого нужно два условия:
- У программы исходный код находится под лицензией, которая разрешает свободное использование и копирование этого кода, в том числе создание форков.
- Есть разработчики, которые готовы вкладывать в этот проект время и силы. Если просто форкнуть исходный проект, но ничего с ним не делать, он так и останется замороженной и устаревшей версией, которой никто не пользуется.
👉 Чтобы форк был успешным, в него тоже нужно вкладывать много времени и сил, как в основной продукт. Если им не заниматься, форк умрёт. Та же судьба ждёт форк, если им никто не будет пользоваться — в конце концов чаще всего разработчикам надоедает поддерживать софт просто так и они его забрасывают.
Примеры форков
В современном мире многие успешные сервисы, продукты и программы — это форки. Смотрите сами:
- Движок WebKit (используется в Safari) — это форк движка KHTML из рабочей среды KDE для Линукса.
- Вордпресс — форк b2/CafeLog.
- OpenOffice — форк СтарОфиса, а LibreOffice — это форк ОпенОфиса.
- Веб-сервер Апач — форк NCSA HTTPd.
- Microsoft SQL Server — форк Sybase SQL Server.
- Половина криптовалют — это форки исходного алгоритма биткоина в разных вариантах.
А вот ещё интересный случай, как бывает с форками. Сначала была библиотека node.js, потом от неё пошёл форк io.js, а в 2015 году этот форк стал официальным node.js.
Зачем нужны форки
Причин может быть много:
- официальные разработчики долго не добавляют в софт те функции, которые нужны пользователям;
- хочется выпустить свою, более безопасную, красивую или более стабильную версию, потому что ну сколько можно, надоело уже пользоваться этим глючным изделием;
- компания закрывается и официально перестаёт поддерживать какой-то софт;
- разработчики уходят из компании, чтобы развивать продукт так, как им хочется.
👉 Главная причина появления форков — желание сделать лучше. Но обычно получается не лучше, а просто по-другому.
Форк и версии
Иногда форк путают с версиями, хотя у них есть важное отличие:
- новую версию софта делает та же компания или разработчик, что и предыдущую;
- форк делает новая и другая команда, которая сама решает, как будет развиваться проект.
Как сделать свой форк
Очень просто:
- Скопировать себе исходный код или нажать кнопку Fork в проекте на гитхабе.
- Назвать его как угодно.
- Пожалеть об этом, потому что теперь вы в ответе за собственный софт, который нужно развивать.