GPL 2.0 vs GPL 3.0:변경 사항 상세 분석
GNU 일반 공중 사용 허가서(GPL)는 가장 중요한 카피레프트 오픈소스 라이선스 중 하나입니다. GPL 3.0의 출시는 오픈소스 라이선싱에서 중요한 진전을 의미했습니다.
버전 출시 타임라인
- GPL 1.0: 1989년 출시
- GPL 2.0: 1991년 출시
- GPL 3.0: 2007년 출시 (3년간의 공개 토론 후)
주요 변경 사항 개요
1. 특허 보호 조항
GPL 2.0:
- 명시적인 특허 보호 조항 없음
- 암묵적인 특허 라이선싱에 의존
GPL 3.0:
- 명시적인 특허 보호 조항
- 특허 보복 조항(patent retaliation)
- 특허 트롤링 방지
2. 안티-티보화 조항
GPL 2.0:
- 소스 코드 제공만 요구
- 수정 사항의 하드웨어 잠금 허용
GPL 3.0:
- "설치 정보" 제공 요구
- 사용자가 기기에서 수정된 버전을 실행할 수 있어야 함
- TiVo화 현상 방지
3. 호환성 개선
GPL 2.0:
- 엄격한 호환성 요구사항
- 다른 라이선스와의 결합이 어려움
GPL 3.0:
- 더 유연한 호환성 메커니즘
- "추가 조항" 허용
- Apache 2.0 등의 라이선스와 호환
상세 변경 분석
특허 보호
GPL 3.0 제11조에서 특허 보호 도입:
각 기여자는 귀하에게 비독점적이고 전 세계적이며 무료인 특허 라이선스를 부여합니다...
이는 GPL 2.0의 특허 보호 부족 문제를 해결했습니다.
DRM 및 안티-티보화
GPL 3.0 제6조 요구사항:
"사용자 제품"은... 개인, 가족 또는 가정용으로 설계되거나 판매되는 소비재
사용자 제품의 경우 "설치 정보"를 제공해야 합니다.
국제화 개선
- 더 나은 국제 법적 적응
- 명확한 종료 및 복구 조항
- 개선된 정의 및 용어
실제 영향
채택 현황
여전히 GPL 2.0을 사용하는 유명한 프로젝트:
- Linux 커널
- Git
- MySQL
GPL 3.0으로 이전한 프로젝트:
- GCC
- Bash
- GRUB
호환성 고려사항
결합 시나리오 | GPL 2.0 | GPL 3.0 |
---|---|---|
Apache 2.0과 결합 | ❌ 비호환 | ✅ 일방향 호환 |
BSD와 결합 | ✅ 호환 | ✅ 호환 |
프로프라이어터리와 결합 | ❌ 비호환 | ❌ 비호환 |
마이그레이션 가이드
GPL 2.0에서 GPL 3.0으로 마이그레이션
-
프로젝트 요구사항 평가
- 더 강한 특허 보호가 필요한가?
- 하드웨어 잠금 문제를 신경 쓰는가?
- 의존성이 호환되는가?
-
의존성 호환성 확인
- 모든 의존성이 GPL 3.0 호환인지 확인
- "GPL 2.0 전용" 구성 요소에 특별히 주의
-
라이선스 파일 업데이트
- 라이선스 텍스트 교체
- 파일 헤더 업데이트
- 문서 업데이트
마이그레이션 예시
GPL 2.0 파일 헤더:
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
GPL 3.0 파일 헤더:
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
선택 권장사항
GPL 2.0을 선택해야 하는 경우
- GPL 2.0 전용 프로젝트와의 호환성이 필요한 경우
- 프로젝트에 오랜 역사가 있고 마이그레이션 비용이 높은 경우
- 특허 및 하드웨어 잠금 문제를 신경 쓰지 않는 경우
GPL 3.0을 선택해야 하는 경우
- 새로운 프로젝트를 시작하는 경우
- 더 강한 특허 보호가 필요한 경우
- 안티-티보화 문제를 신경 쓰는 경우
- 더 많은 라이선스와의 호환성을 원하는 경우
결론
GPL 3.0은 GPL 2.0에 대한 중요한 진전으로, 현대 소프트웨어 개발의 많은 문제를 해결합니다. 마이그레이션에는 신중한 호환성 고려가 필요하지만, 새로운 프로젝트의 경우 일반적으로 GPL 3.0이 더 나은 선택입니다.
선택할 때 다음을 균형 있게 고려해야 합니다:
- 기술적 요구사항 vs 호환성 요구사항
- 법적 보호 vs 프로젝트 유연성
- 장기 개발 vs 단기 편의성