Skip to content

Latest commit

 

History

History
128 lines (60 loc) · 15.6 KB

chapter1_3.md

File metadata and controls

128 lines (60 loc) · 15.6 KB

1-3. GNU프로젝트

공식홈페이지

GNU프로젝트는 리처드 스톨만을 중심으로 자유 소프트웨어 재단에서 진행중인 오픈소스 OS 프로젝트이다. 이 소프트웨어 프로젝트의 목표는 컴퓨터 사용자가 자유롭게 소프트웨어를 개발 및 제공하여 컴퓨터 및 장치를 통제할 수 있게 하는 것이다.

GNU 운영체제는 유닉스와 상위호환성을 가지는 완전한 자유 소프트웨어 시스템이다. GNU는 'GNU is Not Unix'의 약자로, 리처드 스톨만은 '그누'로 읽자고 제안했다.

GNU 시스템을 개발하기 위한 프로젝트를 “GNU 프로젝트”라고 한다. GNU 프로젝트는 이전에 컴퓨팅 공동체 내에 충만해 있었던 상호협력의 정신을 재건하기 위한 방법으로서 1983년에 구상되었다. 이는 독점 소프트웨어의 소유자들에 의해 만들어진 상호협력에 대한 장벽들을 제거함으로서 상호 협력의 풍토를 부활시키기 위한 것이었다.

리차드 스톨만이 MIT에서 연구활동을 시작했던 1971년에, 그는 자유 소프트웨어만을 사용하는 연구 그룹에서 일했다. 그 시절은 컴퓨터 회사들조차 흔히 자유 소프트웨어를 배포하던 때였다. 프로그래머들은 자유롭게 서로 협력할 수 있었고 보통 그렇게 했다.

1980년대에 이르러, 거의 모든 소프트웨어들은 독점되었는데, 이는 소프트웨어가 사용자들에 의해 상호협력을 금지하고 방지하는 소유자들을 가진다는 것을 의미한다. 바로 이것이 GNU 프로젝트가 필요하게 된 이유였다.

모든 컴퓨터 사용자들은 유닉스와 호환성을 가지는 운영체제가 필요하다. 그래서 만약 자유롭게 사용할 수 있는 운영체제가 없다면, 독점 소프트웨어에 의존하지 않고서는 컴퓨터를 사용하기 시작하기조차 할 수 없다. 따라서 자유 소프트웨어에 관한 첫 번째 과제는 분명히 자유 운영체제를 만드는 것이었다.

유닉스와 유사한 운영체제는 커널, 컴파일러, 문서 편집기, 조판 프로그램, 메일 소프트웨어, 그래픽 인터페이스, 라이브러리, 게임 및 이외의 많은 것들을 포함한다. 따라서 완성된 운영체제를 만드는 것은 무척이나 방대한 작업이다. 이것을 1984년 1월에 시작했고, 자유 소프트웨어 재단(Free Software Foundation)은 처음에 GNU의 개발을 돕기 위한 펀드를 조성하기 위해 1985년 10월에 창립되었다.

1990년대에 와서, 커널 하나를 제외하고 모든 주요한 구성요소들을 발견하거나 작성했다. 그리고 유닉스와 유사한 커널인 리눅스가 '리누스 토발즈(Linus Torvalds)'에 의해 1991년에 개발되어 1992년에 자유 소프트웨어가 되었다. 리눅스를 거의 완전한 GNU 시스템과 결합함에 의해 완전한 운영체제인 GNU/Linux 시스템이 탄생했다. 이제는 수천만명의 사람들이 특히 GNU/Linux 배포판들을 통해 GNU/Linux 시스템을 사용하는 것으로 추정된다. 현재 리눅스의 주요한 버전은 비자유 펌웨어인 “blobs”를 포함하는데, 이에 따라 현재 자유 소프트웨어 활동들은 Linux의 수정된 자유 버전인 Linux-libre를 운영하고 있다.

그러나 GNU 프로젝트는 핵심 운영체제에 국한되지 않는다. GNU 프로젝트의 목표는 많은 사용자들이 가지길 원하는 무엇이든 모든 부분의 소프트웨어를 제공하는 것을 목표로 한다. 이것은 애플리케이션 소프트웨어를 포함한다. 자유 소프트웨어 애플리케이션 프로그램의 카탈로그를 제공하는 자유 소프트웨어 디렉토리(Free Software Directory)를 참고하기 바란다.

또한 그들은 컴퓨터 전문가가 아닌 일반 사용자들에게 소프트웨어를 제공하기를 원했다. 그래서 초보자들이 GNU 시스템을 이용할 수 있도록 하기 위해 GNOME이라는 그래픽 데스크탑을 개발했다.

자유 소프트웨어는 어느 한계까지 발전할 수 있을까? 특허 제도와 같은 법률들이 자유 소프트웨어를 막는 경우를 제외한다면 어떤 제한도 없다. GNU 프로젝트의 궁극적인 목적은 컴퓨터 사용자들이 원하는 모든 형태의 작업들을 할 수 있도록 자유 소프트웨어를 제공하고, 그래서 독점 소프트웨어를 사라지게 하는 것이다

출처

  • GNU 선언문

    GNU 선언문은 리처드 스톨만이 1985년 GNU 프로젝트의 목표를 설명하고 다른 사람들의 참여와 지원을 요청하기 위해 작성한 글이다.

    세부내용은 GNU선언문 에서 확인할 수 있다.

  • GNU 일반 공중 사용 허가서(GPL)

    GNU 일반 공중 사용 허가서(GNU General Public License)는 자유 소프트웨어 재단에서 만든 오픈소스 소프트웨어를 위한 라이센스이다. 대표적으로 리눅스 커널이 이용하는 사용 허가이다. GPL은 가장 널리 알려진 강한 카피레프트 사용 허가이며, 이 허가를 가진 프로그램을 사용하여 새로운 프로그램을 만들게 되면 파생된 프로그램 역시 같은 카피레프트를 가져야 하는 전염성을 가진다. 이러한 철학에서 GPL은 컴퓨터 프로그램을 이용하는 사람에게 자유 소프트웨어의 권한을 누리며 카피레프트를 사용함으로써 그러한 자유가 보전되고, 이전 작업 내용을 수정하거나 다른 내용을 추가하는 것도 허용됐다.

    GPL은 누구에게나 다음 다섯가지 의무를 강제한다.

    1. 컴퓨터 프로그램을 어떠한 목적으로든지 사용할 수 있다. 다만 법으로 제한하는 행위는 할 수 없다.
    2. 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스코드를 무료로 배포해야 한다.
    3. 컴퓨터 프로그램의 소스 코드를 용도에 따라 변경할 수 있다.
    4. 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 한다.
    5. 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스를 취해야 한다. 즉 GPL 라이선스를 적용해야 한다.

    리처드 스톨만은 GNU 프로젝트로 배포된 프로그램의 라이센스로 사용하기 위해 GPL을 처음 작성하였다. GPL이 만들어지기 이전에 Emacs, GNU 디버거, GNU 컴파일러(gcc)에서 각각의 고유한 라이센스가 있었으나 스톨만의 목표는 어떤 프로그램에서도 사용할 수 있는 하나의 라이센스를 만들어서 여러 프로젝트에서 코드를 공유할 수 있게 하는 것이었다. 이 같은 목적에 맞는 형태로써 1989년 1월에 GPL이 처음으로 등장하게 되었다.

    이후 GPL은 두차례의 개정과정을 걸치며 발전하게 된다.

    • GPLv1

      1989년 1월에 발표된 최초의 GPL로 이는 자유 소프트웨어의 두 가지 중요한 자유를 보장해 주었다. 하나는 프로그램의 소스 코드를 공개하지 않은 채 바이너리 파일만 배포하는 것을 막는 것으로 이를 위해 GPLv1에는 프로그램을 GPLv1로 배포할 때 사람이 이해하기 쉬운 소스 코드를 같이 배포해야 한다는 조건이 생겨났다.

    • GPLv2

      GPL의 두번째 버전은 1991년 6월에 발표되었다. 주요한 변화는 GPL 프로그램을 배포하는 것을 막는 조건을 추가한 것으로, 예를 들어 특허로 인해 추가적인 돈을 지불해야 한다거나 하는 일이 발생하여 소스 코드의 공개가 불가능하고 실행 바이너리 프로그램만 배포하려 할 경우, 소스코드 뿐만 아니라 바이너리 프로그램 또한 배포를 할 수 없게 한 것이댜.

    • GPLv3

      GPL의 3번째 버전은 2007년 6월 29일에 발표되었다. 주요한 변경점은 소프트웨어 특허에 대한 대처, 다른 라이센스와의 호환성, 디지털 제한 관리 등이 있다. 변경점 중 개발한 기기의 소프트웨어가 GPL의 조항을 모두 따르더라도 만일 이용자가 하드웨어에 개조된 별도의 소프트웨어를 설치해 구동시켰을 때 하드웨어가 실행을 거부할 경우 위반이라는 조항이 있는데, 이는 마이크로소프트에서 바이러스와 다름없다며 비난하고, 리눅스 커널을 개발한 리누스 토발즈를 비롯한 다수의 리눅스 프로그래머가 반대하는 등 많은 논란을 불러 일으켰다. 관련 기사

    이외에도 GPL에서 변형된 GNU 약소 일반 공중 사용 허가서(The GNU Lesser General Public License, LGPL)와 GNU 자유 문서 사용 허가서(GNU FDL)가 있다. LGPL은 GPL의 전염성이 더 약화되어 더욱 허용된 형태의 라이센스이고 GNU FDL은 GNU 소프트웨어에 대한 문서의 사용 허가를 위해 만들어졌다.

    GPL은 오늘날 자유 소프트웨어 저작권 중 가장 널리 쓰이고 있으며, 대부분의 GNU 프로젝트는 GPL과 LGPL의 기준에 따라 진행되고 있다.

  • GNU에 대한 반대의견과 그에 대한 GNU의 입장

    • 프로그래머는 자신의 노동에 보상을 받지 못한다.

      -어떤 일이 보상받을 만한 가치가 있다면 그것은 곧 사회적 공헌을 의미한다. 창의성이란 그 결과물을 사회가 대가 없이 사용할 수 있을 때 사회적 공헌이 되는 것이다. 어떤 혁신적인 프로그램을 제작한 사람이 그에 대해 보상을 받아야만 한다면, 같은 맥락에서 그것을 자유롭게 사용하지 못하게 한다면 그때는 처벌을 받아야 할 것이다.

    • 그렇다면 프로그래머는 보상을 요구할 수 없는건가?

      -유해한 수단을 사용하지 않는다면, 노동에 대한 보수와 자신의 소득이 극대화되기를 바라는 것은 아무 문제가 없다. 그러나 지금까지 소프트웨어 산업에서 보편화된 수단은 유해한 방법이다.

      프로그램을 사용하는 것에 제한을 둠으로써 돈을 벌어들이는 행위는 프로그램이 사용되는 범위와 방식을 제한하기 때문에 유해한 것이다. 이는 프로그램으로부터 얻을 수 있는 인간적인 풍요로움을 전체적으로 감소시키는 것이다. 프로그램의 자유로운 사용에 대한 제한은 결국, 유해한 파괴 행위라고 할 수 있다

      선량한 시민이라면 자신이 보다 부유해지기 위해서 그러한 수단을 쓰지 않는다. 그 까닭은, 만일 모든 사람들이 그렇게 한다면 상호간의 유해한 행위로 인해 결과적으로 우리 모두는 보다 빈곤해질 것이기 때문이다. 나는 모든 사람들이 자기만의 정보를 축적해 나가는 것은 바람직하지 않다고 여기기 때문에, 누군가 그런 일을 한다면 그것이 잘못된 일이라고 생각한다. 명확하게 말하면, 한 개인의 창의성을 보장받고자 하는 욕구가 일반적으로 전체의 창의성이나 혹은 그 일부분을 저하시키는 행위를 정당화시키는 것은 옳지 않다.

    • 프로그래머의 수입이 끊기지 않는가?

      -그 누구도 프로그래머가 되도록 강요되지는 않는다고 답하고 싶다. 아마 우리들 대부분은 실직한 후에 거리로 나가 궁색한 표정을 지으며 구걸한다고 해도 한푼의 돈도 벌 수 없을 것이다. 그러나 실직했다고 해서 반드시 거리로 나가 구걸을 하고 굶주려야 하는 것은 아니다. 왜냐하면 우리는 얼마든지 다른 일을 할 수 있기 때문이다.

      그러나 이것은, 프로그래머는 소프트웨어를 소유하지 않으면 단 한푼도 벌 수 없다라는 질문자의 맹목적인 가정을 인정하고 있다는 점에서 잘못된 답변이라고 할 수 있다. 아마도 이런 생각은 극단적일 것이다.

      프로그래머가 생계에 지장을 받지 않을 것이라는 점에 대한 올바른 이유는 지금과 같은 수준의 보수는 아니겠지만 여전히 프로그래밍으로 돈을 벌 방법들이 있기 때문이다.

      프로그램의 복제를 제한하는 것이 소프트웨어 사업을 유지되기 위한 유일한 기반은 아니다. 이러한 방식이 보편화된 것은 이렇게 함으로써 가장 돈을 많이 벌 수 있기 때문이다. 만약 고객들에 의해 이런 방식이 거부되거나 금지된다고 해도, 소프트웨어 사업은 지금까지는 드물었던 새로운 방식으로 사업 구조를 재편해 나갈 수 있을 것이다. 어떠한 분야에 있어서도 사업 구조와 수익 모델을 만드는 방법은 무궁 무진한 것이다.

      새로운 기반 하에서의 프로그래밍은 지금처럼 수익성이 높은 일은 아닐 것이다. 그러나 이것이 변화에 반대하는 이유가 될 수는 없다. 판매직 사원들에게 판매 실적만큼 급여를 지불하는 현재의 방식은 정당한 것으로 받아들여진다. 그렇다면 프로그래머에게 같은 방식이 적용된다고 해도 정당하지 못할 이유가 없다. (그러나 현실적으로 볼 때, 프로그래머들은 여전히 그보다 많은 소득을 올리고 있다.)

    • 경쟁을 통해 발전할 수 있을 것이다.

      -경쟁의 기본 원리는 경주이다. 경주는 승자에게 상을 주는 방법으로 모두가 더욱 빨리 달리도록 장려한다. 만약 자본주의가 실제로 이런 방식을 따른다면 이는 바람직한 것이다. 그러나 자본주의의 옹호자들은 항상 이런 방식으로 움직인다고 단정짓는 잘못을 범한다. 만일, 주자들이 상이 주어지는 이유를 망각한 채 승리에만 집착한다면 그들은 다른 주자를 공격한다든지 하는 색다른 전략을 찾게될 것이다. 주자들이 먼저 싸우기부터 한다면 그들은 결국 모두 늦어질 수밖에 없는 것이다.

      독점적이고 비밀에 쌓인 소프트웨어는 먼저 싸우기부터 하는 주자들과 도덕적으로 동일하다. 슬픈 일이지만 우리의 유일한 심판은 그다지 공정해 보이지 않으며 싸움에 반대하는 것 같지도 않다. 단지, "10 미터 마다 한번씩만 상대를 가격할 수 있다.''는 정도의 규정을 적용할 뿐이다. 공격하려는 시도만 해도 이를 저지하고 벌칙을 주어야 하는데도 말이다.

    • 금전적인 이득이 없다면 아무도 프로그램을 개발하려 하지 않을 것이다.

      -실제로 많은 사람들은 어떠한 금전적 보상 없이도 프로그래밍을 계속 할 것이다. 프로그래밍은 어떤 사람들에게 있어 저항할 수 없는 매력이며 이는 프로그래밍에 능숙한 사람일수록 더욱 그렇다. 생계를 유지할 희망이 보이지 않더라도 꾸준히 활동을 계속하는 직업 음악인들이 많이 있듯이 말이다.

      십년 이상 동안, 세계 정상급 프로그래머들이 MIT 인공 지능 연구소에서 근무했지만 그들이 받은 보수는 다른 어떤 곳에서 기대할 수 있는 것보다 훨씬 적은 것이었다. 그들은 사회적 존경이나 명성과 같은 다양한 종류의 비금전적인 보상을 받았다. 그리고 창조적 작업은 이미 그 자체가 자신에게 흥미와 보상을 주는 것이다.

      출처