포크(소프트웨어 개발)

Fork (software development)
Linux 배포에서 forked한 방법에 대한 시간 표시줄 차트

소프트웨어 엔지니어링에서 프로젝트 포크는 개발자들이 하나의 소프트웨어 패키지에서 소스 코드의 복사본을 가져와서 그것에 대해 독립적 개발을 시작할 때 발생하며, 구별되고 별도의 소프트웨어를 만든다.이 용어는 종종 단순한 개발 지부뿐만 아니라 개발자 사회의 분열을 암시한다. 따라서 그것은 분열의 한 형태다.[1]포킹에 대한 근거는 사용자 선호도가 다양하고 원래 소프트웨어의 개발이 정체되거나 중단되는 것이다.

무료오픈 소스 소프트웨어는, 정의상, 사전 허가 없이, 저작권법을 위반하지 않고, 원래의 개발팀으로부터 허가를 받을 수 있는 소프트웨어다.그러나 독점 소프트웨어(예: Unix)의 라이센스 포크도 발생한다.

어원

"포크"라는 단어는 14세기 초에 "가지로 나누기 위해, 다른 길로 가라"라는 뜻으로 사용되어 왔다.[2]소프트웨어 환경에서 이 단어는 포크 시스템 호출을 불러 일으키며, 실행 프로세스가 (일반적으로) 다른 작업을 수행하기 위해 분리되는 거의 동일한 두 개의 복사본으로 분리된다.[3]

소프트웨어 개발의 맥락에서, "포크"는 SCCS의 맥락에서, Eric Allman에 의해 1980년 초에 개정 제어 "지점"을 만든다는 의미에서 사용되었다.[4]

분기를 만들면 프로그램의 버전이 "포크 해제"된다.

이 용어는 1983년까지 Usenet에서 논의의 주제를 옮겨갈 하위그룹을 만드는 과정을 위해 사용되었다.[5]

'포크'는 루시드 이맥스(1991년)나 BSD(1993~1994)의 기원 동안 공동체 분열의 의미로 사용되지 않았던 것으로 알려져 있지 않다. 러스 넬슨은 1993년 이런 종류의 포크를 '흔들림'이라는 용어를 사용했고, 이를 존 길모어의 탓으로 돌렸다.[6]그러나 XEmacs split을 설명하기 위해 1995년까지 현재의 의미로 "fork"가 사용되었고,[7] 1996년까지 GNU 프로젝트에서 이해되는 사용법이었다.[8]

무료 오픈 소스 소프트웨어 포킹

무료 및 공개 소스 소프트웨어는 "자유 소프트웨어 정의"와 "공개 소스 정의"[9] 양쪽에 따라 현재 소프트웨어를 개발, 관리 또는 배포하는 사용자의 사전 승인 없이 합법적으로 요청될 수 있다.

수정된 버전의 복사본을 다른 사용자에게 배포할 수 있는 자유(자유 3)이렇게 함으로써, 당신은 당신의 변화로부터 공동체 전체에 이익을 얻을 수 있는 기회를 줄 수 있다.소스 코드에 대한 접근은 이를 위한 전제조건이다.

3. 파생 작품:라이센스는 수정 및 파생 작업을 허용해야 하며, 원본 소프트웨어의 라이센스와 동일한 조건으로 배포되도록 허용해야 한다.

무료 소프트웨어에서 포크는 종종 다른 목표나 성격 충돌에 대한 분열에서 비롯된다.포크의 경우, 양 당사자는 거의 동일한 코드 베이스를 가정하지만, 일반적으로 더 큰 그룹 또는 웹 사이트를 통제하는 사용자만 완전한 원래 이름과 관련 사용자 커뮤니티를 유지하게 된다.따라서, 포킹과 관련된 평판 벌칙이 있다.[9]다른 팀들 간의 관계는 우호적이거나 매우 쓰라릴 수 있다.반면 친근한 포크소프트포크는 경쟁할 생각은 없지만 결국 원화와 합치기를 원하는 포크다.

Eric S. Raymond는 그의 에세이 NoSphere에서 "포크의 가장 중요한 특징은 나중에 코드를 교환할 수 없는 경쟁 프로젝트를 발생시켜 잠재적 개발자 커뮤니티를 분열시킨다는 것이다"라고 말했다.[12]그는 Jargon 파일에 다음과 같이 기록하고 있다.[13]

포킹은 '나쁜 일'로 여겨진다. 포크는 미래에 많은 노력을 낭비한다는 것을 의미하기 때문만이 아니라, 정당성, 계승, 디자인 방향 등의 문제를 놓고 후임 그룹들 사이에 많은 다툼과 신랄한 감정을 동반하는 경향이 있기 때문이다.포경에 대한 사회적 압력이 심각하다.그 결과 주요 포크(Gnu-Emacs/XEmacs 분할, 386BSD 그룹의 세 딸 프로젝트로의 핵분열, 단명 GCC/EGCS 분할 등)는 해커 민속에서 개별적으로 기억될 정도로 희귀하다.

데이비드 A.휠러는 포크의 네 가지 가능한 결과를 다음과[9] 같은 예와 함께 주목한다.

  1. 포크의 죽음.이것은 단연코 가장 흔한 경우다.포크를 선언하기는 쉽지만, 독자적인 개발과 지원을 계속하기 위한 상당한 노력이 필요하다.
  2. 포크의 재흡수(: gcc의 새로운 버전으로 "축복"되는 예)
  3. 원본(예: X)의 죽음.Org Server 성공 및 XFree86 사망)
  4. 성공적인 분기(예: OpenBSDNetBSD)

분산형 개정 제어(DVCS) 도구는 "포크"라는 용어의 덜 감정적인 사용을 대중화하여 "지점"[14]과의 구별을 흐리게 했다.Mercurial 또는 Git와 같은 DVCS를 사용하는 경우, 프로젝트에 기여하는 일반적인 방법은 먼저 주 리포지토리와 독립적으로 리포지토리의 개인 분기를 생성하고 나중에 변경 사항을 통합하는 것이다.GitHub, Bitbucket, Launchpad와 같은 사이트는 소스 코드 저장소에 대한 기술적, 사회적, 재정적 장벽이 대규모로 감소하는 등 독립된 지점을 명시적으로 지원하는 DVCS 호스팅을 무료로 제공하고 있으며, GitHub는 이 프로젝트 기여 방법에 대한 용어로서 "fork"를 사용한다.

포크는 원래 소프트웨어가 버전 3.0, 4.0 또는 5.0이었더라도 버전 번호를 0.1 또는 1.0에서 다시 시작하는 경우가 많다.단, 포크드 소프트웨어가 MySQL[15] 마리아DB 또는 OpenOffice.orgLibreOffice와 같이 원래 프로젝트의 드롭인 대체품으로 설계된 경우는 예외다.

Forking 독점 소프트웨어

독점 소프트웨어에서 저작권은 일반적으로 개별 소프트웨어 개발자가 아닌 고용주체가 소유한다.따라서 소유자가 IBM PC 호환 기계 및 Macintosh 컴퓨터용 워드프로세서 같은 운영 체제 버전과 같은 두 개 이상의 버전을 개발해야 할 때 독점 코드가 더 일반적으로 요구된다.일반적으로 이러한 내부 포크는 플랫폼 간에 동일한 모양, 느낌, 데이터 형식 및 동작을 갖는 데 집중하여 익숙한 사용자도 생산적이거나 다른 사용자에서 생성된 문서를 공유할 수 있다.이것은 거의 항상 더 큰 시장 점유율을 창출하고 따라서 포크에 의해 창출되는 관련 추가 개발 비용을 상환하기 위한 경제적 결정이다.

이런 종류의 것이 아닌 주목할 만한 독점적 포크는 다양한 종류의 독점적 유닉스인데, 거의 모든 것이 면허에 따른 AT&T 유닉스로부터 파생되었으며, 모두 "유닉스"라고 불렸지만, 점점 상호 양립할 수 없게 된다.[16]UNIX 전쟁참조하십시오.

BSD 라이선스는 포크들이 독점 소프트웨어가 되는 것을 허용하고 있으며, 코피레프트 지지자들은 상업적 인센티브가 따라서 거의 자기 소유를 불가피하게 만든다고 말한다.(단, 코피레프트 라이센스는 기부자 라이센스 계약 형태의 독점적 보조금을 통해 이중 라이센스를 통해 우회할 수 있다.)예로는 macOS(독점적인 NeXTSTEP 및 오픈 소스 FreeB 기반)가 있다.SD), CedegaCrossOver(CrossOver가 와인을 추적하고 상당히 기여함에도 불구하고 와인의 수용 포크), EnterpriseDB(Postgre의 포크)SQL, Oracle 호환성 기능[17] 추가), 지원되는 PostgreNetezza의 독점적인[19] ESM 스토리지 [18]시스템 및 Postgre의 확장성이 뛰어난 파생 모델이 포함된 SQLSQL. 이러한 벤더 중 일부는 커뮤니티 프로젝트에 변경 사항을 다시 기여하는 반면, 일부는 자신의 경쟁 우위로서 변경 사항을 유지한다.

참고 항목

참조

  1. ^ "Schism", with its connotations, is a common usage, e.g. "the Lemacs/FSFmacs schism" Archived 12 December 2009 at WebCite (Jamie Zawinski, 2000), "Behind the KOffice split" Archived 6 July 2013 at the Wayback Machine (Joe Brockmeier, Linux Weekly News, 2010-12-14), "Copyright assignment - once bitten, twice shy" Archived 30 March 2012 at the Wayback Machine (Richard Hillesley, H-Online, 2010-08-06), "Forking is a feature" Archived 29 February 2012 at the Wayback Machine (Anil Dash, 2010-09-10), "The Great Software Schism" Archived 6 January 2012 at the Wayback Machine (Glyn Moody, Linux Journal, 2006-09-28), "To Fork Or Not To Fork: Lessons From Ubuntu and Debian" Archived 26 February 2012 at 웨이백 머신 (Benjamin Mako Hill, 2005).
  2. ^ 온라인 어원 사전의 'fork' 항목 Wayback Machine에 2012년 5월 25일 보관
  3. ^ "포크라는 용어는 운영체제에 대한 POSIX 표준에서 유래했다: 프로세스가 자체 복사본을 생성하기 위해 사용하는 시스템 호출을 포크()라고 한다."Robles, Gregorio; González-Barahona, Jesús M. (2012). A Comprehensive Study of Software Forks: Dates, Reasons and Outcomes (PDF). OSS 2012 The Eighth International Conference on Open Source Systems. doi:10.1007/978-3-642-33442-9_1. Archived (PDF) from the original on 2 December 2013. Retrieved 20 October 2012.
  4. ^ 올맨, 에릭"소스코드 제어시스템 도입"1980년 11월 6일 버클리 캘리포니아 대학교의 웨이백 머신 프로젝트 잉그레스(Wayback Machine Project Ingres)에 보관.
  5. ^ 누군가 그물.철학에서 벗어날 수 있을까?(존 길모어, net.misc, 1983년 1월 18일)
  6. ^ 산산조각 - 좋든 나쁘든? (Russell Nelson, gnu.misc.disc.토론, 1993년 10월 1일)
  7. ^ 레: 헤이 프란츠: 32K 윈도 SUP!!!!!!! (빌 두부케, cu.cs.macl.info, 1995년 9월 21일)
  8. ^ 리뉴? (마커스 G. 다니엘스, gnu.misc.disc.disc.토론, 1996년 6월 7일)
  9. ^ a b c 오픈 소스 소프트웨어 / 무료 소프트웨어(OSS/FS, FLOS 또는 FOSS)를 선택해야 하는 이유 숫자 좀 봐! Forking 2006년 4월 5일 웨이백 머신(David A)에 보관.휠러)
  10. ^ Stallman, Richard. "The Free Software Definition". Free Software Foundation. Archived from the original on 14 October 2013. Retrieved 15 October 2013.
  11. ^ "The Open Source Definition". The Open Source Initiative. Archived from the original on 15 October 2013. Retrieved 15 October 2013.
  12. ^ Raymond, Eric S. (15 August 2002). "Promiscuous Theory, Puritan Practice". Archived from the original on 6 October 2006.
  13. ^ Wayback Machine(Jargon 파일)에서 2011년 11월 8일 포커드 아카이브됨, 처음 v4.2.2 Wayback Machine에서 2012년 1월 14일 아카이브됨, 2000년 8월 20일)
  14. ^ 예:윌리스, 네이쓴(1월 15일 2015년)."한"open governance"Node.js의 포크".LWN.net.214월 2015년에 원래에서 Archived.1월 15일 2015년 Retrieved.열린 개발 포크스 오브는 자연 일부 model—so이 GitHub라는 유명한 거의 모든 페이지에 있는"당신 자신의 복사본 사용료를 지불해야"버튼 plasters.또한 Nyman, 라이너스(2015년)을 참조하십시오.오픈 소스 소프트웨어(박사 학위)에서 코드 Forking을 이해하는 것.Hanken 학교 경제학 p. 57.hdl:10138/153135.[...]그 용어가 이제 훨씬 광범위하게 사용될 것으로 보인다 어디 의사들 이전에, 포크의 다소 좁은 정의 했다.전통적으로 등에 가지, 새 배포, 코드 단편화, pseudo-fork 불릴 행동은 현재 모두 forks 일부 개발 업체들에 의해 소집된다.이것은 중요하지 않은 부분에 넓은 정의와 용어 포크 GitHub에 의해 사용 때문인 것 같다.
  15. ^ 프로젝트에서 내 버전 번호는 어디에서 시작하는가?2011년 8월 26일 웨이백 머신보관
  16. ^ 웨이백 머신에 보관된 2012년 12월 17일 포킹 공포 - 무료 소프트웨어 프로젝트에서 포킹에 대한 Rick Moen의 에세이
  17. ^ 엔터프라이즈DB 2006년 11월 13일 웨이백 머신보관
  18. ^ Fujitsu 지원 PostgreSQL 2006년 8월 20일 웨이백 머신보관
  19. ^ Netezza 2006년 11월 13일 웨이백 머신보관

외부 링크

  • 미트볼 위키에서 갈림길
  • PhD 검사 forking : (Nyman, 2015) "Open Source Software의 Code Forking 이해 - Code Forking의 조사, 오픈 소스 소프트웨어에 미치는 영향, 개발자가 보고 실천하는 방식"