Форк



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

Ответвлённый проект или форк может поддерживать и обмениваться частью содержимого с основным проектом, а может и приобрести абсолютно другие свойства, перестав иметь с базовым проектом что-то общее. Пример: разделение проекта X Window System на XFree86 и X.Org, разделение проекта OpenOffice.org на LibreOffice и Apache OpenOffice. Разделения были и среди несвободного программного обеспечения. Пример: Windows NT, которая по мере развития разделилась на две ветви: Windows 2000 и Windows Server.

Для поддержания актуальной версии форка, в процессе разработки, может потребоваться частое обновление из кодовой базы. Дериватив является частным случаем форка и подразумевает именно подобное поведение.

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

Дальнейшее развитие может происходить разными путями: сосуществование и активный обмен общим (разделяемым) кодом, независимое существование, независимое существование с полной потерей общих свойств, «миграция» разработчиков из исходной ветки в другую, адаптация проекта к новым технологиям или слияние ответвлений в единый проект. Иногда «ответвление» при возврате в основной проект получает ведущую роль. Например, от GNU Compiler Collection (GCC) в своё время откололся проект Experimental/Enhanced GNU Compiler System (EGCS). Через два года произошло воссоединение проектов, причём результат был основан на EGCS и даже наследовал его гораздо более открытый процесс разработки.

В случае свободного ПО юридически возможность создания форка напрямую следует из факта распространения программы по свободной лицензии. Однако форки крупных проектов сравнительно редки и негативно воспринимаются в сообществе, поскольку уменьшают количество разработчиков каждой из ветвей и замедляют их развитие. Тем не менее значение «права на форк» достаточно велико, даже несмотря на то, что на практике оно используется редко: это некоторый сдерживающий фактор в отношениях между ключевыми разработчиками (имеющими возможность вносить изменения в код проекта напрямую, апстрим) и сообществом.