포크 (소프트웨어 개발)

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
포크된 리눅스 배포판 타임라인

포크(fork) 또는 소프트웨어 개발 포크(project fork)는 개발자들이 하나의 소프트웨어 소스 코드를 통째로 복사하여 독립적인 새로운 소프트웨어를 개발하는 것을 말한다. 오픈 소스 소프트웨어의 경우 소스 코드가 공개되어 있고, 통째로 복사하는 것이 허용되는 라이선스를 따르기 때문에, 원저작자의 허가 없이 포크를 통한 새로운 소프트웨어 개발이 가능하다. 레드햇 리눅스(Red Hat Linux)를 포크하여 CentOS가 생겼고, 데비안(Debian)을 포크하여 우분투(Uvuntu)가 생겼고, MySQL을 포크하여 MariaDB가 생겼다.

분기[편집]

많은 프로젝트는 버그 픽스 만 이루어지는 ‘안정 버전’(stable version) 또는 ‘릴리스’(release version) 와 새로운 기능을 통합한 ‘개발 버전’(development version) 과를 따로 마련하고 있다. 이것도 포크의 일종이다. 이 같은 포크는 ‘브랜치’(branch) 또는 ‘분기’라고 하며, 이는 ‘포크’(fork)라는 말이 부정적인 뉘앙스를 풍기고 있으며, 이 방법은 소프트웨어 공학의 ‘브랜칭’(branching)을 닮았기 때문이다.

프리웨어[편집]

자유 소프트웨어의 포크 원인은 목표의 불일치 및 개인 대립 등이 있다. 포크가 발생하는 경우 개발 그룹이 거의 같은 내용의 코드 기반으로 사용하지만, 소프트웨어의 원래 이름과 사용자 커뮤니티 내용은 대부분의 경우 큰 그룹 (또는 원래 설계자의 소속 그룹)이 인수하게 된다. 따라서, 포크 소프트웨어의 평판 식으로 불이익이 된다. 분기한 개발팀 간의 관계는 대체로 양호하지만(예 : 우분투데비안 ), 충돌하고 있거나 (예 : X.Org ServerXFree86, cdrtools 과 cdrkit ), 전혀 교류가 없는(예 : 리눅스 배포판의 대부분) 경우 등 다양하다.

포크는 자유 소프트웨어로 인한 자유의 일종으로 간주할 수도 있지만, 중복된 개발로 인해 이용자가 어떤 것을 사용해야할 지 고민을 던져주는 나쁜 점도 있다. 각 그룹이 협력하여 자원을 공유할 수는 있지만, 무료 소프트웨어 라이센스로는 이 점에 대해서는 규정이 없어 합의가 된 경우에만 행해지지 않는다. 따라서 개발 작업은 다른 포크와의 차별화에 중점을 두고 행해지는 경우가 많다.

각주[편집]

바깥 고리[편집]