성당과 시장’에서 본 오픈소스 개발 모델의 적용
“재미있는 문제를 풀어보고 싶다면 자신에게 재미있는 문제를 찾아 나서는 것부터 시작하라(To solve an
interesting problem, start by finding a problem that is interesting to
you).” - 성당과 시장, 에릭 레이몬드
우리나라에 리눅스라는 새로운 운영체제가 널리 알려지기 시작한 것은 대략 1999년을 기점으로 생각할 수 있다. 이른바 리눅스
1세대라 불리는 사람들이 노력한 결과 수차례의 공동체 세미나 등 여러 매체를 통한 홍보를 통해 일반 대중들에게 널리 알려질 수
있었으며, 또한 네트워크에 대한 급속한 사용량 증가에 따라 그를 감당할 수 있는 네트워크 서버가 필요하게 되었고, 저비용으로
그러한 시스템을 구축할 수 있는 새로운 운영체제가 필요한 시기였기 때문에 리눅스라는 운영체제가 급속도로 퍼질 수 있었다.
하지만 리눅스가 사람들에게 폭발적인 힘을 가지고서 널리 퍼질 수 있었던 가장 큰 이유는 리눅스의 개발 방법인 오픈소스 개발 모델
때문이 아닐까? 늘어나는 네트워크 사용량과 많은 이유로 발생하는 보안 문제 등의 여러 문제의 해결 방안에 대한 요구가 기존의
운영체제 소프트웨어 업체는 감당하기 힘들 만큼 늘어나게 되었고, 이를 기존의 소프트웨어 개발 방법으로는 엄청난 부하가 걸리게
된다. 이러한 문제들은 리눅스는 오픈소스 개발 모델을 통해 해결해 왔다. 우리가 가장 쉽게 접할 수 있는 오픈소스 개발 모델은
GNU 프로젝트와 리눅스이다.
GNU 프로젝트와 오픈소스 모델의 가치
GNU 프로젝트는 1983년에 리차드 스톨만에 의해 시작되었다. 그는 MIT 대학에서 직업적인 연구 활동을 시작했던 1971년에
자유 소프트웨어만을 사용하는 연구 그룹에서 일하고 있었으며, 그 시절에는 상업적인 컴퓨터 회사들조차도 자유 소프트웨어를 배포하던
때였으므로 프로그래머들은 아무런 제약 없이 서로 협력하며 개발을 진행해 왔다. 하지만 1980년대에 이르러 거의 모든
소프트웨어들은 소유와 독점에 관한 법률에 의해서 제한되었으며, 소유권자들은 소프트웨어의 자유로운 이용을 통한 사용자들의 상호
협력을 그들의 권리를 내세워서 금지시켰다. 바로 이것이 GNU 프로젝트가 시작된 이유이다. GNU 프로젝트가 진행되어 가면서
GCC(GNU C Complier)와 Emacs 등의 소프트웨어들이 개발되었고, 1991년 리누스 토발즈에 의해 리눅스 커널이
공개되면서 완전한 자유 소프트웨어로 구성된 운영체제인 GNU/리눅스와 GNU/Hurd, GNU/Dawrin 등이 현재 계속
개발되어가고 있다.
여기서 오픈소스 개발에 관심을 가진 사람이라면 한번쯤은 접하게 되는 것이 ‘성당과 시장’이라는 에릭 레이몬드의 글이다. 그는 두
가지 형태의 소프트웨어 개발 모델을 제시하였다. 그의 표현을 빌리자면 ‘찬란한 고독 속에서 일하는 몇 명의 도사 프로그래머나
작은 그룹의 뛰어난 프로그래머들에 의해 조심스럽게 만들어지고 때가 되어야 발표할 수 있는 엄숙한 성당 건축 방식’과 ‘일찍,
그리고 자주 발표하여 다른 사람에게 위임할 수 있는 것은 모두 위임하고, 뒤범벅된 부분까지 공개하는 그런 스타일은 서로 다른
의견과 접근 방식이 난무하는 매우 소란스러운 시장 같은 분위기’이다. 이런 시장 바닥에서 조리 있고 안정적인 시스템이
탄생했고(리눅스의 탄생) 성당 건축가들이 상상하기도 힘든 속도로 계속 성장하고 강해지는 것을 보고 의식적으로 자기가 가진
의구심을 시험해 볼 수 있는 기회라고 생각하여 fetchmail(이메일 클라이언트의 일종)을 ‘시장’ 개발 모델을 이용하여
개발했다.
이 개발이 진행되는 동안 에릭 레이몬드는 이른바 리누스의 법칙(“충분히 많은 베타 테스터와 공동 개발자가 있으면 거의 모든
문제들은 빨리 파악될 것이고 쉽게 고치는 사람이 있게 마련이다”)을 이용하여 fetchmail을 완성할 수 있었으며, 이
‘시장’개발 모델이 충분히 효율적이라는 것을 검증할 수 있었고, 그 결과 fetchmail은 매우 큰 성공을 이룬 프로젝트가
되었다.
‘성당과 시장’이라는 글이 발표된 뒤 7개월이 지나 넷스케이프는 자사의 웹 브라우저인 네비게이터 소스를 공개하기로 발표한다.
상업 소프트웨어 즉, 성당 건축가들이 시장 스타일을 받아들이기로 한 것이다. 이는 소프트웨어 개발 모델에 있어 ‘성당’ 모델
보다는 ‘시장’ 모델이 좀더 효율적이라고 판단되어 내린 결정일 것이다.
한 사람이 어떤 프로젝트를 온전히 해내는 건 불가능하다. 하다못해 버그 패치라도 다른 누군가의 손을 한번 더 거치면 더 좋은
코드가 나올 수 있다는 것이 자유 소프트웨어의 전제이다. 외국에서는 이런 역할 분담이 매우 잘 정착된 것처럼 보여진다. 어딘가
빈 자리가 보이면 자신의 역량이 허용하는 만큼을 추가한다. 굳이 멋진 프로그램으로 만들어 낼 필요는 없다. 단지 자신이 생각했을
때 아쉬웠던 기능을 적당한 형식으로 추가하기만 하면 된다. 그렇게만 해 두면, 그 이상의 것은 나중에 또 누군가가 수정하고
최적화할 것이기 때문이다. 이것이 바로 자유 소프트웨어 개발 모델의 특징이자 장점이기 때문이다. 현재 우리나라 사람들에게 필요한
것이 바로 이런 것이 아닌지 모르겠다. 사람들의 나쁜 습성 중 하나가 감사에는 인색하고, 자신보다 나은 사람이 있으면 칭찬하고
격려하기 보다는 어떻게든 흠집을 내서 깎아내린다는 것이다. 자신의 의견을 밝히는 데는 누구보다 열성적인 사람들이 직접 그 문제를
해결하기 위해 얼마나 노력을 하는지 한번 지켜 볼 문제이다.
필요에 따른 비전과 계획
이러한 ‘시장’ 모델의 소프트웨어 개발방식에 있어 가장 중요한 것은 그 소프트웨어들이 나아갈 방향을 제시하는 것이라 생각이
든다. 에릭 레이몬드는 “소프트웨어에 있어서 모든 좋은 성과들은 개발자 자신의 가려운 곳을 긁는 것으로부터 시작된다”라고
주장했다 이것은 매우 타당한 말이다. 하지만 그것만으로는 부족하다. 프로젝트가 있으면 그 프로젝트를 현명하게 이끌어 나갈 수
있는 무언가가 필요하기 때문이다.
현재 개발되어 있는 대부분의 GNU 소프트웨어의 핵심적인 부분들은 대부분 완전한 자유 운영체제를 만들기 위한 목적으로 개발된
것이다. GNU 소프트웨어는 가려울 때마다 가려운 곳을 긁듯이 그때그때 만들어진 것이 아니라 비전과 계획에 의해 만들어 진
것이다. 예를 들어, GNU C 라이브러리를 개발한 이유는 유닉스 형태의 운영 환경에서 C 라이브러리가 필요했기 때문이고,
BASH를 개발한 이유 또한 유닉스 환경이 셸을 요구했기 때문이다.
GNU tar나 리차드 스톨만이 직접 개발한 GNU C 컴파일러와 GNU Emacs 그리고 GDB와 GNU Make도 같은
이유에서 개발된 것들이었다. 물론, 이 모든 것이 어떤 필요에 의해 그 문제를 해결해 나가는 과정상에 있는 것들이지만, 이를
적절하게 조율하고 순서를 정하는 것 역시 매우 중요한 일이다. 프로젝트의 방향을 제시하는 사람은 독창적인 설계를 제시하는
사람이기 보다는 좋은 설계를 알아볼 수 있으며 그 프로젝트를 구성하는 사람들과 의사소통이 잘 되는 사람이라야 할 것이다.
오픈소스 모델이 사회 곳곳에 퍼지기를
개인적인 욕심이 있다면 이러한 과정을 사회적 의미로 분석하여 검증된 사안을 사회 곳곳으로 퍼져나가도록 돕는 학자들의 손길이 좀더
정교하고 깊숙하게 파고들었으면 하는 바람이다. 「컴퓨터 프로그래밍의 심리학」이라는 글에서는 ‘자아를 내세우지 않는
프로그램(egoless programming)’이 극적으로 빠른 개선을 가져왔다고 진단하고 있다. 리눅스의 발전과정이나
fetchmail의 오픈 프로젝트 과정에서 우리가 배울 수 있는 것은 숙련된 기술자들이 가지고 있는 능력을 어떻게 잘 엮어내느냐
하는 것만 있는 것은 아닌 것 같다.
여기에서 밝히는 ‘시장’ 개발 모델은 여러 사람들이 이루어 나가는 단체, 이른바 노동조합, 시민단체, 기업, 심지어는 이 나라를
운영해 나가는 정치 집단 등에게 던지는 메시지가 담겨 있다고 생각한다. 하나의 목적을 위하여 공동으로 노력을 해 나가는 데 있어
가까이서 ‘감 놔라 배 놔라’ 훈수를 두는 숙련된 사람들을 끌어들이는 능력과 공동의 이해를 위해 서로 협력하게 하는 능력을
어떻게 발휘할 것인가 하는 것이다.