본문 바로가기

별걸다하는 IT/리눅스 유닉스

[Linux, 리눅스 마스터] 오픈소스 SW 라이선스 (license)의 종류와 특징 (MPL, BSD, Apache, LGPL 등등)

[ 리눅스 / LINUX 완전 정복 목차, 포스팅 링크 모음 ]

 

점점 리눅스 마스터 자격증 시험 날짜가 다가 오고 있군요 ㅎㅎ

오늘은 그냥 오로지 자격증 대비를 위해, 단골 문제 중 하나인 라이선스에 대해서 다뤄보겠습니다.

 

오픈 소스 라이선스

저같은 경우 분명 공부했었어도... 다시 까먹긴 하던데.. 큼큼..

오픈소스가 추세인만큼 저작권이나 라이선스에 관한 개념은 중요할 수 밖에 없겠죠~~ 특히 오픈 소스 개발자 분들은 당연히 알아야 할 지식이지 않을까 싶습니다.

비록 오픈소스와 관련 접점이 큰 업종이 아니여도 오픈소스를 이용하여 무언가를 배포할 때 라이선스를 명시해야 할 의무가 있으므로 알아두는 것은 좋겠죠?

 

오픈소스의 역사는 리눅스와 큰 연관이 있죠. 흥미진진한 오픈소스 탄생 배경은 운영체제 목차에서 하나의 포스팅으로 따로 빼서 설명을 하도록 하고, 오늘은 자격증 단골 문제 정도로 라이선스의 종류와 특징을 훑는 시간을 가집시다. 

 

회차당 꼭 1문제씩은 출제되므로 시험보기 전에 꼭 훑어보고 갈 필요성이 있는 부분~~

 

라이선스의 종류

GPL

리눅스 소개글에서 GPL에 대한 설명은 간단히 했었어요! GPL은 해당 글을 참고해주세요 

리눅스 창시자 토발즈가 FSF 재단을 설립하면서 만든 라이선스 GPL 링크! ↓

https://jhnyang.tistory.com/18

 

리눅스란? GNU란? GPL? 리눅스의 특징

리눅스(Linux) 목차 리눅스를 시작하려고 하는데 리눅스가 뭔지도 모르면 안되겠죠! 운영체제가 무엇인지 감이 안잡히신 분들은 '운영체제란?'의 포스팅을 먼저 보고 오시는걸 추천드려요 리눅스란?! 가장 대표적..

jhnyang.tistory.com

 

GNU프로젝트를 알고 있으면 이름도 비슷해서 기억하기 쉬워요 ㅎㅎ

무조건 공개 프리! 그러나 소스 비공개 프로그램에서 사용 가능하지는 않다.

 

GPL은 말그래도 프리!! FREE!! 모두 공개!! 이렇게 생각하면 편합니다. 사용해도 공개해야 하고 수정해도 공개해야 해요. 예를 들어 어떤 프로그램을 개발할 때 GPL 코드를 수정하지 않더라도 갖다쓰기만 해도, GPL이 됩니다.

GPL을 가진 프로그램은, GPL임을 명시해줘야하고 프로그램 전체 소스코드를 무료로 공개해야 하는 의무를 가지고 있어요. 내가 일부만 차용했더라도 전체를 공개해야 하는거죠.. (외부로 사용할 때)

내부 또는 개인적 목적으로 사용할 때에는 공개할 필요가 없거나, 외부에 공개하거나 배포하거나 팔 때에는 전체 소스코드를 같이 공개해야 합니다.

 

프로그램을 유료로 고객한테 파는데 전체 프로그램의 소스코드는 무료로 배포해야한다?

이게 뭔 멍멍이 소리지 하면서 이해가 안갈 수 있어요..ㅎㅎ

하지만 소스코드를 본다고 고객이 이를 다 활용하거나 이해할 수 있는 건 아니니까요~ 일반 소비자들은 프로그램 자체의 필요성에 의해서 구입할 수 있겠죠. 또큰 시스템 구축이나 통합 솔루션으로 구매할 수도 있는거니까~~

 

정확히, GPL과 관련되지 않은 부분만 독립적으로 팔거나 배포하는 경우, GPL룰을 지킬 필요는 없다만, 조금이라도 사용한 부분이 들어가거나 전체를 배포할 때에는 GPL을 적용해야 합니다.

그러면 개발자나 다른 회사에서 소스코드를 보고 업그레이드 시켜서 더 좋은 제품으로 팔 수도 있는 거잖아요. Free이긴 프리인데,, 뭔가 좀 제제가 강한 감이 있죠? 이를 덜어 좀 더 널리 사용될 수 있도록 "덜 Less" 하게 만든게 LGPL이라고 생각하면 됩니다 :)

 

GPL 요약

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

 

 

적용사례

모질라 파이어폭스 v2.0, 리눅스 커널 , 마리아DB, 깃(GIT), 워드프레스 등

 

LGPL

초기 LGPL의 의미처럼 (Library General Public License) LGPL은 기본적으로 라이브러리에 적용되는 라이선스입니다. 이게 왜 나왔냐, 내가 아주 조금만 차용했는데 이를 위해서 전체 코드를 다 보여야하는건 좀 너무 심하다!

즉 LGPL은 GPL의 조건이 너무 엄격해서 사람들이 사용하는 것을 꺼려할까봐 이를 감안해서 만든 라이선스입니다.

 

"그래, 너가 수정할 거 아니고 사용만 할거면, 내가 라이브러리 링크를 제공해줄게, 갖다 써ㅎㅎ 사용만 하는데 전체를 공개하라는건 좀 심했던 거같아.. 근데 만약 너가 갖다 쓰기만 하는건 아니고 수정해서 쓸거면, 라이브러리 소스코드를 제공해야 해 "

이거예요 ㅎㅎ

 

즉 자사 제품에 LGPL 라이브러리를 사용하고자 하는 경우에는 라이브러리 그 자체로 사용을 해야 하고,

만약 수정을 할 경우에는 수정된 내용을 포함한 모든 LGPL코드를 수취자에게 제공해야 합니다. 그러나 사용만 할 경우 정적링크이든 동적링크든 자사 제품 코드를 공개할 의무를 갖고 있지 않은거~~ 이게 LGPL입니다.

다만 정적링크시에는 응용 프로그램의 목적코드를 공개해야 합니다.

 

원래는 한정된 라이브러리에만 적용하려는 의도로 ‘Library GPL’이라는 이름을 붙였으나, 모든 라이브러리에 적용된다는 오해를 사 ‘Lesser GPL’로 변경되었습니다.

 

LGPL 요약

1991년 6월 FSF의 리처드 스톨먼은 GPL 라이선스의 강력한 카피레프트 조건과 단순한 사용 허가를 위한 절충안으로 소프트웨어 라이브러리에 관한 라이선스인 LGPL(Library General Public License)를 발표하였다. LGPL은 독립적인 프로그램에서도 사용되나 대부분 소프트웨어 라이브러리에 주로 쓰인다. LGPL이 기존의 GPL과 다른 점은 GPL이 적용된 라이브러리는 자유 소프트웨어를 만들 때에만 사용해야 하나, LGPL이 적용된 라이브러리는 자유 소프트웨어 뿐만 아니라 독점 소프트웨어에서도 사용 가능하다는 점이다. 다만, LGPL 라이브러리의 소스코드를 수정했을 경우에는 2차적 파생물 저작물에 해당하므로 라이브러리의 소스 코드를 반드시 제공해야 한다. LGPL을 사용해서 개발한 뒤에 GPL 라이선스로 변경은 가능하나, GPL을 임의로 LGPL로 변경할 수는 없다. 1999년 리처드 스톨먼은 기존의 LGPL이 보안된 LGPL2.1 버전을 발표하였고 명칭도 LGPL(Lesser General Public License)로 변경하였다.

 

 

적용사례

2017년 기준 오픈소스 프로젝트 개발 포털사이트인 Freshmeat (http://freshmeat.net)에 등록된 프로젝트 약 43,722개 중 약 72%가 GPL과 LGPL 라이선스래요 ㅎㅎ

 

모질라 파이어폭스 v2.1 등

 

BSD

BSD는 사용자 입장에서 가장 사용하기 편한 라이선스 중 하나이기도 해요 ㅎㅎLGPL보다 덜~~~ 제한적이기 때문이죠. 이렇게 제약이 없는 이유는, BSD라이센스로 배포되는 프로젝트가 미국 정부에서 제공한 재원으로 운영되었기 때문이라고 합니다. 공공기관에서 만든 것을 공공에 돌려주자는 취지인거죠

 

BSD는 사용을 하던 수정을 하던 소스코드 공개를 하지 않아도 돼요.. 다만 라이선스와 관련된 정보는 SW에 고지해야 합니다. 어떤 공개SW를 사용했는지, 저작권자 정보와 함께 배포하기만 하면, 코드를 공개할 필요도 없고, 판매할 수도 있는 그런 라이선스인거죠 간단하죠?

 

참고로 BSD는 버클리 캘리포니아 대학에서 배포하는 것으로 BSD 네이밍 또한 Berkeley Softeware Distribution의 약자입니다. 그리고 MIT 라이센스가 이 라이센스를 기반으로 만들었기 때문에 둘이 상당히 유사해요ㅎㅎ

 

FreeBSD의 경우 살펴보면 아래와 같습니다

 

해당 내용은 olis 홈페이지에서 확인할 수 있어요 (밑에 주소 첨부해놈)

 

BSD 요약

버클리의 캘리포니아 대학에서 배포하는 공개소프트웨어 라이선스로 해당 소프트웨어를 누구나 개작할 수 있고, 수정한 것을 제한 없이 배포할 수 있다. 수정본의 재배포는 의무적인 사항이 아니므로 2차적 파생물에 대한 원시 소스코드의 비공개를 허용한다. 즉 BSD 라이선스를 갖는 프로그램은 소스코드를 공개하지 않는 상용 소프트웨어에서도 사용 가능하다. 

 

적용사례

openCV, NGINX 등

 

Apache 아파치

 

아파치!

 

아파치 라이선스는 웹서버로 유명한 아파치 소프트웨어 재단이 자기네 소프트웨어에 적용하기 위해 자체적으로 만든 라이선스예요 ㅎㅎ BSD처럼 자유롭게 갖다 써도 되는데 출처 표기를 명확히 해야합니다.

 

 

아파치 라이선스 요약

아파치 라이선스는 아파치 소프트웨어 재단(ASF)에서 자체적으로 만든 소프트웨어에 대한 라이선스 규정이다. 아파치 라이선스 버전 2.0에 따르면 누구든 자유롭게 아파치 소프트웨어를 다운 받아 부분 혹은 전체를 개인적 또는 상업적 목적으로 이용할 수 있다. 또한 재배포시에도 소스코드 또는 수정한 소스 코드를 반드시 포함하여 공개하는 것을 요구하지 않는다. 다만 재배포할 경우에는 아파치 라이선스 2.0을 포함시키고 아파치 소프트웨어 재단에서 개발된 소프트웨어임을 명확히 밝혀야 한다. 아파치 소프트웨어 재단에서 관리되는 프로그램은 모두 이 라이선스를 적용받는다.

 

적용사례

Apache HTTP Server, 안드로이드, 하둡, 톰캣(Tomcat) 등

 

MPL

BSD나 아파치는 2차적 저작물 소스코드를 공개안해도 되고 GPL은 공개해야 하잖아요

MPL은 BSD와 GPL라이선스의 혼합적인 성격이라고 보면 됩니다. GPL은 내가 갖다가 사용하면 무조건 모든 소스코드를 배포해야했는데, MPL은 비공개로 할 수 있어요. 그리고 그러한 범위가 모호했었는데 이 부분을 MPL은 뚜렷하게 정의하고 있다는 점이 특징입니다.

 

예를 들어 파일 10개가 있는 프로그램에서 내가 직접 개발한 파일이 5개이고 3개 파일은 MPL 원본을 복사했고 2개 파일은 자체 개발 코드에 MPL 코드를 일부 삽입했을 경우,

자체 개발한 5개 파일은 MPL적용을 받지 않습니다.

MPL 원본 파일은 당연히 소스코드를 공개해야 해요.

자체개발 파일 + MPL코드 삽입의 경우, 해당 파일의 코드는 공개해야 합니다

MPL은 MPL소스코드를 공개한다는 조건 하에 바이너리에 대해서는 다른 라이선스를 적용할 수 있습니다.

 

완벽한 예시인 것 같아서 이해를 위해 가져왔어요 :)

MPL 요약

MPL라이선스(Mozilla Public License)는 모질라 재단에서 규정한 라이선스로 BSD와 GPL라이선스의 혼합적인 성격을 보이고 있다. MPL소스코드 수정 시에는 소스 코드 공개는 필수 이지만, MPL 소스 코드와 다른 코드를 결합해서 만든 프로그램의 경우에는 MPL코드를 제외한 다른 소스 코드는 공개하지 않아도 된다. MPL은 모질라 재단에서 만든 Firefox, 모질라 애플리케이션 스위트, 모질라 선더버드(Mozilla Thunderbird)등에 적용되어 있으며, 썬 마이크로시스템즈에서 만드 라이선스인 CDDL 탄생에 영향을 주었다.

 

 

공개 소프트웨어 라이선스 비교

독점 소프트웨어와 결합을 불허한다는게 무슨 말이냐면,,, 우리는 다 소스코드를 공개하는데, 공개하지 않는 소프트웨어에게는 우리꺼 사용을 허락할 수 없다는 거 ~~~ = 소스 비공개 프로그램에서 사용 가능하지는 않다.(같은 뜻)

텍스트 추가

셀 전체 선택

 

라이선스

무료 

이용

배포 

소스코드

취득 및 수정 

2차적 저작물

소스코드 공개 

독점 소프트웨어와

결합

GPL

무료

허용

가능

공개

불가능

LGPL

무료

허용

가능

공개

가능

BSD

무료

허용

가능

비공개가능

가능

Apache

무료

허용

가능

비공개가능

가능

MPL

무료

허용

가능

공개

가능

MIT

무료

허용

가능

비공개가능

가능


해당 표는 리눅스마스터 1급 책에서 따온거 

oss 홈페이지에서 따온 표입니다.  

라이센스도 버전이 있기 때문에 전체적인 개요가 아닌 실 활용을 위해서는 사이트를 참고, 질의게시판을 활용해보실 것을 권장드립니다 :)

 

기출문제

[리눅스 마스터 1급 1802회]

▶다음 중 관련 라이선스가 적용된 소스코드를 수정하여 만든 2차적 저작물에 대해 소스코드의 비공개가 가능한 라이선스로 틀린 것은?

1. BSD

2. Apache License

3. MPL

4. MIT

답: 3번

 

[리눅스 마스터 1급 1901회]

▶다음 설명에 해당하는 라이선스로 알맞은 것은?

-------------------------------------------------------------------------------

해당 라이선스가 적용된 소프트웨어를 다운로드하여 부분 혹은 전체를 개인적 또는 상업적 목적으로 이용할 수 있다. 재배포 시에도 소스코드 또는 수정한 소스코드를 포함하여 반드시 공개하도록 요구하지 않는다. 다만 재배포할 경우에 해당 라이선스를 포함시키고 관련 소프트웨어임을 명확히 밝혀야 한다. 

-------------------------------------------------------------------------------

1. GPL

2. MPL

3. BSD

4. Apache

답: 4

 

참고

OLIS: 오픈소스 라이선스 종합정보 시스템

OSS: 오픈소스 소프트웨어

좀 더 자세한 내용이 궁금하신 분을 위해, OSS에 게시되어 있는 라이센스 가이드 파일을 첨부해드려요. 이해하기 쉽고 깔끔하게 잘 나와있으니 한 번 읽어보는 것을 추천합니다. 파일은 일부일 뿐이예요. 완전 파일을 참고하고 싶으신 분은 OSS 사이트를 참고해주세요 

 

 

오늘은 여기까지! 공감 or 댓글 or 광고보답은 지식 나눔에 큰 힘이 됩니다 :)

다음 포스팅에서 봐요