변화에 저항하다 - 자유 소프트웨어 운동

무료 맥주(free beer)가 아닌 언론의 자유(free speech)

자유 소프트웨어 운동을 알아보기 위해서는 먼저 자유 소프트웨어 (free software) 개념에 대한 이해가 필요하다. 자유 소프트웨어란 사용자가 소프트웨어를 실행하고, 복제하고, 배포하고, 학습하고, 개작하고, 향상시킬 수 있는 소프트웨어를 말한다. 소제목에서 말하듯이 자유 소프트웨어에서 자유 (free) 라는 개념은 무료라는 금전적인 측면이 아닌 구속되지 않는다는 관점으로 보는 것이 핵심이다. GNU에서는 자유 소프트웨어가 내포하고 있는 자유를 4가지 종류로 다음과 같이 분류한다.

  • (첫번째 자유) 프로그램을 원하는 어떠한 목적으로도 실행할 수 있는 자유.
  • (두번째 자유) 프로그램이 어떻게 동작하는지 학습하고, 자신의 필요에 맞게 개작할 수 있는 자유. 이것을 위해서는 소스 코드에 대한 접근이 전제되어야 합니다.
  • (세번째 자유) 이웃을 도울 수 있도록 복제물을 재배포할 수 있는 자유.
  • (네번째 자유) 프로그램을 개선시킬 수 있는 자유와 개선된 이 점을 공동체 전체가 누릴 수 있게 그것을 발표할 자유. 이를 위해서는 역시 소스 코드에 대한 접근이 전제되어야 합니다.

리처드 스톨만은 자유 소프트웨어는 금전적인 개념을 뜻하는 것이 아니기 때문에 자유 소프트웨어를 유료로 판매하는 것에는 아무런 모순이 없다고 말하며 자유 소프트웨어에 사용된 단어 free는 unfettered, 즉 구속에서 벗어났다는 의미에 가장 가깝다는 점을 강조한다. 실제로도 GNU 홈페이지에서는 GNU 소프트웨어는 유료로 구입할 수도 있고 무료로 얻을 수도 있지만, 어떠한 방법으로 소프트웨어를 구했던 간에 사용자들은 해당 프로그램에 대한 복제와 개작의 자유를 항상 갖게 된다고 기재되어있다.

독점 소프트웨어의 번성과 해커 공동체의 붕괴

리처드 스톨만은 인공지능 연구소에서 그의 동료와 함께 ITS라 불리는 운영체제를 DEC사의 PDP-10이라는 메인프레임(다양한 데이터를 처리할 수 있는 대형 컴퓨터)에 탑재하기 위해 업그레이드하는 작업을 맡았다. 그들은 ITS를 자유 소프트웨어라고 부르지 않았다. 리처드 스톨만에 따르면 당시에는 그런 용어 자체가 존재하지 않았으며, 오늘날 자유 소프트웨어라 불리는 개념 너무나도 당연한 시대였다.

이들의 해커 공동체는 1980년대 초 DEC가 PDP-10 제품군 생산을 중단하면서 무너지기 시작했다. 이 컴퓨터에서 쓰이는 소프트웨어가 호환성 문제로 사용할 수 없게 됐기 때문이다. 1981년에는 인공지능 연구소에서 근무하던 대부분의 해커가 심볼릭스(Symbolics)라는 회사를 만들고, 직장을 옮긴다. 기존 PDP-10을 운영할 인적 자원이 부족해진 인공지능 연구소는 ITS가 아닌 새로운 운영체제를 도입한다. 하지만 이 운영체제는 자유 소프트웨어가 아니었다. 이뿐만 아니라 당시 소개됐던 대표적인 컴퓨터의 전용 운영체제 역시 자유 소프트웨어가 아니었다. 이러한 운영체제를 사용하려면 관련 자료(소스코드 등)를 유출하지 않겠다는 계약 조건에 동의해야만 했다. 리처드 스톨만은 이에 대해 “컴퓨터를 사용하는 처음 단계부터 주위 사람을 돕지 않겠다고 약속하는 것과 같은 의미”라고 언급했다.

리처드 스톨만은 무너진 공동체를 다시 부활시키길 원했다. 그리고 이를 위해 가장 먼저 해야 하는 일은 운영체제를 만드는 것이라고 판단했다. 운영체제는 컴퓨터를 사용하기 위해 가장 핵심적인 소프트웨어기 때문이다. 따라서 자유롭게 사용할 수 있는 운영체제가 있다면 상호 협력적인 해커 공동체를 재건할 수 있을 것이라 생각했다. 뿐만 아니라 ‘재배포를 금지한다’ 등의 저작권 조건에 구애받을 필요가 없어지므로, 주변 사람의 자유를 침해하지 않고도 누구나 컴퓨터를 사용할 수 있을 것이라 믿었다. 그렇게 리처드 스톨만이 시작한 것이 바로 GNU프로젝트이다.

2000년에 한국에 방문하여 강연을 하고 있는 리처드 스톨만

GNU의 아버지 - 리처드 스톨만

“만약 스톨만이 없었더라면 그를 만들어내야 했을 것이다”

많은 사람들은 리처드 스톨만에 대해 이야기할 때면 이런 말을 하곤 한다. GNU 프로젝트의 제작자이자 자유 소프트웨어 운동을 강하게 주도했던 미국의 프로그래머인 리처드 스톨만을 빼놓고는 오픈소스와 자유 소프트웨어 운동의 역사를 논할 수 없을 것이다.

2000년에 한국에 방문하여 강연을 하고 있는 리처드 스톨만

리처드 스톨만은 1953년 맨해튼에서 태어났다. 학창시절인 1965년부터 1969년까지 컴퓨터를 접하면서 프로그래밍을 배웠고, 1971년부터 매사추세츠 공과대학 인공지능 연구소에서 ‘해커’로 일하기 시작한다. 그는 이 시기를 회고하면서 “요리법을 공유하는 것이 요리의 역사만큼 오래된 것처럼, 소프트웨어를 공유하는 것은 컴퓨터의 역사만큼 오래된 것이었다. 그러나 우리(해커들)는 MIT에서 소프트웨어를 공유하는 이상적인 공동체를 만들었다”고 말했다.

그는 자유 소프트웨어의 개발을 보호하고 진흥하기 위해 GNU 프로젝트를 시작했다. GNU 프로젝트가 표방했던 목표는 완전한 운영체제 전체와 GPL과 같은 이용허락으로 관리될 수 있는 완전한 도구들의 집합을 만들어 누구든지 무상으로 소프트웨어를 사용할 수 있도록 하려는 것이었다.

이맥스 편집기를 개발한 공로로 1991년 ACM이 주는 그레이스 호퍼상을 받았고, 1990년에는 맥아더 재단이 창의적인 개인에게 충분한 연구기회를 보장하기 위해 기금을 제공하는 맥아더상을 수상했다. 1996년에는 스웨덴 왕립 기술원에서 명예 박사 학위를 받았고 1998년에는 전자개척재단의 선구자상을 리누스 토르발스와 공동으로 수상했다. 현재 그는 그가 만든 소프트웨어보다 자유 소프트웨어 전도사 로 더욱 널리 알려져 있다.

오픈 소스 운동에 헌신하는 다른 사람과 마찬가지로 RMS - 리처드 스톨만의 이니셜, GNU 내에서나 각종 영문 프로그래머 커뮤니티에서는 풀네임보다는 RMS라고 언급한다. - 도 그가 속해 있는 공동체 안에서 논쟁을 불러일으키곤 한다. ‘오픈 소스 소프트웨어’라는 용어에 대해서, 그는 이 단어가 자유 소프트웨어가 가진 많은 측면 중에서 특히 자유와 관련된 부분을 없애기 위해 고안된 것이라고 주장한다. 이러한 유형의 주장은 그를 극단주의자라고 부르는 사람이 생겨나게 하는 이유 중의 하나다.

학자들이 만든 오픈소스

한편 학계에서도 위의 경우와는 별개로 오픈소스를 배포한 사례들이 있었다. 이제 그 사례들을 이야기 해보도록 하겠다.

첫 번째 사례는, 도널드 크누스가 만든 “Tex” 이다. “Tex”란 출판 및 조판용 언어로써 개발되었으며 실제로 도널드 크누스의 대표적인 저서인 TAOCP(The Art Of Computer Program)를 출판하는데 쓰인 튜링 완전 언어이다. 사실 이 언어가 만들어진 계기가 조금 재미있다. 스토리는 다음과 같다. 때는, 1970년

지금도 “Tex”는 “Latex” 이라는 발전된 형태로 학계에서 논문 작성 시에 쓰이고 있다. 그리고 학술 논문 작성시에 사실상의 표준(Da-facto)로 쓰이고 있다. 여담으로, 도널드 크누스의 저서인 “The Art Of Computer Program”은 난이도가 매우 높은 책이라고 정평이 나있으며, 빌게이츠가 “저 책의 1권만이라도 완벽하게 이해하는 사람이 있다면 나는 무조건 그 사람을 거액을 주고 우리 회사에 스카우트를 하겠다” 라고 발언한 적이 있을 정도로 난이도가 매우 높은 책이다.

두 번째 사례는, 미닉스(MINIX) 이다. 미닉스는 앤디 타넨바움(Andy Tanenbaum) 교수가 1987년 만들었으며, IBM-PC에서 작동하는 유닉스 기반의 OS이다. 이 OS가 만들어진 이유는, 운영 체제가 어떻게 작동하는지 배우길 원하는 학생들에게 배움을 주고자 하였기 때문이다. 교육용 목적이었기 때문에, 자신이 작성한 “OS 디자인과 구조”라는 교재에 부록으로 소스코드를 첨부하였으며, 자신의 교재도 해당 OS를 이용하여 운영체제의 구조와 원리 대한 내용을 교육하였다. 미닉스가 리눅스의 제작에 크나큰 영향을 준 OS이다. 실제 리누스 토발즈도 그의 저서 “Just For Fun”에서 미닉스가 리눅스 제작에 많은 영향을 주었다고 언급하고 있다. 여담으로, 미닉스는 리눅스 만큼은 아니지만, 교육용 OS로도 은근히 많이 쓰였으며, 실제 현업에서도 알게 모르게 사용된 곳이 많았다. 대표적으로 인텔 메인보드의 제어 칩셋에 인텔 CPU와 하부 SoC(System On Chip)제어용 RTOS(Realtime OS, 실시간 제어와 같이 일반 OS보다 가벼운 OS가 필요할 때 사용하는 OS)로 미닉스가 탑재된 사례가 있었다. 또한 2017년 말, 탑재된 미닉스 OS 모듈 내부에 통칭 “Intel AMT”라고 불리는 취약점이 발견되었다. 이 취약점을 이용하면, 원격으로 악의적인 사용자 곧, 해커들이 사용자의 PC를 조종 할 수 있는 권한을 획득하게 된다.

마지막 사례는 SPICE라는 프로그램이다. 이 프로그램은 회로 설계용 및 시뮬레이션 프로그램으로써, 캘리포니아 대학교에서 “Laurence Nagel“ 이라는 사람에 의해 개발되었다. 해당 프로그램은 포트란으로 작성되었다. SPICE는 최초 공개 후 곧 널리 퍼지기 시작하였으며, 이후 개발되는 많은 회로 시뮬레이션 및 설계 관련 프로그램에 많은 영향을 주게 되었다. SPICE 소스코드는 처음부터 오픈소스 형태로(엄밀히 말하면 퍼블릭 도메인 소프트웨어로 배포 되었다) 배포되었으며, 현재는 오픈소스 라이센스의 종류중 하나인 BSD 라이센스로(참고로 해당 라이센스는 GPL에 비해서 상대적으로 관대한 규정을 가지고 있다)배포 되고 있다. 이러한 오픈소스 형태로 배포한 것이 이 소프트웨어의 확산에 중요한 영향 중 하나로 작용한 것이다.

도널드 크누스가 작성한 The Art Of Computer Programming. 해당 책은 Tex로 작성되었으며, 악명 높은 난이도와 아직도 시리즈가 완성이 안된 책으로 유명하다.

Intel AMT\(Active Management Technology\)의 설정화면이다. 2017년도에 해당 기능이 구현된 하드웨어에 올라간 MINIX의 소스코드 에서 취약점이 발견되었다.

해커들의 역사와 그 문화

하지만, 이러한 소프트웨어들을 개발하는 기업들의 폐쇄적인 움직임 즉, Closed Source Code 모델에 대해 반발하는 사람들이 있었다. 바로 초창기의 해커라고 불리던 사람들이 모인 그룹들이었다. 이러한 해커들의 모임은, MIT의 내부에 있는 모형 철도 동아리에서 시작되었다. 이 모임에 있던 사람들은 호기심이 넘치고, 장난 끼 넘치는 사람들이었고, 평등한 세상을 꿈꾸는 사람들이었으며, 억압받는 환경과 폐쇄적인 규칙을 싫어하는 사람들이었다. 이러한 초창기 해커들의 자유분방함과 억압에 대해 저항하는 사례를 보여주는 사례가 하나 있었다. 바로 컴퓨터 패스워드에 대한 에피스드 이다. 이야기를 요약하자면 다음과 같다. 연구실이나 기업과 같은 환경에서 컴퓨터를 사용하는 사람들이 점점 많아지고, 컴퓨터를 소유하고 있는 단체들에서 유지비용에 점점 부담을 느끼기 시작하였다. 그러자 일종의 자물쇠처럼, 기업들은 허가받은 사람들만이 접근 할 수 있고, 나머지 사람들에게는 컴퓨터의 접근을 제한하는 기능인 패스워드 기능을 적용하였다. 하지만 이러한 억압과, 폐쇄적이고, 불평등하다고 여겨지는 것들을 반대하는 초창기의 해커들은 데몬스트레이션의 일환으로 패스워드가 적용된 컴퓨터를 대상으로 패스워드를 무효화 시키는 행위도 하였다.

이렇듯, 해커들은 폐쇄적인 규칙과 소수의 독점과 같은 행위를 좋아하지 않았다. 당연히도, 그 당시 기업에서 주도하던 Copy Right, 즉 저작권 개념의 도입과 Closed Source Code 와 같은 모델을 달가워하지 않았다. 특히 리처드 스톨만은 소프트웨어가 모두 공유되어야 공유자산이라고 생각을 하였다. 또한, 소스코드를 공개하지 않고 “윤리적으로 어긋난 일” 이라고 까지 생각을 하였다. 리처드 스톨만은 단지 자신의 개인적은 의견을 속으로만 묻어두지 않고, Copy Left 라는 개념을 제창하였다. 또한 말로만 이러한 생각을 말하지 않았다. 리처드 스톨만은 FSF(Free Software Foundation) 라는 비영리 오픈소스 단체를 세운 뒤, “GNU Project”라고 불리는 대규모 오픈소스 프로젝트를 진행하게 된다.(여담으로 초창기 오픈소스 운동을 하는 사람들이 의도하지는 않았지만 이러한 오픈소스 개발 형식은 몇 가지 이점을 가진다. 첫 번째로 보안적인 면에서 이점을 가지는데, Closed Source Code방식의 개발에서는 정보가 공개되지 않아서, 내부 구조가 감추어져 있으므로 접근에 제한이 생겨서 보안적은 측면이 강화된다는 소소한 이점이 있지만(보통 이러한 방식의 보안을 “security through obscurity“이라고 부르며, 권장되지 않는 보안 방식중의 하나로 여겨진다), 만약 치명적인 버그나 결함이 발견되는 경우 문제제기를 하거나 고칠 수 있는 권한을 가진 사람이 제한되어있기 때문에, 이에 대해 대응하기 어렵다는 단점을 가지게 된다.(쉽게 설명하면 군대와 같은 폐쇄적인 집단에서 사고가 나는 경우 쉬쉬하거나 은폐하는 방식으로 일을 처리 하는 것을 떠올려보면 된다). 두 번째로는 소스코드를 공개하는 경우, 기술의 발전으로 인해 트렌드가 바뀌거나 기능 개선이 필요한 경우 소스코드가 공개되어 있고 모두가 공유하고 있기 때문에, 상대적으로 빠르게 기능을 추가하거나 잘못된 점을 고칠 수 있다. 마지막으로 모두가 소스코드를 공유하고 있기 때문에 가용성이 올라가고 이는 외부적인 사정에 의해 소스코드를 소실할 확률이 적어진다는 이점을 가진다.)

또한 이러한 소위 해커라 불리는 초창기 오픈소스의 개발자들은 정기적으로 모여서 자신들이 기여하고 개발한 내역들을 정리하여 서로 공유하였고, 자신들이 개발한 내용들을 카세트테이프를 이용해서 교환하였다. 이러한 방식을 취한 이유는, 당시 IBM에서 테이프를 이용한 저장방식을 표준으로 지정하였고. 또한 널리 쓰이던 DEC컴퓨터에서 이러한 방식을 쓰고 있어서 그렇다. 이러한 방식은 후에 메일링 리스트를 이용한 개발방식에 큰 영향을 끼치게 되었다. 여담으로 2018년 현재에도 이러한 개발방식이 FSF(Free Software Foundation) 라이센스 기반의 오픈소스 프로젝트에서 대부분 사용되고 있으며, 카세트테이프 형태가 아닐 뿐, 이메일을 사용해서 교환하고 메일링 리스트를 통해 그 내용들을 전부 공개하고 있으며, 대표적으로 리눅스와 QEMU, Apache와 같은 오픈소스 프로젝트들이, 이러한 방식을 사용하고 있다. 여담으로, 메일링 리스트를 이용하여 오픈소스를 기여하는 경우, 메일을 이용해서 300kb이상의 내용을 보내는 경우 엄청나게 싫어하거나, 아예 피드백 자체를 주지 않는 경우도 있다.(통칭 Fork-bomb 라고 부르며, 실제 소스코드 & 문서 기여 시 주의사항에 하지 말아야 할 내용으로 적혀 있다.

그 당시 오픈소스 모임에서 소스코드와 연구 자료들을 공유하기 위해 사용하던 DECUS 테이프이다.

FSF의 대표적인 오픈소스인 리눅스 커널의 메일링 리스트 사이트\(LKML\) 화면이다

법의 철퇴와 “잘하는 건, 공짜로 해주면 안 되지”

하지만 1970년대 중-후반에 들어서, 컴퓨터가 예전에 비해 보급이 많이 되고, 소프트웨어를 사용하는 사람들이 많아졌다. 이제 고객들이 하드웨어를 사면 소프트웨어는 같이 묶어서 무료로 배포하던 기업들이, 전략을 바꿔 소프트웨어에 저작권을 갖게 되었고, 모든 사람들이 공개적으로 소스코드를 수정, 열람 할 수 있는 권한이 사라져 버렸고, 돈을 내고 소프트웨어를 구매해야 되는 시대가 도래 하게 되었다. 사실 회사들이 이러한 전략을 취하게 된 까닭이 있었는데, 그 이유는 다음과 같다. 첫 번째로, 1969년도에 있었던 미 연방 대법원 판결이 그 시발점이다. 미 연방 대법원은, IBM과 같은 몇몇 대기업들이 컴퓨터 하드웨어와 소프트웨어 시장을 독점한다고 판단하였다. 연방대법원은, 자사의 하드웨어에다 “자사의 소프트웨어를 무료로 끼워서 제공하는” 행위가 반독점법을 위반 한 것이라 판단하여, 이러한 행위를 금지하였다. IBM역시 이러한 판결이 불공평하다고 판단하였고, 이러한 판결에 대해 항소를 하였다. 여담으로 이러한 법적 싸움이 무려 13년간 IBM과 연방 대법원과의 싸움이 계속되었고, 13년간의 법적 싸움 끝에 IBM이 승소하였지만 이미 시장 점유율은 떨어진 뒤였다. 한편 이러한 법적 싸움을 하면서, IBM은 시장의 판도를 바꿀 결정을 하게 된다. 바로 소프트웨어를 무료로 끼워 파는 행위를 중단하고, 그 대신 소프트웨어 제공 서비스를 SCP(System Control Programming)와, PP(Program Products) 이렇게 두 가지 그룹으로 나누었다. 그런 뒤, SCP는 사용자들에게 무료로 제공을 해주고, PP는 사용자들에게 돈을 받고 팔기 시작하였다. 그 당시 시장을 지배하던 IBM이 이러한 전략을 취하자, 곧 다른 기업에게도 이러한 전략이 엄청나게 빠른 속도로 널리 확산되었다. 이러한 상황을 IEEE 논문지의 한 Topic에서는 이렇게 설명하였다. “하드웨어로부터 파생 되는 소프트웨어와 유지보수 서비스에 대해 요금을 부과하는 모델을 만든, IBM의 이러한 행위가 상업 소프트웨어 시장의 성장을 가져오는 주요한 이정표라고 많은 사람들이 생각하고 있다.” 하지만, 하드웨어와 달리 소프트웨어는 복사와 배포가 용이하다는 속성을 가지게 되었고, 이는 불법복제라는 크나큰 부작용을 낳게 되었다. 이때 이러한 상업적 소프트웨어를 판매하는 대다수의 기업들이 이러한 상황을 매우 싫어하였다. 이러한 상황을 정말로 싫어한 대표적인 사람이 바로 윈도우 OS의 창시자로 유명한 빌 게이츠 이다. 빌 게이츠는 1976년에 이러한 “소프트웨어 도적질”에 일침을 가하기 위해 “컴퓨터 동호인들에게 보내는 공개서한” 이라는 편지를 작성하여 에게 보냈다. 그 내용은 다음과 같다.

“지금 개인 컴퓨터(취미용 컴퓨터) 시장에 있어서 가장 심각한 문제가 있다면, 좋은 소프트웨어 교육과정이 부족한 것, 좋은 서적이 부족한 것 그리고 좋은 소프트웨어 자체가 부족하다는 것입니다. 좋은 소프트웨어, 그리고 프로그래밍을 이해하는 사용자가 없다면 개인용 컴퓨터는 쓸모가 없습니다. 앞으로 쓸 만한 개인용 소프트웨어가 나올 수 있을까요? 약 1년 전 쯤, 폴 엘런과 저는 개인용 컴퓨터 시장이 성장하리라 생각했습니다. 그래서 개발자 몬테 다비도프를 고용하고 알테어 베이직을 개발했죠. 초기 개발은 딱 두 달 밖에 걸리지 않았습니다만 저희 세 명은 약 1년 가까이 베이직의 문서 작업과 성능 개선, 기능 추가를 진행 중입니다. 현재 저희는 4K, 8K의 확장된 ROM과 디스크 베이직을 개발했습니다. 개발 시간으로 환산했을 때, 저희 컴퓨터의 가치는 4만 달러를 넘을 것입니다. 저희의 베이직을 사용하고 있다는 수백 명의 사용자들에게 받았던 반응은 모두 긍정적이었습니다. 그러나 두 가지 명백한 점이 저희를 놀라게 했습니다. 1) 거의 모든 ‘사용자’들이 베이직을 구입한 적이 없었습니다. (10% 미만의 알테어 사용자들만이 베이직을 구입하였습니다) 2) 저희가 개인 사용자들에게 판매한 대가로 받은 저작권 수익을 생각하면, 저희가 알테어 베이직에 썼던 시간은 고작 시간 당 2불에 불과하더군요. 왜 이럴까요? 컴퓨터 동호인들 대부분이 아실테죠. 여러분 대부분이 소프트웨어를 훔쳤기 때문입니다. 네, 꼭 돈을 주고 사야하는 하드웨어와 달리, 소프트웨어는 그냥 공짜로 공유하는 거잖아요. 소프트웨어를 개발했던 사람들이 보상을 받는지 아닌지는 누가 신경이나 쓰겠습니까? 공정한가요? 여러분이 소프트웨어를 훔치면서 하지 못하는 것이라면, 소프트웨어의 문제를 해결하거나 개선사항을 MITS에 전달하는 것이겠죠. MITS는 소프트웨어를 유료로 판매하지 않으니까요. 저희에게 지급된 로열티는 매뉴얼, 디스켓을 만드는 비용 등의 경비에 들어가는데, 겨우 손해를 면하는 수준입니다. 여러분이 하고 있는 바로 그 행동은 좋은 소프트웨어가 개발되는 것을 막습니다. 이런 전문적인 일을 누가 공짜로 할 수 있겠습니까? 혹은 어떤 취미 개발자가 프로그래밍, 디버깅, 문서화까지 완료된 소프트웨어를 개발하고 배포하는데 세 명의 인력을 1년 동안 투입할 수 있겠습니까? 저희들을 제외하면 그 누구도 이런 개인용 소프트웨어에 막대한 자원을 투자하지 않습니다. 저희는 6800 베이직을 개발했으며, 현재 8080 APL과 6800 APL을 개발하고 있습니다만, 이 소프트웨어를 개인 사용자에게 제공할 이유가 있는지는 잘 모르겠습니다. 솔직히 말해, 여러분은 또 훔칠 테니까요. 알테어 베이직을 복제해서 재판매하고 있는 이들은 어떤가요? 그들은 개인용 소프트웨어로 돈을 벌고 있지 않나요? 네 그렇죠. 하지만 저희에게 신고된 이들은 반드시 패배할 것입니다. 그들은 컴퓨터 동호인의 얼굴에 먹칠을 하고 있습니다. 그들은 어떠한 형태의 컴퓨터 동호회에서든 반드시 추방되어야 합니다. 소프트웨어 가격을 지불하실 의향이 있거나, 제안사항, 의견이 있으신 분은 편지를 보내주시면 감사하겠습니다. “1180 Alvarado SE, 114, Albuquerque, New Mexico, 87108” 로 보내주시면 됩니다. 프로그래머 딱 열 명만 고용할 수 있다면 그리고 개인 컴퓨터 시장에 좋은 소프트웨어를 많이 소개할 수만 있다면, 제겐 더할 나위 없는 기쁨이겠습니다.”

또한 Data General(DEC컴퓨터를 판매하던 회사) 역시, 자신들이 개발한 “RDOS“ 라는 운영체제의 불법복제 문제에 대해서 법적문제를 제기 하였고, 결국 자사의 ”RDOS“에 대해 저작권으로 보호를 하는 사건이 발생하게 된다. 이러한 일련의 사태들을 통해 결국 소프트웨어는 유료화 되었고, 저작권을 갖게 되었다. 사람들은 더 이상 저작권에 의해, 허가받지 않은 상태에서는 기존에 개발된 소프트웨어의 소스코드를 고칠 수 없었다. 또한 Closed Source Code라는 개념의 탄생을 알리는 시작이었다.

DEC-10 컴퓨터의 사진

1976년도에 빌게이츠가 altair BASIC을 불법복제하는 불특정 다수에게 보내는 공개 서한

초창기의 오픈소스

이때까지의 컴퓨터는, 크고 무거우며, 유지보수 비용이 엄청나게 들어가는 물건이었다. 소프트웨어 또한, 서로 다른 컴퓨터 들 간의 소프트웨어가 호환이 되지 않았으며, 전문적인 물리, 수학, 통계, 전자 공학적 지식이 있는 소수의 똑똑한 학자들만이 제작, 수정 할 수 있었다. 사용자들 역시 정부 부처, 공공기관, 군대, 거대 기업과 같은 대규모 자본을 운용할 수 있는 곳에서만 사용 할 수 있었다. 이렇듯 진입장벽 때문에 접근할 수 있는 사람이 제한적이었기 때문에, 정보를 숨기고 할 것도 없이 빠르게 연구와 개발을 진행하기에도 벅찼기 때문에, 서로의 정보를 빠르게 공유하고 연구하기 위해서(물론 초창기 컴퓨터 사용자들은 주로 학자들이었다는 것도 한몫 했다.), 그리고 결정적으로 “Data General” 이나 IBM, “Digital Equipment” 와 같은 컴퓨터를 판매하는 회사들이, 빠르게 자신들의 하드웨어의 점유율을 높여야 했기 때문에(생각해보라, 사용법도 모르는 커다랗고 전기만 먹어치우는 쓸모없는 고철덩어리를 누가 사려고 하겠는가!), 마치 사용설명서를 제공하듯이 자신들이 만든 소프트웨어와 내부 상세내용(명령어 목록, 메모리 구조, OS 등)들을 제공하였다. 또한 위에서 언급한 기업들이 소프트웨어에 별다른 가격을 부가하지 않았고, 별다른 권리 또한 주장하지 않았기 때문에, 저작권이란 개념 역시 아직 존재하지 않은 시기였다. 이는 별다른 비용 없이 소프트웨어의 소스코드를 무료로 서로 공유하면서 개발하는 문화와 해커문화 형성에 영향을 끼치는 요인 중 하나로 작용하였다.

ENIAC 컴퓨터의 프로그래밍. 초창기의 프로그래밍인 위의 사진과 같이 엄청나게 번거럽고 불편하였으며, 수정이 어려웠다.

컴퓨터와 소프트웨어의 탄생

먼저 오픈소스의 역사를 설명하기 이전에 컴퓨터가 어떻게 탄생하였는지, 그리고 소프트웨어가 어떠한 방식으로 생겨났는지에 대한 기원을 먼저 소개하도록 하겠다. 독자 중 뜬금없이 “왜 컴퓨터의 역사를 설명하는 거지?” 라고 생각하는 분들이 있을지도 모르겠다. 하지만, 오픈소스의 탄생은 사실 컴퓨터의 역사와 그 궤를 같이하고 있다. 이제부터 그 이유를 설명하도록 하겠다.

먼저 중학교 때 컴퓨터 시간에 배운 컴퓨터의 역사에 대해 떠올려보자.

제 2차 세계 대전이 끝난 년도인 1945년에 최초의 컴퓨터라고 불리는 에니악(ENIAC)이 탄생한 이후, 10년도 채 되지 않아서, EDVAC, EDSAC, UNIVAC과 같은 많은 컴퓨터가 생겨나기 시작하였다. 하지만 이러한 초창기 컴퓨터들의 공통점은 프로그램을 작성하기 매우 힘들고 까다롭다는 것인데, 그 이유인즉슨, 프로그램을 기계어로 작성을 했어야 했는데 기계어와 같은 경우 컴퓨터는 해석하기가 쉽지만 사람은 이 기계어를 읽고/쓰는, 즉 작성하는 것이 어렵다는 치명적인 단점이 있었다. 이러한 단점은 상업용으로 출시된 UNIVAC 컴퓨터도 똑같이 겪고있던 문제였고, 이를 부분적으로 나마 해결하기 위해 1953년 최초의 상업용 언어인 코볼을 발명한 것으로 유명한 그레이스 호퍼의 주도 하에 A-2 시스템이라는 컴파일러의 링커 또는 ELF나 PE와 같은 OS의 프로그램 로더에 해당하는 프로그램이 개발되었다. 흥미로운 것은, 이 A-2 시스템이 최초로 UNIVAC 컴퓨터 판매와 동시에 저작권 없이 소스코드를 무료로 배포하던 소프트웨어라는 것이다. 즉 오픈소스의 시초가 된 최초의 소스코드가 된 것이다.

그레이스 호퍼는 미합중국 해군의 제독, 컴퓨터과학자, 수학자로 A-2와 코볼이 호퍼의 대표작이다. 또한 코볼의 개발로 코볼과 컴파일러의 어머니 라는 별명을 갖게 되었다.

UNIVAC은 최초로 상업용으로 개발된 컴퓨터이다.

OSI가 말하는 오픈소스의 정의

오픈 소스가 생기기 전, 컴퓨터 업계에선 소프트웨어를 만든 회사가 그 소프트웨어를 제품으로 판매함으로써 이익을 내는 것이 일반적이었다. 이러한 소프트웨어를 상용 소프트웨어라고 하는데, 이 경우 소스코드를 공개해 버리면 다른 회사가 그 소스 코드를 가져가서 사용할 수도 있기 때문에 소스 코드를 공개하지 않았다. 그러던 도중 미국의 AT&T의 벨연구소에서 UNIX라는 OS를 개발해 교육기관과 일반 기업들에게 소스 코드를 공개했다. 그 후 개발자들이 소스 코드를 수정함으로써 유닉스가 여러 컴퓨터 상에서 동작할 수 있게 되었고 세상에 널리 퍼지게 되었다. 그리고 이것이 지금의 오픈소스의 발판이 되었다. 이와 같이 소스 코드를 공개해 모든 개발자들과 기술을 공유하고, 자유롭게 개발에 참여하도록 함으로써 소프트웨어를 발전시키자는 것이 오프 소스의 기본적인 생각이다.

하지만 오픈소스가 주목받기 시작한 초기에는 오픈소스의 개념에 대한 명확한 정의가 존재하지 않았기 때문에, 사용하는 사람에 따라 의미에 혼동이 생겼다. 이런 사태를 수습하기 위해 Open Source Initiative(OSI)라는 단체가 공개 소스 정의(OSD)라는 오픈소스에 대한 정의를 발표했다.

출처 - 공개SW포털

OSI는 오픈소스 소프트웨어 사용을 장려하기 위해 1998년 설립된 비영리 단체로 OSD의 관리 및 촉진 뿐만 아니라 ‘공개 소프트웨어 인증마크’ 를 발급함으로써 인증마크를 받은 소프트웨어가 오픈소스라는 것과, 해당 소스의 복제도 가능하다는 것을 증명한다. OSI가 발표한 OSD에서는 다양한 종류의 오픈소스 라이선스가 지켜야 할 최소한의 기준을 정함으로써 오픈소스를 정의하고 있다.

오픈소스 소프트웨어 인증마크\(출처 : OSI 홈페이지\)

소프트웨어란?

오픈소스가 무엇인지 알기 전에 소프트웨어가 무엇인지 알아야하지 않을까?

인터넷에 소프트웨어를 검색해보면

컴퓨터를 동작 시키고 컴퓨터에 어떤 일을 처리할 순서와 방법을 지시하는 명령어의 집합인 프로그램과 프로그램의 수행에 필요한 절차, 규칙, 관련 문서 등의 총칭, 보통 프로그램과 같은 의미로 쓰인다. 컴퓨터 시스템을 구성하는 요소 중에서 형체를 갖고 있는 하드웨어를 제외한 보이지 않는 무형의 부분을 소프트웨어라고 할 수 있다.(한국 정보통신 기술 협회)

전자계산기의 사용에 관한 사항을 총괄하는 분야, 하드뒈어의 대상어로써 이용된다.(도해 기계용어 사전)

이들을 조합해보면 소프트웨어는 하드웨어를 사람의 신체, 소프트웨어는 사람의 뇌 정도로 볼 수 있다. 즉, 소프트웨어는 컴퓨터, 스마트폰 등의 행동을 처리한다. 뇌가 기능에 따라 여러 부분으로 구분이 되는 만큼 소프트웨어도 기능에 따라 시스템 소프트웨어, 응용 소프트웨어로 나뉜다.

시스템 소프트웨어는 컴퓨터를 작동시키고, 효율적으로 사용하기 위한 프로그램으로서, 사용자들이 컴퓨터를 보다 편리하게 이용할 수 있도록 도와준다, 컴퓨터 사용자는 하드웨어를 잘 몰라도 시스템 소프트웨어의 사용법만 알면 컴퓨터를 이용할 수 있다. 운영체제(OS), 컴파일러, 텍스트 에디터 등이 이에 속한다.

응용 소프트웨어는 운영체제에서 실행되는 모든 소프트웨어를 말한다. 응용 소프트웨어는 영어로 Application Software인데 줄여서 App(앱)이라고도 한다.

"어? 애플리케이션은 스마트폰에만 있는 그거 아닌가?"

라고 생각하는 사람들이 있을텐데, 이는 MS에서 ‘(응용)프로그램’이라는 단어를 밀면서 ‘애플리케이션’이란 단어를 잘 쓰지 않게 되었다가 application의 약자로 app을 사용한 아이폰이 대히트를 치면서 그 인지도 탓에

'애플리케이션 = 스마트폰용 소프트웨어, 프로그램 = PC용 소프트웨어'

라는 인식이 생기게 되었는데 이는 잘못된 상식이다.

사용자와 소프트웨어의 상호작용

오픈이지만 권리는 있어

오픈 소스 라이선스는 ‘소프트웨어와 다른 소스 코드, 청사진 또는 디자인은 정의 규정 및 조건에 따라 사용, 수정 및 공유할 수 있도록 허용되는 물건들의 라이선스의 종류’ 이다. 오픈소스 라이선스마다 허용하는 항목과 범위가 다르기 때문에 오픈소스 소프트웨어를 이용할 때는 해당 라이선스의 허용 범위를 정확히 확인하고 사용해야 한다.

<출처 : 공개SW포털>

이런 라이선스가 왜 필요할까?

다음과 같은 예를 생각해보자.

어떤 개발자가 모처럼 소스 코드를 공개하고, 온 세상의 개발자에게 그 소프트웨어 개발에 자유롭게 참여하도록 하여 소프트웨어의 개선을 꾀하려고 하였다. 그러나 도중에 다른 누군가가 그 소스 코드를 사용해 다른 소프트웨어를 만들어서, 소스코드를 제공하지 않고 판매했다. 게다가 그 사람이 공개된 소스 코드를 자신이 썼다고 주장하고, 상업적인 권리를 획득했다.

이런 경우, 최초로 오픈소스로서 소프트웨어를 만든 사람의 목적이나 권리가 빼앗겨 버린다. 라이선스가 이를 방지하여 오픈소스 개발자의 의도나 권리를 지켜준다.

오픈소스를 공개할때 GPL 또는 BSD 라이선스를 붙여서 공개한다. GPL은 소스 코드의 공개를 원칙으로 하고 사용자에게 소스코드를 포함한 재배포나 개조의 자유를 인정해 이를 방해하는 행위를 금지하는 엄격한 조건을 붙이고 있는 반면에, BSD는 무보증,면책을 선언하여 재배포 할 때에 저작권 표시를 행하는 것만을 조건으로 하고 있다.