2016년 3월 20일 일요일

자유 소프트웨어와 오픈소스 소프트웨어

1970년대 소프트웨어 개발이 일부 해커들의 전유물이던 시절에는 소프트웨어를 서로 댓가 없이 복사해서 사용했다. 기업도 마찬가지로 소프트웨어를 무료로 배포하였고, 사용자들이 수정하고 복사하도록 허용했다.

초기 해커한 대한 이야기는 성당과 시장 1장 "해커문화의 짦은 역사"에서 찾아볼 수 있다.


80년대 후반 부터 자유 소프트웨어 운동을 이끌고 있는 리처드 스톨먼도 1971년 부터 MIT대학 인공지능 연구소에서 일하면서 소프트웨어 공동체의 구성원이 되었고, 해커로서 이름을 알리기 시작했다.
 

그 당시에는 내가 속한 소프트웨어 공동체만이 소프트웨어를 공유하는 문화를 갖고 있지 않았어. 마치 요리 만드는 방법을 서로 나누는 것이 요리의 역사 만큼 오래된 것처럼, 소프트웨어를 공유하는 것 역시 컴퓨터의 역사 만큼이나 오래된 것이였지.
 


그래서, 새로운 프로그램을 발견하면, 언제라도 소스코드를 얻어서 고치거나 그 코드를 일부로해서 새로운 프로그램을 만들 수 있었지.

   
“C 컴파일러 복사해줘서 고마와요.”
“하하, 뭐~ 당연한 것을..”
 

 

하지만, 당시 Altair용 베이직 언어를 개발한 빌 게이츠는 컴퓨터 자작 클럽에서 자신들이 만든 베이직을 무단으로 복사하고 있다는 사실을 알고 분노했다. 그리고 클럽 구성원들에게 공개 편지를 썼다.
Bill Gates Letter to Hobbyists
Altair용 베이직 개발에 대한 자세한 이야기는 위키피디아에서 찾아 볼 수 있다.
 

당시에는 소프트웨어는 하드웨어의 번들이라고 생각했기 때문에 빌게이츠가 하드웨어가 판매될때 마다 베이직에 대한 로열티를 받는 것이 문제라고 여겼다. 하지만, 컴퓨터가 대중화되면서 소프트웨어는 라이선스를 사는 개념으로 바뀌었다.


“내가 옳았어! 소프트웨어는 라이선스를 팔아야 돈을 벌지!”
 

문제는 대부분의 라이선스는 사용 권한을 얻을 뿐 소스코드를 받을 수 없었고 심지어 리버스 엔지니어링도 허용되지 않는다.

계약서?”
리버스 엔지니어링은 허용되지 않습니다. 소스코드는 당연히 주지 않습니다.”
 

자유소프트웨어
여기에 반기를 든 사람이 바로 리처드 스톨먼이다. 리처드 스톨먼은 소프트웨어를 공공영역으로 인식했다. 그리고 소스코드는 컴퓨터 과학을 발전시키는 데 기본이며, 변화가 계속되기 위해서는 소스코드를 자유롭게 사용할 수 있어야 한다고 생각했다.
 
또한, 우리가 자동차를 사면 스스로 수리를 할 수 있듯이 소프트웨어도 사용자 스스로 문제를 해결할 수 있어여 한다고 믿었다.
이를 위해 사용자가 누릴 수 있는 소프트웨어 사용에 대한 자유를 아래와 같이 구체적으로 정의하고, 이를 지키는 소프트웨어를 자유 소프트웨어라고 불렀다.
  • 프로그램을 어떠한 목적을 위해서도 실행할 수 있는 자유 (자유 0)
  • 프로그램의 작동 원리를 연구하고 이를 자신의 필요에 맞게 변경시킬 수 있는 자유 (자유 1). 이러한 자유를 위해서는 소스 코드에 대한 접근이 선행되어야 합니다.
  • 이웃을 돕기 위해서 프로그램을 복제하고 배포할 수 있는 자유 (자유 2)
  • 프로그램을 향상시키고 이를 공동체 전체의 이익을 위해서 다시 환원시킬 수 있는 자유 (자유 3). 이러한 자유를 위해서는 소스 코드에 대한 접근이 선행되어야 합니다.
자유 소프트웨어에 대한 더 자세한 설명은 gnu.org를 참고.
 

대표적인 자유소프트웨어로 리눅스 커널을 예로 들을 수 있다. 리눅스 커널은 많은 전자기기를 동작시키는 핵심 소프트웨어, 즉, 운영체제로 사용되고 있다
 

오픈소스 소프트웨어
1997년 봄, 자유 소프트웨어 공동체 리더 모임이 캘리포니아에서 있었다. 이 모임에서 팀 오라일리, 래리 오거스틴, 에릭 레이먼드가 오픈소스 소프트웨어 대해 논의하기 시작했다.

에릭 레이먼트 (Eric Steven Raymond, ESR)는 "성당과 시장"의 저자이며 오픈소스 운동의 대표 인물이다. 넷스케이프 브라우저 소스코드 공개에 큰 영향을 주었다.
성당과 시장은 무료로 다운로드 받아 볼 수 있다.


팀 오라일(Tim O'Reilly)는 오라일리 미디어(O'Reilly Media)의 창립자이다. 그는 오픈 소스와 웹 2.0이라는 용어를 대중화하였다

 
“기업들도 자유 소프트웨어로 소스코드를 공개하면 좋을 텐데...”
“GPL라이선스가 너무 엄격해서 상용 SW에 적용하기는 쉽지 않을거야..”
“대부분 기업들이 RMS가 주장하는 자유소프트웨어에 대해 거부감이 많아..”


아마도 이런 대화 내용이 오고 갔을 것이다.
 
“오픈소스 소프트웨어라는 말은 어때?”

"우선 기업들에게 소스코드를 공개
하도록 유도하는 것이 가장 중요하니까, 그 이름이 더 좋아보이는군"


이후 브루스 페런스는 Debian Free Software Guidelines를 고쳐서 “OSD(Open Source Definition)”이라는 문서를 만들었다.


아래와 같은 조건을 준수하는 소프트웨어 라이센스를 오픈소스 소프트웨어라고 부르도록 했다.
  • 프로그램을 복제하여 배포할 수 있는 권리
  • 소프트웨어의 소스 코드에 접근할 수 있는 권리
  • 프로그램을 개선할 수 있는 권리
그리고 에릭 레이먼드와 함께 OSI(Open Source Initiative)라는 단체를 만들고 OSD를 만족하는 소프트웨어 라이센스를 오픈소스 소프트웨어라 부르도록 하였다.

오픈소스에 대한 자세한 내용은 오픈소스 혁명의 목소리 vol.2 11장 "오픈소스에 대한 정의"에서 찾아볼 수 있다.
 
 
자유 소프트웨어와 오픈소스 소프트웨어의 차이

“그렇다면 자유 소프트웨어와 오픈소스
소프트웨어의 차이는 무엇일까?”
자유 소프트웨어와 오픈소스 소프트웨어는 같은 소프트웨어를 지칭하기도 하지만 바라보는 관점에서 차이가 있다. 오픈소스는 개발 방법론이고 자유소프트웨어는 사회적 운동이다. 자유 소프트웨어는 윤리적 명령(ethical imperative)으로서 사용자에게 주어진 자유를 기본적으로 중요하게 생각했다. 반면, 오픈소스의 철학은 실용적인 관점에서 소프트웨어를 어떻게 잘 만들 것인가를 고려한다. 그 결과 오픈소스 개발 방식이 독점 소프트웨어 개발 방식 보다 우수한 소프트웨어 개발 방식이라고 이야기한다.
참고: Why Open Source misses the point of Free Software

대부분의 오픈소스 소프트웨어는 자유 소프트웨에이기도 하다. 하지만, 일부 오픈소스 라이선스는 수정된 버전을 만들어 개인적으로 사용하지 못하도록 한다. 어떤 소프트웨어는 실행 파일의 서명을 체크해서 수정된 버전이 설치되는 것을 막고, 오직 권한이 있는 회사만이 실행 파일을 만들고 디바이스의 모든 접근 권한을 갖도록 한다. 이 부분도 사용자의 자유를 침해하는 것이다.
오픈소스 소프트웨어의 성공적인 모델 덕분에 많은 기업들의 오픈소스 개발 방식을 택하고 있다.

Microsoft
Chakra
Google
Android/ Chromium
Samsung
Tizen
LG
WebOS


하지만, 모든 오픈소스 소프트웨어가 항상 성공하는 것은 아니다. 때로는 사용자에게 얼마나 많은 자유를 주는지가 중요할 때도 있다. 사실, 오픈소스라는 용어가 더 편하고 일반적이지만, 항상 사용자의 자유를 고민해야 한다. -끝-