오픈소스로 협력 개발
본문리눅스 운영 체제, 파이썬 언어, 웹 브라우저의 엔진은 전 세계의 개발자 수천 명이 함께 만든 오픈소스 프로그램이다. 그들은 대부분 서로 얼굴도 모른다. 누구나 코드를 보고 고칠 수 있다면 엉망이 될 것 같은데, 오히려 은행과 우주선, 스마트폰이 이 프로그램들을 믿고 쓴다. 어떻게 그럴 수 있을까? 많은 사람이 함께 코드를 고치려면 어떤 도구와 규칙이 필요할까?
4.3.1버전 관리와 코드 검토
여러 사람이 같은 코드를 고치려면 누가 언제 무엇을 바꾸었는지 기록하고, 서로의 변경을 합칠 수 있어야 한다. 깃(Git) 같은 버전 관리 도구는 코드의 변경을 커밋이라는 단위로 저장하고, 각자 가지(브랜치)를 만들어 따로 작업한 뒤 합치게 해 준다. 오픈소스 프로젝트에서는 누군가 변경을 제안하면(풀 리퀘스트), 다른 개발자들이 그 코드를 읽고 문제를 지적하며 토론한다. 이것이 코드 검토이다. 검토를 통과하고 자동 시험을 모두 통과한 변경만 본래 코드에 합쳐진다.
검토자 한 명이 어떤 버그를 찾을 확률이 \(p\)이고, \(k\)명이 서로 독립적으로 검토하면, 누군가 그 버그를 찾을 확률은 \[1 - (1 - p)^k\]이다. 한 명의 \(p\)가 작아도 \(k\)가 늘면 빠르게 1에 가까워진다. 다만 모두 같은 곳을 놓치는 식으로 검토가 독립적이지 않으면 효과가 줄어든다.
그림 1에서 두 값을 바꾸어 보자. 한 명이 30% 확률로 찾는 버그를 3명이 보면 약 66%, 5명이 보면 약 83%, 10명이 보면 97%의 확률로 누군가 찾아낸다. 수천 명이 쓰고 읽는 오픈소스는 이 효과가 아주 크다. 그래서 '보는 눈이 충분히 많으면 모든 버그는 얕다'는 말이 생겼다. 다만 검토자들이 같은 배경과 습관을 가지면 같은 곳을 함께 놓치므로, 서로 다른 사람들이 검토하는 것이 중요하다.1
4.3.2라이선스와 협업 규칙
오픈소스라고 해서 아무렇게나 써도 되는 것은 아니다. 코드의 저작자는 라이선스로 다른 사람이 그 코드를 어떤 조건으로 쓰고, 고치고, 다시 배포할 수 있는지 밝힌다. MIT 라이선스처럼 저작권 표시만 남기면 거의 자유롭게 쓰게 하는 것이 있고, GPL처럼 그 코드를 고쳐 배포할 때 고친 코드도 같은 조건으로 공개하게 하는 것이 있다. 프로젝트에는 코드 스타일, 커밋 메시지 쓰는 법, 버그를 알리는 방법, 서로를 존중하는 행동 강령 같은 협업 규칙도 있다. 이런 도구와 규칙 덕분에 서로 모르는 사람들도 함께 일할 수 있다.
4.3.3예제 풀이
어떤 버그를 검토자 한 명이 찾을 확률이 20%이다. 이 버그를 90% 넘는 확률로 찾으려면 서로 독립적인 검토자가 몇 명 필요한가? 검토자들이 모두 같은 습관을 가져 한 명이 놓치면 다른 사람도 절반의 확률로 함께 놓친다면 어떻게 될지 설명하여라.
\(1 - 0.8^k > 0.9\)이어야 하므로 \(0.8^k < 0.1\)이다. \(0.8^{10} \approx 0.107\), \(0.8^{11} \approx 0.086\)이므로 11명이 필요하다.
검토자들이 독립적이지 않으면, 한 명이 놓친 버그를 다른 사람들도 놓칠 가능성이 커진다. 그러면 \(0.8^k\)보다 놓칠 확률이 훨씬 커서, 11명이 보아도 90%에 이르지 못한다. 극단적으로 모두가 똑같이 생각한다면 몇 명이 보든 한 명이 본 것과 같다. 즉 검토의 힘은 사람의 수만큼 서로 다른 관점에서 나온다. 그래서 큰 오픈소스 프로젝트는 다양한 배경의 기여자를 모으고, 자동 시험처럼 사람과 다른 방식의 검사도 함께 쓴다.
아래 탐구 카드에서 버전 관리 도구로 함께 코드를 고쳐 보고, 여러 라이선스의 조건을 비교해 보자.
- 이 말은 1999년 레이먼드가 에세이 「성당과 시장」에서 리눅스의 개발 방식을 설명하며 '리누스의 법칙'이라 이름 붙였다. 리눅스를 처음 만든 토르발스의 이름을 딴 것이다.
오픈소스 협업은 버전 관리로 변경을 기록하고 합치며, 코드 검토로 여러 사람이 변경을 읽고 문제를 찾고, 라이선스와 협업 규칙으로 쓰는 조건과 일하는 방식을 정한다. 서로 독립적인 검토자가 늘면 버그를 놓칠 확률이 \((1-p)^k\)로 빠르게 줄어, 많은 사람의 서로 다른 눈이 품질을 높인다. 그래서 처음 질문의 오픈소스 프로그램은 수천 명이 각자의 관점으로 검토하고 시험한 덕분에 오히려 믿을 만하다.