본문 바로가기

CS

오픈소스 라이선스

반응형

오랜만에 포스팅입니다..ㅎㅎ  이번 글은 오픈소스 라이선스라는 주제에 대해 제가 공부한 내용을 정리해보려고 합니다. 

 

그동안 개발을 공부하면서 상업적인 목적으로 소프트웨어를 개발해 배포하는 일이 없었기 때문에 오픈소스 라이선스에 대한 개념을 알지 못했지만 웹 개발자로서 일을 시작하면서 회사의 이사님께서 "개발을 하면서 오픈소스 라이선스의 개념은 매우 중요하니 공부해봐"라고 말씀해 주셔서 이번 기회에 오픈소스 라이선스는 무엇이고  왜 중요한지에 대해 정리해 보겠습니다.

 

오픈소스 란?

 

오픈소스는  소프트웨어 소스 코드가 공개되어 누구나 사용가능한 것을 의미합니다. 일반적으로 오픈소스는 자유롭게 복제, 배포 수정할 수 있지만 "지식 재산 저작권, 산업재산권의 보호" 가 배제된다는 것은 아닙니다.

 

 

라이선스란?

 

라이선스의 근본적인 목적은 "관리자(Licenser)는 소스코드를 공개하는 대신 조건(라이선스)을 설정하고, 이용자(Licensee)가 오픈소스를 이용하기 위해서는 조건을 준수할 의무를 부과한다"입니다.

즉, 오픈소스는 대개 사용과 공유, 소스 공개에 따른 공적인 규칙이 정해져 있으며, 이는 해당 오픈소스 소프트웨어가 채택한 라이선스에 따라 달라질 수 있습니다.

 

 

오픈소스 + 라이선스를 정리하자면, 

 

저작권의 보호 아래 모든 사용자에게 공개되는 소프트웨어 소스코드

이렇게 제 나름대로 정리해 보겠습니다. 

 

 

오픈소스 프로젝트를 하는 이유?

 

오픈소스의 모태는 자유 소프트웨어(Free Sofrware)인데 리처드 스톨만이라는 사람이 처음 주장했습니다. 요점은 "기업이 소프트웨어를 독점하는 것을 반대하고 소프트웨어는 누구나 자유롭게 사용할 수 있어야 한다"는 주장이었습니다.  

 

시간이 지나 Free라는 단어가 "자유"가 아니라 "무료" 소프트웨어 등으로 인식될 수 있는 부작용을 우려해 오픈 소스라는 말을 제안했는데 이때 리눅스의 참여로 그 의미가 점차 널리 확산되기 시작했습니다. 

 

오픈소스의 대표적인 사례로 항상 거론되는 예시는 "리눅스"입니다. 리눅스를 기반으로 Ubuntu, CentOS 등 다양한 리눅스 베포 판이 파생되었고 Android 역시 리눅스 커널을 기반으로 만들어졌습니다. 오픈소스로 프로젝트는  소프트웨어 기술이 크게 성장할 수 있고 초기 개발 비용을 줄일 수 있다는 점에서 큰 장점을 가지고 있다고 생각합니다.

 

 

오픈 소스 라이선스의 종류

 

오픈 소스의 라이선스 종류는 다양하며 위에서도 "오픈 소스 소프트웨어가 채택한 라이선스에 따라 달라질 수 있다."라는 말에서 라이선스마다 명시한 규칙이 다를 수 있습니다. 

 

 

1. GPL

 

자유 소프트웨어 재단(FSF)이 만든 라이선스로 가장 까다롭고 소스에 대한 구속력이 높은 라이선스입니다. 특징은 바로 '전염성'인데, GPL 라이선스 기반의 소스코드가 한 줄이라도 사용된 프로그램은 자동적으로 GPL 라이선스를 따라야 하는 법적 의무가 주어집니다. 

 

만약 소스코드를 공개할 목적은 없었지만 실수로 상용 프로그램에 GPL 코드를 삽입했다면 해당 제품은 원본의 소스코드를 반드시 공개 배포해야 하는 상황에 놓이므로 주의가 필요할 것 같습니다.(무섭네요..)

 

또 GPL 파생 라이선스로 주로 API나 라이브러리 같은 단순한 코드 링크 선에서 활용할 수 경우 전염성 특성이 적용되지 않는 LGPL이란 라이선스도 있습니다.

 

오픈 소스 프로젝트 개발 포털 사이트인 "Freshmeat"은 오픈소스 라이선스 중 72%가 GPL, LGPL이라고 합니다(굉장히 많은 수치 내요)

 

Welcome to Freecode – Freecode

18 Jun 12:35 lftp 4.5.2 lftp is a sophisticated command line based file transfer program. Supported protocols include FTP, HTTP, SFTP, and FISH. It has a multithreaded design allowing you to issue and execute multiple commands simultaneously or in the back

www.freshmeat.net

 

제가 자주 사용하는 DBeaver라는 데이터베이스 메니저 소프트웨어 프로그램도 GPL 라이선스를 사용하고 있었네요(개인적으로 신기해요..)

 

이번에는 GPL의 주요 조항에 대해 알아보겠습니다. 

 

  • GPL 라이선스 프로그램을 어떠한 목적으로든지 사용할 수 있다. (오픈소스의 특징이겠죠?)
  • GPL 라이선스 프로그램의 소스 코드를 용도에 따라 변경할 수 있다. (오픈 소스 프로젝트의 장점!)
  • GPL 라이선스 프로그램을 판매/배포 시 소스 코드도 요청하면 제공해한다. (원본 배포 의무)
  • 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 요청 시 제공해야 한다. (파생물 배포 의무)
  • 변경된 컴퓨터 프로그램 역시 반드시 똑같은 GPL 라이선스를 취해야 한다. (파생물 라이선스 의무 - 전염성)
  • GPL은 배포/유통된 소프트웨어에만 적용된다. 즉, 소프트웨어를 배포하지 않는 경우 GPL 라이선스를 채택하지 않아도 됩니다. 

 

2. MIT/아파치 라이선스

 

GPL의 강력한 '전염성'의 특성 때문에 이를 조금 완화한 오픈소스 라이선스들이 있습니다. 대표적인 것이 "MIT 허가서"와, "아파리 라이선스"입니다.

 

두 라이선스 모두 소스 코드 공개 의무를 갖지 않고 2차 저작물 개발을 허용합니다. 다만 MIT 허가서의 경우 저작권자를 광고 등의 목적으로 쓰는 것을 금지하고 있으며, 특허 범위에 대한 상세한 서술이 없는 만큼 역시 사용에 주의할 부분들이 있습니다. 

 

MIT 허가서 라이선스의 형식

MIT 라이선스 허가서는 크게 두 가지 특징을 갖습니다. 

 

  • 이 소프트웨어를 누구라도 무상으로 제한 없이 취급해도 좋다. 단, 저작권 표시 및 이 허가 표시를 소프트웨어의 모든 복제물 또는 중요한 부분에 기재해야 한다. 
  • 저자 또는 저작권자는 소프트웨어에 관해서 아무런 책임을 지지 않는다.

MIT 라이선스 허가서를 따르는 대표적인 소프트웨어는 Nodejs, JQuery, VSCode 등이 있습니다. (모두 친숙하네요!)

 

아파치 라이선스는 아파치 웹서버의 베포를 위해 만들어진 라이선스입니다. 

아파리 라이선스 2.0 버전은 사용 시 프로그램 배포에 아파치 라이선스 2.0을 반드시 포함하고 아파치 재단에서 만든 소프트웨어임을 명시하도록 합니다.

아파치 라이선스의 주요 내용입니다.

 

3. CCL(Creative Commons License)

 

CCL은 자신의 창작물에 대해 일정한 조건을 충족할 경우 다른 사람의 자유로운 이용을 허락하는 내용의 라이선스입니다. 허락 조건은 1. 저작권 표시, 2. 비영리, 3. 변경 금지, 4. 동일 조건변경 허락으로 구분됩니다. 

 

의미가 명확한 저작자 표시, 비영리 표시를 제외하고 변경 금지의 경우 원작을 변경하거나 그를 활용한 2차 저작물 제작을 금지한다는 의미입니다. 즉, 원본만 활용하라는 거네요! 

 

동일 조건 변경 허락의 경우 2차 저작물 제작을 허용하되, 해당 저작물에는 원 저작물과 동일한 라이선스를 사용해야 한다고 이해하면 될 것 같습니다. (GPL과 MIT의 중간 정도 느낌인 것 같습니다.)

 

만약 원 저작물이 비영리 + 동일 조건변경 허락이라면 2차 저작물 역시 형태와 관련 없이 무료로 배포해야 한다는 의미가 됩니다. CCL은 알아보기 쉽도록 저작물 하단에 라이선스 이미지를 함께 표시하는 경우가 많아 다른 라이선스에 비해 직관적인 것 같습니다.

 

ccl의 아이콘의 의미만 안다면 다른 라이선스보다 그 조항을 쉽게 기억할 수 있을것 같아요!

CCL에 대해 알아보면서 흥미로웠던 점은 자주 방문한 사이트인 "생활코딩"이 CCL을 사용한 대표적인 예시였습니다!  

CCL 라이선스 적용에 대한 방법은 아래의 링크를 참고해주세요!

 

01. 라이선스 적용 가이드

본인의 저작물에 CC 라이선스를 적용하기 위해서는, 우선 6 종류의 CC 라이선스들 중 원하는 이용허락조건들로 구성된 CC 라이선스를 선택합니다. 그 다음 아래 ‘라이선스 기본 표기 가이드’를

ccl.cckorea.org

 

 

오픈소스 프로젝트에 대한 제 생각

 

개발자 관련 유튜브 영상을 보다가 GDE라는 것에 대해 알게 되었습니다. 

영상 URL 주소 : https://www.youtube.com/watch?v=cryp8dAbsOQ

간단히 설명하자면 Google Developer Expert의 약어로 "구글 기술에 관심이 많은 개발자"로 개발자 커뮤니티 구성원들이 구글 엔지니어들과 소통하여 새로운 기술을 익히고 다양한 개발 경험을 공유하는 장을 마련해주고 있습니다. 

 

해당 영상의 프런트엔드 개발자로 나오신 "조은"님은 오픈소스 커뮤니티 커뮤니티 활동을 하면서 구글러가 보기에 개발의 깊이가 있으면서 동시에 개발자 생태계에 기여하는 사람으로 인식되어 구글러의 추천을 통해 GDE로 선정될 수 있다고 말씀하셨다. 

 

오픈소스에 대해 알기 전 오픈소스 커뮤니티, 라이선스 등과 같은 개념에 대해 무지했고 오픈소스 프로젝트 생태계의 매력에 대해 알지 못했다. 제가 생각하는 오픈소스 생태계는 나라는 사람도 오픈소스에 기여할 수 있는 개발자용 사다리가 아닐까 하는 생각 이든다. 하지만 현실적으로 현재 개발을 하면서 느끼는 지만 이런 나뿐만 아니라 대부분의 개발자가 오픈소스 커뮤니티의 경험이 부족하고 잘 알려져 있지 않으며 "내가 뭘 할 수 있겠어?"라는 생각이 만연한 것 같다. 

 

기회가 된다면 오픈소스 프로젝트에 참여해 오픈소스 커뮤니티 활동을 열심히 해서 개발자 생태계에 기여할 수 있는 사람으로 성장해 보고 싶습니다. 또한 많은 개발을 꿈꾸는 사람들이 오픈소스에 대해 공부해보는 것도 좋은 경험이 될 수 있다고 생각합니다!

 

 

더 많은 라이선스

 

이번 포스팅에 다루지 않았던 더 많은 오픈소스 라이선스의 내용을 참고하기 위한 사이트를 하나 소개해 드리면서 마무리하겠습니다. 본 글은 제 개인적인 공부의 내용이니 틀린 내용이 있다면 댓글 달아주세요!

 

라이선스 비교표

Python Software Foundation License 2.0.1, 2.1.1 and newer Yes Yes

www.olis.or.kr

 

출처 : http://www.freshmeat.net/,

https://www.comworld.co.kr/news/articleView.html?idxno=50170, 

http://www.epnc.co.kr/news/articleView.html?idxno=98334 

https://naver.github.io/OpenSourceGuide/book/UsingOss/the-legal-side-of-opensource.html#copyright

반응형

'CS' 카테고리의 다른 글

REST API 란?  (0) 2022.08.29
쿠키와 세션  (0) 2022.01.14
유니코드의 개념과 사용 목적  (0) 2022.01.12
MIME 의 개념과 사용 목적  (1) 2022.01.12
WEB 서버와 WAS의 차이  (0) 2022.01.12