
오픈소스 라이센스 한눈에 보기: GPL, MIT, Apache 등 주요 라이스 비교CS 지식/CS기본2024. 8. 18. 12:45
Table of Contents
반응형
주요 오픈 소스 라이센스 정리
라이선스 | Copyleft | 소스코드 공개 의무 | 상업적 사용 가능 | 주요 특징 |
---|---|---|---|---|
GPL v2/v3 | Strong Copyleft | 예 | 제한적으로 가능 | 수정 및 배포 시 반드시 동일 라이선스로 배포해야 함. 상용 제품에서는 사용 제약이 있을 수 있음. |
LGPL | Weak Copyleft | 수정된 라이브러리만 공개 | 예 | 라이브러리를 동적 링크로 사용 시, 상용 제품에서도 소스 공개 의무 없음. |
MIT | 없음 | 아니오 | 예 | 매우 자유롭고 간단한 라이선스. 소스 코드 사용에 제한이 거의 없음. |
Apache 2.0 | 없음 | 아니오 | 예 | 특허권 보호 조항 포함. 수정 및 배포 시 라이선스와 특허 조항 유지 필요. |
BSD 2-Clause/3-Clause | 없음 | 아니오 | 예 | MIT와 유사하며, 3-Clause는 개발자 이름으로 제품 홍보 금지 조항 포함. |
MPL (Mozilla Public License) | Medium Copyleft | 수정된 파일만 공개 | 예 | 수정된 부분만 공개하고 나머지는 상용으로 유지 가능. |
EPL (Eclipse Public License) | Medium Copyleft | 수정된 부분만 공개 | 예 | 수정된 부분은 공개하지만, 전체 소프트웨어는 상용으로 배포 가능. |
Creative Commons (CC) | 선택적 | 선택적 | 예 (조건에 따라 다름) | 문서, 이미지 등 비소프트웨어 콘텐츠에 사용됨. 조건에 따라 비영리, 변경 금지 등 가능. |
Copyleft의 주요 개념
- 자유 보장: Copyleft 라이선스는 사용자가 소프트웨어를 자유롭게 사용, 수정, 배포할 수 있도록 허용하지만, 그 자유를 계속 유지하기 위해 몇 가지 조건을 부과합니다.
- 동일한 라이선스 유지: Copyleft 라이선스를 따르는 소프트웨어를 수정하거나 파생작업을 만들어 배포할 경우, 해당 작업물도 원래 소프트웨어와 동일한 라이선스로 배포해야 합니다. 이를 통해 오픈소스 소프트웨어가 계속해서 자유롭게 사용될 수 있도록 보장합니다.
- 소스 코드 공개: Copyleft를 따르는 라이선스를 사용하면, 소프트웨어를 배포할 때 소스 코드를 반드시 공개해야 합니다.
예시
- Strong Copyleft (강한 복사좌측원칙): GNU GPL 라이선스가 대표적입니다. 만약 GPL 라이선스의 소프트웨어를 수정하거나 이를 기반으로 새로운 소프트웨어를 만들면, 그 소프트웨어 역시 GPL 라이선스로 공개해야 합니다.
- Weak Copyleft (약한 복사좌측원칙): LGPL이나 MPL과 같은 라이선스는 Copyleft를 적용하되, 특정 조건에서 좀 더 유연한 정책을 허용합니다. 예를 들어, LGPL 라이선스는 소프트웨어가 동적 링크로 연결된 경우, 그 소프트웨어 전체를 GPL로 공개할 필요는 없습니다.
- Medium Copyleft (중간 복사좌측원칙)
- 부분적인 소스코드 공개 의무: Medium Copyleft 따르는 라이선스에서는 소프트웨어의 특정 부분만 소스코드를 공개해야 합니다. 예를 들어, MPL 라이선스를 사용할 경우, 수정된 소스 파일은 공개해야 하지만, 전체 소프트웨어는 공개하지 않아도 됩니다.
- 유연성 제공: 상업 소프트웨어와 오픈소스를 결합할 때 유리합니다. 상용 소프트웨어에서 MPL 라이선스를 사용한 특정 모듈이나 파일만 공개하면 되고, 나머지 상용 코드는 비공개로 유지할 수 있습니다.
- Strong Copyleft와의 차이점: GPL과 같은 강한 Copyleft에서는 소프트웨어 전체가 소스 코드 공개 대상이 되지만, Medium Copyleft에서는 특정 파일이나 모듈에만 그 의무가 적용됩니다. 따라서 프로젝트 내의 일부 코드만 공개하고 나머지는 비공개로 유지할 수 있는 유연함이 있습니다.
반응형
'CS 지식 > CS기본' 카테고리의 다른 글
Stateful과 Stateless 차이 이해하기 (0) | 2024.03.02 |
---|
@ray5273 :: Micro Changes, Macro Impact
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.