Jump to content

Форк (разработка программного обеспечения)

Временная диаграмма, показывающая эволюцию дистрибутивов Linux , где каждое разделение на диаграмме называется «вилкой».

В разработке программного обеспечения разветвление проекта происходит, когда разработчики берут копию исходного кода из одного пакета программного обеспечения и начинают над ним независимую разработку, создавая отдельную и отдельную часть программного обеспечения. [ нужен пример ] Этот термин часто подразумевает не просто ветку разработки , но и раскол в сообществе разработчиков; как таковое, это форма раскола . [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] четыре возможных результата форка с примерами:

  1. Смерть вилки. Это, безусловно, самый распространенный случай. Легко объявить форк, но приложить значительные усилия для продолжения независимой разработки и поддержки.
  2. Повторное слияние ответвления ( например , egcs становится «благословенным» как новая версия коллекции компиляторов GNU ).
  3. Смерть оригинала ( например, успех сервера X.Org и смерть XFree86 ).
  4. Успешное ветвление, обычно с дифференциацией ( например , 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-войны .

См. также

[ редактировать ]
  1. ^ «Раскол» с его коннотациями - широко распространенное употребление, например
  2. Запись «вилка» в онлайн-словаре этимологии. Архивировано 25 мая 2012 г. в Wayback Machine.
  3. ^ «Термин fork заимствован из стандарта POSIX для операционных систем: системный вызов, используемый для того, чтобы процесс генерировал свою копию, называется fork()». Роблес, Грегорио; Гонсалес-Бараона, Хесус М. (2012). Комплексное исследование форков программного обеспечения: даты, причины и результаты (PDF) . OSS 2012 Восьмая международная конференция по системам с открытым исходным кодом. дои : 10.1007/978-3-642-33442-9_1 . Архивировано (PDF) из оригинала 2 декабря 2013 года . Проверено 20 октября 2012 г.
  4. ^ Оллман, Эрик. «Введение в систему контроля исходного кода». Архивировано 6 ноября 2014 года в проекте Wayback Machine Project Ingres, Калифорнийский университет в Беркли, 1980 год.
  5. ^ Может ли кто-нибудь создать «net.philosophy»? ( Джон Гилмор , net.misc, 18 января 1983 г.)
  6. ^ Разрушение — хорошо или плохо? (Рассел Нельсон, gnu.misc.discuss, 1 октября 1993 г.)
  7. ^ Re: Эй, Франц: 32K Windows - отстой!!!!! (Билл Дюбук, cu.cs.macl.info, 21 сентября 1995 г.)
  8. ^ Линукс? (Маркус Дж. Дэниэлс, gnu.misc.discuss, 7 июня 1996 г.)
  9. ^ Jump up to: а б с Почему программное обеспечение с открытым исходным кодом/свободное программное обеспечение (OSS/FS, FLOSS или FOSS)? Посмотрите на цифры!: Разветвление. Архивировано 5 апреля 2006 г. в Wayback Machine (Дэвид А. Уилер).
  10. ^ Столлман, Ричард. «Определение свободного программного обеспечения» . Фонд свободного программного обеспечения. Архивировано из оригинала 14 октября 2013 года . Проверено 15 октября 2013 г.
  11. ^ «Определение открытого исходного кода» . Инициатива открытого исходного кода. 7 июля 2006 г. Архивировано из оригинала 15 октября 2013 г. . Проверено 15 октября 2013 г.
  12. ^ Раймонд, Эрик С. (15 августа 2002 г.). «Теория беспорядочной связи, пуританская практика» . catb.org . Архивировано из оригинала 6 октября 2006 года.
  13. Раздвоение . Архивировано 8 ноября 2011 г. на Wayback Machine ( Жаргонный файл ), впервые добавлено в v4.2.2. Архивировано 14 января 2012 г. на Wayback Machine , 20 августа 2000 г.)
  14. ^ например Уиллис, Натан (15 января 2015 г.). «Разветвление Node.js с «открытым управлением»» . LWN.net . Архивировано из оригинала 21 апреля 2015 года . Проверено 15 января 2015 г. Форки являются естественной частью модели открытой разработки — настолько, что GitHub, как известно, размещает кнопку «разветвить свою собственную копию» почти на каждой странице. См. также Найман, Линус (2015). Понимание разветвления кода в программном обеспечении с открытым исходным кодом (доктор философии). Ханкенская школа экономики. п. 57. HDL : 10138/153135 . Раньше практики имели довольно узкое определение вилки, но теперь этот термин, по-видимому, используется гораздо шире. Действия, которые традиционно назывались ветвью, новым дистрибутивом, фрагментацией кода, псевдо-форком и т. д., теперь некоторые разработчики могут называть ветвями. Похоже, что это в немалой степени связано с широким определением и использованием GitHub термина «форк».
  15. ^ Создал проект, с чего начинаются номера версий? Архивировано 26 августа 2011 года в Wayback Machine.
  16. ^ EnterpriseDB. Архивировано 13 ноября 2006 г. на Wayback Machine.
  17. ^ Fujitsu поддерживает PostgreSQL. Архивировано 20 августа 2006 г. на Wayback Machine.
  18. Netezza . Архивировано 13 ноября 2006 г. в Wayback Machine.
  19. ^ Страх перед разветвлением. Архивировано 17 декабря 2012 года в Wayback Machine - эссе бесплатного программного обеспечения . Рика Моэна о разветвлении проектов
[ редактировать ]
  • Право на вилку в Meatball Wiki
  • Доктор философии, исследующий разветвление: (Найман, 2015). Архивировано 16 июля 2023 г. на Wayback Machine «Понимание разветвления кода в программном обеспечении с открытым исходным кодом - исследование разветвления кода, его влияние на программное обеспечение с открытым исходным кодом, а также то, как оно рассматривается и практикуется разработчиками».
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4664e0c0949a77e28177da4763b75e6d__1718672700
URL1:https://arc.ask3.ru/arc/aa/46/6d/4664e0c0949a77e28177da4763b75e6d.html
Заголовок, (Title) документа по адресу, URL1:
Fork (software development) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)