오픈소스 역사
1.1 자유소프트웨어
자유소프트웨어의 자유가 무료를 뜻하는 것은 아니다. '표현의 자유' 혹은 '언론의 자유' 라는 말에서 자유가 무료가 아니라 특정 사항에 얽매이지 않는 관점을 말하듯이 자유소프트웨어의 자유도 비슷한 의미를 가진다.
"자유 소프트웨어"는 사용자가 소프트웨어를 실행시키거나 이를 복제 및 배포할 수 있는 자유와 함께 소스 코드에 대한 접근을 통해서 이를 학습하고 수정, 개선시킬 수 있는 원천적인 자유까지를 모두 포괄하는 것이다. 따라서, 간략히 말하면 다음과 같은 4가지 종류의 자유를 내포한다고 할 수 있다.
첫번째, 프로그램을 어떠한 목적을 위해서도 실행할 수 있는 자유
두번째, 프로그램의 작동 원리를 연구하고 이를 자신의 필요에 맞게 변경시킬 수 있는 자유. 이러한 자유를 위해서는 소스 코드에 대한 접근이 선행되어야 한다.
세번째, 이웃을 돕기 위해서 프로그램을 복제하고 배포할 수 있는 자유.
네번째, 프로그램을 향상시키고 이를 공동체 전체의 이익을 위해서 다시 환원시킬 수 있는 자유. 역시 이러한 자유를 위해서는 소스 코드에 대한 접근이 선행되어야 한다.
즉, 이 모든 자유를 총괄할 수 있는 프로그램을 자유소프트웨어라고 할 수 있다. 이러한 개념은 MS오피스 제품의 소스를 공개하지 않고, 아무나 수정하지 못하게 하고, 또한 비용을 지불하지 않으면 함부로 설치할수 없는 ‘독점소프트웨어’를 생각하면 쉽게 이해할 수 있다.
1.2 오픈소스라는 용어가 생기기까지
인간에게 있어서 기술적 정보의 자유로운 공유라는 개념은 컴퓨터가 존재하기 훨씬 이전부터 존재했다.예를 들어 음식에 대한 요리법은 인간의 시작부터 공유되었고 수정을 통해 발전해 나갔다.인간에게 있어서 공유라는 개념은 땔래야 땔 수 없는 친구같은 존재였다.
컴퓨터 과학의 경우도 초창기는 이와 마찬가지였다. 1950년대부터1960년대 초반까지 거의 모든 소프트웨어는 공동작업으로 일하는 학자 및 기업 연구원에 의해 제작되었으며,종종 공개 소프트웨어로 공유되었다.따라서 소프트웨어는 학계의 분야에서 오랫동안 확립 된 개방성과 협력의 원칙하에 일반적으로 배포되었고 그 자체로는 필수품으로 보지 못했다.이 시점에서 소스 코드(사람이 읽을 수 있는 형태의 소프트웨어)는 일반적으로 소프트웨어 자체와 함께 배포되었다. 따라서 사람들은 일반적으로 다른 하드웨어나OS에서 실행되지 않는 소프트웨어를 수정할수 있었고 버그를 고치고 새로운 기능을 추가 할 수 있었다.벨 연구소의 캔 톰슨과 데니스 리치가 만든 유닉스도 이런 자연스러운 분위기에서 만들어졌다. 유닉스는 특정한 하드웨어에 종속되지 않는 하나의 운영체제로 저렴한 컴퓨터에 맞게 만들어졌다. 이후 많은 사람이 많이 고치고 수정해서 기능을 향상시키며 사용해 나가기 시작했다. 그 결과 버클리에서는 유닉스를 수정해서 BSD(Berkley Software Distribution)를 배포하기도 했다.
하지만1960년대 후반 운영체제 및 프로그래밍 언어 컴파일러가 발전하면서 소프트웨어 생산 비용이 하드웨어에 비해 크게 증가했고 그에 따라서 일부소프트웨어는 무료로 제공되었지만 제한적인 라이센스하에서만 판매되는 소프트웨어가 점점 늘어났다. 이에 따라서 소프트웨어 상품 시장과 IBM의 하드웨어에서 소프트웨어를 분리하는 언번들링(unbundling)정책이 등장하기 시작했다. 그렇게 1970년대 말 이후 개인용 컴퓨터 발전과 보급이 소프트웨어 상품 시장이 폭발적으로 성장하면서 소프트웨어는 더 이상 자유롭지 못하게 되었다.
특히 1980년 초중반에 생긴 두 가지 사건은 소프트웨어에 대한 장막을 치는 결정적 계기가 되었다. 그중 하나는 일본에서 처음 시작된 소프트웨어에 대한 저작권 적용 이다. 이후 IBM등이 이 저작권법을 이용해 소프트웨어에 대한 자유로운 이용을 금지했다. 벨 연구소는 반독점법을 적용받던 통신사 AT&T 산하에 있어서 1982년 그 법이 해제되기 전까지는 자유로울 수 있었지만, 법이 해제되자 컴퓨터 사업에 진출하면서 유닉스의 소유권을 주장하면서 많은 소송을 제기하게 되었다. 이는 “자유 소프트웨어 운동” 혹은 “카피레프트1 운동” 으로 이어졌다.
MIT인공지능 컴퓨터 해커였던 리차드 스톨만은 연구소에서 일하던 동료 프로그래머들이 소프트웨어 저작권과 돈 때문에 분쟁에 시달리는 모습을 보고, 현재의 상업적 소프트웨어 경제 시스템의 문제점을 통감했다. 스톨만은 당시 소프트웨어가 컴퓨터 하드웨어로부터 떨어져나오면서 상업적인 제품으로 팔리기 시작한 것은 지극히 잘못된 일이라고 생각해, 모든 소프트웨어는 무제한 공유되고 무료로 배포돼야 한다는 주장과 함께, MIT를 떠나 상업용 소프트웨어와의 전쟁을 선포했다. 그렇게 최초의 "자유 소프트웨어(Free Software)" 개발 프로젝트인 GNU(Gnu's Not Unix)를 시작했다.
GNU는 유닉스와 호환되는 운영체제다. 리처드 스톨만은 소프트웨어 공유 운동을 시작하기 위해 가장 먼저 필요한 게 운영체제라고 생각했다. 운영체제는 컴퓨터를 사용하는 데 필요한 핵심 소프트웨어이고, 운영체제가 있다면 컴퓨터를 이용해서 다양한 종류의 작업을 할 수 있었기 때문이다. 따라서 자유롭게 사용할 수 있는 운영체제가 있다면 상호 협력하는 개발자들이 공동체를 다시 한번 만들 수 있을 거라고 스톨만은 판단했다.
리처드 스톨만이 ‘유닉스’ 계열 운영체제를 만들기로 한 이유는 기존 유닉스 사용자들이 새로운 시스템에 쉽게 적응할 수 있으리라고 생각했기 때문이다. GNU라는 이름은 ‘GNU는 유닉스가 아니다’(Gnu is Not Unix)라는 문장의 첫 글자를 따서 만든 약어다. GNU는 유닉스와 호환되도록 만들어진 운영체제이기는 하지만, 유닉스와는 다른 운영체제라는 의미를 내포하기 위해 만든 이름이다. GNU 프로젝트에선 시스템 리소스를 관리하는 커널 ‘허드’를 만들기도 했는데, 1991년 리눅스가 관심을 받으면서 GNU 도구에 리눅스 커널이 통합됐다.
GNU프로젝트의 목적은 간단히 말해 누구도 소프트웨어비용을 지불하지 않도록 하는 것이었다.이러한GNU프로젝트를 지원하기 위해서 리처드스톨먼은 자유소프트웨어재단(Free Software Foundation)을 설립했다.이러한GNU프로젝트와 자유소프트웨어 재단의 기본신조는 소스코드는 컴퓨터과학을 발전시키는데 기본이며,변화가 계속되기 위해 정말로 필요한 것은 바로 자유롭게 사용할수 있는 소스코드라는 것이다.
하지만 스톨만은 소프트웨어같은 경우는 소스코드를 그냥 공공영역에 내놓으면 기업에서 자기 자신의 수익을 위해 해당 코드를 흡수하게 될것이 분명하다고 생각했고 이러한 위협에 대처해서 GPL(General Public License)이라 알려진GNU일반 공공 라이선스을 발행하였다.
GPL는 지켜야 할 조항이 많은 라이선스였는데 기본적으로 말하는 바는 다음과 같다.여러분은 마음대로 GPL라이선스 소프트웨어를 복사하거나 배포할 수 있다.그러나 소프트웨어 그 자체에 비용을 매기거나 다른 라이선스를 적용해서 다른 사람이 여러분과 같은 권리를 갖지 못하도록 막아서는 안 된다. GPL은 또한 GPL라이선스 작업에서 유추된 작업도 마찬가지로 GPL라이선스를 가져야 한다고 요구한다.이러한 조항들 때문에 많은 소프트웨어회사는 자유소프트웨어를 거부했다.회사들이란 지식의 체계(컴퓨터 과학분야)에 이바지하기 보다는 결국 비즈니스 영역(컴퓨터 상업 분야)에 있기 때문이다
1997년 봄,자유 소프트웨어 공동체의 리더 그룹들이 캘리포니아에서 회합을 했다. 이 그룹에는 에릭 레이먼드,팀 오라일리, VA리서치사 사장인 래리 오거스틴이 포함되어 있었다. 그들의 관심사는 기존 자유 소프트웨어라는 개념에 대해 거부감을 가진 사람들에게 자유 소프트웨어를 둘러싼 아이디어들을 진흥시킬 방법을 찾는 것이었다. 즉,자유 소프트웨어 재단의 반(反)비즈니스적인 메시지가 대체로 자유 소프트웨어의 힘을 진정하게 평가할 수 없게 한다고 걱정하였다. 에릭 레이먼드의 끈질긴 주장으로,회합에 모인 사람들은 시장 점유뿐만 아니라 대중들의 인식까지도 점유할 수 있는 마케팅 캠페인이 부족했다는 점에 동의했다. 회의 도중 진흥시키고자 하는 소프트웨어를 나타내는 새로운 용어인 오픈 소스(OpenSource)가 나왔다. 그리고 오픈 소스라고 말할 수 있는 소프트웨어에 대한 가이드라인을 만들었다.브루스 페런스는 오픈 소스 정의에 대하여 많은 기초 작업을 해두었다. GNU프로젝트의 커다란 목표 중 하나는GNU소프트웨어를 실행할 수 있는 플랫폼으로써 자유롭게 사용할 수 있는 운영체제를 만드는 것이다.소프트웨어 부트과정과 관련하여 리눅스가 그 플랫폼이 되었으며,이 리눅스는GNU도구의 도움을 받아 만들어졌다.페런스는GNU정신을 고수하는 소프트웨어만을 포함한 리눅스 배포판인 데비안 프로젝트를 지휘했었다. ‘데비안 사회 계약(Debian Social Contract)’이라는 문서에는 이 점을 명시한 바 있다.오픈 소스 정의는 바로 이‘데비안 사회 계약’에서 직접 파생되었으므로 여러 면에서GNU정신에 속한다.
하지만 오픈 소스 정의는GPL보다 더 많은 자유를 허용한다.특히 독점 소프트웨어와 오픈 소스 소프트웨어를 병합하는 상황에서 더 많은 비순수성을 허용한다. 결과적으로 오픈 소스 라이선스는 보상이나 신용없이도 오픈 소스 소프트웨어를 사용하고 재배포하는 것을 허용한다.예를 들어 여러분은 넷스케이프사에 통보하지 않은 채 넷스케이프 브라우저 소스 코드와 다른(독점일 수 있는)프로그램을 함께 만들어 판매할 수 있다. 왜 넷스케이프사가 이러한 상황을 원하는가?많은이유가 있겠지만 그중 가장 확실한 것은 그들이 상업적으로 제공하고 있는 제품 또는 서비스와 매우 잘 작동하는 클라이언트 코드의 시장 점유율을 높여 주기 때문이다. 이러한 소스 코드의 공개는 플랫폼을 만들기 위한 가장 좋은 방법이며,동시에 넷스케이프사에 있는 사람들이 GPL을 사용하지 않은 이유 중의 하나다.예전에 트롤 테크놀러지사는 GPL을 사용하든가 아니면 자신의 독점 소유 위치를지키든가 둘 중 하나를 선택해야 했다.그렇게 하지 않으면GNOME과 KDE사이의 분열은 계속되었을 것이다. 하지만 오픈 소스 덕분에 트롤 테크놀러지사는 오픈소스 정의에 부합하면서도 자신이 원하는 대로 제어권을 가질 수 있는 내용으로 자신의 기존 라이선스를 변경할 수 있었다. 덕분에 리눅스 공동체 사이에 존재했던분열 양상이 점차 사라져 가고 있다.따라서 일반적으로 오픈소스 소프트웨어는 자유 소프트웨어를 포함한 넓은 의미로 사용된다.
그리고 이후 오픈소스를 기반으로 한 많은 단체들이 나타났다.
1. 카피레프트(copyleft) 운동 : copyright에 상반되는 운동 ↩