필요로 하는 자가 있거든 쓰게 하라. 이는 자비가 아니라 의무이니라.
-- 움베르토 에코, ``장비의 이름'' 중에서, 1980년
리차드 스톨만은 ``카피레프트:
실용적인 이상주의''에서 자신이 주창한 자유
소프트웨어가 이상주의적인 희망에 근거한 것이며,
그 이상을 실현하기 위한 수단으로 선택한 카피레프트,
즉 GNU GPL이 자유 소프트웨어를 지지하는 공동체에
많은 이익을 가져다 줄 수 있다고 얘기합니다.
또한 자유 소프트웨어 공동체를 지키기 위해서는
독점 소프트웨어 업체와 타협하지 않고 공동체에
동참하는 것이 중요하다고 역설하고 있습니다.
그렇다면 소프트웨어에 있어서 마치 이상주의적
구현물과 같이 언급되고 있는 자유 소프트웨어의
보다 정확한 의미와 GNU GPL과 카피레프트와의 관계는
무엇일까요? 여기서는 자유 소프트웨어의 의미와
자유 소프트웨어를 지키기 위한 수단으로 선택한
카피레프트에 대해서 좀더 자세히 설명해 보도록
하겠습니다.
가장 핵심적이면서 기본적인 출발점인 ``자유"라는 단어의 의미는 무엇에 구속되거나 얽매이지 않는다는 관점에서의 자유를 말합니다. 자유에 해당하는 영어 단어인 ``FREE''는 2가지 뜻을 함께 갖고 있습니다. 첫 번째는 구속되지 않는다는 의미이고, 두 번째는 돈을 지불하지 않아도 된다는 무료(無料, gratis)라는 의미입니다. 영어에서는 이러한 중의적인 의미의 차이 때문에 많은 오해가 발생하기도 하지만 다행히 한국어에서는 자유 소프트웨어의 참된 의미만을 나타내 줄 수 있는 ``자유(自由)''라는 단어가 독립적으로 존재하기 때문에 용어상의 문제로 인한 혼동은 없다고 할 수 있습니다. 따라서 GNU/FSF에서 사용하는 자유 소프트웨어를 지칭할 때는 용어상의 혼동이 존재할 수 있는 ``프리 소프트웨어''가 아닌 보다 명확한 의미를 가진 ``자유 소프트웨어''로 번역하는 것이 바람직합니다. 자유 소프트웨어는 무엇에 구속되거나 얽매이지 않아도 되는 소프트웨어라는 뜻입니다.1
GNU/FSF에서는 어떤 프로그램이 ``자유 소프트웨어''인가 아닌가를 판단할 수 있는 기준으로 다음과 같은 4가지 조건을 규정하고 있는데, 이 조건들을 모두 충족시키는 소프트웨어를 자유 소프트웨어라고 할 수 있습니다.
점층적인 구조를 갖고 있는 자유 소프트웨어의 4가지 정언 조건들은2 자유 소프트웨어를 명확하게 규정하기 위한 것이며, 이러한 기준을 만족하는 소프트웨어를 보호하기 위한 법률적 장치가 GNU GPL이라고 불리는 사용권 허가 방식입니다. 흔히 말하는 카피레프트라는 단어는 특정한 소프트웨어를 자유 소프트웨어로 만드는 방식들을 통칭하는 일반적인 명칭이며 카프레프트가 성립하기 위해서는 `자유 2'에 해당하는 프로그램에 대한 배포가 일어날 경우에 원시 코드의 개작 여부에 상관없이 배포 기준을 그대로 유지시켜야 합니다. 예를 들면, 자신이 얻은 원시 코드를 개작해서 새로운 기능을 추가하거나 보다 확장된 프로그램을 만들었다 하더라도 최초의 원시 코드에 설정된 사용권 허가 방식을 변경하거나 새로운 제한 사항을 추가하지 않고 원래의 내용을 그대로 유지시켜야 합니다. 따라서 카피레프트로 설정된 프로그램을 기반으로 만들어진 프로그램들은 모두 카피레프트가 될 수밖에 없는 순환적인 구조를 갖게 됩니다. 자유 소프트웨어의 범위와 체계가 현재와 같이 커질 수 있었던 가장 근본적인 외적 이유는 카피레프트가 이러한 순환적이고 팽창적인 구조를 갖고 있기 때문입니다.
GNU GPL은 이러한 카피레프트를 실제로 구현한 방법 중 하나이며, 만약 새로운 사용권 허가 문서를 만들 경우에 카피레프트에 맞게 설계된다면 이는 GNU GPL과 같이 카피레프트를 담보할 수 있는 실제적인 법률 장치 중의 하나가 되는 것입니다. 따라서 반드시 GNU GPL을 사용하지 않더라도 자유 소프트웨어에 대한 4가지 조건들을 만족시키면서 소프트웨어를 사용하거나 배포할 수 있도록 허용한다면 그것은 GNU/FSF가 견지하고 있는 ``자유 소프트웨어''와 외적인 형식면에서 호환된다고 말할 수 있으며, 이러한 GPL 호환 사용권 허가 방식들은 GPL과 충돌하지 않기 때문에 함께 혼용될 수 있습니다. 여기에 해당하는 것으로는 LGPL, X11 라이선스, Zlib 라이선스, Python 라이선스, Expat 라이선스 등이 있는데 여러가지 사용권 허가 방식들과 이들 간의 호환 여부에 대한 간략한 설명은 http://www.gnu.org/philosophy/license-list.html 페이지를 통해 참고할 수 있습니다. 이 글은 GNU/FSF가 카피레프트의 방법으로 공식적으로 사용하고 있는 GPL에 집중하고 있기 때문에 GPL 호환 및 비호환 사용권 허가 방법들에 대한 설명은 생략합니다.
자유 소프트웨어를 가름하는 4가지 기준에 따라 다양한 종류의 소프트웨어들을 다음과 같은 다이어그램으로 분류해 볼 수 있습니다.
![[자유 소프트웨어의 범주]](image/category.ko.jpg)
GPL 소프트웨어 - GPL'ed software
GPL을 사용권 허가 방법으로 사용하고 있는 소프트웨어를 지칭합니다. GNU/FSF가 배포하고 있는 거의 대부분의 소프트웨어들은 GPL 소프트웨어입니다.카피레프트 소프트웨어 - Copylefted software
GNU/FSF가 정의하고 있는 자유 소프트웨어 대한 4가지 조건을 충족시키는 소프트웨어 중에서 카피레프트 방식의 배포가 이루어지는 소프트웨어를 지칭합니다. 즉 원시 코드의 개작 여부에 관계없이 원래의 배포 기준을 그대로 유지시켜야하는 소프트웨어를 말합니다. GPL은 카피레프트를 구현하는 방식이기 때문에 GPL 소프트웨어는 카피레프트 소프트웨어의 부분 집합이 됩니다.공용 소프트웨어 - Public domain software
저작권자가 저작권을 명시적으로 포기했거나 저작권자를 알 수 없는 공개된 소프트웨어를 지칭합니다. 카피레프트는 저작권을 인정하는 방식이기 때문에 공용 소프트웨어가 카피레프트에 포함되지는 않지만, 저작권이 없음으로 인해서 사용상의 어떠한 제한도 존재하지 않기 때문에 자유 소프트웨어처럼 사용될 수 있습니다. 이 말은 공용 소프트웨어가 독점 소프트웨어로 사용될 수도 있다는 것을 함축합니다. [그림 1]에서는 보다 명확한 분류를 위해 공용 소프트웨어를 자유 소프트웨어의 부분 집합으로만 표시했지만, 경우에 따라서 독점 소프트웨어의 부분 집합으로 표시될 수도 있습니다. GNU/FSF에서는 우리에게 유리한 방향으로 정의하는 기준을 적용해서 공용 소프트웨어를 `카피레프트 이외의 자유 소프트웨어'로 분류하고 있습니다. [그림 1]에서 자유 소프트웨어를 구성하는 부분 집합 중 카피레프트 소프트웨어의 여집합이 `카피레프트 이외의 자유 소프트웨어'입니다.XFree86 형태의 소프트웨어 - XFree86 style software
공용 소프트웨어와 마찬가지로 `카피레프트 이외의 자유 소프트웨어' 중 하나입니다. 대표적인 그래픽 유저 인터페이스인 X 윈도우 시스템에 적용되는 사용권 허가 방식이 여기에 해당하는데, 이 방식에서는 개작과 재배포가 허용되지만, 카피레프트에는 허용되지 않는 추가적인 제약의 설정이 가능합니다. 이 말은 이러한 형태의 소프트웨어를 이용해서 독점 소프트웨어를 만드는 것이 가능하다는 뜻입니다.오픈 소스 소프트웨어 - Open Source software
오픈 소스에 대한 정의를 충족시키는 소프트웨어를 지칭합니다. 오픈 소스에 대한 정의는 http://korea.gnu.org/people/chsong/copyleft/osd-korean.html 문서를 통해 참고할 수 있습니다. 예외가 존재하기는 하지만, 명칭상의 차이를 제외하면 일반적으로 오픈 소스 소프트웨어는 자유 소프트웨어와 동일하다고 볼 수 있습니다.3셰어웨어 - Shareware
일정한 기간 동안 무료로 사용할 수 있게 하는 등의 부분적인 제한을 설정해서 배포되지만, 계속해서 사용하기 위해서는 비용을 지불해야 하는 소프트웨어를 지칭합니다. 셰어웨어는 상업적인 목적을 위한 마케팅 방법의 하나로 대부분 원시 코드가 제공되지 않거나 배포상의 제약이 설정되므로 독점 소프트웨어에 속합니다.프리웨어 - Freeware
셰어웨어와 유사한 형태의 소프트웨어로, 일반적으로 배포는 허용하지만 개작은 허용하지 않는 경향을 갖고 있습니다. 프리웨어라는 표현에 특히 주의해야 하는 것은 자유 소프트웨어가 아님에도 불구하고 유사한 어감의 단어를 사용함으로써 사용자들을 혼동시키고 있기 때문입니다. GNU/FSF에서는 프리웨어라는 표현을 사용하지 않고 있으며, 프리웨어는 결코 자유 소프트웨어가 아닙니다.비공개 소프트웨어 - Closed software
(오픈 소스 소프트웨어에 대한 상대적인 표현으로) 원시 코드가 공개되지 않는 소프트웨어를 지칭합니다. 원시 코드가 공개되지 않는 것은 `자유1'과 `자유 3'을 성립시킬 수 없기 때문에 비공개 소프트웨어는 독점 소프트웨어에 속합니다.독점 소프트웨어 - Proprietary software
원시 코드가 공개되지 않거나 프로그램에 대한 복제 및 배포가 금지되는 등의 자유 소프트웨어에 대한 4가지 조건이 충족되지 않는 소프트웨어를 지칭합니다. [그림 1]에 의하면 무료로 다운 받을 수 있는 소프트웨어의 영역에 독점 소프트웨어의 일부가 포함되어 있기도 한데, 무료로 다운 받을 수 있다고 하더라도 사용과 복제 및 배포 상의 제약이 있다면 이는 자유 소프트웨어가 될 수 없기 때문에 독점 소프트웨어에 포함됩니다. Acrobat Reader나 Real Player와 같은 프로그램이 이러한 형식을 갖는 대표적인 예라고 할 수 있습니다. 이와 반대로 무료로 다운 받을 수 있는 소프트웨어의 영역에 자유 소프트웨어의 일부가 제외되어 있는 이유는 자유 소프트웨어라고 해서 무조건 무료로 제공되어야 한다는 조건이 자유 소프트웨어에 대한 4가지 조건에는 포함되어 있지 않기 때문입니다. 따라서 A라는 기업이 GPL로 사용권 허가를 설정한 프로그램을 새롭게 창작한 뒤에 이를 유료로 판매하면서 제품을 구입하는 사람에게만 원시 코드를 제공하는 방식으로 사업을 영위한다고 해도 이는 GPL 위반이 되지 않습니다. GNU GPL은 카피레프트를 실제로 구현한 것이기 때문에 카피레프트 방식을 충족시키기만 하면 구체적인 배포 형태에 대한 제한은 두지 않습니다. 여기에 대한 보다 자세한 내용들은 ``제2부 GNU GPL 해설''에서 설명합니다.상용 소프트웨어 - Commercial software
[그림 1]에는 언급되어 있지 않지만, 소프트웨어의 종류를 구분할 때 빼놓을 수 없는 중요한 형태의 하나가 바로 상용 소프트웨어입니다. 상용 소프트웨어는 판매 수익을 통해 돈을 벌기 위한 목적으로 만들어진 소프트웨어를 말합니다. 자유 소프트웨어에서 사용된 ``자유''는 무료를 의미하는 금전적인 측면의 자유가 아니라 구속되지 않는다는 관점에서의 자유라고 이미 언급한 바 있습니다. 따라서 자유 소프트웨어를 유료로 판매하는 것은 전혀 문제가 되지 않기 때문에 경우에 따라서 자유 소프트웨어가 상용 소프트웨어가 될 수도 있습니다. 또한 독점 소프트웨어라고 해서 모두 상용 소프트웨어가 되는 것도 아닙니다. A라는 기업에 의해서 만들어진 인터넷 유해 정보 차단 프로그램이 인터넷을 통해서 무료로 배포되고 있다고 가정해 봅시다. A가 프로그램의 원시 코드를 공개하지 않고 제3자에 의한 개작과 배포를 허용하지 않는다고 해도 프로그램을 개발한 목적 자체가 공익을 위한 것이었고 또한 프로그램을 전액 무료로 배포하고 있다면 이 프로그램을 상용 소프트웨어로 볼 수 없습니다. 그러나 이 프로그램이 자유 소프트웨어의 조건들을 충족시키지는 못하기 때문에 자유 소프트웨어로 간주될 수도 없습니다. 이 프로그램을 굳이 [그림 1]의 기준에 따라 분류해 본다면 `비상용 독점 소프트웨어'가 된다고 할 수 있습니다. 따라서 상용 소프트웨어는 자유 소프트웨어와 독점 소프트웨어를 가늠하는 구분이 아니라 단지 돈을 받고 판매하는가 아닌가에 근거한 구분 방식입니다. 자유 소프트웨어와 독점 소프트웨어는 경우에 따라서 모두 상용 소프트웨어와 비상용 소프트웨어가 될 수 있습니다.
위의 분류 형태를 가만히 살펴보면, 그 기준이 저작권이
누구에게 있는가에 초점을 맞추고 있는 것이 아니라
프로그램의 원시 코드가 제공되는 지와 개작과 배포를
허용하는지의 여부에 있다는 것을 알 수 있습니다.
이는 소프트웨어의 분류가 다른 사람들의 사용을
염두에 둔 기준을 바탕으로 한 것이기 때문입니다.
일반적으로 라이선스(License)라는 말로 불리는 ``사용권 허가'' 또는 ``사용 허가''는 정해진 범위 안에서의 사용을 허가해 주는 저작권자로부터의 일방적인 승인입니다. 이러한 상황에서는 사용자가 저작권자의 승인 내용에 포함된 조건에 동의할 경우에만 사용 계약이 성립됩니다. GNU GPL(GNU General Public License)은 마지막에 포함된 라이선스라는 단어가 말해주듯이 저작권 설정 문서가 아닌 사용권 허가 문서입니다. 새로운 저작물을 창작하게 되면 명시적인 저작권 설정 절차를 거치지 않는다고 하더라도 창작과 함께 저작권이 자동적으로 인정됩니다.4 컴퓨터 프로그램 또한 저작권법에 의해서 이러한 권리가 자동으로 인정되는데, 미국과는 달리 한국에서는 ``컴퓨터 프로그램 보호법''이라는 별개의 특별법이 적용됩니다. 그러나 실제적으로는 컴퓨터 프로그램의 특수성을 감안해서 법률의 이름만을 따로 만들 뒤에 세부적인 조항을 저작권법의 범위 안에서 컴퓨터 프로그램에 맞게 적용하도록 입법한 것이기 때문에 저작권법의 틀에서 벗어나지 않습니다.
따라서, GNU GPL은 프로그램을 창작한 저작자로부터 불특정 다수의 사람들에게 해당 프로그램을 GNU/FSF가 정의하고 있는 자유 소프트웨어의 범위 안에서 마음껏 사용할 수 있도록 합법적으로 허용해 주는 사용권 허가 문서라고 할 수 있습니다.
1. 자유 소프트웨어의 기원은 1984년부터 리차드 스톨만에 의해 시작된 GNU 프로젝트에서 찾아볼 수 있습니다. 리차드 스톨만이 MIT의 연구원으로 재직하면서 느꼈던, 프로그램에 대한 원시 코드를 공개하지 않음으로서 생기는 원천적인 제한들을 없애기 위해서 누구든지 원시 코드를 자유롭게 사용할 수 있게 해서 원하는 목적에 따라 프로그램을 마음대로 변경하거나 확장할 수 있도록 하자는 것이 자유 소프트웨어 운동이 시작된 계기입니다. 여기에 대해서는 http://www.gnu.org/gnu/thegnuproject.ko.html 페이지에 있는 ``GNU 운영체제와 자유 소프트웨어 운동''이라는 제목의 문서를 통해 자세히 참고할 수 있습니다. 이 글은 O'Reilly & Associates에 의해서 출판된 ``Open Sources: Voices from the Open Source Revolution''에 실렸던 것으로, 한국에서는 한빛 미디어에 의해 동명의 제목으로 번역 출간된 바 있습니다.
2. 최근에 팀 오라일리는 ``내가 정의한 0번째 자유''라는 글을 통해서 자유 소프트웨어의 점층적 정의 중 가장 선행되는 첫 번째 전제 조건인 ``어떠한 목적으로도 프로그램을 실행시킬 수 있는 자유''에 대해서, 자신이 생각하기로는 ``프로그래머가 자신의 프로그램에 어떠한 사용권 허가 방식도 선택할 수 있는 자유''가 첫 번째 기준이 되어야 한다는 요지의 글을 발표하면서 FSF측과 논쟁을 벌인 일이 있습니다. FSF는 ``자유인가 권력인가?''라는 반박문을 통해서 만약, 최우선적으로 고려되어야 할 첫 번째 자유가 사용권 허가 방식을 선택할 수 있는 것이 된다면 그것은 자유에 대한 전제라기보다 권력에 대한 전제라는 이의를 제기합니다. 왜냐하면 사용권 허가 방식에 대한 선택의 자유는 그것이 다른 사람들로 하여금 소프트웨어 자유롭게 사용할 수 있도록 하기 위한 것이라기보다는 경우에 따라 다른 사람의 자유를 제한하려는 권력의 행사를 염두에 두고 있는 것이기 때문입니다.
FSF에서 정의한 0번째 자유인 어떠한 목적을 위해서도 프로그램을 실행할 수 있는 자유는 개작과 재배포의 여부를 떠나서 프로그램을 실행하는 것 자체에 대해서는 어떠한 제약도 가하지 않는다는 것이기 때문에 프로그램을 개작할 능력이 있는 프로그래머나 그러한 프로그래머를 고용할 수 있는 사람이 아닌, 일반 사용자들에게는 프로그램의 사용에 대한 어떠한 제한도 없습니다. 이것이 자유 소프트웨어에 대한 첫 번째 전제 조건인 ``0번째 자유''가 된 이유입니다. 오라일리는 GPL도 GPL 소프트웨어에 기반 한 소프트웨어는 모두 GPL 소프트웨어가 되어야 한다는 제한을 담고 있기 때문에 이것 역시 일종의 ``권력의 행사''라고 주장하지만, 자유 소프트웨어에 대한 가장 중요한 전제 조건이 무엇이냐는 것과 다른 사람에게 영향을 미치는 ``권력의 행사''가 자신만을 위한 이기적인 목적에 기반한 것인지 아니면 모든 사람들 위한 공리적인 목적에 기반한 것인지에 그 차이가 있다고 할 수 있습니다.
오라일리의 견해 중에서 생각해 볼 만한 단상을 제공하는 것은 그가 MS에 대한 반대적 입장을 취하는 이유가 독점 소프트웨어를 제공한다는 데 있는 것이 아니라, 그들의 지위와 독점력을 이용해서 시장에서의 공정한 경쟁 자체를 불가능하게 만들고 있다는 문제 제기입니다. 이러한 측면에서 볼 때, 그는 개발자가 아닌 사용자가 가져야할 첫 번째 자유는 플랫폼과 제조업체들의 강요에 상관없이 그들이 좋아하는 어떠한 소프트웨어도 선택해서 사용할 수 있는 자유이어야 한다는 입장을 취합니다. 이러한 그의 주장은 전형적인 실용주의적 입장을 취하고 있는 것인데, FSF의 전통적인 입장과 오픈 소스 진영의 입장 차이가 다시 한번 가시적으로 나타난 경우라고 하겠습니다. 팀 오라일리와 FSF의 논쟁은 다음의 문서들을 통해서 자세하게 참고할 수 있습니다.
3. [그림 1]과 같이 오픈 소스는 자유 소프트웨어와 상당 부분 공통 분모를 갖고 있지만, 완전히 동일하지는 않습니다. GNU/FSF는 4가지 자유를 허용하는 소프트웨어를 말할 때 자유 소프트웨어라는 용어를 사용하고 있는데, 이는 GNU/FSF의 철학적 입장에서 볼 때 오픈 소스라는 말보다 자유 소프트웨어라는 표현이 바람직하다고 판단되기 때문입니다. 왜냐하면 오픈 소스라는 표현이 ``자유''라는 단어가 함축하고 있는 많은 내용들을 의도적으로 은폐시키고 있다고 보기 때문입니다. 여기에 대해서는 ``왜 자유 소프트웨어가 오픈 소스보다 나은가?''라는 문서를 통해 자세한 내용을 참고할 수 있습니다. 이 글에서는 여기에 대한 논의를 생략합니다.
4. 프로그램의 창작과 함께 저작권이 자동으로 인정되지만, 저작권을 보다 확실히 해 두고 싶은 경우에는 프로그램 심의조정 위원회를 통해서 프로그램에 대한 저작권을 명시적으로 등록할 수 있습니다.