В программной инженерии , проект вилы происходит , когда разработчики взять копию исходного кода из одного программного пакета и начать самостоятельное развитие на нем, создавая различные и отдельные части программного обеспечения. Этот термин часто подразумевает не просто ветвь разработки , но и раскол в сообществе разработчиков, форму раскола . [1]
Бесплатное программное обеспечение с открытым исходным кодом - это программное обеспечение , которое, по определению, может быть создано исходной командой разработчиков без предварительного разрешения и без нарушения закона об авторском праве. Однако бывают и лицензионные форки проприетарного ПО ( например, Unix ).
Этимология
Слово «вилка» использовалось для обозначения «разделять на ветви, идти разными путями» еще в 14 веке. [2] В программной среде это слово вызывает системный вызов fork , который заставляет запущенный процесс разделяться на две (почти) идентичные копии, которые (обычно) расходятся для выполнения разных задач. [3]
В контексте разработки программного обеспечения, «вилка» использовалась Эриком Аллманом еще в 1980 году в контексте создания « ветви » системы контроля версий в контексте SCCS : [4]
Создание ветки "разветвляет" версию программы.
Этот термин использовался в Usenet к 1983 году для процесса создания подгруппы для перемещения тем для обсуждения. [5]
«Вилка», как известно, не использовалась в смысле раскола сообщества во время возникновения Lucid Emacs (ныне XEmacs ) (1991) или BSD (1993–1994); Расс Нельсон использовал термин «раскол» для такого рода вилок в 1993 году, приписывая это Джону Гилмору . [6] Однако «вилка» использовалась в настоящем смысле к 1995 году для описания разделения XEmacs, [7] и была понятным использованием в проекте GNU к 1996 году. [8]
Разветвление бесплатного программного обеспечения с открытым исходным кодом
Свободный и программное обеспечение с открытым исходным кодом могут быть юридически раздвоенные без предварительного согласия тех , в настоящее время разработки, управление и распространение программного обеспечения за как The Free Software Definition и The Open Source Definition : [9]
Свобода распространять копии ваших модифицированных версий среди других (свобода 3). Поступая так, вы можете дать всему сообществу возможность извлечь выгоду из ваших изменений. Доступ к исходному коду является предварительным условием для этого.
3. Производные работы. Лицензия должна разрешать модификации и производные работы, а также должна разрешать их распространение на тех же условиях, что и лицензия на исходное программное обеспечение.
В свободных программах вилки часто возникают в результате разногласий по поводу различных целей или личных столкновений. В форке обе стороны предполагают почти идентичные кодовые базы, но обычно только большая группа или тот, кто контролирует веб-сайт, сохранят полное исходное имя и соответствующее сообщество пользователей. Таким образом, существует штраф репутации, связанный с разветвлением. [9] Отношения между разными командами могут быть сердечными или очень горькими. С другой стороны, дружественный форк или софт-форк - это форк, который не намерен конкурировать, но хочет в конечном итоге слиться с оригиналом.
Eric S. Raymond , в своем эссе Homesteading ноосферы , [12] указано , что «Наиболее важной характеристикой вилки является то , что он порождает конкурирующие проекты , которые не могут позже обмен код, расщепляющий потенциал сообщества разработчиков». Он отмечает в файле жаргона : [13]
Разветвление считается плохим делом - не только потому, что оно подразумевает много потраченных впустую усилий в будущем, но и потому, что вилки, как правило, сопровождаются большим количеством раздоров и вражды между группами преемников по вопросам легитимности, преемственности и направления дизайна . Существует серьезное социальное давление против разветвления. В результате основные форки (такие как разделение Gnu-Emacs / XEmacs, разделение группы 386BSD на три дочерних проекта и недолговечное разделение GCC / EGCS) достаточно редки, чтобы их помнят индивидуально в фольклоре хакеров.
Дэвид А. Уиллер отмечает [9] четыре возможных исхода вилки с примерами:
- Смерть вилки. Это, безусловно, самый распространенный случай. Объявить форк легко, но приложить немало усилий для продолжения самостоятельной разработки и поддержки.
- Повторное слияние вилки ( например , egcs становится «благословенной» новой версией gcc .)
- Смерть оригинала ( например X.Org сервер сменив и XFree86 умирает.)
- Успешное ветвление, обычно с дифференциацией ( например , OpenBSD и NetBSD ).
Инструменты распределенного контроля версий (DVCS) популяризировали менее эмоциональное использование термина «вилка», стирая различие с «ветвью». [14] В случае DVCS, такого как Mercurial или Git , нормальный способ внести свой вклад в проект - это сначала создать личную ветвь репозитория, независимую от основного репозитория, а затем попытаться интегрировать ваши изменения с ней. Такие сайты, как GitHub , Bitbucket и Launchpad, предоставляют бесплатный хостинг DVCS, явно поддерживающий независимые ветки, так что технические, социальные и финансовые препятствия для создания репозитория исходного кода значительно снижаются, а GitHub использует термин «вилка» для обозначения этого метода вклада. к проекту.
Форки часто перезапускают нумерацию версий с 0.1 или 1.0, даже если исходное программное обеспечение было версии 3.0, 4.0 или 5.0. Исключение составляют случаи, когда разветвленное программное обеспечение предназначено для замены исходного проекта, например, MariaDB для MySQL [15] или LibreOffice для OpenOffice.org .
Разветвление проприетарного ПО
На проприетарное программное обеспечение авторские права обычно принадлежат организации-работодателю, а не отдельным разработчикам программного обеспечения. Таким образом, проприетарный код чаще всего разветвляется, когда владельцу необходимо разработать две или более версии, такие как оконная версия и версия для командной строки , или версии для разных операционных систем, таких как текстовый процессор для компьютеров, совместимых с IBM PC, и компьютеров Macintosh . Как правило, такие внутренние вилки будут сосредоточены на том, чтобы иметь одинаковый внешний вид, поведение, формат данных и поведение между платформами, так что пользователь, знакомый с одной, также может работать продуктивно или совместно использовать документы, созданные на другой. Это почти всегда экономическое решение, направленное на увеличение доли рынка и, таким образом, на возмещение дополнительных затрат на разработку, связанных с форком.
Заметным проприетарным форком не такого рода является множество разновидностей проприетарного Unix - почти все, производные от AT&T Unix по лицензии и все называемые «Unix», но все более несовместимые друг с другом. [16] См. Войны UNIX .
В лицензии BSD позволяет вилы стать проприетарным ПО, и Copyleft сторонники говорят , что коммерческие стимулы , таким образом , сделать proprietisation почти неизбежным. (Однако лицензии с авторским левом можно обойти с помощью двойного лицензирования с закрытым грантом в форме лицензионного соглашения участника .) Примеры включают macOS (на основе проприетарного NeXTSTEP и FreeBSD с открытым исходным кодом ), Cedega и CrossOver (проприетарные форки Wine , хотя CrossOver отслеживает Wine и вносит значительный вклад), EnterpriseDB (ветвь PostgreSQL , добавляющая функции совместимости с Oracle [17] ), Supported PostgreSQL с их собственной системой хранения ESM [18] и проприетарная высокомасштабируемая производная PostgreSQL от Netezza [19] . Некоторые из этих поставщиков вносят изменения в проект сообщества, в то время как некоторые сохраняют свои изменения как свои собственные конкурентные преимущества.
Смотрите также
- Список программных форков
- Исходный порт
- Downstream (разработка программного обеспечения)
- Групповое принятие решений
- Модульное программирование
- Моддинг
- Программное обеспечение на заказ
- Персонализация
- Эффективность команды
- Повторяющийся код
- ROM Взлом
Рекомендации
- ^ «Раскол» с его коннотациями - обычное употребление, например, «раскол Lemacs / FSFmacs». Архивировано 12 декабря 2009 г. на WebCite ( Джейми Завински , 2000), «За расколом KOffice» Архивировано 6 июля 2013 г. на Wayback Machine ( Джо Брокмайер, Linux Weekly News ,14 декабря 2010 г.), «Передача авторских прав - однажды укушенный, дважды застенчивый». Архивировано 30 марта 2012 г. в Wayback Machine (Ричард Хиллесли, H-Online , 06.08.2010 ), «Разветвление - это материал « Архивировано 29 февраля 2012 года на Wayback Machine ( Анил Даш , 10.09.2010), « Великий программный раскол » Архивировано 6 января 2012 года на Wayback Machine ( Глин Муди , Linux Journal , 2006-09-28), «Разветвлять или не разветвлять: уроки Ubuntu и Debian». Архивировано 26 февраля 2012 года на Wayback Machine ( Бенджамин Мако Хилл , 2005).
- ^ Запись 'fork' в онлайн-этимологическом словаре. Архивировано 25 мая 2012 г. на Wayback Machine.
- ^ «Термин fork происходит от стандарта POSIX для операционных систем: системный вызов, используемый для того, чтобы процесс генерировал свою копию, называется fork ()». Роблес, Грегорио; Гонсалес-Бараона, Хесус М. (2012). Комплексное исследование программных форков: даты, причины и результаты (PDF) . OSS 2012 Восьмая международная конференция по системам с открытым исходным кодом. DOI : 10.1007 / 978-3-642-33442-9_1 . Архивировано 2 декабря 2013 года (PDF) . Проверено 20 октября 2012 года .
- ^ Allman, Эрик. «Введение в систему контроля исходного кода». Архивировано 6 ноября 2014 года на сайте Wayback Machine Project Ingres, Калифорнийский университет в Беркли, 1980 год.
- ^ Может кто-нибудь раскошелиться на "чистую философию"? ( Джон Гилмор , net.misc, 18 января 1983 г.)
- ^ Разрушение - хорошо или плохо? (Рассел Нельсон, gnu.misc.discuss, 1 октября 1993 г.)
- ^ Re: Эй, Франц: 32K Windows ОТСТОЙ !!!!! (Билл Дубюк, cu.cs.macl.info, 21 сентября 1995 г.)
- ^ Lignux? (Маркус Дж. Дэниэлс, gnu.misc.discuss, 7 июня 1996 г.)
- ^ a b c Почему программное обеспечение с открытым исходным кодом / бесплатное программное обеспечение (OSS / FS, FLOSS или FOSS)? Посмотрите на числа !: Forking. Архивировано 5 апреля 2006 г. в Wayback Machine (Дэвид А. Уиллер)
- ^ Столмен, Ричард. «Определение свободного программного обеспечения» . Фонд свободного программного обеспечения. Архивировано 14 октября 2013 года . Проверено 15 октября 2013 года .
- ^ «Определение открытого исходного кода» . Инициатива открытого исходного кода. Архивировано 15 октября 2013 года . Проверено 15 октября 2013 года .
- ^ Раймонд, Эрик С. (15 августа 2002 г.). «Беспорядочная теория, пуританская практика» . Архивировано 6 октября 2006 года.
- ^ Forked архивации 8 ноября 2011 в Wayback Machine ( Жаргон File ), сначала добавляют v4.2.2 архивной 14 января 2012в Wayback Machine , 20 августа 2000)
- ^ напримерУиллис, Натан (15 января 2015 г.). «Форк« открытого управления »Node.js» . LWN.net . Архивировано 21 апреля 2015 года . Проверено 15 января 2015 года .
Форки - естественная часть открытой модели разработки - настолько, что GitHub, как известно, размещает кнопку «создать собственную копию» почти на каждой странице.
Смотрите также Найман, Линус (2015). Понимание форкования кода в программном обеспечении с открытым исходным кодом (доктор философии). Ханкенская школа экономики. п. 57. hdl : 10138/153135 .Если раньше у практикующих были довольно узкие определения вилки, то теперь этот термин, похоже, используется гораздо шире. Действия, которые традиционно назывались ветвью, новым дистрибутивом, фрагментацией кода, псевдо-форком и т. Д., Теперь могут называться некоторыми разработчиками форками. Это, похоже, немаловажно из-за широкого определения и использования термина вилка в GitHub.
- ^ Разветвленный проект, где начинаются мои номера версий? Архивировано 26 августа 2011 года в Wayback Machine.
- ↑ Страх перед разветвлением. Архивировано 17 декабря 2012 г. в Wayback Machine - эссе о разветвлении впроектах свободного программного обеспечения , Рик Моен.
- ↑ EnterpriseDB, архивная копия от 13 ноября 2006 г. на Wayback Machine.
- ↑ Fujitsu Supported PostgreSQL. Архивировано 20 августа 2006 г. на Wayback Machine.
- ^ Netezza архивации 13 ноября 2006 в Wayback Machine
Внешние ссылки
- Право на вилку в Meatball Wiki
- Доктор философии, изучающий разветвление: (Найман, 2015) «Понимание разветвления кода в программном обеспечении с открытым исходным кодом - изучение разветвления кода, его влияние на ПО с открытым исходным кодом, а также то, как оно рассматривается и практикуется разработчиками»