포크(프로그래밍)

최근 편집: 2022년 12월 26일 (월) 01:49

프로그래밍에서 포크는 여러 의미로 쓰인다.

운영 체제에서의 포크

운영 체제 위에서 구동되는 프로세스를 두 갈래로 나누어 실행하는 것을 포크(fork)라고 부른다. 이렇게 포크한 프로세스는 각각 서로 다른 프로세스 ID를 가지는 독립적인 프로세스가 된다.

이러한 멀티프로세스 기법은 멀티스레드 기법에 비해 안정성이 높아 많이 이용되어 왔지만 구현에 제약이 많아 웹 서버 등 성능보다 안정성이 요구되는 응용프로그램 개발에 많이 쓰인다.

버전 관리에서의 포크

오픈 소스 프로그래밍에서 모든 프로그램 코드는 변형이 가능하다. 일반적으로는 단일한 소스 코드 프로젝트를 두고 협업 해 나가는 형태를 띄지만, 편의를 위해, 또는 코딩 철학, 정치 등의 이유로 특정 판에서 새로운 프로젝트로 분화해나가는 것도 GPL, MIT 라이선스 등의 배포 라이선스 하에 가능하며, 이것을 포크라고 부른다.

포크라는 표현이 탄생한 영어권에서는 fork, forked, forking, forkabulous 등으로 동사화 시켜 맥락에 따라 변형해서 쓰지만, 한국어권에서는 포크라는 표현만 사용되며, 가끔 포킹이라고 쓸 때도 있기는 하다. (어감이 위험해서 어렵다)

잘 알려진 포크 프로젝트에는 다음과 같은 것들이 있다:

  • 오픈오피스 프로젝트에서 오라클과의 개발 철학 분쟁으로 리브레 오피스가 2010년에 포크되어 나와 새 프로젝트로 출범했다. 리브레 오피스는 대다수의 리눅스 배포판에서 오픈오피스를 교체하고 오픈오피스의 오픈소스 진영 정통 후계 제품으로 인정받고 있다.
  • 아마존크롬 브라우저의 베이스가 되는 크로미움 브라우저를 2011년에 포크 해 자사의 실크 브라우저를 개발해서 자사의 파이어 태블릿에 내장시켰다.
  • 리눅스 운영체제들은 수백개의 배포판들이 포크에 포크가 꼬리를 무는 거대한 생태계를 형성하고 있다. 리눅스 배포판 중 가장 널리 알려진 우분투는 2004년에 데비안의 포크로 시작되었다.
  • 2017년에 드루팔의 포크로 Backpack 프로젝트가 시작되었다.
  • 버전 관리 도구 중 하나인 Git의 저장소를 호스팅하는 서비스 중 GitHub에서는 포크 기능을 제공하여 손쉽게 프로젝트를 포크할 수 있다.

소스의 일부를 가져오는 것은 포크라 부르지 않으며, 특정 판을 통째로 가져온 후 거기서 개발을 다른 방향으로 시작하는 것만 포크라고 부르는 편이다.

한편 배포 라이선스나 diff 보기 등 오픈 소스 프로그래밍과 매우 밀접한 형태의 운영 개념을 공유하고 있는 위키 사이트들도 사이트 운영 및 데이터베이스 복제에 포크라는 개념을 적용해, 라이센스를 준수하며 사이트를 베껴서 독립하는 경우도 포크라고 부르고 있다. 예를 들어 나무위키리그베다위키/엔하위키의 내용을 복제해서 나오면서 스스로 포크라고 자칭했으며, 이후 나무위키에서 쫓겨난 신원미상의 설립자(ID namu) 가 다시 나무위키의 DB덤프를 복제해서 알파위키라 이름 붙이며 나무위키의 포크라고 주장하고 있다.