문제의 한 문장
GNU 라이선스의 권장 고지문에는 다음 문장이 들어 있습니다.
either version 3 of the License, or (at your option) any later version.
이 문장이 있으면 받는 사람은 지정된 버전 또는 FSF 가 이후에 발표하는 어떤 버전의 조건이든 골라 따를 수 있습니다. 이것이 'or later'(SPDX GPL-3.0-or-later)입니다. 문장에서 'or later' 부분을 빼고 특정 버전만 적으면 'only'(GPL-3.0-only)가 됩니다.
GPL-3.0 14조와 GPL-2.0 9조가 이 구조를 정합니다. 특히 GPL-2.0 9조는 버전 번호를 아예 적지 않은 프로그램이라면 FSF 가 발표한 어떤 버전이든 고를 수 있다고 정합니다. 그래서 LICENSE 파일만 두고 버전 조항을 밝히지 않으면 의도와 다르게 해석될 수 있습니다.
왜 'or later' 를 두는가
FSF 는 'or later'를 권장합니다. 이유는 미래의 호환성입니다. 법과 기술 환경이 바뀌어 새 GPL 이 나왔을 때, 'or later' 코드는 새 버전과 자연스럽게 합쳐질 수 있습니다. 실제로 GPL-2.0-or-later 코드는 GPL-3.0 프로젝트에 그대로 들어갈 수 있었지만, GPL-2.0-only 코드는 그러지 못했습니다.
GPL-3.0 14조는 한 걸음 더 나아가 '프록시(proxy)'를 지정할 수 있게 합니다. 저작권자가 지정한 사람이 이후 버전의 수용 여부를 공개적으로 결정하면 그 결정이 효력을 갖습니다.
왜 'only' 를 고르는가
'or later'는 아직 쓰이지 않은 라이선스에 미리 동의하는 것이기도 합니다. FSF 가 나중에 내 뜻과 다른 조건을 담은 새 버전을 내면, 받는 사람은 그 버전을 골라 내 코드를 쓸 수 있습니다.
리눅스 커널이 대표 사례입니다. 커널은 GPL-2.0-only 입니다. 리누스 토르발스는 GPL-3.0 의 설치 정보 조항(이른바 티보이제이션 방지)에 반대하는 입장을 공개적으로 밝혔고, 커널에는 수천 명 기여자의 저작권이 섞여 있어 사실상 라이선스를 바꿀 수도 없습니다.
호환성에 미치는 영향
GNU 라이선스 FAQ 의 호환성 매트릭스를 요약하면 다음과 같습니다.
| 가져올 코드 → 내 프로젝트 | GPL-2.0-only | GPL-2.0-or-later | GPL-3.0 |
|---|---|---|---|
| GPL-2.0-only | 가능 | 가능(결합본은 2.0-only) | 불가 |
| GPL-2.0-or-later | 가능 | 가능 | 가능 |
| GPL-3.0 | 불가 | 가능(결합본은 3.0) | 가능 |
| LGPL-3.0 | 불가 | 가능(결합본은 3.0) | 가능 |
핵심은 GPL-2.0-only 와 GPL-3.0 은 서로 받아들일 수 없다는 점입니다. 두 라이선스가 각각 '추가 제한을 두지 말 것'을 요구하는데, 서로의 추가 조건(3.0 의 특허·설치 정보 조항 등)이 상대방 입장에서는 추가 제한이기 때문입니다. 더 많은 조합은 호환성 검사기에서 확인할 수 있습니다.
선택 기준
- 생태계를 따른다: 리눅스 커널에 들어갈 코드라면 GPL-2.0-only(또는 호환되는 GPL-2.0-or-later·허용형)여야 합니다.
- 미래 호환이 중요하다: 여러 GPL 프로젝트와 코드를 주고받을 가능성이 크면 or-later 가 유연합니다.
- 통제권이 중요하다: FSF 의 미래 결정에 맡기고 싶지 않다면 only 를 쓰거나, GPL-3.0 14조의 프록시로 결정권자를 지정할 수 있습니다.
표기하는 법
LICENSE(또는COPYING)에는 해당 버전의 원문을 그대로 둡니다. 원문 자체에는 only/or-later 구분이 없습니다.- 각 파일의 고지문과 SPDX 식별자로 버전 조항을 밝힙니다. 생성기의 파일 헤더 탭에서 'only' 또는 'or-later'를 고르면 GNU 공식 고지문과 SPDX 줄이 함께 만들어집니다.
- README 에도 한 줄로 적어 둡니다(예: 'Licensed under GPL-3.0-or-later').
이 글은 일반 정보이며 법률 자문이 아닙니다. 중요한 결정은 전문가와 상의하세요.
참고 출처
- GNU 라이선스 FAQ, VersionThreeOrLater · AllCompatibility — https://www.gnu.org/licenses/gpl-faq.html
- GNU, How to Use GNU Licenses for Your Own Software — https://www.gnu.org/licenses/gpl-howto.html
- 리눅스 커널 라이선스 규칙 — https://www.kernel.org/doc/html/latest/process/license-rules.html
- SPDX License List — https://spdx.org/licenses/