[0009] 오픈소스 라이선스의 이해
오픈소스
오픈소스 라이선스란?
- 오픈소스 소프트웨어 (Open Source Software)
- 일반적으로 자유롭게 사용, 복제, 배포 수정 할 수 있으며, 소스코드가 공개된 소프트웨어
- 오픈소스 소프트웨어의 대표적인 예
- Linux 커널, Apache, FireFox, MySQL 등등
- 오픈소스 소프트웨어 라이선스(Open Source Software License)
- 오픈소스 소프트웨어 개발자와 이용자 간에 이용 방법 및 조건의 범위를 명시한 계약
- 상용 소프트웨어와는 다르게 로열티를 요구하지 않음
- 사용자들에게 사용에 대한 권리 부여 (복제 및 배포)
- 소스코드를 제공하여 수정 가능
- 카피레프트 (CopyLeft)
- 카피라이트(CopyRight) 에 반대 되는 개념
- 저작권에 기반을 둔 사용 제한이 아니라 저작권을 기반으로 한 정보의 공유를 위한 조치
오픈소스 라이선스의 종류 및 특징
- GPL ( General Public License) 2.0
- 정의
- FSF에서 만든 라이선스 규약으로서 가장 강력한 라이선스
- 의무사항
- 저작권표시 및 보증책임 없음을 명시
- 고지사항 및 보증책임 원본 유지
- 양도받는 이들에게 GPL라이선스 사본 제공
- 파일 수정시 날짜 및 사실관계를 파일에 명기
- 원본 저작물과 파생저작물을 GPL2.0에 의해 배포
- 원본 저작물 및 파생 저작물에 대한 소스코드를 제공하거나, 요청시 제공하겠다는 약정서 제공
- 특징
- 소스코드는 실행물에 포함된 모든 모듈들, 인터페이스 정의 파일 전체, 컴파일과 설치를 제어하는데 사용된 스크립트 전부
- 실행물이 실행되는 운영체제의 주요 부분과 함께 일반적으로 배포되는 구성요소들은 구성요소 자체가 실행물에 수반 되지 않는 한 배포되는 소스 코드에 포함되지 않아도 무방
- 서브 라이선스를 허용하지 않음
- 수취인은 자동적으로 라이선스 취득
- GPL에 의한 배포 불가능
- 법원의 판결, 특허침해 등에 의해 라이선스 조건을 준수 할 수 없는 경우
- 공개 범위
- GPL 프로그램의 소스코드를 개발 중인 프로그램 코드에 삽입하거나 링크 시킬 경우 전체 소스 공개
- 원본 프로그램과 별개의 독립된 프로그램을 GPL 프로그램과 같이 배포 하는 경우 전체 소스 공개
- 두개의 프로그램이 파이프, 소켓, command-line arguments로 통신하는경우, 플러그인이 exec나 fork를 이용하는 경우에는 소스 공개 X
- GPL ( General Public License) 3.0
- 정의
- FSF에서 만든 라이선스 규약으로서 가장 강력한 라이선스
- 의무사항
- 저작권표시 및 보증책임 없음을 명시
- 고지사항 및 보증책임 원본 유지
- 양도받는 이들에게 GPL라이선스 사본 제공
- 파일 수정시 날짜 및 사실관계를 파일에 명기
- 원본 저작물과 파생저작물을 GPL3.0에 의해 배포
- 원본 저작물 및 파생 저작물에 대한 소스코드를 제공하거나, 요청시 제공하겠다는 약정서 제공
- 사용자제품에 대한 인증키 등 설치정보의 제공
- 차별적인 특허 라이선스 계약 체결의 금지
- 특징
- 용어 대체 (배포 -> 컨베이)
- 복제, 수정, 배포행위 등을 포함하는 프로퍼게이드(propagate) 용어 사용
- 해당 소스(corresponding source)에 인터페이스 정의 파일, 저작물의 서브프로그램과 다른 부분들 사이의 제어 흐름이나 밀접한 데이터 통신 등을 통해 저작물이 특별히 필요로 하는, 동적 링크된 하위 프로그램과 공유 라이브러리의 소스코드를 포함
- 기술적보호조치의 보호에 관한 법적 권리의 포기
- 추가적인 허용사항 또는 제약사항을 부가하는 것을 가능하도록 함
- 차별적인 특허 라이선스 계약체결의 금지
- AGPL과 결합하거나 연결하여 하나의 저작물을 만들 수 있도록 허용
- 라이선시가 기여자 등을 상대로 특허소송을 제기하는 경우 라이선스 종료(특허 보복 조항)
- 공개 범위
- GPL 프로그램의 소스코드를 개발 중인 프로그램 코드에 삽입하거나 링크 시킬 경우 전체 소스 공개
- 원본 프로그램과 별개의 독립된 프로그램을 GPL 프로그램과 같이 배포 하는 경우 전체 소스 공개
- AGPL ( Affero General Public License)
- 정의
- GPL을 기반으로 만든 라이선스
- 버전 1,2는 Affero, 버전 3은 자유소프트웨어재단에 의해 개발
- 수정한 소스코드를 서버에서만 사용하는 개발자가 프로그램을 배포하지 않을 경우 사용자는 소스코드를 가질 수 없는 문제를 해결 하기 위해 마련
- 의무사항
- 저작권표시 및 보증책임 없음을 명시
- 고지사항 및 보증책임 원본 유지
- 양도받는 이들에게 GPL라이선스 사본 제공
- 파일 수정시 날짜 및 사실관계를 파일에 명기
- 원본저작물 및 파생저작물에 대한 소소코드를 제공하거나, 요청시 제공하겠다는 약정서 제공
- 사용자제품에 대한 인증키 등 설치 정보의 제공
- 차별적인 특허라이선스 계약체결의 금지
- 특징
- GPL의 강력한 카피레프트 조항을 보다 강력하게 보완
- 어떠한 경우에도 모든 소스코드를 공중에게 공개
- AGPL 라이선스를 가진 공개SW는 상업용 라이선스를 구매 할 수 있도록 듀얼 라이선스 정책 운영
- GPL3.0을 네트워크 서버 소프트웨어의 경우에 적용하기 위한 특별 규정
- 공개 범위
- AGPL 프로그램의 소스코드를 개발 중인 프로그램 코드에 삽입, 링크 시킬 경우 전체 소스 공개
- 원본 프로그램과 별개의 독립된 프로그램을 AGPL 프로그램과 같이 배포 하는 경우 전체 소스 공개
- AGPL 라이선스의 소스코드와 연결된 모든 소스코드는 공개 대상
- LGPL ( Lesser General Public License)
- 정의
- 자유소프트웨어재단에서 일부 라이브러리에 대하여 GPL보다 소스코드의 공개 정도를 완화된 형태로 사용 가능한 라이선스
- 오픈소스 중에서 많이 알려져있고, 의무사항들이 다른 오픈 소스 라이선스에 비해 엄격한 편
- 의무사항
- 저작권표시 및 보증책임 없음을 명시
- 고지사항 및 보증책임 원본 유지
- 양도받는 이들에게 LGPL라이선스 사본 제공
- 파일 수정시 날짜 및 사실관계를 파일에 명기
- 라이브러리 형태로의 수정을 허용
- 원본저작물 및 파생저작물에 대한 소스코드를 제공하거나, 요청시 제공하겠다는 약정서 제공
- 응용프로그램 배포시, LGPL 라이브러리를 사용하고 있다는 사실을 명시
- 사용자가 라이브러리를 수정해도 응용프로그램을 사용할수 있도록 허용
- 오브젝트코드를 제공하거나 공유라이브러리 방식 등을 이용
- 특징
- LGPL 라이브러리를 이용한 응용프로그램의 경우 소스코드 제공없이 배포 가능
- 결합 라이브러리의 작성 허용
- 공개 범위
- LGPL Library의 일부를 수정하는경우 수정한 Library의 소스코드 공개
- LGPL 소프트웨어와 링크 되는 부분의 소프트 웨어 소스코드는 공개 의무 없음
- BSD ( Berkeley Software Distribution)
- 정의
- 버클리의 캘리포니아 대학에서 배포하는 공개 SW라이선스
- SW의 소스코드를 공개하지 않아도 되는 대표적인 오픈소스 SW라이선스
- 의무사항
- 저작권자 표기, BSD라이선스가 걸린 소프트웨어를 이용하는 경우 해당 저작권자의 이름과 BSD라이선스의 내용 배포
- BDS라이선스가 걸린 소프트웨어로 인하여 법률상 / 도의상 피해가 발생 하더라도, 책임 부여 불가
- 저작권자의 이름을 광고에 사용 금지 ( 3-Clause 이상)
- 광고에서의 저작권자 표기 (4-Clause 이상)
- BDS 소트웨어를 사용 또는 포함한 것을 광고할 때에는 광고에 저작권자 명시
- 공개 범위
- Apache License
- 정의
- 아파치 소프트웨어 재단에서 자체적으로 만든 소프트웨어에 대한 라이선스
- 누구나 해당 소프트웨어에서 파생된 프로그램을 제작 가능
- 저작권을 양도, 전송 할 수 있음
- 의무사항
- 저작권, 특허, 상표, 권리귀속에 대한 고지사항을 소스코드 또는 NOTICE 파일에 포함
- 수취인에게 라이선스 사본을 제공
- 파일을 수정하여 배포할 경우 수정된 파일에 대한 수정사항을 표시한 안내 문구 첨부
- 최초개발자 등을 위해 보증을 면제하고 책임을 제한
- 특징
- 개작물에 대하여 다른 라이선스를 적용하여 판매 할 수 있음
- 라이선스에 대하여 특허를 주장할 수 없음
- 공개 범위
- 소스코드 공개 의무 없음
- 동일한 라이선스로 배포 할 필요 없음
- MPL ( Mozilla Public License)
- 정의
- 넷스케이프 웹브라우저의 소스코드를 공개하기 위해 개발된 라이선스
- 소스코드와 실행파일의 저작권을 분리
- 의무사항
- 배포시 MPL 라이선스 사본 첨부
- 원본 및 수정코드를 MPL에 의해 배포
- 파일 수정시 날짜 및 사실관계를 파일에 명기
- 수정코드에 대한 소스코드를 전자배포방식등을 통해 제공
- 저작권표시, 개발자 및 권리자 대한 사항들 표시
- 공개 범위
- 수정한 코드에 대한 소스코드 제공 (파일 단위 공개)
- 소스코드 변경, 코드 일부 복사, 소스파일 이름 변경
- MPL코드가 포함되지 않은 파일 일 경우 소스코드를 제공할 필요 없음
- CDDL ( Common Development and Distribution License)
- 정의
- 썬 마이크로시스템즈에 의해 MPL를 기반으로 개조
- 오픈솔라리스(OpenSolaris)에 적용
- 의무사항
- 원본 및 수정코드를 CDDL에 의해 배포
- 배포시 CDDL 라이선스 사본 첨부
- 수정코드에 대한 소스 코드를 합리적인 방식으로 제공
- 저작권 등 권리관련 사항, 라이선스관련 사항 등의 고지사항을 제거하거나 변경 불가
- 수정한 경우, 수정코드의 기여자임을 밝히는 고지를 포함
- 특징
- 최초개발자의 부여사항과 기여자의 부여사항을 분리
- 승소 당사자에대해 변호사 수임료 청구권 인정
- 기여자의 독창적인 창작이며. 관련 권한을 가지고 있다는 내용의 선언
- 준거법 선택가능
- 공개 범위
- 수정한 코드에 대한 소스코드 제공 (파일 단위 공개)
- 소스코드 변경, 코드 일부 복사, 소스파일 이름 변경
- MIT Licence
- 정의
- 미국 MIT대학에서 SW공학도들을 돕기 위해 개발한 라이선스
- BSD라이선스를 기초로 하여 개발
- 의무사항
- 라이선스 및 저작권 명시
- MIT 라이선스 문구가 모든 복제본에 포함
- 공개 범위
- EPL ( Eclipse Public License)
- 정의
- 이클립스 재단이 사용하는 라이선스
- 비즈니스 친화적 자유 소프트웨어 라이선스가 되도록 고안
- GPL과 같은 라이선스에 비해 더 약한 카피레프트의 형태를 제공
- 의무사항
- 오브젝트코드로 배포하는 경우 EPL 조건 준수, 보증부인, 책임의 배제 소스코드의 확보 방법 고지
- 소스코드로 배포하는 경우 EPL 라이선스 적용
- EPL 라이선스 사본 포함
- 각 프로그램의 저작권 고지사항을 제거하거나 변경하는 것을 금지
- 각 기여물의 창작자를 식별할 수 있도록 신분 공개
- 상업적 배포의 경우 기여자에게 책임이 발생하지 않도록 조치
- 특징
- 라이선스 계약서의 관리 주체를 선언
- 뉴욕주의 법률과 미국 지적재산권법을 준거법
- 공개 범위
- 수정한 소스코드를 Eclipse 라이선스로 공개 (모듈 단위로 공개)
오픈소스 라이선스 검증
- 검증 Tool
- 코드아이
- 한국저작권위원회가 개발한 오픈 소스 소프트웨어 라이선스 비교, 분석, 검사 하는 서비스
- 보유한 소프트웨어 소스 코드에 오픈 소스 소프트웨어가 얼마나 포함되어 있는지 알림
- 소스파일 혹은 폴더 검사 요청시, 저작권위원회의 서버에 저장된 데이터 베이스와 비교후 검사 보고서 제공
- Fossology
- 오픈소스 라이선스 컴플라이언스 소프트웨어 시스템 및 툴킷
- 프로젝트에 어떤 라이선스 및 저작권이 사용되었는지 스캔
- PostgreSQL기반의 DB 사용
- 웹 UI를 통해 워크 플로우 확인