Что такое форк в программировании

Что такое форк в программировании

Это когда делаешь свою версию какого-то софта

У разработчиков есть понятие «форк» — оно часто встречается в командной разработке и в проектах с открытым кодом. Посмотрите, что это, и когда вам предложат сделать форк, вы будете во всеоружии.

Пример: игра в дурака

Игра в дурака — одна из самых простых карточных игр. У всех на старте по 6 карт, есть колода, есть козырные карты, все ходят по очереди и подкидывают друг другу карты, чтобы самому остаться без карт.

Но в разных компаниях принято играть в дурака по-разному:

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

И ещё десяток разных вариантов в зависимости от компании или от того, как принято в этом месте.

Все основные правила дурака сохраняются, просто каждая версия добавляет в него что-то своё (например, возможность перевести ход). Но в основе это всё тот же дурак. Если вы знаете основные правила, то легко сможете разобраться в каждом новом варианте игры.

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

👉 Форк — это новая программа на базе какой-то версии исходной программы. Она может дальше развиваться самостоятельно, без оглядки на исходную программу.

Откуда такое название

Форк в переводе с английского — это вилка, развилка или ответвление (fork). Этот термин стали использовать, потому что ручка вилки — это как будто основная программа, а зубцы — ответвления от неё. Чтобы было понятнее, вот картинка с форками игры в дурака.

Каждое ответвление — это своя отдельная версия игры, которая живёт и развивается по своим правилам. А вместе все эти ответвления напоминают вилку — отсюда и название.

Если есть время, посмотрите ветку форков Линукса в википедии. Предупреждаем: она большая и это надолго.

Что такое форк в программировании

Форки в программировании

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

  1. У программы исходный код находится под лицензией, которая разрешает свободное использование и копирование этого кода, в том числе создание форков. 
  2. Есть разработчики, которые готовы вкладывать в этот проект время и силы. Если просто форкнуть исходный проект, но ничего с ним не делать, он так и останется замороженной и устаревшей версией, которой никто не пользуется.

👉 Чтобы форк был успешным, в него тоже нужно вкладывать много времени и сил, как в основной продукт. Если им не заниматься, форк умрёт. Та же судьба ждёт форк, если им никто не будет пользоваться — в конце концов чаще всего разработчикам надоедает поддерживать софт просто так и они его забрасывают.

Примеры форков

В современном мире многие успешные сервисы, продукты и программы — это форки. Смотрите сами:

  • Движок WebKit (используется в Safari) — это форк движка KHTML из рабочей среды KDE для Линукса.
  • Вордпресс — форк b2/CafeLog.
  • OpenOffice — форк СтарОфиса, а LibreOffice — это форк ОпенОфиса.
  • Веб-сервер Апач — форк NCSA HTTPd.
  • Microsoft SQL Server — форк Sybase SQL Server.
  • Половина криптовалют — это форки исходного алгоритма биткоина в разных вариантах.

А вот ещё интересный случай, как бывает с форками. Сначала была библиотека node.js, потом от неё пошёл форк io.js, а в 2015 году этот форк стал официальным node.js. 

Зачем нужны форки

Причин может быть много:

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

👉 Главная причина появления форков — желание сделать лучше. Но обычно получается не лучше, а просто по-другому.  

Форк и версии

Иногда форк путают с версиями, хотя у них есть важное отличие:

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

Как сделать свой форк

Очень просто: 

  1. Скопировать себе исходный код или нажать кнопку Fork в проекте на гитхабе.
  2. Назвать его как угодно.
  3. Пожалеть об этом, потому что теперь вы в ответе за собственный софт, который нужно развивать. 

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства и компенсация, если вы пойдёте работать в «Яндекс».
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Создаём CSS-сетку нужного размера

Рассказываем, как сделать шаблон любой страницы.

Операции с векторами
Операции с векторами

Как сложить и перемножить векторы (и зачем).

Для чего на сервере нужен файл .htaccess
Для чего на сервере нужен файл .htaccess

И что с ним можно сделать полезного

Объясни мне: как опубликовать свой сайт в интернете

Покупаем домен, оформляем хостинг, настраиваем привязку и заливаем файлы. Купаемся в лучах славы.

Функции. Зачем они нужны и как их писать, чтобы вас уважали программисты
Функции. Зачем они нужны и как их писать, чтобы вас уважали программисты

Сложная важная статья для тех, кто хочет стать крутым программистом.

Что такое генераторы в программировании
Что такое генераторы в программировании

Они лениво раз за разом вычисляют новые значения, но не помнят, что было до этого.

Чем занимаются бэкенд-разработчики
Чем занимаются бэкенд-разработчики

Никто не видит, но все пользуются.

Лучшие одноплатные мини-компьютеры для работы и кодинга
Лучшие одноплатные мини-компьютеры для работы и кодинга

Системники размером с пачку чая

Зарплата 113 тысяч за то, чтобы ломать программы
Зарплата 113 тысяч за то, чтобы ломать программы

Работа тестировщика как она есть.

Как называть переменные и функции, чтобы вас уважали бывалые программисты
Как называть переменные и функции, чтобы вас уважали бывалые программисты

Если вы опытный разработчик, покажите эту статью начинающим.

medium