오픈소스는 어떻게 세상을 바꿨는가
지난 글 해커란 무엇인가에서 1960년대 MIT 동아리 해커들이 했던 말을 소개했습니다. “Information wants to be free”, 정보는 자유롭기를 원한다는 말이었습니다. 자신이 알아낸 원리와 코드를 혼자 쥐고 있지 않고 모두가 보고 고칠 수 있게 풀어놓는다는 생각입니다.
그 생각이 단순한 구호로 끝났다면 지금 이 글을 쓸 이유가 없습니다. 그 정신은 오픈소스라는 이름으로 자라났고, 오늘날 여러분이 사용하는 거의 모든 서비스가 그 위에서 구동됩니다. 스마트폰, 웹사이트, 검색, 메신저 가운데 오픈소스를 한 줄도 쓰지 않은 것을 찾기가 더 어렵습니다. 이번 글에서는 오픈소스가 무엇이고, 어떤 과정을 거쳐 현대 IT의 토대가 되었는지 교양 수준으로 정리하겠습니다.
오픈소스란 무엇인가 #
오픈소스는 소스코드를 공개한 소프트웨어를 말합니다. 여기서 소스코드는 사람이 읽고 쓸 수 있는 형태의 프로그램 설계도입니다.
대부분의 상용 소프트웨어는 이 설계도를 공개하지 않습니다. 우리는 완성된 결과물만 받아서 쓰고, 안에서 무슨 일이 벌어지는지는 알 수 없습니다. 반대로 오픈소스는 설계도를 통째로 열어둡니다. 누구나 코드를 들여다보고, 마음에 들지 않으면 고치고, 고친 것을 다시 다른 사람에게 배포할 수 있습니다.
보고, 고치고, 다시 배포할 수 있다는 이 세 가지가 오픈소스의 핵심입니다. 단순히 무료라는 뜻이 아닙니다. 자동차에 비유하면 무료 소프트웨어는 기름을 공짜로 넣어주는 자동차이고, 오픈소스는 보닛을 열어 엔진을 직접 뜯어보고 부품을 갈 수 있게 허락한 자동차입니다.
자유 소프트웨어 운동에서 시작되다 #
오픈소스의 뿌리는 리처드 스톨먼(Richard Stallman)이라는 프로그래머에게 있습니다. 1980년대 초, 소프트웨어 회사들은 소스코드를 닫아걸기 시작했습니다. 스톨먼은 이 흐름에 반발했습니다. 사용자가 코드를 보고 고칠 자유를 빼앗기는 것이 부당하다고 본 것입니다.
그래서 1983년, 스톨먼은 GNU 프로젝트를 시작합니다. 누구나 자유롭게 쓰고 고칠 수 있는 운영체제를 처음부터 만들겠다는 계획이었습니다. 1985년에는 자유 소프트웨어 재단(Free Software Foundation)을 세웁니다.
그가 만든 또 하나의 중요한 발명은 라이선스였습니다. 1989년에 정리한 GPL(GNU General Public License)이라는 사용 규약은 카피레프트(copyleft)라는 독특한 개념을 담았습니다. 저작권(copyright)을 뒤집은 말장난처럼 들리지만 발상은 진지합니다. “이 코드는 자유롭게 써도 좋다. 단, 이 코드로 만든 것도 똑같이 자유롭게 풀어야 한다.” 자유를 강제하는 자유였습니다.
리눅스, 빠진 조각을 채우다 #
GNU 프로젝트는 운영체제의 거의 모든 부품을 만들었지만, 가장 안쪽에서 하드웨어를 직접 다루는 핵심 부품인 커널(kernel)이 끝내 완성되지 못하고 있었습니다.
그 빈 부분을 채운 사람이 핀란드의 대학생 리누스 토르발스(Linus Torvalds)입니다. 1991년, 그는 자신이 만든 운영체제 커널을 인터넷에 공개합니다. 이것이 리눅스(Linux)입니다. GNU의 부품들과 리눅스 커널이 합쳐지면서 비로소 완전히 자유로운 운영체제가 완성됩니다.
흥미롭게도 처음에는 이 운동이 “자유 소프트웨어"라는 이름으로 불렸습니다. 그런데 free라는 영어 단어가 “자유"와 “공짜"를 동시에 뜻하다 보니, 기업들이 돈 얘기로 오해하는 일이 잦았습니다. 그래서 1998년 2월, 크리스틴 피터슨(Christine Peterson) 등이 모인 자리에서 “오픈소스(open source)“라는 새 이름이 제안되었고, 이 말이 빠르게 자리 잡습니다. 가격이 아니라 코드가 열려 있다는 점을 앞세운 이름이었습니다.
GPL과 MIT, 두 갈래의 약속 #
오픈소스라고 모두 같은 규칙을 따르는 것은 아닙니다. 라이선스에 따라 허용 범위가 다릅니다. 크게 두 갈래로 나눠 가볍게 살펴보겠습니다.
한쪽은 앞에서 본 GPL 계열입니다. 카피레프트라서 이 코드를 가져다 고치면, 고친 결과물도 똑같이 공개해야 합니다. 자유를 다음 사람에게 의무적으로 물려주게 하는 방식입니다.
다른 한쪽은 MIT나 아파치(Apache) 같은 허용형 라이선스입니다. 훨씬 느슨합니다. 가져다 고친 다음 그것을 공개하지 않고 상용 제품으로 팔아도 괜찮습니다. 출처만 밝히면 됩니다. 기업 입장에서는 부담이 적어서, 요즘 많은 프로젝트가 이쪽을 택합니다.
어느 쪽이 옳다기보다는 목적이 다릅니다. GPL은 자유의 전파를 중시하고, MIT 계열은 최대한 널리 쓰이는 것을 중시합니다.
세상이 오픈소스 위에서 동작한다 #
이 흐름이 만들어낸 결과는 한 문장으로 정리됩니다. 오늘날 거의 모든 서비스가 오픈소스 위에서 동작합니다.
여러분 손에 든 안드로이드 스마트폰의 바탕은 리눅스 커널입니다. 우리가 접속하는 웹사이트들은 상당수가 오픈소스 웹서버 위에서 구동됩니다. 프로그래밍을 배울 때 가장 먼저 만나는 파이썬(Python)과 자바스크립트(JavaScript)는 거대한 오픈소스 생태계 그 자체입니다. 구글의 크롬(Chrome) 브라우저조차 크로미움(Chromium)이라는 오픈소스를 바탕으로 만들어졌습니다.
심지어 개발자들이 코드를 관리하는 도구 자체가 오픈소스입니다. 리누스 토르발스는 리눅스만 만든 것이 아니라, 코드 변경 이력을 추적하는 깃(Git)도 만들었습니다. 전 세계 개발자가 코드를 올리고 협업하는 GitHub가 바로 이 깃 위에 세워진 서비스입니다.
조금 과장하면, 오픈소스가 멈추면 인터넷 상당 부분이 멈춥니다. 눈에 보이지 않는 토대일 뿐입니다.
공짜가 아니라 비즈니스 #
오픈소스가 모두 자원봉사로만 굴러간다고 생각하면 오해입니다. 큰 기업들이 막대한 인력과 돈을 들여 오픈소스에 기여하고, 그 위에서 사업을 합니다.
대표적인 회사가 레드햇(Red Hat)입니다. 리눅스는 누구나 공짜로 쓸 수 있는데, 레드햇은 그 리눅스를 기업이 안심하고 쓸 수 있도록 안정화하고, 보안 업데이트를 보장하고, 문제가 생기면 책임지고 지원해주는 서비스를 팔아 회사를 키웠습니다. 결국 IBM에 거액으로 인수되기까지 합니다.
소프트웨어 자체는 공개하더라도, 그것을 안정적으로 운영하고 지원하는 일에는 분명한 값어치가 있습니다. 구글, 마이크로소프트 같은 거대 기업들도 자사 인력을 투입해 오픈소스 프로젝트를 돕습니다. 자신들의 서비스가 그 위에서 동작하기 때문에, 토대를 튼튼히 하는 것이 곧 자기 이익이기 때문입니다.
빛이 있으면 그늘도 있다 #
오픈소스가 장점만 있는 것은 아닙니다. 가장 큰 고민은 유지보수입니다.
누구나 쓸 수 있다는 말은 뒤집으면 아무도 책임지지 않을 수 있다는 말이기도 합니다. 전 세계가 의존하는 핵심 프로젝트를, 정작 소수의 자원봉사자가 무보수로 떠받치는 경우가 적지 않습니다.
2014년에 터진 하트블리드(Heartbleed) 사건이 이 문제를 적나라하게 보여줬습니다. 당시 전 세계 웹서버의 약 3분의 2가 OpenSSL이라는 암호화 소프트웨어를 쓰고 있었습니다. 그런데 이 거대한 토대를 관리하는 인력은 사실상 시간제 개발자 두어 명에 불과했고, 받는 후원금은 한 해 수천 달러 수준이었습니다. 작은 코드 실수 하나가 전 세계 통신의 비밀을 위협하는 구멍으로 번졌습니다.
이 사건 이후 업계는 충격을 받았습니다. 리눅스 재단이 나서서 핵심 인프라에 자금을 대는 모임을 만들고, 큰 기업들이 돈을 모아 OpenSSL 개발자를 정규로 고용하게 했습니다. 우리가 당연하게 여기는 토대가, 알고 보면 누군가의 호의로 아슬아슬하게 버텨질 수 있다는 교훈이었습니다.
마무리 #
이번 글에서는 오픈소스가 무엇이고, 1983년 GNU 프로젝트에서 1991년 리눅스를 거쳐 어떻게 현대 IT 전체의 토대가 되었는지 살펴봤습니다. 라이선스의 두 갈래, 기업과의 관계, 그리고 소수가 토대를 떠받치는 그늘까지 함께 짚었습니다.
지난 글의 해커들이 외쳤던 “정보는 자유롭기를 원한다"는 말은 막연한 이상이 아니었습니다. 그 생각은 코드가 되고, 운영체제가 되고, 우리가 매일 쓰는 서비스의 바닥이 되었습니다. 한 사람의 신념이 수십 년에 걸쳐 세상의 작동 방식을 바꾼 셈입니다.
다음 글에서는 그 토대 위에서 코드를 함께 쓰고 관리하는 도구, 깃과 GitHub가 정확히 어떻게 협업을 바꿔놓았는지 더 자세히 다뤄보겠습니다.