이 포스트는 오픈소스에 대한 이해를 돕고자 OLIS오픈소스 라이선스 가이드를 베이스로 수집한 정보를 간단하게 정리한 내용입니다.

따라서, 좀 더 자세한 내용을 원하신다면 오픈소스 라이선스 가이드를 한번 정독하시는 것을 추천합니다.

1. 소프트웨어 지적재산권과 오픈소스 라이센스

1.1 지적재산권이란?

지적
재산권
설명
저작권창작과 동시에 권리 발생하며, 창작물에 대해 창작자(저작권자)가 갖는 권리이며
창작물을 보호합니다.
특허권발명에 대해 발명자(특허권자)가 갖는 독점배타권입니다.
저작권과는 달리 일정한 방식으로 출원하여 심사를 통해 등록되어야만 권리가 발생합니다.
상표권상표권자가 등록상표를 사용할 독점적인 권리입니다.
영업비밀영업비밀로서 보호 받을 수 있으며 비밀이 공개된다면 보호받을 수 없습니다.
예를 들면 코카콜라 제조법이 영업비밀에 해당합니다.

저작권과의 특허권의 차이

저작권은 창작물에 한해서 권리를 요구할 수 있지만 특허권은 구현하는 소프트웨어라면 구현 언어에 상관없이 특허권 범위에 속합니다.

1.2 오픈소스 라이센스

오픈소스에도 지적재산권이 존재합니다. 따라서 함부로 사용한다면 파생물의 코드 공개나 소송과 같은 분쟁을 야기할 수 있습니다.

1.3 오픈소스의 공통적인 특징

모든 오픈소스는 OSI(Open Source Initiative)에서 오픈소스 라이센스로 인증받기 위해 몇 가지 공통점을 가집니다.

오픈 소스 정의 (The Open Source Definition)

  1. 자유로운 재배포 (Free Redistribution)
    오픈소스는 자유롭게 재배포될 수 있어야 하며 사용자가 파생물을 상업용으로 사용하더라도 로열티 또는 기타 수수료를 요구할 수 없습니다.

  2. 소스 코드 (Source code)
    오픈소스는 반드시 의도적으로 난독화되지 소스 코드를 포함해야 하며, 사용자가 소스 코드로 형태로 자유롭게 배포할 수 있어야 합니다.

  3. 파생물 (Derived Works)
    오픈소스는 수정할 수 있어야 하며 파생물을 허용해야 합니다. 또한 원작과 동일한 라이센스로 배포될 수 있어야 합니다.

  4. 저자의 코드에 대한 무결성 (Integrity of The Author’s Source Code)
    오픈소스는 원본 코드가 수정될 경우 원본과 수정한 부분의 patch file을 함께 배포하도록 제한합니다. 또한 수정된 소스는 배포할 수 있도록 허용해야 하며 원본 소프트웨어와 다른 이름 또는 다른 버전을 사용해야 합니다.

  5. 개인과 그룹에 대한 차별 금지 (No Discrimination Against Persons or Groups)
    오픈소스는 개인과 그룹을 차별해서는 안됩니다.

  6. 분야별 차별 금지 (No Discrimination Against Fields of Endeavor)
    오픈소스는 특정 분야에 대해서 차별하면 안됩니다. 예를 들어 프로그램이 비즈니스에서 사용되거나 연구에서 사용되는 것을 제한할 수 없습니다.

  7. 라이센스 배포 (Distribution of License)
    오픈소스에 첨부된 권한은 해당 당사자가 추가 라이센스를 실행할 필요 없이 프로그램을 재배포하는 모든 사람에게 적용되어야 합니다.
    이 조항은 비공개 계약을 요구하는 등 간접적인 방법으로 소프트웨어를 폐쇄하는 것을 금지합니다.

  8. 라이센스는 특정 제품에만 제한할 수 없습니다. (License Must Not Be Specific to a Product)
    오픈소스는 특정 제품에만 제한할 수 없습니다. 해당 소스를 이용하여 재배포된 소프트웨어에도 동일한 권한을 가져야 합니다.

  9. 라이센스는 다른 소프트웨어를 제한해서는 안됩니다. (License Must Not Restrict Other Software)
    라이센스가 부여된 소프트웨어와 함께 배포되는 다른 소프트웨어를 제한할 수 없습니다. 예를 들어, 동일한 매체에 배포된 다른 모든 프로그램이 오픈소스여야 한다고 요구할 수 없습니다.

  10. 라이센스는 기술 중립이어야 합니다. (License Must Be Technology-Neutral)
    개별 기술이나 인터페이스 스타일에 개별적으로 라이센스를 부여할 수 없습니다.


2. 주요 오픈소스 라이센스

2.1 BSD형 라이센스

BSD형 라이센스는 해당 라이센스로 배포된 소프트웨어의 사용과 파생물의 배포에 제한을 최소화한 라이센스입니다. 카피레프트(copyleft) 조항이 포함되어 있지 않은 것이 특징이며 대표적인 BSD형 라이센스에는 Apache License, MIT License, BSD License 등이 있습니다.

BSD
출처: https://en.wikipedia.org/wiki/File:License_icon-bsd.svg

BSD형 라이센스 특징 및 배포시 의무사항

이름특징 및 배포시 의무사항
2-Clause BSD License- 재배포시 저작권자 표기
- 준수조건 및 보증부인에 대한 고지사항을 소스코드 또는 문서 및 기타자료에 포함
3-Clause BSD Licese- 2-Clause BSD License 기반
- 최초 개발자나 기여자의 이름을 제품에 대한 보증이나 홍보에 사용하지 못함
Apache License 2.0- 라이센서에게 Contribution 하는 경우 Apache 라이선스를 따름
- 사용자에게 라이센스 사본 제공
- 수정사항을 표시한 안내문 첨부
- 저작권, 특허, 상표, attribution에 대한 고지사항을 소스코드 또는
NOTICE 파일 등에 포함
- 최초 개발자 등을 위해 보증을 면제하고, 책임을 제한
MIT License- 저작권 안내문구, MIT 라이센스 문구가 모든 복제본에 포함

2.2 GPL형 라이센스

FSF(Free Software Foundation)에서 만든 라이센스이며 BSD 라이센스와 비슷하지만 카피레프트(copyleft) 조항과 소스코드 제공 의무를 가지고 카피레프트(copyleft)와 소스 코드 제공 의무의 범위는 라이센스 마다 차이가 있습니다.

GPL
출처: https://commons.wikimedia.org/wiki/File:License_icon-gpl-2.svg

GPL형 라이센스 특징 및 배포시 의무사항

이름특징 및 배포시 의무사항
GPLv2- 법원 판결, 특허 침해 등 라이센스 조건을 준수할 수 없을 경우 GPL에 의한 배포 불가능
- 카피레프트
- 수정사항과 날짜를 파일에 명기
- 원본 저작물 및 파생물에 대한 소스 코드를 제공하거나 요청시 제공하겠다는 약정서 포함
(소스코드는 실행물에 포함된 모든 모듈들의 소스 코드와 모든 인터페이스 정의 파일,
실행물의 컴파일과 설치에 사용된 모든 스크립트를 의미)
GPLv3- GPLv2를 기반으로 함
- 배포(distribution)를 컨페이(convey)라는 용어로 대체
- 복제, 수정 배포 등을 포함하는 propagate라는 용어로 대체
- 설치 정보 제공
- 차별적인 특허 라이센스 체결 금지
- AGPL과 함께 사용할 수 있도록 허용
LGPLv2- GPLv2를 기반으로 함
- 소스코드 제공없이 배포 가능
- 복제본에 적절한 저작권 고지와 보증책임이 없음을 명시
- 수정한 소스코드는
- LGPL을 사용하고 있다는 사실 명시
LGPLv3- GPLv3을 기반으로 함
- 소스코드 제공없이 배포 가능
AGPL- GPLv3를 기반으로 함
- 수정버전의 경우 네트워크를 통해 원격으로 대화하는 모든 사용자들에게 소스 코드를
받을 수 있는 기회를 제공
- 서버 형태로 서비스하는 경우에도 소스코드 제공 조항
(AGPL 마지막 항목이 추가된 이유는 대다수의 오픈소스 라이센스들은 배포시 요구사항들을
정의합니다. 반대로 말하면 내부에서 사용하거나 서버 형태로 제공할 경우 의무사항이
모호해지기 때문입니다.)

라이센스의 양립성 문제

사용한 오픈소스들의 라이센스의 요구사항이 상충하는 문제를 양립성 문제라고 합니다. 예를 들면 카피레프트 조항이 존재하는 MPL과 GPL을 둘 다 사용하는 파생물일 경우 GPL과 MPL 둘 중 어떤 라이센스를 따라야 할지에 대한 문제를 양립성 문제라고 합니다.

2.3 MPL형 라이센스

기업들이 주도하는 오픈소스에 사용되는 라이센스로 MPL, EPL, CDDL 등이 대표적입니다.
카피레프트 조항이 있어 GPL형 라이센스와 비슷하지만, GPL보다는 LGPL에 가까운 형태입니다.

3. 주요 오픈소스 라이선스의 특징 비교

출처: 오픈소스 라이선스 가이드, 13페이지

특징

의무사항
BSDapache
2.0
GPLv2GPLv3LGPLv2MPLCDDLCPL/
EPL
복제,
배포,
수정의
권한 부여
OOOOOOOO
배포시
라이센스
사본 첨부
OOOOOOO
저작권
고지사항
또는
Attribution
고지사항
유지
OOOOOOOO
배포시
소스코드
제공 의무와
범위
derivative
work
work
based
on the
program
derivative
work
filefilemodule
조합저작물
작성 및
타 라이센스
배포 허용
OOOOOO
수정내용
고지
OOOOOOO
명시적
특허
라이센스의
부여
OOOOO
라이선시가
특허소송
제기시
라이센스 종료
OOOOO
이름, 상표,
상호에 대한
사용제한
OOOO
보증의
부인
OOOOOOOO
책임의
제한
OOOOOOOO

4. 라이센스 확인 방법

주요 오픈소스 패키지 내에는 라이센스를 확인할 수 있는 파일이 존재합니다.
최상위 디렉토리 내에 LICENSECOPYING 등의 이름으로 존재하며 이를 통해 확인할 수 있습니다.

5. 마무리

오픈 소스의 영향력이 날로 커지는 오늘날에 오픈 소스 라이센스에 관한 공부는 필수가 되었습니다.
매일 조금씩 공부하여 개인적으로 혹은 회사에서 오픈 소스를 올바른 방향으로 사용하여 불이익이 발생하는 일이 없기를 바라는 마음에서 내용을 간략하게나마 정리 해봤습니다.

궁금하신 내용이나 잘못된 정보가 있다면 댓글이나 tkddlf59@gmail.com으로 메일 주세요. 감사합니다😉

References