Форк
Форк (англ. fork — развилка) — использование кодовой базы программного проекта в качестве старта для другого. При этом основной проект может как продолжать существование, так и прекратить его. Синонимы: ответвление, отпочковывание. Ответвленный проект может поддерживать и обмениваться частью содержимого с основным проектом, а может и приобрести абсолютно другие свойства, перестав иметь с базовым проектом что-то общее. Пример: разделение проекта X Window System на XFree86 и X.Org, разделение проекта OpenOffice на LibreOffice и Apache OpenOffice.
Причины форкинга могут быть различны: от реализации чего-то экспериментального; портирования на новые ниши и платформы; вплоть до спасения проекта, если основной проект по разным причинам заморожен, и его развитие под текущими условиями невозможно или представляется невозможным, а также если разработчик не хочет развивать основной проект.
Дальнейшее развитие может происходить разными путями: сосуществование и активный обмен общим (разделяемым) кодом, независимое существование, независимое существование с полной потерей общих свойств, «миграция» разработчиков из исходной ветки в другую, адаптация проекта к новым технологиям или слияние ответвлений в единый проект. Иногда «ответвление» при возврате в основной проект получает ведущую роль. Например, от GNU Compiler Collection (GCC) в своё время откололся проект Experimental/Enhanced GNU Compiler System (EGCS). Через два года произошло воссоединение проектов, причём результат был основан на EGCS и даже наследовал его гораздо более открытый процесс разработки.
В случае свободного ПО, юридически, возможность создания форка напрямую следует из факта распространения программы по свободной лицензии. Однако форки крупных проектов сравнительно редки и негативно воспринимаются в сообществе, поскольку уменьшают количество разработчиков каждой из ветвей и замедляют их развитие. Тем не менее, значение «права на форк» достаточно велико, даже несмотря на то, что на практике оно используется редко: это некоторый сдерживающий фактор в отношениях между ключевыми разработчиками (имеющими возможность вносить изменения в код проекта напрямую, апстрим) и сообществом.
См. также
Это заготовка статьи о программном обеспечении. Вы можете помочь проекту, дополнив её. |