약한 카피레프트

Mozilla Public License 2.0

수정한 MPL 파일만 공개하면 되고 나머지 코드는 어떤 라이선스든 쓸 수 있는 파일 단위 카피레프트. GPL 과도 결합 가능하다.

SPDXMPL-2.0

허용·조건·제한 한눈에 보기

허용

  • 상업적 이용원본과 파생물을 상업적 목적으로 쓸 수 있다.
  • 수정코드를 고칠 수 있다.
  • 배포코드를 배포할 수 있다.
  • 특허 사용기여자가 특허 사용권을 명시적으로 부여한다.
  • 사적 이용공개하지 않고 내부에서 쓰고 고칠 수 있다.

조건

  • 소스 공개배포할 때 소스 코드를 제공해야 한다.
  • 저작권·라이선스 고지배포할 때 라이선스 사본과 저작권 표시를 함께 넣어야 한다.
  • 동일 라이선스(파일 단위)기존 파일을 수정한 부분은 같은 라이선스로 배포해야 한다.

제한

  • 책임 제한손해에 대한 책임을 지지 않는다고 명시한다.
  • 상표 사용상표권을 부여하지 않는다고 명시한다.
  • 보증 없음어떤 보증도 하지 않는다고 명시한다.

권한·조건·제한 분류 출처: choosealicense.com (GitHub, MIT 라이선스) 데이터.

어떤 라이선스인가

MPL 2.0 은 Mozilla 재단이 2012년 1월에 발표했습니다. Firefox·Thunderbird 등 Mozilla 제품이 쓰며, 카피레프트의 범위를 파일 단위로 잡은 것이 특징입니다. MPL 이 적용된 파일(및 그 파일을 고친 부분)은 MPL 로 소스를 공개해야 하지만, 새로 작성한 별도 파일은 다른 라이선스로 둘 수 있고 MPL 코드와 합친 'Larger Work'(3.3조) 전체는 원하는 조건으로 배포할 수 있습니다. 명시적 특허 허락과 특허 소송 시 허락 종료 조항도 있습니다.

배포할 때 지켜야 할 것

Secondary License 와 GPL 호환성

MPL-2.0 1.12조는 GPL-2.0·LGPL-2.1·AGPL-3.0 과 그 이후 판을 'Secondary License'로 정의합니다. 3.3조에 따라 MPL 코드와 GNU 라이선스 코드를 결합한 Larger Work 는 GNU 라이선스로 배포할 수 있습니다. 단 원저작자가 파일에 Exhibit B('Incompatible With Secondary Licenses') 고지를 붙였다면 이 호환성은 적용되지 않습니다. MPL-1.1 에는 이런 장치가 없어 GPL 과 호환되지 않았고, 2.0 에서 개선됐습니다.

자주 하는 오해

적용 방법

원문을 LICENSE 에 두고, 각 소스 파일 맨 위에 Exhibit A 고지문('This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0…')을 붙이는 것이 권장됩니다. 파일에 넣기 어렵다면 해당 디렉터리의 LICENSE 파일처럼 수신자가 찾을 만한 곳에 둬도 됩니다. SPDX 식별자는 MPL-2.0(Exhibit B 가 있으면 MPL-2.0-no-copyleft-exception)입니다.

이런 경우에 어울린다

라이브러리나 엔진 자체의 개선은 돌려받고 싶지만, 이를 쓰는 제품의 라이선스는 제약하고 싶지 않을 때 좋은 절충안입니다. LGPL 보다 조건이 단순하고 정적 링크 문제도 없습니다. HashiCorp 가 2023년에 Terraform 을 MPL-2.0 에서 BUSL 로 바꾸자 커뮤니티가 MPL-2.0 버전을 OpenTofu 로 포크한 사례도 있습니다.

MPL-2.0 코드를 다른 프로젝트에 넣을 수 있을까?

이 라이선스로 공개된 코드를 가져와 아래 라이선스의 프로젝트에 합쳐 배포할 때의 일반적인 판정입니다. 호환성 검사기에서 다른 조합 보기 →

넣으려는 프로젝트판정메모
비공개(상용) 소프트웨어 조건부 가능MPL 파일은 파일 단위로 MPL-2.0 을 유지하고 그 파일들의 소스를 제공해야 합니다. 나머지 코드는 다른 라이선스로 둘 수 있습니다.
MIT 조건부 가능MPL 파일은 파일 단위로 MPL-2.0 을 유지하고 그 파일들의 소스를 제공해야 합니다. 나머지 코드는 다른 라이선스로 둘 수 있습니다.
Apache-2.0 조건부 가능MPL 파일은 파일 단위로 MPL-2.0 을 유지하고 그 파일들의 소스를 제공해야 합니다. 나머지 코드는 다른 라이선스로 둘 수 있습니다.
LGPL-2.1 조건부 가능MPL-2.0 은 GPL-2.0 이상·LGPL-2.1 이상·AGPL-3.0 이상을 'Secondary License'로 인정해 결합본을 GNU 라이선스로 배포할 수 있습니다. 단 원저작자가 'Incompatible With Secondary Licenses'(Exhibit B)를 붙였다면 불가합니다.
LGPL-3.0 조건부 가능MPL-2.0 은 GPL-2.0 이상·LGPL-2.1 이상·AGPL-3.0 이상을 'Secondary License'로 인정해 결합본을 GNU 라이선스로 배포할 수 있습니다. 단 원저작자가 'Incompatible With Secondary Licenses'(Exhibit B)를 붙였다면 불가합니다.
GPL-2.0 조건부 가능MPL-2.0 은 GPL-2.0 이상·LGPL-2.1 이상·AGPL-3.0 이상을 'Secondary License'로 인정해 결합본을 GNU 라이선스로 배포할 수 있습니다. 단 원저작자가 'Incompatible With Secondary Licenses'(Exhibit B)를 붙였다면 불가합니다.
GPL-3.0 조건부 가능MPL-2.0 은 GPL-2.0 이상·LGPL-2.1 이상·AGPL-3.0 이상을 'Secondary License'로 인정해 결합본을 GNU 라이선스로 배포할 수 있습니다. 단 원저작자가 'Incompatible With Secondary Licenses'(Exhibit B)를 붙였다면 불가합니다.
AGPL-3.0 조건부 가능MPL-2.0 은 GPL-2.0 이상·LGPL-2.1 이상·AGPL-3.0 이상을 'Secondary License'로 인정해 결합본을 GNU 라이선스로 배포할 수 있습니다. 단 원저작자가 'Incompatible With Secondary Licenses'(Exhibit B)를 붙였다면 불가합니다.

이 사이트의 내용은 일반 정보이며 법률 자문이 아닙니다. 실제 배포·계약·분쟁 판단은 변호사 등 전문가와 상의하세요.