ARCHIVES

오픈소스 라이선스(Open Source License)의 개괄

(주)비트나인 2015. 9. 22. 17:09

오픈소스 라이선스(Open Source License)의 개괄






1. 오픈소스 라이선스의 배경


소소코드란 C나 Java와 같은 프로그래밍 언어를 이용해 작성된 텍스트입니다. 이러한 소스코드에는 소스코드를 개발한 사람(개발자)의 학문적 지식과 알고리즘 그리고 그들만의 노하우가 그대로 나타나 있기 때문에 일반적인 상용 소프트웨어에서는 공개되지 않고 있습니다. 이러한 소프트웨어를 Closed source software 라고 합니다. 대표적인 예로 MS의 Windows, Office, Oracle의 Oracle DBMS 등이 있습니다. 이에 반해 소스코드를 공개하는 소프트웨어가 있습니다. 바로 Open source software(줄여서 OSS)가 말그대로 소스코드가 외부에 공개된 소프트웨어입니다. 대표적인 예로, 리눅스 운영체제 커널 및 관련 소프트웨어, PostgreSQL DBMS, FireFox 웹브라우저, Android OS 등이 있습니다. 한국에서는 카카오톡이 대표적인 오픈소스 소프트웨어라고 합니다. 오픈소스 소프트웨어는 과거에 자유소프트웨어(Free Software)로 불려졌었습니다. 미국의 리차드 스톨만 이라는 사람이 기존의 소프트웨어에 대한 사용, 복제, 배포, 수정에 제한을 둔 기존의 정책을 뒤엎기 위해, 자유소프트웨어재단(Free Software Foundation, FSS)을 설립함으로써 자유로운 소프트웨어의 사용, 공유, 수정의 권리를 지키고자 했습니다. 이에 1990년대에 들어서 GPL(General Public License)로 배포된 리눅스가 널리 보급되고, 1998년 오픈소스 협회(Open Source Initiative, OSI)가 제대로 된 활동하기 시작하면서 오픈소스 소프트웨어가 널리 사용되게 되었습니다.





2. 오픈소스 라이선스의 소개


라이선스(License) 의미는 하기와 같습니다. 

라이선스란 저작권을 가지고 있는 저작권자가 자신의 권리 중 일부분(사용, 복제, 배포 등)을 일정내용의 조건으로 사용자가 이용할 수 있도록 권한을 부여한 허가권이다. 소프트웨어의 경우 소프트웨어를 사용하고자 하는 자에 대해 일정한 범위와 방법으로 프로그램을 사용할 수 있도록 인정해주는 것이다. 그리고 이러한 계약은 저작권으로 보호되고 있어 이를 위반할 때에는 법적 책임을 지게 된다. 이러한 오픈소스 라이선스의 종류는 2014년 기준 약 70여개가 넘는다고 합니다. 따라서 오픈소스 소프트웨어를 이용하기 위해서는 오픈소스 소프트웨어 개발자가 만들어놓은 사용 방법 및 조건의 범위에 따라 해당 소프트웨어를 사용해야하며, 이를 위반할 경우에는 라이선스를 위반함과 동시에 저작권 침해로 인해서 처벌을 받게 됩니다. 대표적인 라이선스로는 GPL(General Public License), LGPL(Lesser General Public License), BSD(Berkeley Software Distribution), MPL(Mozilla Public License) 등이 있으며, 이런 오픈소스 소프트웨어 라이선스는 기본적으로 사용자의 자유로운 사용, 수정, 배포를 보장하고 있습니다.






3. 오픈소스 라이선스의 종류




Apache License

– 아파치 라이선스는 아파치 소프트웨어재단이 그들의 소프트웨어에 적용하기 위해 자체적으로 만든 라이선스입니다. 소스코드 공개 의무 같은 의무사항은 없지만, 아파치 라이선스 소스코드를 수정해 배포하는 경우 아파치 라이선스 버전 2.0을 꼭 포함시켜야 하며 아파치 재단에서 만든 소프트웨어임을 반드시 밝혀야 합니다.

– 적용 사례 : 안드로이드(v2.0), 하둡(v2.0)


GNU(Gnu is Not Unix) General Public License(GPL)

– GPL 라이선스는 자유소프트웨어재단에서 만든 라이선스입니다. GNU 프로젝트로 배포하는 소프트웨어(Emacs, GNU 디버거(GDB), GNU 컴파일러 모음(GCC) 등)에 적용하기 위해 리처드 스톨만이 만든 라이선스입니다. 가장 큰 특징은 자유소프트웨어재단답게 가장 강력한 제약 조건을 포함하고 있는 카피레프트 조항이 있다는 것입니다. GPL 프로그램은 어떤 목적으로, 어떤 형태로든 사용할 수 있지만 사용하거나 변경된 프로그램을 배포하는 경우 무조건 동일한 라이선스 즉, GPL로 공개해야 합니다.

– 적용 사례 : 모질라 파이어폭스(v2.0), 리눅스 커널(v2.0), 깃(v2.0), 마리아DB(v2.0), 워드프레스(v2.0), 드루팔(v2.0)


GNU Lesser GPL(LGPL)

– LGPL 라이선스는 자유소프트웨어재단의 강력한 철학이 담긴 GPL의 카피레프트 조항을 보완하기 위해 만든 라이선스입니다. GPL은 단순히 소프트웨어를 사용하기만 하더라도 해당 소스코드를 GPL로 공개해야 하는 부담감 때문에 상용 소프트웨어로 쓰기 부담스럽다는 단점이 있습니다. 그래서 좋은 자유 소프트웨어 제품이 더 많이 쓰이고 표준이 되도록 유도하기 위해 단순한 라이브러리·모듈 링크를 허용한 라이선스입니다. 원래는 한정된 라이브러리에만 적용하려는 의도로 ‘Library GPL’이라는 이름을 붙였으나, 모든 라이브러리에 적용된다는 오해를 사 ‘Lesser GPL’로 변경됐습니다.

– 적용 사례 : 모질라 파이어폭스(v2.1)


Berkeley Software Distribution(BSD) License

– 버클리의 캘리포니아대학에서 배포하는 공개 소프트웨어 라이선스입니다. BSD 자체가 공공기관에서 만들어낸 것이므로 공공의 몫으로 돌려주자는 의미가 강하므로, 라이선스 자체에는 아무런 제한 없이 누구나 자신의 용도로 사용할 수 있습니다. 라이선스 및 저작권 표시 조건 외엔 제약이 없는, 굉장히 자유로운 라이선스 중 하나입니다.

– 적용 사례 : Nginx(The BSD 2-Clause License), PostgreSQL(이후 PG는 별도의 라이선스가 생겨남) 


Mozilla Public License(MPL)

– 모질라 공용 허가서는 과거 넷스케이프 웹브라우저의 소스코드를 공개하기 위해 개발된 라이선스입니다. 초기 1.0버전은 넷스케이프 커뮤니케이션의 변호사였던 밋첼 베이커가 작성했고, 1.1과 2.0버전은 모질라재단이 작성했습니다. MPL의 특징은 소스코드와 실행파일의 저작권을 분리했다는 점입니다. 수정한 소스코드는 MPL로 공개하고 원저작자에게 수정한 부분에 대해 알려야 하지만, 실행파일은 독점 라이선스로 배포할 수 있습니다. 즉 사용한 MPL 소프트웨어와 수정한 MPL 소프트웨어에 대한 공개 의무만 가지며, 별도의 소스코드와 실행파일은 독점 라이선스를 가질 수 있습니다.

– 적용 사례 : 모질라 파이어폭스(v1.1), 모질라 썬더버드(v1.1)


MIT License

– MIT 라이선스는 미국 매사추세츠공과대학교(MIT)에서 해당 대학 소프트웨어 공학도들을 돕기 위해 개발한 라이선스입니다. 라이선스와 저작권 관련 명시만 지켜주면 되는 라이선스로, 가장 느슨한 조건을 가진 라이선스 중 하나이기 때문에 인기가 많습니다.

– 적용 사례 : 부트스트랩 , Angular.js, Backbone.js, jQuery







4. Agens-SQL의 라이선스 정책


기본적으로 Agens-SQL(아젠스SQL)은 PostgreSQL 라이선스를 따릅니다. PostgreSQL은 BSD 기반인 별도의 PostgreSQL 라이선스가 존재합니다. 본 라이선스는 공개의무가 없으므로 영리목적으로 사용시에도 저작권 고지 등 퍼미시브한 의무사항만 준수하면 문제가 없습니다.


하지만 Agens-SQL 내에 존재하는 수많은 확장 모듈들은 앞으로 지속적으로 확장될 것이고, 이에 따른 제 각각의 라이선스가 존재할 것이며, 이중에는 OSS 라이선스로 가장 많이 사용하는 GPL이 반드시 존재할 것입니다. PostgreSQL 라이선스는 GPL과의 호환성에는 문제가 없기 때문에 Agens-SQL의 PostgreSQL DBMS와 확장모듈 개별간의 라이선스 호환에는 큰 문제는 없겠으나, 확장모듈간의 조합이 필요할 경우에는 반드시 각각의 모듈들에 대한 라이선스를 검토해봐야 할 것입니다.









Posted by Bitnine(비트나인)

'ARCHIVES' 카테고리의 다른 글

JDO(Java Data Objects)와 Datanucleus 소개  (0) 2015.09.22
Hive의 권한 시스템  (0) 2015.09.22
PostgreSQL에서 사용하는 암호화 방식  (0) 2015.09.22
Reflection  (0) 2015.09.22
아젠스(Agens), 오픈소스 소프트웨어의 가치  (0) 2015.09.04