오늘은 copyleft 계열의 오픈소스가 가지고 있는 의무사항들
즉 개발자들이 오픈소스를 가져다 사용했을 때
어떤 의무사항들을 지켜야 하는지 checklist로 정리하여 공유 드립니다.
우선 copyleft란 copyright의 반대말로
저작권에 기반을 둔 사용의 제한이 아니라
오히려 저작권자가 자신의 창작물을 다른 사람들이 사용할 수 있도록 공유하는것을 의미합니다.
아래 이미지를 보시면 알겠지만 로고도 Copyright의 C로고를 반대로 한것을 볼수 있습니다.
사용자 입장에서 쉽게 말하면 copyleft 계열의 오픈소스를 사용하게 되면
'소스코드 공개'를 해야되는 의무사항이 발생하는거죠,
소스코드의 공개 범위는 라이선스마다 다르고 그 부분에 대해서 오늘 소개해드리려고 합니다.
사실 오픈소스 라이선스에 대한 정리는
이제 많은 포스팅이나 발표자료에도 포함이 되어있기 때문에 쉽게 찾아보실 수 있는데요
저도 개인적으로 정리해놓고 볼겸해서 작성하게 되었습니다.
우선 copyleft 계열의 라이선스도 크게 2가지로 분류를 해볼수 있는데요
소스코드 공개범위가 비교적 작은(?) Weak Copyleft (Weak Reciprocal 이라고도 함)
소스코드 공개범위가 강력한 편에 속하는 Strong Copyleft (Reciprocal 이라고도 함)가 있습니다.
Strong Copyleft (=Reciprocal, 의무사항이 강력한 라이선스)
GPL-2.0 License
모든 Copyleft에 근간이라고 할 수 있는 GPL-2.0 라이선스
GPL-2.0 라이선스는 많은 의무사항이 있지만 개발자분들이 확인하셔야 하는 Checklist는 다음과 같이 요약할 수 있습니다.
Checklist
라이선스 의무사항 | 해야할 일 |
소스코드 제공에 대한 약정서(Written Offer) 제공 | 일반적으로 OSS 고지문(NOTICE) 상단에 소스코드를 받을 수 있는 정보에 대한 기입 (e-mail 주소 및 설명) |
저작권 고지 | 개발SW에 사용 된 오픈소스에 대한 라이선스 원문 및 Copyright 정보를 OSS 고지문에 기입하여 SW와 함께 배포 |
License 고지사항 원본 유지 | 오픈소스에 포함 된 고지사항, Copyright 등의 주석을 임의로 변경 및 삭제 하지 않고 유지 |
소스코드 수정에 대한 고지 | 원저작물 수정시 수정사실 그리고 관련 날짜를 파일에 고지(파일내 주석) |
원본 및 수정코드를 GPL-2.0에 의해 배포 | 아래 소스코드 공개 범위 참조 |
GPL-2.0의 소스코드 공개 범위
- GPL-2.0 원저작물에서 수정한 코드
- GPL-2.0 과 결합하여 사용되는 모든 Module 및 Library (GPL과 동일한 Binary, GPL과 메모리 공유 방식하는 SW)
- 사용자가 제공 된 소스코드로 동일한 바이너리를 만들 수 있도록 빌드 환경 제공
- Tool Chain
- 빌드 스크립트
- 빌드 방법 (README, 사용자가 README에 작성 된 내용을 따라하면 빌드 할수 있도록 상세작성)
GPL-2.0 예외사항
- GPL-2.0 프로그램과 전혀 연동하지 않는 독립 프로그램 (ex. 동일 CD에 서로 다른 프로그램이 포함된 경우)
- GPL-2.0 프로그램과는 별도의 프로그램으로서 Pipe, Socket, Command Line Arguments등과 같이 GPL 프로그램과 통신하는 경우
- 라이선스 혹은 저작권자가 명시한 주석문에 exception 사항이 있는 경우 (ex. GNU Gerneral Public License v2.0 w/Classpath exception)
- GPL software를 사용하면서 배포하지 않을 경우, copyleft 조항이 trigger 되지 않음 (ex. 네트워크 서비스)
GPL-3.0 License
Checklist
라이선스 의무사항 | 해야할 일 |
소스코드 제공에 대한 약정서(Written Offer) 제공 | 일반적으로 OSS 고지문(NOTICE) 상단에 소스코드를 받을 수 있는 정보에 대한 기입 (e-mail 주소 및 설명) |
저작권 고지 | 개발SW에 사용 된 오픈소스에 대한 라이선스 원문 및 Copyright 정보를 OSS 고지문에 기입하여 SW와 함께 배포 |
License 고지사항 원본 유지 | 오픈소스에 포함 된 고지사항, Copyright 등의 주석을 임의로 변경 및 삭제 하지 않고 유지 |
소스코드 수정에 대한 고지 | 원저작물 수정시 수정사실 그리고 관련 날짜를 파일에 고지 (파일내 주석) |
원본 및 수정코드를 GPL-3.0에 의해 배포 | 아래 소스코드 공개 범위 참조 |
GPL-2.0의 소스코드 공개 범위
- GPL-2.0 과 동일한 범위의 소스코드 공개
- GPL-3.0의 경우 설치 정보 제공 의무가 포함
- 사용자가 소스코드를 빌드하여 다시 제품에 설치하기 위해 필요한 모든 정보 및 방법 제공 (ex. 인증키 등)
GPL-2.0 예외사항
- GPL-2.0 과 동일
AGPL-3.0 License
Checklist
*AGPL은 원저작물을 수정했을 경우에만 의무사항이 발생하며, 그대로 사용하는 경우에는 의무사항 발생하지 않음
라이선스 의무사항 | 해야할 일 |
소스코드 제공에 대한 약정서(Written Offer) 제공 | 일반적으로 OSS 고지문(NOTICE) 상단에 소스코드를 받을 수 있는 정보에 대한 기입 (e-mail 주소 및 설명) |
저작권 고지 | 개발SW에 사용 된 오픈소스에 대한 라이선스 원문 및 Copyright 정보를 OSS 고지문에 기입하여 SW와 함께 배포 |
License 고지사항 원본 유지 | 오픈소스에 포함 된 고지사항, Copyright 등의 주석을 임의로 변경 및 삭제 하지 않고 유지 |
소스코드 수정에 대한 고지 | 원저작물 수정시 수정사실 그리고 관련 날짜를 파일에 고지 (파일내 주석) |
원본 및 수정코드를 AGPL-3.0에 의해 배포 | 아래 소스코드 공개 범위 참조 |
AGPL-3.0의 소스코드 공개 범위
- AGPL-3.0 원저작물 수정하여 사용시 GPL-3.0 과 동일한 범위의 소스코드 공개
- AGPL-3.0의 수정 된 버전이 네트워크를 통해 원격의 사용자와 상호 작용하는 경우
- 원격 사용자가 수정된 버전의 소스코드를 받을 수 있도록 네트워크 서버를 제공해야 함
AGPL-3.0 예외사항
- 원저작물 그대로 사용
Weak Copyleft (=Weak Reciprocal, 의무사항이 약한 라이선스)
LGPL-2.0/2.1 License
기업에서 GPL 계열의 라이선스는 사용하기 부담스러운 부분이 있다보니 GPL 라이선스보다 소스코드 공개 범위를 완화한 라이선스 입니다.
이미 널리 사용되고 있는 상용라이브러리와 동일한 기능을 제공하는 공개SW 라이브러리를 LGPL로 배포하여 원 프로그램의 소스코드는 공개하지 않고, 이에 사용된 해당 공개SW 라이브러리의 소스코드만 공개하게 함으로써 공개SW 라이브러리의 사용을 장려하고 사실상의 표준으로 유도하는 한편 관련된 다른 공개SW를 보다 더 많이 사용할 수 있도록 하겠다는 것이다.
- 공개 라이선스 가이드 中 -
개발자분들이 확인하셔야 하는 Checklist는 다음과 같이 요약할 수 있습니다.
Checklist
라이선스 의무사항 | 해야할 일 |
소스코드 제공에 대한 약정서(Written Offer) 제공 | 일반적으로 OSS 고지문(NOTICE) 상단에 소스코드를 받을 수 있는 정보에 대한 기입 (e-mail 주소 및 설명) |
저작권 고지 | 개발SW에 사용 된 오픈소스에 대한 라이선스 원문 및 Copyright 정보를 OSS 고지문에 기입하여 SW와 함께 배포 |
License 고지사항 원본 유지 | 오픈소스에 포함 된 고지사항, Copyright 등의 주석을 임의로 변경 및 삭제 하지 않고 유지 |
소스코드 수정에 대한 고지 | 원저작물 수정시 수정사실 그리고 관련 날짜를 파일에 고지(파일내 주석) |
원본 및 수정코드를 LGPL-2.0/2.1에 의해 배포 | 아래 소스코드 공개 범위 참조 |
LGPL-2.0/2.1의 소스코드 공개 범위
- Dynamic Link(동적링크)로 사용하는 경우
- 원저작물 + 사용자가 라이브러리를 수정해도 응용프로그램을 사용할 수 있도록 Object Code나 공유 라이브러리 방식을 이용하여 배포
- Static Link(정적링크)로 사용하는 경우
- GPL 라이선스와 동일한 공개 범위가 적용 됨
- 사용자가 제공 된 소스코드로 동일한 라이브러리를 만들 수 있도록 빌드 환경 제공
- Tool Chain
- 빌드 스크립트
- 빌드 방법 (README, 사용자가 README에 작성 된 내용을 따라하면 빌드 할수 있도록 상세작성)
LGPL-3.0 License
Checklist
라이선스 의무사항 | 해야할 일 |
소스코드 제공에 대한 약정서(Written Offer) 제공 | 일반적으로 OSS 고지문(NOTICE) 상단에 소스코드를 받을 수 있는 정보에 대한 기입 (e-mail 주소 및 설명) |
저작권 고지 | 개발SW에 사용 된 오픈소스에 대한 라이선스 원문 및 Copyright 정보를 OSS 고지문에 기입하여 SW와 함께 배포 |
License 고지사항 원본 유지 | 오픈소스에 포함 된 고지사항, Copyright 등의 주석을 임의로 변경 및 삭제 하지 않고 유지 |
소스코드 수정에 대한 고지 | Library 형태의 수정을 허용, 수정사실과 날짜를 파일에 명기 |
원본 및 수정코드를 LGPL-3.0에 의해 배포 | 아래 소스코드 공개 범위 참조 |
LGPL-3.0의 소스코드 공개 범위
- LGPL-2.0/2.1 과 동일한 범위의 소스코드 공개
- LGPL-3.0의 경우 설치 정보 제공 의무가 포함
- 사용자가 소스코드를 빌드하여 다시 제품에 설치하기 위해 필요한 모든 정보 및 방법 제공 (ex. 인증키 등)
MPL-2.0 License
Checklist
라이선스 의무사항 | 해야할 일 |
소스코드 제공에 대한 약정서(Written Offer) 제공 | 일반적으로 OSS 고지문(NOTICE) 상단에 소스코드를 받을 수 있는 정보에 대한 기입 (e-mail 주소 및 설명) |
저작권 고지 | 개발SW에 사용 된 오픈소스에 대한 라이선스 원문 및 Copyright 정보를 OSS 고지문에 기입하여 SW와 함께 배포 |
License 고지사항 원본 유지 | 오픈소스에 포함 된 고지사항, Copyright 등의 주석을 임의로 변경 및 삭제 하지 않고 유지 |
소스코드 수정에 대한 고지 | Library 형태의 수정을 허용, 수정사실과 날짜를 파일에 명기 |
원본 및 수정코드를 MPL-2.0에 의해 배포 | File 단위 |
EPL-2.0 License
Checklist
라이선스 의무사항 | 해야할 일 |
소스코드 제공에 대한 약정서(Written Offer) 제공 | 일반적으로 OSS 고지문(NOTICE) 상단에 소스코드를 받을 수 있는 정보에 대한 기입 (e-mail 주소 및 설명) |
저작권 고지 | 개발SW에 사용 된 오픈소스에 대한 라이선스 원문 및 Copyright 정보를 OSS 고지문에 기입하여 SW와 함께 배포 |
License 고지사항 원본 유지 | 오픈소스에 포함 된 고지사항, Copyright 등의 주석을 임의로 변경 및 삭제 하지 않고 유지 |
원본 및 수정코드를 EPL-2.0에 의해 배포 | Module 단위 |
*GPL 소스코드 공개 범위의 포맷 및 일부 문장은 SKT open source Guide page를 인용하였습니다.
https://sktelecom.github.io/guide/use/obligation/gpl-3.0/
해당 포스팅은 CC BY 4.0라이선스 하에 포스팅 합니다.
'오픈소스(Open Source)' 카테고리의 다른 글
AI가 코딩을 도와주는 신세계...Copilot과 이슈에 대해서 (0) | 2022.11.22 |
---|---|
GPL 계열 라이선스 vs 그 외 라이선스 별 충돌 정리 (0) | 2022.11.08 |
다수의 오픈소스 컨설팅 경험을 바탕으로 오픈소스(Open Source)에 대한 포스팅을 주기적으로 업로드 예정입니다. (0) | 2022.10.13 |
오픈소스 사용시 기업에서 발행하는 고지문(NOTICE)에 대해서 알아보자! (0) | 2022.09.30 |
AGPL-3.0 License 상용 제품에 사용 가능할까? (0) | 2022.04.07 |