GPL (General Public License)
**GPL(General Public License)**은 **자유 소프트웨어 재단(Free Software Foundation, FSF)**에서 제정한 소프트웨어 라이선스 중 하나로, 자유 소프트웨어의 사용, 수정, 배포에 대한 권리를 보장하는 라이선스입니다. GPL의 핵심 목표는 소프트웨어의 자유를 보호하고 확산시키는 것입니다. 이를 통해, 사용자와 개발자는 소프트웨어를 자유롭게 사용하고, 개선하며, 배포할 수 있습니다.
GPL 라이선스는 오픈소스 커뮤니티에서 널리 사용되며, 가장 중요한 특성은 **"카피레프트(Copyleft)"**의 개념을 채택하여 소프트웨어의 자유를 유지하는 데 중점을 둡니다.
1. GPL의 역사
- **리처드 스톨만(Richard Stallman)**은 1983년에 GNU 프로젝트를 시작하면서 자유 소프트웨어의 철학을 제시하였고, 이를 통해 소프트웨어를 사용자에게 자유롭게 제공해야 한다는 원칙을 확립했습니다.
- GPL은 1989년 GNU 프로젝트의 일환으로 발표되었습니다. GNU는 **"GNU's Not Unix"**의 약자로, Unix와 호환되는 자유 소프트웨어를 만드는 프로젝트입니다.
- GPL의 주된 목적은 사용자가 소프트웨어를 자유롭게 실행하고, 수정하고, 배포할 수 있도록 보장하면서, 개발자에게는 이러한 자유를 다른 사람에게도 확장할 의무를 부여하는 것입니다.
2. GPL의 기본 원칙
GPL의 핵심 원칙은 **카피레프트(Copyleft)**입니다. 카피레프트는 저작권의 역설적 활용으로, 소프트웨어가 자유롭게 배포되고 수정되며, 그 수정본도 동일한 자유를 제공해야 한다는 원칙을 따릅니다.
1) 자유로운 사용 (Freedom to Use)
- 누구나 GPL 라이선스 하에 제공된 소프트웨어를 어떤 목적이든 사용할 수 있습니다.
- 상업적 또는 개인적 용도로 제한 없이 사용이 가능합니다.
2) 자유로운 수정 (Freedom to Modify)
- 사용자는 GPL 라이선스 하에 제공된 소프트웨어를 수정하고 개선할 수 있습니다.
- 수정된 버전은 원본 소프트웨어와 마찬가지로 자유롭게 배포할 수 있습니다.
3) 자유로운 배포 (Freedom to Distribute)
- 사용자는 수정된 버전과 원본 버전을 다른 사람에게 배포할 수 있습니다.
- 다만, 수정된 소프트웨어의 배포 시 원본 라이선스(GPL)를 그대로 유지해야 하며, 수정한 내용을 포함해야 합니다.
4) 소스 코드 공개 (Source Code Availability)
- 소프트웨어를 배포할 때 소스 코드를 함께 제공하거나, 소스 코드를 요청할 수 있는 방법을 제공해야 합니다.
- 이를 통해 다른 개발자들이 소프트웨어를 개선할 수 있도록 돕습니다.
3. GPL의 주요 버전
GPL은 여러 차례 업데이트되었습니다. 각 버전은 소프트웨어의 사용, 배포, 수정에 대한 규정을 명확히 하고, 새로운 기술적 발전과 법적 요구사항을 반영하기 위해 개선되었습니다.
1) GPL v1 (1989)
- 첫 번째 버전으로, GPL은 주로 자유 소프트웨어 운동의 철학을 확립하는 데 중점을 두었습니다.
- 카피레프트의 개념을 최초로 도입하여, 소프트웨어의 수정 및 배포가 자유롭게 이루어지지만, 소스 코드를 공개해야 한다는 의무를 명시했습니다.
2) GPL v2 (1991)
- 두 번째 버전은 GPL v1에서 몇 가지 기술적 문제를 해결하고, 명확성을 강화했습니다.
- GPL v2는 "소스 코드의 공개" 및 **"자유로운 수정과 배포"**를 강조했으며, 또한 소프트웨어의 배포가 GPL v2 라이선스 하에 이루어져야 한다고 명시했습니다.
- **"배포된 코드에 대한 권한"**을 더욱 강화했으며, 특히 부가적인 라이센스 조건에 대한 규정을 포함시켰습니다.
- 이 버전은 오늘날까지 가장 널리 사용되고 있는 GPL 버전입니다.
3) GPL v3 (2007)
- GPL v3는 DRM(Digital Rights Management), 소프트웨어 특허와 같은 최신 기술적 문제에 대응하기 위해 개발되었습니다.
- Tivoization(소프트웨어를 수정할 수 없게 하여 사용자의 자유를 제한하는 행위)에 대한 방지책을 추가하였고, 소프트웨어 특허를 이용한 법적 공격에 대한 대응을 강화했습니다.
- GPL v3는 호환성을 높이기 위해 다른 라이선스들과의 연동을 명확히 했으며, 사용자와 개발자의 권리를 보호하는 데 초점을 맞췄습니다.
4. 카피레프트(Copyleft)
- 카피레프트는 GPL 라이선스의 핵심 개념으로, 저작권을 사용하여 소프트웨어의 자유를 보호하는 방식입니다.
- 즉, GPL 라이선스 하에 배포되는 소프트웨어는 수정 후 배포 시에도 동일한 라이선스를 유지해야 하며, 이를 통해 자유로운 소프트웨어의 확산을 보장합니다.
- 예를 들어, 소프트웨어를 수정하여 다른 사람에게 배포할 때, 원본과 마찬가지로 소스 코드를 제공하고, 동일한 GPL 라이선스를 유지해야 합니다.
5. GPL의 장점
1) 자유 소프트웨어의 확산
- GPL은 자유 소프트웨어를 보호하고 이를 전 세계적으로 확산시킬 수 있는 강력한 법적 장치입니다. 이를 통해 소프트웨어가 사용자의 자유를 존중하면서 발전할 수 있도록 합니다.
2) 협업과 개선 촉진
- 개발자는 다른 개발자의 코드를 자유롭게 사용하고, 개선하며, 협업을 통해 소프트웨어의 품질을 높일 수 있습니다.
- 커뮤니티가 적극적으로 참여함으로써, 소프트웨어는 빠르게 발전하고 문제를 해결할 수 있습니다.
3) 투명성 및 검증 가능성
- 소프트웨어의 소스 코드가 공개되기 때문에, 사용자는 해당 소프트웨어의 동작 방식을 검증하고 보안 문제를 사전에 파악할 수 있습니다.
6. GPL의 단점
1) 호환성 문제
- GPL은 다른 라이선스와 호환되지 않는 경우가 많습니다. 예를 들어, 상용 소프트웨어와 결합해서 사용하는 경우 GPL 라이선스의 요건에 맞추기 어려운 점이 있습니다.
- GPL과 특허권을 가진 소프트웨어 간의 충돌이 발생할 수 있으며, 이로 인해 법적 복잡성이 생길 수 있습니다.
2) 상용화의 어려움
- GPL은 소프트웨어를 배포할 때 소스 코드 공개를 요구하므로, 상용 소프트웨어 회사들은 이를 상업적인 목적으로 사용하는 데 어려움을 겪을 수 있습니다.
7. GPL의 주요 사용 예시
- 리눅스 커널(Linux Kernel): 리눅스는 GPL v2 하에 배포되는 대표적인 소프트웨어로, 오픈 소스 커뮤니티에서 자유롭게 수정 및 배포되고 있습니다.
- GNU 프로젝트: GNU는 GPL을 기반으로 다양한 소프트웨어 프로젝트를 진행하고 있으며, 많은 도구들이 GPL 라이선스 하에 배포되고 있습니다.
- 다양한 오픈소스 소프트웨어: 웹 서버 소프트웨어인 Apache HTTP Server, 데이터베이스 관리 시스템인 MySQL 등도 GPL 라이선스를 사용하고 있습니다.
**GPL(General Public License)**은 자유 소프트웨어의 자유를 보장하는 강력한 라이선스로, 소프트웨어의 사용, 수정, 배포에 있어 투명성과 자유를 보장합니다. 이는 오픈 소스 커뮤니티의 발전에 중요한 역할을 하였으며, 전 세계적으로 많은 개발자들이 GPL 라이선스를 따르며 협업하고 있습니다. 그러나 GPL은 호환성 문제와 상용화의 어려움이라는 단점도 존재하지만, 그럼에도 불구하고 많은 오픈 소스 프로젝트에서 여전히 사용되고 있습니다.