GPL v2
1. 개요
1. 개요
GNU 일반 공중 사용 허가서 2판(GNU General Public License version 2), 약칭 GPL v2는 자유 소프트웨어 재단(FSF)이 개발한 자유 소프트웨어 라이선스이다. 리처드 스톨먼이 작성한 이 라이선스는 1991년 6월에 처음 공개되어, 소프트웨어의 사용, 복제, 수정, 재배포에 관한 자유를 보장하면서도 그 자유가 파생된 모든 작업에 계속 유지되도록 하는 카피레프트 원칙을 구현한다.
GPL v2는 오픈 소스 소프트웨어 역사상 가장 널리 채택되고 영향력 있는 라이선스 중 하나로 평가받는다. 이 라이선스는 저작권법을 기반으로 하여, 저작권자가 소프트웨어 사용자에게 특정 권리를 부여하는 '허가서'의 형태를 취한다. 주요 목적은 소프트웨어의 소스 코드 접근성을 보장하고, 사용자가 프로그램을 자유롭게 실행, 연구, 개선, 공유할 수 있는 권리를 법적으로 보호하는 데 있다.
GPL v2가 적용된 프로그램을 수정하거나 재배포하는 경우, 수정된 버전의 전체 소스 코드를 반드시 제공해야 하며, 그 프로그램 역시 동일한 GPL v2 라이선스 하에 배포되어야 한다. 이는 프로그램의 자유가 상업적 재배포 과정에서도 제한되지 않고 후속 사용자에게 그대로 전달되도록 설계된 핵심 메커니즘이다. 이 라이선스는 리눅스 커널을 비롯한 수많은 중요한 자유 소프트웨어 프로젝트의 법적 기초를 제공해왔다.
2. 주요 조항
2. 주요 조항
2.1. 저작권 고지 유지
2.1. 저작권 고지 유지
GPL v2의 '저작권 고지 유지' 조항은 프로그램을 배포할 때 원작자의 저작권 고지와 라이선스 전문, 부인 조항을 그대로 포함시켜야 한다는 핵심 의무를 규정한다. 이는 자유 소프트웨어 재단이 설립한 자유 소프트웨어의 기본 철학, 즉 소프트웨어의 자유와 저작자에 대한 공개적 인정을 보장하기 위한 것이다. 사용자는 프로그램의 소스 코드나 실행 파일을 재배포할 때, 원본에 포함된 모든 저작권 고지와 GPL v2 라이선스 전문을 삭제하거나 수정할 수 없다.
이 조항은 프로그램이 수정되거나 다른 프로그램과 결합되어 배포되는 경우에도 적용된다. 수정한 프로그램을 배포할 때는 원본의 저작권 고지를 유지한 상태에서, 자신이 수정한 부분에 대한 저작권 고지를 추가할 수 있다. 또한 프로그램을 배포하는 모든 주요 경로, 예를 들어 소스 코드 파일의 시작 부분이나 문서, 설치 화면 등에 라이선스 전문을 포함시켜야 한다. 이를 통해 최종 사용자는 자신이 사용하는 소프트웨어가 GPL v2 하에 제공되며, 이에 따른 권리와 의무가 있음을 명확히 인지할 수 있다.
'저작권 고지 유지'는 단순한 형식적 요구사항을 넘어, 카피레프트의 법적 체계를 유지하는 기초 역할을 한다. 라이선스 조건이 명시되지 않으면 사용자는 프로그램이 퍼블릭 도메인이나 다른 조건 하에 있다고 오인할 수 있으며, 이는 2차적 저작물에 대한 동일 라이선스 적용 의무(카피레프트)를 약화시킬 수 있다. 따라서 이 조항은 GPL이 의도하는 소프트웨어의 자유가 후대에까지 계속 이어질 수 있도록 하는 안전장치이다.
2.2. 소스 코드 제공 의무
2.2. 소스 코드 제공 의무
소스 코드 제공 의무는 GPL v2의 핵심적인 의무 사항 중 하나이다. 이 조항은 GPL v2로 배포되는 프로그램을 실행 파일 형태로 배포하는 경우, 해당 프로그램의 완전한 소스 코드를 수취인에게 함께 제공하거나, 적어도 소스 코드를 얻을 수 있는 수단을 제공해야 한다고 규정한다. 이는 사용자가 프로그램을 실행할 권리뿐만 아니라, 프로그램을 연구하고 수정하여 재배포할 수 있는 자유를 실질적으로 보장하기 위한 것이다.
소스 코드 제공 방법은 크게 두 가지로 나뉜다. 첫째, 실행 파일과 함께 소스 코드를 동봉하여 배포하는 것이다. 둘째, 실행 파일을 배포할 때, 소스 코드를 제공하겠다는 서면 제안을 동봉하는 방법이다. 이 서면 제안은 최소 3년간 유효해야 하며, 요청 시 소스 코드를 제공하는 데 드는 비용을 물리적 배송 비용 수준 이상으로 청구해서는 안 된다. 또한, 소스 코드는 수정 및 비상업적 재배포가 가능한 형태로 제공되어야 한다.
이 의무는 프로그램을 수정하지 않고 그대로 배포하는 경우에도 적용된다. 즉, 자유 소프트웨어 재단이나 다른 개발자로부터 받은 GPL v2 프로그램을 제3자에게 재배포할 때는 원본 소스 코드를 함께 제공해야 한다. 만약 프로그램을 수정하여 배포한다면, 수정된 버전의 소스 코드를 제공해야 하며, 수정 사항과 변경 날짜를 명시해야 한다.
소스 코드 제공 의무는 프로그램을 네트워크를 통해 서비스 형태로만 제공하는 경우에는 적용되지 않는다. 예를 들어, GPL v2 프로그램을 사용하여 웹 서비스를 운영하더라도 서비스 이용자에게 소스 코드를 제공할 의무는 없다. 이는 나중에 등장한 GNU Affero 일반 공중 사용 허가서(AGPL)와의 주요 차이점 중 하나이다.
2.3. 동일 라이선스 적용 (카피레프트)
2.3. 동일 라이선스 적용 (카피레프트)
동일 라이선스 적용, 흔히 카피레프트라고 불리는 원칙은 GPL v2의 핵심 철학이자 법적 메커니즘이다. 이 원칙은 자유 소프트웨어의 자유를 보장하고 확장하기 위해 설계되었다. 기본적으로, GPL v2로 배포된 프로그램을 수정하거나 그 일부를 포함하여 새로운 프로그램을 배포할 경우, 그 결과물 전체도 반드시 GPL v2의 조건 하에 배포되어야 한다. 이는 저작권법을 이용해 소프트웨어의 자유를 제한하는 것이 아니라, 오히려 보호하고 전파하는 데 사용되는 역이용 방식이다.
이 조항의 목적은 자유 소프트웨어 재단이 추구하는 '4가지 자유'가 소프트웨어 사용자에게 영구히 보장되도록 하는 데 있다. 누군가 GPL 프로그램을 개선하거나 변형하여 배포하면, 그 개선의 혜택은 원저작자뿐만 아니라 전체 커뮤니티가 누릴 수 있어야 한다는 생각에 기반한다. 따라서 GPL 프로그램에서 파생된 파생 저작물은 원본과 동일한 자유를 사용자에게 부여해야 하며, 이는 소스 코드 제공 의무와 결합되어 강력한 자유의 전파 효과를 낳는다.
카피레프트의 적용은 매우 엄격하여, GPL 코드와 다른 코드를 정적으로 링킹하여 하나의 실행 파일로 결합하는 경우, 결합된 전체 프로그램은 GPL의 적용을 받게 된다. 이는 GPL 코드가 단순히 라이브러리 형태로 포함되더라도 마찬가지이다. 다만, 독립적으로 작성된 프로그램이 GPL 프로그램과 단순히 파일 시스템을 통해 통신하거나, 동적 링킹을 통해 런타임에 결합되는 경우 등은 특정 조건 하에 예외가 적용될 수 있다. 이러한 경계는 '결합 프로그램'에 대한 논의를 통해 해석되어 왔다.
결과적으로, 동일 라이선스 적용 조항은 GPL v2를 단순한 사용 허가서가 아니라 하나의 사회적 계약으로 만든다. 이는 기업이 GPL 소프트웨어를 상업적으로 이용하는 것을 금지하지 않지만, 그 과정에서 생성된 2차 저작물의 자유 역시 보장해야 한다는 점을 명시한다. 이로 인해 리눅스 커널과 같은 대규모 협업 생태계가 형성될 수 있었으며, 동시에 사유 소프트웨어와의 결합 문제를 둘러싼 수많은 법적, 기술적 논란의 중심에 서게 되었다.
2.4. 특허권 관련 조항
2.4. 특허권 관련 조항
GPL v2는 소프트웨어에 포함된 특허권의 사용을 제한하는 조항을 포함한다. 이는 라이선스가 적용된 프로그램을 배포하는 기여자가 자신이 보유한 특허를 해당 프로그램의 자유로운 사용에 대해 주장하지 못하도록 방지하기 위한 것이다. 구체적으로, 프로그램의 어떤 기여자가 자신의 특허를 프로그램의 자유로운 사용, 복제, 수정, 재배포를 방해하는 데 사용한다면, 그 기여자는 GPL v2에 따른 모든 권리를 상실하게 된다. 이 조항은 자유 소프트웨어 재단이 의도한 소프트웨어의 자유를 보호하고, 특허권이 카피레프트의 원칙을 훼손하는 데 악용되는 것을 막는 데 목적이 있다.
특허권 관련 조항은 프로그램의 모든 수령인에게 동등한 자유를 보장하는 카피레프트 정신과 일맥상통한다. 만약 특정 기여자나 배포자가 프로그램에 대해 특허 소송을 제기하거나, 프로그램의 자유로운 사용을 제한하는 특허 라이선스를 요구할 경우, 그들은 GPL v2에 의해 부여된 프로그램을 수정하고 재배포할 수 있는 권리를 즉시 상실하게 된다. 이는 리처드 스톨먼과 자유 소프트웨어 재단이 강조하는 '소프트웨어 사용자의 자유'를 실질적으로 보호하는 메커니즘으로 작동한다.
이러한 규정은 GPL v2가 등장한 1990년대 초반보다 특허가 소프트웨어 산업에 더 큰 영향을 미치기 시작한 이후 그 중요성이 부각되었다. 소프트웨어 특허는 오픈 소스 소프트웨어 생태계에 잠재적인 위협으로 간주되며, GPL v2의 이 조항은 그러한 위협으로부터 프로그램과 그 사용자 공동체를 보호하는 안전장치 역할을 한다. 다만, 이 조항은 프로그램의 제3자 특허 침해 문제를 직접적으로 해결하거나 보상해주지는 않는다는 점에 유의해야 한다.
3. 라이선스 적용 범위
3. 라이선스 적용 범위
3.1. 수정 프로그램
3.1. 수정 프로그램
GPL v2의 핵심 원칙 중 하나는 자유 소프트웨어의 자유를 보장하는 것이다. 이에 따라 GPL v2로 배포된 프로그램을 수정하여 새로운 프로그램을 만들 경우, 그 결과물인 수정 프로그램 역시 GPL v2의 적용을 받는다. 이는 카피레프트 조항에 따른 필수적인 요구사항이다.
수정 프로그램을 배포할 때는 원본 프로그램과 마찬가지로 소스 코드를 함께 제공해야 하며, 수정한 부분에 대한 고지와 함께 전체 프로그램에 GPL v2 라이선스가 적용됨을 명시해야 한다. 단순히 프로그램을 실행하는 사용자에게는 이러한 의무가 발생하지 않으며, 프로그램을 제3자에게 배포하는 행위가 있을 때 비로소 라이선스 조건이 적용된다.
이 규정은 오픈 소스 소프트웨어 생태계에서 지식의 공유와 협업을 촉진하는 기반이 된다. 누군가의 개선 사항이 다시 커뮤니티에 환원되도록 함으로써 소프트웨어의 지속적인 발전을 가능하게 한다. 따라서 GPL v2 프로그램의 코드를 활용한 파생 저작물은 원저작물의 자유를 유지한 채로 배포되어야 한다.
3.2. 결합 프로그램 (GPL과 비GPL)
3.2. 결합 프로그램 (GPL과 비GPL)
GPL v2가 적용된 프로그램과 다른 라이선스를 가진 프로그램을 결합하여 하나의 작품으로 배포할 때, 그 결합 방식에 따라 라이선스 의무가 달라진다. GPL v2는 두 프로그램이 단순히 동일한 저장 매체에 존재하거나 동일한 채널을 통해 배포되는 것을 '결합'으로 보지 않는다. 대신, 두 프로그램이 하나의 실행 파일로 링크되거나 메모리를 공유하며 통신하는 등 밀접하게 결합되어 단일 작품을 형성할 때 문제가 발생한다.
이러한 밀접한 결합은 크게 두 가지 형태로 나뉜다. 첫째는 정적 링크 또는 동적 링크를 통해 두 프로그램의 코드가 하나의 실행 가능한 형태로 합쳐지는 경우이다. 둘째는 파이프, 소켓, 명령줄 인자 등을 통해 서로 통신하지만, 복잡한 데이터 구조를 공유하는 등 내부적으로 긴밀하게 상호작용하는 경우이다. GPL v2는 이러한 결합된 작품 전체를 하나의 '파생 저작물'로 간주할 수 있으며, 이 경우 결합된 전체 프로그램에 GPL v2가 적용되어야 한다는 해석이 지배적이다.
따라서 GPL v2 코드와 독점 소프트웨어 또는 허용적 오픈 소스 라이선스(예: BSD 라이선스, MIT 라이선스) 코드를 결합하려는 개발자는 주의가 필요하다. 라이브러리 형태의 GPL 코드를 비GPL 프로그램에 링크하여 배포하는 것은 일반적으로 GPL 위반으로 간주된다. 이를 피하기 위한 방법으로는 GPL 라이브러리와의 링크를 배포 시점이 아닌 설치 또는 실행 시점에 이루어지도록 하는 동적 링크 방식을 고려하거나, 또는 GPL 코드와 비GPL 코드 사이에 명확한 프로세스 경계를 두고 표준화된 간단한 인터페이스(예: IPC)로만 통신하도록 설계하는 것이 있다. 그러나 이러한 접근법도 '단일 작품'의 정의에 따라 법적 해석이 갈릴 수 있어 신중한 검토가 필요하다.
4. GPL v2와 GPL v3의 차이점
4. GPL v2와 GPL v3의 차이점
GPL v2와 GPL v3의 가장 큰 차이점은 특허와 디지털 권리 관리(DRM)에 대한 대응이다. GPL v3는 특허권 관련 조항을 더욱 강화하여, 프로그램에 특허 라이선스를 부여한 기여자는 해당 특허를 사용하는 모든 사용자에게 무상으로 라이선스를 허용해야 하며, 특허 소송을 제기하면 GPL에 따른 권리가 자동으로 종료되도록 규정한다. 또한, GPL v3는 '티보팅' 조항을 도입하여 사용자가 수정된 버전의 소프트웨어를 자신의 하드웨어에서 실행할 수 있는 기술적 제한(예: 부팅 과정에서의 서명 검사)을 우회할 수 있는 권리를 명시적으로 보장한다. 이는 GPL v2에는 없는 대표적인 조항이다.
두 라이선스의 또 다른 차이는 호환성 문제에서 나타난다. GPL v3는 아파치 라이선스 2.0과 같은 일부 다른 오픈 소스 라이선스와의 호환성을 개선했다. 반면, GPL v2는 아파치 라이선스와 호환되지 않아 코드를 결합하는 데 제약이 있었다. 또한, GPL v3는 국제화를 더욱 고려하여 다양한 법체계에 더 잘 적응할 수 있도록 언어를 정교화했다.
라이선스 위반 시 조치에 대한 규정도 다르다. GPL v2는 위반 시 라이선스가 '자동으로 종료'된다고 명시하고 있으나, 복구 절차에 대한 구체적 내용은 부족했다. GPL v3는 이를 보완하여, 최초 위반을 시정하는 경우 라이선스 권한이 복원될 수 있는 명시적인 유예 기간을 도입했다. 이는 실수로 인한 위반에 대한 교정 기회를 제공하는 더 실용적인 접근이다.
이러한 차이로 인해 커뮤니티 내에서 논란이 발생하기도 했다. 대표적으로 리눅스 커널은 여전히 GPL v2를 고수하고 있으며, 자유 소프트웨어 재단이 주도하는 GNU 프로젝트의 대부분 구성 요소는 GPL v3로 이전되었다. 이는 특허와 DRM에 대한 철학적 입장 차이, 그리고 기존 생태계의 안정성 유지 필요성에 기인한다. 결과적으로, GPL v2와 GPL v3는 서로 호환되지 않는 별개의 라이선스가 되어, 두 라이선스 하의 코드를 단일 프로그램으로 자유롭게 결합하는 것은 불가능하다.
5. 라이선스 위반 사례 및 논란
5. 라이선스 위반 사례 및 논란
GPL v2는 강력한 카피레프트 조항을 담고 있지만, 그 엄격한 요구사항으로 인해 라이선스 위반 사례와 논란이 지속적으로 발생해 왔다. 가장 흔한 위반 사례는 GPL v2로 배포된 소프트웨어를 사용하거나 수정한 프로그램을 배포할 때, 소스 코드를 제공하지 않거나, 저작권 고지를 제거하거나, 동일한 GPL v2 조건으로 재배포하지 않는 경우이다. 특히 임베디드 시스템이나 상용 제품에 리눅스 커널과 같은 GPL v2 소프트웨어가 포함되어 배포되면서, 소스 코드 제공 의무를 이행하지 않는 사례가 빈번히 보고되었다.
주요 논란 사례로는 2000년대 초 링크스 무선 공유기 제조사가 리눅스 기반 펌웨어의 소스 코드를 공개하지 않은 사건이 있다. 이는 자유 소프트웨어 재단의 GPL 위반 감시 활동을 촉발하는 계기가 되었다. 또한, 2008년에는 Cisco가 FSF로부터 GPL 위반 소송을 제기받아 합의에 이른 바 있다. 소송은 아니지만, 구글의 안드로이드가 리눅스 커널을 사용하면서도 사용자 공간 라이브러리에 대한 소스 코드 제공 문제로 논의가 되기도 했다.
GPL v2의 엄격한 '결합' 기준을 둘러싼 해석 차이도 큰 논란거리이다. GPL v2 프로그램과 독점 소프트웨어가 동일한 실행 파일로 정적으로 링크되면, 전체가 GPL v2의 적용을 받아야 한다는 것이 FSF의 입장이다. 반면, 동적으로 링크된 모듈은 별도의 프로그램으로 간주할 수 있다는 해석이 산업계 일부에서 제기되며 법적 불확실성을 남겼다. 이러한 논란은 결국 보다 명확한 규정을 담은 GPL v3의 등장 배경 중 하나가 되었다.
연도 | 관련 주체 | 주요 위반/논란 내용 | 결과/영향 |
|---|---|---|---|
2000년대 초 | 링크스 | 무선 공유기 펌웨어의 리눅스 커널 소스 코드 미공개 | FSF의 GPL 위반 감시 활동 강화 계기 |
2008년 | 시스코 | 여러 자사 제품에서 GPL 소프트웨어 라이선스 위반 | FSF가 제기한 소송 후 합의 및 소스 코드 공개 |
지속적 | 다양한 임베디드 제조사 | 제품 내 GPL 소프트웨어 사용에 따른 소스 코드 미제공 | 커뮤니티의 지속적인 위반 보고 및 시정 요구 |
이러한 사례들은 GPL v2가 단순한 이용 허가서를 넘어 소프트웨어의 자유를 보호하기 위한 강력한 사회적 계약의 성격을 띠고 있음을 보여준다. 위반 사례들은 주로 오픈 소스 커뮤니티의 자체 감시와 시정 요구, 또는 FSF의 법적 대응을 통해 해결되는 경향이 있다.
