
BSD & GPL: Different Sources for Different Horses
Saturday, July 1, 2006

"The world don't move to the beat of just one drum. What might be right for you, may not be right for some.
You take the good, you take the bad; You take em both and there you have, my opening statement."
-
Peter Griffin, paraphrasing 80's TV at the introduction of his campaign for office.
마치 애플의 오픈소스 구상을 방어해 주기 위해 하는 말과 흡사하다. 애플의 사업 전략은 다른 시각을 갖는 사람들을 만족시켜 주지 못하곤 하였다. 만족시켜주는 측과 똑같은 이유에서 그랬던 적도 있다.

애플의 전설적인 비밀주의에 대해 이력이 난 보수적인
비지니스 분석가, 그럼피(Grumpy)는 애플에게 기술 로드맵 좀 더 잘 공개하고,
더 구체적인 재무 정보를 알려달라 요구하였다. 물론 장발의 히피들은 자유와 공개형 개발을 찬양하며, 애플의 주의깊은 공개, 혹은 폐쇄형 소프트웨어 프로젝트에 대해 비난한다.
첫 번째 글, "애플과 오픈소스[
애플과 오픈소스 필자는 오픈소스를 둘러싼 애플의 참여에 대해 논의하고, 애플이나 마이크로소프트와 같은 상용 소프트웨어 개발자로서의 목표와 오픈소스 커뮤니티의 목표 간의 근본적인 차이를 논하였다.
두 번째 글, "오픈소스 레볼루션[http://www.appleforum.com/357877-post2.html]"에서 필자는 오픈소스의 원칙과 폐쇄형, 개방형 개발 모델의 논리에 대해 묘사하였다. 새로운 세상인 오픈소스에서 애플은 어떻게 들어맞을까? 필자는 다음과 같이 썼다:

“애플이 오픈소스로 어느정도나 할 수 있을까? 오픈소스화를 더욱 확장시켜야 한다고 주장하는 이들이 많지만, 어떻게 해야 할까? 전략으로서 오픈소스를 옹호할 방법은 단 한 가지만 있지 않다."
이 기사에서 필자는 오픈소스 개발의 두 가지 스타일이 갖고 있는 혜택과 동기를 비교해 보겠다. 바로 UC Berkeley와 MIT가 개척한 BSD 스타일의 라이센스와 자유 소프트웨어 운동의 창립자, 스톨만(Richard Stallman)이 제창한 GPL 방식이다.
이 두 가지의 스타일과 애플의 오픈소스 참여를 비교해 보고, 오픈소스를 둘러싼 말을 해부하며, 애플이 무엇을 열 수 있는지, 그에 따른 장애는 무엇인지에 대해 알아보겠다.
BSD-Style Open Source
오픈소스는 여러가지 목표를 갖고 있다. BSD의 경우, 소스코드에 대한 개방형 접근은 공유된 기술을 기반으로 하는, 빠른, 그리고 호환성 있는 개발을 독려한다.
무료로 공유된 TCP/IP 네트워킹 스택에 대한 BSD의 기여가 없었더라면, 인터넷 툴이나 디바이스 개발자들은 BSD의 코드로 네트웍 제품을 만들 수 없었을 것이다. 그 대신 이 코드를 구매하거나 내부적으로 개발했어야 한다는 의미이다. 어떻게든 인터넷 개발의 속도는 늦추어 졌을 터이고, 그 결과 모든 것이 좀 더 비싸졌을 것이다.


BSD 네트워킹 코드에서 나온 제품은
Brocade 스위치에서부터
QNX나
Sony PS 2와 PSP에 이르기까지 광범위하다. 그리고 이들은 모두 별 탈 없이 상호 작동한다. 별도로 표준을 만들지 않고, 모두가 잘 알려지고 검증받은 코드를 채용하였기 때문이다.
상호작용성과 효율성에 더해서, BSD 모델은 세 번째 혜택도 제공해준다. 바로 범용성(commonality)이다. 범용성은 누구라도 이를 구축으로 뭔가 만들 수 있도록 해준다.
수 백 개의 별다른 상용 웹서버에 따라 달리 작동하도록 하기보다, BSD 스타일의 라이센스는 세상에게
Apache web server를 제공하였다. 게다가 아파치 웹서버를 여러가지 다른 임무용으로 확장시키거나 수정할 수 있다.

개발자와 개발사, 최종사용자들은 사라지지 않을 것이며 6 개월마다 완전히 교체되지 않으리라는 점을 알고서, 배우고 확장시키거나 투자할 수 있는 견고한 제품을 만들 수 있다. 모두 혜택을 받는 셈이다. 이러한 범용성은 상용 개발을 두고 서로 경쟁할 수 있도록 하기도 한다. 가령 아파치는 마이크로소프트의 IIS나 다른 상용 웹서버에 대항하여
선두를 지켜오고 있다.
BSD -스타일 라이센스는 누구라도 코드 재사용을 할 수 있도록 해준다. 또한 누구라도 BSD 코드를 사용하고 자신의 기여와 확장을 공개할 수 있도록 해 주며, 공개하지 않아도 된다. 가령 마이크로소프트는 기존의 BSD 네트워킹 코드로부터 혜택을 받아왔되, 윈도우즈용으로 수정한 코드를 오픈소스로 되돌리지 않았다. BSD 라이센스는 이런 종류의 일방통행도 허용을 한다. 상용 개발자들에게는 좀 더 매력적인 방식이다.
BSD는 소프트웨어가 커뮤니티의 재산인 세계를 구축하는 데에 관심이 없다. BSD 스타일 오픈소스의 목표는 불필요한 재작성을 막는 데에 있다.
Apple's Open Source
애플이 오픈소스로 사용하고 있는 모델 대다수는 BSD 라이센스식이다. 애플은 사용 가능한 코드를 재사용할 수 있고, 여기에 코드에 대한 접근을 제공하여 다른곳에서도 재사용할 수 있도록 할 방법을 찾아 놓았다. 상호 유용하게 한다는 의미다.
가령, AppleTalk의 이주(IP상에서의 애플톡)를 애플은 공개하여서, 누구라도
Bonjour(OpenTalk이나, Rendezvous로도 알려졌다)를 사용하여, 처음부터 작성할 필요 없이 자동적인 설정 서비스를 로컬로 할 수 있도록 하게 되었다.

또한 봉주르를 여러가지 제품이 잘 사용할 수 있도록 하기 위해, 애플은 봉주르 코드를 자유로이 공개시켜서, 봉주르를 하나의 표준으로 채택하는 데에 박차를 가하였다. 봉주르의 코드 공개가 후광을 노리는 정도의 목적을 갖진 않는다. 애플의 공개로 인하여 봉주르는 견인력을 빠르게 얻을 수 있을 것이다.
한편 애플은 NetInfo 디렉토리 서비스와
OpenDirectory의 기초기술인
Quicktime Streaming Server와 퀵타임 스트리밍서버의
launchd 아키텍쳐를 공개하였다. 이제 누구라도 이 소스를 재사용하여 나름대로 적용할 수 있게 되었다.

웹과 자바스크립트 렌더링에 있어서 KHTML에 대한 기여를 공개하기도 하였다. 그에 따라 다른 이들도 애플로부터 혜택을 입을 수 있게 되었다.
노키아의 개발자들은 애플 코드 기반을 통해 휴대폰용 웹브라우저를 구축하였다. 이러한 노력이 애플을 금전적으로 돕지는 못하지만, 똑같은 코드로 작업함으로써 버그 규명이나 보안 문제의 해결, 코드 최적화 방법에 대해 서로 도울 수 있게 되었다. 오픈소스로 공유함으로써 KHTML은 물론 애플과 노키아, 사용자들 모두가 승자가 된다.
GPL Style Open Source
GNU Public License로 제공되는 소프트웨어 프로젝트는 BSD처럼
무료 제공이다. 다만 GPL은 완전히 정치적으로 다른 접근 방식을 취하고 있다. GPL 스타일의 오픈소스는 기술 공유 뿐만 아니라, 기술을 사유화시켜서는 안되며, 그에 따라 기술이 언제나 자유로와지기를 원한다. 꼭 무료의 방식은 아닐지라도, 자유에는 비용이 따른다는 단서 하에, 사용자들의 배포와 포팅, 수정, 재사용이 자유롭다. 재배포를 위해 GPL 코드에 뭔가 기여했을 경우에도 소스코드 개선점에 대한 자유로운 접근을 보장해야 함은 물론이다. GPL은 BSD 식의 공유를 허용하지 않는다.
달리 말해서, GNU는 세상을 좀 더 낫게 만들기 위해 포기하자는 식이 아니다. 자본주의의 탐욕과 악행을 공산주의 낙원이 뒤엎으리라는 희망으로서 포기하자는 식이다. 모순적이랄 수 있겠지만, 그것이야말로 GPL의 전부이며, 거기에 틀린 점은 없다.

이 아이디어의 창시자는
스톨만이다. 그는 단기적인 이익은 보았지만, 똑같은 소프트웨어를 계속 재구현시키는 데에 재능을 낭비했던 인물이다. 기업은 사유물로서의 소프트웨어를 파는 사업 모델을 구한다. 소프트웨어 제품을 특정 사용용으로 폐쇄시킴으로써 사용자들을 묶어두어 자신들의 아이디어를 보호할 수 있기 때문이다. 남들이 자신의 아이디어를 훔쳐가지 못하도록 하기 위해서이기도 하다.
스톨만은 소프트웨어 개발을 공유 기술의 집합체로 보고싶어한다. 누구도 기본적인 아이디어나 알고리즘을 점유할 수 없고, 재사용과 다른 목적으로의 구현을 막지 못하게 하게 위해서이다.
스톨만은 상용 UNIX 운영체제의 GPL 버전인 GNU의 목적을 설명하기 위한
선언문을 작성하였다. 이 GNU 소프트웨어를 채운 개발자 커뮤니티는 후에 역시 GPL 하에서 개발된 리눅스 커널과 보조를 맞추게 된다. 그에 따라 GNU/Linux가 탄생한다.
대부분의 관측통에 따르면, 전세계 오픈소스 프로젝트의 약 절반가량은 GPL 식으로 나오며, 나머지 절반은 여러가지 형의 BSD 라이센스로 나온다. BSD 소프트웨어 또한 좀 더 제한적인 GPL로 라이센스를 다시 할 수 있지만, 그 반대는 불가능하다. 가령 한 오픈소스 개발사가 애플의 다윈소스를 갖고 "더 자유롭게" 만든 GPL 라이센스 배포본으로서
상용 판매를 할 수 있다.
Apple and the GPL
애플은 맥 오에스 텐에 GPL 소프트웨어를 번들시키고, GPL 프로젝트에 일정 부분을 기여하기도 하였다. 하지만 대부분의 다른 상용 소프트웨어 개발사들과 마찬가지로 애플은 BSD에 더 가까운 방식으로 작업하기를 선호한다.
애플은 제품을 만들어서 판매하는 사업체이다. 반면 GNU의 의도는 사유물화된 소프트웨어를 교체하기 위한 자유로운 대안의 개발이다.
GNU/Linux는 윈도우즈 뿐만이 아니라 애플 운영체제도 포함한 모든 상용 운영체제를 없애기 위한 원칙을 지닌다. 목표 자체가 그르달 수는 없으며, GPL은 세상에게 개발에 대한 역동성과 다른 관점을 가르쳐주었다. 리눅스를 포함한 프로젝트 다수가 자신의 존재 이유로서 GPL을 내걸고 있다.
그러나 이런 이상주의때문에 애플이 GPL 깃발을 나서서 휘두르는 것은
어리석은 짓이다. 애플이야말로 GNU가 없애고 싶어하는 대표적인 상용 개발사이기 때문이다.
메이저 곡물회사보고 사회주의 원칙을 받아들이라는 말이나 같다. 근본주의적 보수,
신정(神政)주의 운동가들보고 미국 권리헌장에 있는 종교의 자유를 보장하라는 말이나 다를 바 없다.
비공식적인 오픈소스 커뮤니티의 공식적인 강령은 이토록 터무니없게 나오고 있다. 그것도 증가하는 중이다. 다음 기사에서는 자유 소프트웨어 운동을 배신하고 이용하려 하는 비판가들, 그리고 오픈소스에 기반한 여러가지 제안들에 대해 알아보도록 하겠다. 기대하시라!
What do you think? I really like to hear from readers. Leave a comment or email me with your ideas.
BSD & GPL: Different Sources for Different Horses