Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
График разветвления дистрибутивов Linux .

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

  1. Смерть вилки. Это, безусловно, самый распространенный случай. Объявить форк легко, но приложить немало усилий для продолжения самостоятельной разработки и поддержки.
  2. Повторное слияние вилки ( например , egcs становится «благословенной» новой версией gcc .)
  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 .

Создание проприетарного программного обеспечения [ править ]

На проприетарное программное обеспечение авторские права обычно принадлежат организации-работодателю, а не отдельным разработчикам программного обеспечения. Таким образом, проприетарный код чаще всего разветвляется, когда владельцу необходимо разработать две или более версий, таких как оконная версия и версия для командной строки , или версии для разных операционных систем, например текстовый процессор для компьютеров, совместимых с 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] ), поддерживает PostgreSQL с их собственной системой хранения ESM [18] ипроприетарную высокомасштабируемую производную PostgreSQL отNetezza [19] . Некоторые из этих поставщиков вносят изменения в проект сообщества, в то время как некоторые сохраняют свои изменения как свои собственные конкурентные преимущества.

См. Также [ править ]

  • Список программных форков
  • Исходный порт
  • Downstream (разработка программного обеспечения)
  • Групповое принятие решений
  • Модульное программирование
    • Моддинг
  • Программное обеспечение на заказ
  • Персонализация
  • Эффективность команды
    • Повторяющийся код
  • ROM Взлом

Ссылки [ править ]

  1. ^ «Раскол» с его коннотациями является обычным употреблением, например, «раскол 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 сентября 2010 г.), «Великий программный раскол». Архивировано 6 января 2012 г. на Wayback Machine ( Глин Муди , Linux Journal , 28 сентября 2006 г.), «Разветвлять или не разветвлять: уроки из Ubuntu и Debian ». Архивировано 26 февраля 2012 г. на Wayback Machine ( Бенджамин Мако Хилл , 2005 г.).
  2. Запись 'fork' в онлайн-этимологическом словаре. Архивировано 25 мая 2012 г. на Wayback Machine.
  3. ^ «Термин fork происходит от стандарта POSIX для операционных систем: системный вызов, используемый для того, чтобы процесс генерировал свою копию, называется fork ()». Роблес, Грегорио; Гонсалес-Бараона, Хесус М. (2012). Комплексное исследование программных форков: даты, причины и результаты (PDF) . OSS 2012 Восьмая международная конференция по системам с открытым исходным кодом. DOI : 10.1007 / 978-3-642-33442-9_1 . Архивировано 2 декабря 2013 года (PDF) . Проверено 20 октября 2012 года .
  4. ^ Allman, Эрик. «Введение в систему контроля исходного кода». Архивировано 6 ноября 2014 года в проекте Wayback Machine Project Ingres, Калифорнийский университет в Беркли, 1980 год.
  5. ^ Может кто-нибудь раскошелиться на "чистую философию"? ( Джон Гилмор , net.misc, 18 января 1983 г.)
  6. ^ Разрушение - хорошо или плохо? (Рассел Нельсон, gnu.misc.discuss, 1 октября 1993 г.)
  7. ^ Re: Эй, Франц: 32K Windows ОТСТОЙ !!!!! (Билл Дубюк, cu.cs.macl.info, 21 сентября 1995 г.)
  8. ^ Lignux? (Маркус Дж. Дэниэлс, gnu.misc.discuss, 7 июня 1996 г.)
  9. ^ a b c Почему программное обеспечение с открытым исходным кодом / бесплатное программное обеспечение (OSS / FS, FLOSS или FOSS)? Посмотрите на числа !: Forking. Архивировано 5 апреля 2006 г. в Wayback Machine (Дэвид А. Уиллер)
  10. ^ Столмен, Ричард. «Определение свободного программного обеспечения» . Фонд свободного программного обеспечения. Архивировано 14 октября 2013 года . Проверено 15 октября 2013 года .
  11. ^ «Определение открытого исходного кода» . Инициатива открытого исходного кода. Архивировано 15 октября 2013 года . Проверено 15 октября 2013 года .
  12. Перейти ↑ Raymond, Eric S. (15 августа 2002 г.). «Беспорядочная теория, пуританская практика» . Архивировано 6 октября 2006 года.
  13. ^ Forked архивации 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). Понимание форкования кода в программном обеспечении с открытым исходным кодом (Ph.D.). Школа экономики Ханкена. п. 57. hdl : 10138/153135 . Если раньше у практиков были довольно узкие определения вилки, то теперь этот термин, похоже, используется гораздо шире. Действия, которые традиционно назывались ветвью, новым дистрибутивом, фрагментацией кода, псевдо-форком и т. Д., Теперь могут называться некоторыми разработчиками форками. Похоже, это немаловажно из-за широкого определения и использования термина вилка в GitHub.
  15. ^ Разветвленный проект, где начинаются мои номера версий? Архивировано 26 августа 2011 года в Wayback Machine.
  16. Страх перед разветвлением. Архивировано 17 декабря 2012 г. в Wayback Machine - эссе о разветвлении впроектах свободного программного обеспечения , автор Рик Моен.
  17. EnterpriseDB, архивная копия от 13 ноября 2006 г. на Wayback Machine.
  18. Fujitsu Supported PostgreSQL. Архивировано 20 августа 2006 г. на Wayback Machine.
  19. ^ Netezza архивации 13 ноября 2006 в Wayback Machine

Внешние ссылки [ править ]

  • Право на вилку в Meatball Wiki
  • Доктор философии, изучающий разветвление: (Найман, 2015) «Понимание разветвления кода в ПО с открытым исходным кодом - изучение разветвления кода, его влияние на ПО с открытым исходным кодом, а также то, как его рассматривают и применяют разработчики»