stringtranslate.com

Форк (разработка ПО)

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

В программной инженерии форк проекта происходит, когда разработчики берут копию исходного кода из одного программного пакета и начинают независимую разработку на его основе, создавая отдельную и отдельную часть программного обеспечения. [ необходим пример ] Термин часто подразумевает не только ветвь разработки , но и раскол в сообществе разработчиков; как таковой, это форма раскола . [1] Основаниями для форка являются различные предпочтения пользователей и застой или прекращение разработки исходного программного обеспечения.

Бесплатное и открытое программное обеспечение — это то, что по определению может быть ответвлено от исходной команды разработчиков без предварительного разрешения и без нарушения закона об авторских правах . Однако лицензированные ответвления проприетарного программного обеспечения ( например, Unix ) также случаются.

Этимология

Слово «fork» использовалось в значении «разделяться на ветви, идти разными путями» еще в XIV веке. [2] В программной среде это слово вызывает системный вызов fork , который заставляет запущенный процесс разделяться на две (почти) идентичные копии, которые (обычно) расходятся для выполнения различных задач. [3]

В контексте разработки программного обеспечения термин «fork» использовался в значении создания « ветви » контроля версий Эриком Оллманом еще в 1980 году в контексте Системы контроля исходного кода : [4]

Создание ветки «ответвляет» версию программы.

Этот термин использовался в Usenet к 1983 году для обозначения процесса создания подгруппы, в которую можно было переносить темы для обсуждения. [5]

Неизвестно, чтобы слово «fork» использовалось в смысле раскола сообщества во время зарождения Lucid Emacs (теперь XEmacs ) (1991) или Berkeley Software Distributions (BSDs) (1993–1994); Расс Нельсон использовал термин «shattering» для такого рода форка в 1993 году, приписывая его Джону Гилмору . [6] Однако слово «fork» использовалось в нынешнем смысле к 1995 году для описания раскола XEmacs, [7] и было понятным использованием в проекте GNU к 1996 году. [8]

Форкинг свободного и открытого программного обеспечения

Бесплатное программное обеспечение с открытым исходным кодом может быть законно разделено без предварительного одобрения тех, кто в настоящее время разрабатывает, управляет или распространяет программное обеспечение, согласно как Определению свободного программного обеспечения , так и Определению открытого исходного кода : [9]

Свобода распространять копии ваших измененных версий среди других (свобода 3). Делая это, вы можете дать всему сообществу возможность извлечь выгоду из ваших изменений. Доступ к исходному коду является предварительным условием для этого.

3. Производные работы: Лицензия должна разрешать внесение изменений и создание производных работ, а также их распространение на тех же условиях, что и лицензия на исходное программное обеспечение.

В свободном программном обеспечении форки часто возникают из-за раскола из-за разных целей или личных столкновений. При форке обе стороны принимают почти идентичные кодовые базы, но обычно только большая группа или тот, кто контролирует веб-сайт, сохраняет полное оригинальное имя и связанное с ним сообщество пользователей. Таким образом, с форком связано снижение репутации. [9] Отношения между различными командами могут быть как сердечными, так и очень горькими. С другой стороны, дружественный форк или софт-форк — это форк, который не намерен конкурировать, но хочет в конечном итоге слиться с оригиналом.

Эрик С. Рэймонд в своем эссе Homesteading the Noosphere [12] заявил, что «самой важной характеристикой форка является то, что он порождает конкурирующие проекты, которые впоследствии не могут обмениваться кодом, разделяя потенциальное сообщество разработчиков». Он отмечает в Jargon File : [13]

Форкинг считается Плохим Делом — не только потому, что он подразумевает много напрасных усилий в будущем, но и потому, что форки, как правило, сопровождаются большой борьбой и желчью между группами-преемниками по вопросам легитимности, преемственности и направления дизайна. Существует серьезное социальное давление против форкинга. В результате крупные форки (такие как раскол Gnu-Emacs / XEmacs , разделение группы 386BSD на три дочерних проекта и недолговечный раскол GCC / EGCS) достаточно редки, чтобы их помнят по отдельности в хакерском фольклоре.

Дэвид А. Уиллер отмечает [9] четыре возможных результата разветвления с примерами:

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

Инструменты распределенного управления версиями (DVCS) популяризировали менее эмоциональное использование термина «форк», размывая различие с «ветвью». [14] С DVCS, такими как Mercurial или Git , обычным способом внести вклад в проект является сначала создание личной ветви репозитория, независимой от основного репозитория, а затем попытка интегрировать ваши изменения с ней. Такие сайты, как GitHub , Bitbucket и Launchpad, предоставляют бесплатный хостинг DVCS, явно поддерживающий независимые ветви, так что технические, социальные и финансовые барьеры для разветвления репозитория исходного кода значительно снижаются, и GitHub использует «форк» в качестве своего термина для этого метода внесения вклада в проект.

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

Форкинг фирменного программного обеспечения

В проприетарном программном обеспечении авторские права обычно принадлежат нанимателю, а не отдельным разработчикам программного обеспечения. Таким образом, проприетарный код чаще всего разветвляется, когда владельцу необходимо разработать две или более версий, например, оконную версию и версию командной строки , или версии для разных операционных систем, например, текстовый процессор для совместимых с IBM PC машин и компьютеров Macintosh . Как правило, такие внутренние разветвления будут сосредоточены на том, чтобы иметь одинаковый внешний вид, ощущение, формат данных и поведение между платформами, чтобы пользователь, знакомый с одной из них, также мог быть продуктивным или делиться документами, созданными на другой. Это почти всегда экономическое решение для создания большей доли рынка и, таким образом, окупить связанные с этим дополнительные затраты на разработку, созданные разветвлением.

Известным проприетарным ответвлением не такого рода являются многочисленные разновидности проприетарного Unix — почти все они произошли от AT&T Unix по лицензии и все называются «Unix», но все более несовместимы друг с другом. [19] См. Unix wars .

Смотрите также

Ссылки

  1. ^ «Раскол» с его коннотациями является общепринятым употреблением, например
    • "раскол Lemacs/FSFmacs" Архивировано 30 ноября 2009 г. на Wayback Machine ( Джейми Завински , 2000 г.)
    • «Behind the KOffice split» Архивировано 6 июля 2013 г. на Wayback Machine (Джо Брокмейер, Linux Weekly News , 2010-12-14)
    • «Передача авторских прав – однажды укушенный, дважды застенчивый» Архивировано 30 марта 2012 г. в Wayback Machine (Ричард Хиллсли, H-Online , 2010-08-06)
    • «Разветвление — это функция» Архивировано 29 февраля 2012 г. на Wayback Machine ( Anil Dash , 2010-09-10)
    • «Великий раскол программного обеспечения» Архивировано 6 января 2012 г. на Wayback Machine ( Глин Муди , Linux Journal , 28.09.2006)
    • «Fork или нет: уроки 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 . Архивировано (PDF) из оригинала 2 декабря 2013 г. . Получено 20 октября 2012 г. .
  4. Оллман, Эрик. «Введение в систему управления исходным кодом». Архивировано 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. ^ abc Почему программное обеспечение с открытым исходным кодом / свободное программное обеспечение (OSS/FS, FLOSS или FOSS)? Посмотрите на цифры!: Форкинг Архивировано 5 апреля 2006 г. на Wayback Machine (Дэвид А. Уилер)
  10. ^ Столлман, Ричард. «Определение свободного программного обеспечения». Free Software Foundation. Архивировано из оригинала 14 октября 2013 г. Получено 15 октября 2013 г.
  11. ^ "The Open Source Definition". The Open Source Initiative. 7 июля 2006 г. Архивировано из оригинала 15 октября 2013 г. Получено 15 октября 2013 г.
  12. ^ Рэймонд, Эрик С. (15 августа 2002 г.). "Теория неразборчивых половых связей, пуританская практика". catb.org . Архивировано из оригинала 6 октября 2006 г.
  13. Fork Архивировано 8 ноября 2011 г. на Wayback Machine ( Jargon File ), впервые добавлено в v4.2.2 Архивировано 14 января 2012 г. на Wayback Machine , 20 августа 2000 г.)
  14. ^ например , Уиллис, Натан (15 января 2015 г.). "Открытое управление" форк Node.js". LWN.net . Архивировано из оригинала 21 апреля 2015 г. Получено 15 января 2015 г. Форки являются естественной частью открытой модели разработки — настолько, что GitHub, как известно, размещает кнопку "создай свою копию" почти на каждой странице.См. также Nyman, Linus (2015). Understanding Code Forking in Open Source Software (PhD). Hanken School of Economics. стр. 57. hdl :10138/153135. Там, где у практиков ранее были довольно узкие определения fork, [...] этот термин теперь, по-видимому, используется гораздо шире. Действия, которые традиционно назывались бы веткой, новым распределением, фрагментацией кода, псевдо-fork и т. д., теперь могут называться fork некоторыми разработчиками. Это, по-видимому, не в последнюю очередь связано с широким определением и использованием термина fork на GitHub.
  15. ^ Форк проекта, где начинаются мои номера версий? Архивировано 26 августа 2011 на Wayback Machine
  16. EnterpriseDB Архивировано 13 ноября 2006 г. на Wayback Machine
  17. ^ Fujitsu Supported PostgreSQL Архивировано 20 августа 2006 г. на Wayback Machine
  18. Netezza Архивировано 13 ноября 2006 г. на Wayback Machine
  19. ^ Страх форка Архивировано 17 декабря 2012 г. в Wayback Machine – Эссе о форках в проектах свободного программного обеспечения , Рик Моэн

Внешние ссылки