호환성은 '합쳐서 배포할 수 있는가'
두 라이선스가 호환된다는 것은 각 라이선스가 적용된 코드를 하나의 프로그램으로 합쳐 배포할 때 두 라이선스의 조건을 동시에 지킬 수 있다는 뜻입니다. 어느 한쪽이 다른 쪽의 조건을 금지하면 호환되지 않습니다. 예를 들어 GPL 은 '추가 제한을 두지 말 것'을 요구하므로, GPL 이 허락하지 않는 추가 조건을 가진 라이선스의 코드는 GPL 프로그램에 들어갈 수 없습니다.
호환성에는 방향이 있다
허용형 코드는 카피레프트 프로젝트로 들어갈 수 있지만, 반대로는 안 됩니다.
- MIT 코드 → GPL 프로젝트: 가능. MIT 고지를 유지하면 결합본 전체를 GPL 로 배포할 수 있습니다.
- GPL 코드 → MIT 프로젝트: 결합본 전체가 GPL 조건을 따라야 하므로 'MIT 프로젝트'로 남을 수 없습니다.
그래서 호환성 표는 항상 '어떤 코드를 → 어떤 프로젝트에' 넣는지로 읽어야 합니다.
대표적인 조합
Apache-2.0 과 GPL
FSF 는 Apache-2.0 이 GPL-3.0 과 호환되지만 GPL-2.0 과는 호환되지 않는다고 봅니다. Apache-2.0 의 특허 종료 조항과 면책 조항이 GPL-2.0 에는 없는 추가 조건이기 때문입니다. GPL-3.0 은 설계 단계에서 이 문제를 풀도록 만들어졌습니다. 따라서 GPL-2.0-or-later 프로젝트는 결합본을 GPL-3.0 으로 배포하면 Apache-2.0 코드를 쓸 수 있습니다.
MPL-2.0 과 GNU 라이선스
MPL-2.0 1.12조는 GPL-2.0·LGPL-2.1·AGPL-3.0 과 이후 버전을 'Secondary License'로 정의하고, 3.3조는 MPL 코드와 이들 코드를 합친 Larger Work 를 GNU 라이선스로 배포할 수 있게 합니다. 원저작자가 Exhibit B('Incompatible With Secondary Licenses')를 붙인 경우는 예외입니다.
LGPL 라이브러리와 비공개 앱
LGPL 라이브러리는 비공개 앱에서 사용할 수 있습니다. 대신 사용자가 라이브러리를 수정한 버전으로 바꿀 수 있어야 하고(동적 링크가 가장 쉬움), 라이브러리 부분의 소스와 라이선스 고지를 제공해야 합니다. LGPL 코드를 앱 소스에 복사해 섞으면 이야기가 달라져, 결합본이 LGPL/GPL 조건을 따라야 합니다.
GPL-3.0 과 AGPL-3.0
두 라이선스는 서로의 13조로 결합을 명시적으로 허용합니다. 결합본에서 GPL 부분은 GPL 조건을, AGPL 부분은 네트워크 소스 제공 조건을 포함한 AGPL 조건을 계속 따릅니다.
EPL-2.0 과 GPL
EPL-2.0 은 기본적으로 GPL 과 호환되지 않지만, 원저작자가 Exhibit A 로 GPL 등을 Secondary License 로 지정하면 결합이 가능해집니다.
| 가져올 코드 | 비공개 앱 | MIT 프로젝트 | GPL-2.0-only | GPL-3.0 |
|---|---|---|---|---|
| MIT·BSD·ISC | 가능(고지) | 가능 | 가능 | 가능 |
| Apache-2.0 | 가능(고지·NOTICE) | 가능 | 불가 | 가능 |
| MPL-2.0 | 조건부(파일 공개) | 조건부 | 조건부(Secondary) | 조건부(Secondary) |
| LGPL-3.0 | 조건부(링크) | 조건부(링크) | 불가 | 가능 |
| GPL-3.0 | 불가 | 불가 | 불가 | 가능 |
'결합'은 어디까지인가
호환성 문제는 코드가 하나의 프로그램으로 결합될 때 생깁니다. FSF 는 같은 실행 파일로 링크되거나 복잡한 내부 데이터 구조를 공유하면 하나의 프로그램으로 보고, 파이프·소켓·명령줄 인자처럼 별도 프로그램 사이의 일반적인 통신은 보통 별개 프로그램의 '집합(aggregate)'으로 봅니다. 다만 이 경계는 법원 판례로 확정된 것이 아니어서 해석이 갈립니다. 한 배포판에 여러 프로그램을 함께 담는 것 자체는 결합이 아닙니다.
실무 순서
- 의존성 목록을 뽑습니다(패키지 관리자의 라이선스 보고 기능이나 SBOM 도구).
- 각 의존성의 라이선스를 SPDX 식별자로 정리합니다.
- 내 프로젝트 라이선스와의 조합을 호환성 검사기로 1차 확인합니다.
- '조건부'인 조합은 조건(고지, 링크 방식, Secondary License 여부)을 원문으로 확인합니다.
- 불가 조합이 있으면 의존성을 바꾸거나, 프로그램을 분리하거나, 내 라이선스를 조정합니다.
이 글은 일반 정보이며 법률 자문이 아닙니다. 중요한 결정은 전문가와 상의하세요.
참고 출처
- GNU 라이선스 FAQ(호환성 매트릭스, MereAggregation) — https://www.gnu.org/licenses/gpl-faq.html
- FSF, Various Licenses and Comments about Them — https://www.gnu.org/licenses/license-list.html
- Apache Software Foundation, GPL Compatibility — https://www.apache.org/licenses/GPL-compatibility.html
- Mozilla, MPL 2.0 FAQ — https://www.mozilla.org/en-US/MPL/2.0/FAQ/
- Eclipse Foundation, EPL 2.0 FAQ — https://www.eclipse.org/legal/epl-2.0/faq/