허용·조건·제한 한눈에 보기
조건
- 저작권·라이선스 고지배포할 때 라이선스 사본과 저작권 표시를 함께 넣어야 한다.
- 소스 공개배포할 때 소스 코드를 제공해야 한다.
- 변경 사항 표시원본을 고쳤다면 그 사실을 표시해야 한다.
- 동일 라이선스(라이브러리 단위)라이브러리 수정분은 같은 라이선스여야 하지만, 이를 사용하는 프로그램에는 적용되지 않을 수 있다.
제한
- 책임 제한손해에 대한 책임을 지지 않는다고 명시한다.
- 보증 없음어떤 보증도 하지 않는다고 명시한다.
권한·조건·제한 분류 출처: choosealicense.com (GitHub, MIT 라이선스) 데이터.
어떤 라이선스인가
LGPL(GNU Lesser General Public License) 3.0 은 GPL-3.0 과 같은 날(2007년 6월 29일) 나온 라이브러리용 라이선스입니다. 독립된 전체 문서가 아니라 GPL-3.0 에 추가 허가를 덧붙인 형태라서, 원문도 'GPL 3판의 조건에 다음 추가 허가를 더한다'로 시작합니다. 핵심 추가 허가는 이 라이브러리를 사용하는 프로그램(Combined Work)을 내가 원하는 조건으로 배포할 수 있게 해 준다는 것입니다. 라이브러리 자체를 고친 부분은 여전히 LGPL(또는 GPL)로 공개해야 합니다. Qt(LGPL-3.0·GPL·상용 선택)가 대표 사례입니다.
라이브러리를 사용하는 프로그램을 배포할 때 (4조)
- 프로그램에 LGPL 라이브러리가 쓰였고 LGPL 이 적용된다는 사실을 눈에 띄게 알립니다.
- GPL-3.0 과 LGPL-3.0 사본을 함께 제공합니다.
- 사용자가 라이브러리를 수정한 버전으로 바꿔 끼울 수 있게 합니다. 보통 동적 링크(공유 라이브러리)를 쓰면 충족되고, 정적 링크라면 재링크할 수 있는 오브젝트 파일 등을 제공해야 합니다.
- 그런 수정을 디버깅하기 위한 리버스 엔지니어링을 금지하는 조건을 걸 수 없습니다.
- 라이브러리 부분의 대응 소스를 제공하고, 사용자 제품이라면 GPL-3.0 6조의 설치 정보도 제공합니다.
자주 하는 오해
- "LGPL 라이브러리를 쓰면 앱 소스도 공개해야 한다" — 아닙니다. 위 조건만 지키면 앱은 비공개로 둘 수 있습니다. 공개 의무는 라이브러리 자체의 수정분에 있습니다.
- "정적 링크는 무조건 금지" — 금지는 아닙니다. 다만 사용자가 라이브러리를 교체해 재링크할 수 있도록 오브젝트 파일 등을 제공해야 하므로 번거롭습니다.
- "LGPL-3.0 은 GPL-2.0 프로젝트에 쓸 수 있다" — GPL-2.0-only 와는 호환되지 않습니다. 결합하려면 프로젝트가 GPL-3.0 으로 배포될 수 있어야 합니다.
적용 방법
관례상 GPL-3.0 원문을 COPYING, LGPL-3.0 원문을 COPYING.LESSER 로 함께 둡니다(생성기가 두 파일을 모두 제공합니다). 각 소스 파일에는 GNU 고지문의 'General Public License'를 'Lesser General Public License'로 바꾼 문구를 씁니다. SPDX 식별자는 LGPL-3.0-only 또는 LGPL-3.0-or-later 입니다.
이런 경우에 어울린다
폐쇄형 앱에서도 널리 쓰이길 바라면서, 라이브러리 자체를 개선한 결과는 공개되길 원하는 라이브러리에 맞습니다. 파일 단위로 더 단순한 약한 카피레프트를 원하면 MPL-2.0 도 비교해 보세요. 비교는 허용형 vs 카피레프트 가이드에 정리돼 있습니다.
LGPL-3.0 코드를 다른 프로젝트에 넣을 수 있을까?
이 라이선스로 공개된 코드를 가져와 아래 라이선스의 프로젝트에 합쳐 배포할 때의 일반적인 판정입니다. 호환성 검사기에서 다른 조합 보기 →
| 넣으려는 프로젝트 | 판정 | 메모 |
|---|---|---|
| 비공개(상용) 소프트웨어 | 조건부 가능 | 라이브러리로 링크해 쓰는 것은 가능하지만, 사용자가 LGPL 부분을 교체·재링크할 수 있게 하고 LGPL 부분의 소스를 제공해야 합니다. 코드를 복사해 섞으면 결합본 전체가 (L)GPL 조건을 따라야 합니다. |
| MIT | 조건부 가능 | 라이브러리로 링크해 쓰는 것은 가능하지만, 사용자가 LGPL 부분을 교체·재링크할 수 있게 하고 LGPL 부분의 소스를 제공해야 합니다. 코드를 복사해 섞으면 결합본 전체가 (L)GPL 조건을 따라야 합니다. |
| Apache-2.0 | 조건부 가능 | 라이브러리로 링크해 쓰는 것은 가능하지만, 사용자가 LGPL 부분을 교체·재링크할 수 있게 하고 LGPL 부분의 소스를 제공해야 합니다. 코드를 복사해 섞으면 결합본 전체가 (L)GPL 조건을 따라야 합니다. |
| MPL-2.0 | 조건부 가능 | 라이브러리로 링크해 쓰는 것은 가능하지만, 사용자가 LGPL 부분을 교체·재링크할 수 있게 하고 LGPL 부분의 소스를 제공해야 합니다. 코드를 복사해 섞으면 결합본 전체가 (L)GPL 조건을 따라야 합니다. |
| LGPL-2.1 | 조건부 가능 | 결합본은 GPL-3.0 조건으로 배포해야 합니다. |
| GPL-2.0 | 불가 | 3.0 버전 코드는 GPL-2.0(only)의 조건과 양립하지 않아 넣을 수 없습니다. |
| GPL-3.0 | 가능 | LGPL-3.0 은 GPL-3.0 에 추가 허가를 더한 것이라 GPL-3.0 결합본에서는 추가 허가를 무시하면 됩니다. |
| AGPL-3.0 | 가능 | LGPL-3.0 은 GPL-3.0 에 추가 허가를 더한 것이라 GPL-3.0 결합본에서는 추가 허가를 무시하면 됩니다. GPL-3.0 과 AGPL-3.0 은 각각의 13조로 결합을 허용합니다. 결합본에서 AGPL 부분의 네트워크 소스 제공 의무는 그대로 남습니다. |
이 사이트의 내용은 일반 정보이며 법률 자문이 아닙니다. 실제 배포·계약·분쟁 판단은 변호사 등 전문가와 상의하세요.