Форк (разработка программного обеспечения)
В разработке программного обеспечения разветвление проекта происходит, когда разработчики берут копию исходного кода из одного пакета программного обеспечения и начинают над ним независимую разработку, создавая отдельную и отдельную часть программного обеспечения. [ нужен пример ] Этот термин часто подразумевает не просто ветку разработки , но и раскол в сообществе разработчиков; как таковое, это форма раскола . [1] Основаниями для разветвления являются различные предпочтения пользователей, а также застой или прекращение разработки исходного программного обеспечения.
Бесплатное программное обеспечение с открытым исходным кодом — это то, что по определению может быть создано первоначальной командой разработчиков без предварительного разрешения и без нарушения закона об авторских правах . Однако встречаются и лицензионные форки проприетарного программного обеспечения ( например , Unix ).
Этимология
[ редактировать ]Слово «вилка» использовалось в значении «разделиться на ветви, пойти разными путями» еще в 14 веке. [2] В программной среде это слово вызывает системный вызов fork , который заставляет работающий процесс разделиться на две (почти) идентичные копии, которые (обычно) расходятся для выполнения разных задач. [3]
В контексте разработки программного обеспечения «вилка» использовалась в смысле создания « ветви » контроля версий Эриком Оллманом еще в 1980 году в контексте системы контроля исходного кода : [4]
Создание ветки "отделяет" версию программы.
К 1983 году этот термин использовался в Usenet для обозначения процесса создания подгруппы для перемещения тем для обсуждения. [5]
Неизвестно, чтобы слово «вилка» использовалось в смысле раскола сообщества во время зарождения Lucid Emacs (ныне XEmacs ) (1991) или Berkeley Software Distributions (BSD) (1993–1994); Расс Нельсон использовал термин «разрушение» для обозначения такого типа вилки в 1993 году, приписав его Джону Гилмору . [6] Однако к 1995 году слово «вилка» использовалось в нынешнем смысле для описания разделения XEmacs. [7] и к 1996 году это было понятное использование в проекте GNU . [8]
Форкирование бесплатного программного обеспечения с открытым исходным кодом
[ редактировать ]Бесплатное программное обеспечение и программное обеспечение с открытым исходным кодом может быть юридически разветвлено без предварительного одобрения тех, кто в настоящее время разрабатывает, управляет или распространяет программное обеспечение как в соответствии с «Определением свободного программного обеспечения» , так и с «Определением открытого исходного кода» : [9]
Свобода распространять копии ваших модифицированных версий среди других (свобода 3). Сделав это, вы дадите всему сообществу возможность извлечь выгоду из ваших изменений. Доступ к исходному коду является предварительным условием для этого.
3. Производные работы. Лицензия должна разрешать модификации и производные работы, а также разрешать их распространение на тех же условиях, что и лицензия на исходное программное обеспечение.
В свободном программном обеспечении развилки часто возникают в результате раскола по поводу разных целей или личных конфликтов. В форке обе стороны предполагают почти идентичные базы кода, но обычно только большая группа или тот, кто контролирует веб-сайт, сохраняет полное исходное имя и связанное с ним сообщество пользователей. Таким образом, существует штраф за репутацию, связанный с разветвлением. [9] Отношения между разными командами могут быть теплыми или очень ожесточенными. С другой стороны, дружественный форк или софт-форк — это форк, который не намерен конкурировать, но хочет в конечном итоге слиться с оригиналом.
Эрик С. Рэймонд в своем эссе «Усадьба ноосферы » [12] заявил, что «самой важной характеристикой форка является то, что он порождает конкурирующие проекты, которые не могут позже обмениваться кодом, что разделяет потенциальное сообщество разработчиков». Он отмечает в «Жаргонном файле» : [13]
Форкирование считается плохой вещью — не только потому, что оно подразумевает много напрасных усилий в будущем, но и потому, что форки, как правило, сопровождаются сильными раздорами и враждебностью между группами-преемниками по вопросам легитимности, преемственности и направления разработки. . Существует серьезное социальное давление против форка. В результате крупные форки (такие как разделение Gnu-Emacs / XEmacs , разделение группы 386BSD на три дочерних проекта и недолговечное разделение GCC/EGCS) достаточно редки, поэтому в хакерском фольклоре их помнят по отдельности.
Дэвид А. Уиллер отмечает [9] четыре возможных результата форка с примерами:
- Смерть вилки. Это, безусловно, самый распространенный случай. Легко объявить форк, но приложить значительные усилия для продолжения независимой разработки и поддержки.
- Повторное слияние ответвления ( например , egcs становится «благословенным» как новая версия коллекции компиляторов GNU ).
- Смерть оригинала ( например, успех сервера 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 .
Лицензии BSD позволяют форкам стать проприетарным программным обеспечением, а сторонники авторского лева говорят, что коммерческие стимулы, таким образом, делают частную собственность практически неизбежной. (Однако лицензии с авторским левом можно обойти с помощью двойного лицензирования с предоставлением права собственности в форме Лицензионного соглашения с участником .) Примеры включают macOS (на основе проприетарной NeXTSTEP и FreeBSD с открытым исходным кодом ), Cedega и CrossOver (собственные форки Wine , хотя CrossOver отслеживает Wine и вносит значительный вклад), EnterpriseDB (вилка PostgreSQL , добавляющая функции совместимости с Oracle). [16] ), Поддерживается PostgreSQL с их собственной системой хранения ESM, [17] и Нетеззы [18] собственная высокомасштабируемая производная PostgreSQL. Некоторые из этих поставщиков вносят изменения в проект сообщества, а некоторые сохраняют свои изменения как собственные конкурентные преимущества.
Форк проприетарного программного обеспечения
[ редактировать ]На несвободное программное обеспечение авторские права обычно принадлежат организации-работодателю, а не отдельным разработчикам программного обеспечения. Таким образом, проприетарный код чаще всего разветвляется, когда владельцу необходимо разработать две или более версии, такие как оконная версия и версия для командной строки , или версии для разных операционных систем, таких как текстовый процессор для компьютеров, совместимых с IBM PC, и компьютеров Macintosh . Как правило, такие внутренние развилки будут сосредоточены на том, чтобы иметь одинаковый внешний вид, формат данных и поведение на разных платформах, чтобы пользователь, знакомый с одной, также мог работать продуктивно или обмениваться документами, созданными на другой. Почти всегда это экономическое решение, направленное на увеличение доли рынка и, таким образом, окупить связанные с этим дополнительные затраты на разработку, возникшие в результате форка.
Примечательным проприетарным ответвлением не такого рода являются многочисленные разновидности проприетарных Unix — почти все они произошли от AT&T Unix по лицензии и все называются «Unix», но все более взаимно несовместимы. [19] См . Unix-войны .
См. также
[ редактировать ]- Список форков программного обеспечения
- Исходный порт
- Даунстрим (разработка программного обеспечения)
- Групповое принятие решений
- Модульное программирование
- Пользовательское программное обеспечение
- Персонализация
- Эффективность команды
- Взлом ПЗУ
Ссылки
[ редактировать ]- ^ «Раскол» с его коннотациями - широко распространенное употребление, например
- «Раскол Лемаков и FSFmacs». Архивировано 30 ноября 2009 года в Wayback Machine ( Джейми Завински , 2000).
- «За расколом KOffice». Архивировано 6 июля 2013 г. в Wayback Machine (Джо Брокмайер, Linux Weekly News , 14 декабря 2010 г.).
- «Передача авторских прав – однажды укушенный, дважды застенчивый». Архивировано 30 марта 2012 г. в Wayback Machine (Ричард Хиллесли, H-Online , 6 августа 2010 г.).
- «Разветвление - это особенность». Архивировано 29 февраля 2012 г. на Wayback Machine ( Анил Дэш , 10 сентября 2010 г.).
- «Великий раскол программного обеспечения». Архивировано 6 января 2012 г. в Wayback Machine ( Глин Муди , Linux Journal , 28 сентября 2006 г.).
- «Разветвлять или не разветвлять: уроки Ubuntu и Debian». Архивировано 26 февраля 2012 года в Wayback Machine ( Бенджамин Мако Хилл , 2005).
- ↑ Запись «вилка» в онлайн-словаре этимологии. Архивировано 25 мая 2012 г. в Wayback Machine.
- ^ «Термин fork заимствован из стандарта POSIX для операционных систем: системный вызов, используемый для того, чтобы процесс генерировал свою копию, называется fork()». Роблес, Грегорио; Гонсалес-Бараона, Хесус М. (2012). Комплексное исследование форков программного обеспечения: даты, причины и результаты (PDF) . OSS 2012 Восьмая международная конференция по системам с открытым исходным кодом. дои : 10.1007/978-3-642-33442-9_1 . Архивировано (PDF) из оригинала 2 декабря 2013 года . Проверено 20 октября 2012 г.
- ^ Оллман, Эрик. «Введение в систему контроля исходного кода». Архивировано 6 ноября 2014 года в проекте Wayback Machine Project Ingres, Калифорнийский университет в Беркли, 1980 год.
- ^ Может ли кто-нибудь создать «net.philosophy»? ( Джон Гилмор , net.misc, 18 января 1983 г.)
- ^ Разрушение — хорошо или плохо? (Рассел Нельсон, gnu.misc.discuss, 1 октября 1993 г.)
- ^ Re: Эй, Франц: 32K Windows - отстой!!!!! (Билл Дюбук, cu.cs.macl.info, 21 сентября 1995 г.)
- ^ Линукс? (Маркус Дж. Дэниэлс, gnu.misc.discuss, 7 июня 1996 г.)
- ^ Jump up to: а б с Почему программное обеспечение с открытым исходным кодом/свободное программное обеспечение (OSS/FS, FLOSS или FOSS)? Посмотрите на цифры!: Разветвление. Архивировано 5 апреля 2006 г. в Wayback Machine (Дэвид А. Уилер).
- ^ Столлман, Ричард. «Определение свободного программного обеспечения» . Фонд свободного программного обеспечения. Архивировано из оригинала 14 октября 2013 года . Проверено 15 октября 2013 г.
- ^ «Определение открытого исходного кода» . Инициатива открытого исходного кода. 7 июля 2006 г. Архивировано из оригинала 15 октября 2013 г. . Проверено 15 октября 2013 г.
- ^ Раймонд, Эрик С. (15 августа 2002 г.). «Теория беспорядочной связи, пуританская практика» . catb.org . Архивировано из оригинала 6 октября 2006 года.
- ↑ Раздвоение . Архивировано 8 ноября 2011 г. на Wayback Machine ( Жаргонный файл ), впервые добавлено в 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.
- ^ EnterpriseDB. Архивировано 13 ноября 2006 г. на Wayback Machine.
- ^ Fujitsu поддерживает PostgreSQL. Архивировано 20 августа 2006 г. на Wayback Machine.
- ↑ Netezza . Архивировано 13 ноября 2006 г. в Wayback Machine.
- ^ Страх перед разветвлением. Архивировано 17 декабря 2012 года в Wayback Machine - эссе бесплатного программного обеспечения . Рика Моэна о разветвлении проектов
Внешние ссылки
[ редактировать ]- Право на вилку в Meatball Wiki
- Доктор философии, исследующий разветвление: (Найман, 2015). Архивировано 16 июля 2023 г. на Wayback Machine «Понимание разветвления кода в программном обеспечении с открытым исходным кодом - исследование разветвления кода, его влияние на программное обеспечение с открытым исходным кодом, а также то, как оно рассматривается и практикуется разработчиками».