오픈소스 개발과 라이선스

taypark·2020년 8월 31일
0
post-thumbnail

오픈소스는 개발자에게 있어서 없어선 안 될 존재가 되어버렸다. 개발에서 필요한 툴과 프레임워크들이 오픈소스로 관리되고 배포되기 때문에 우리는 쉽게 사용할 수 있다.

단, 우리는 오픈소스무료 소프트웨어를 구분할 필요가 있다. 여기서는 다루지 않는다.

오픈소스소스코드가 공개된 소프트웨어를 말한다. VSCode나 MySQL같은 완전한 소프트웨어나 Firefox같은 웹 브랑저, Java같은 언어도 오픈소스로 존재한다. 이를 공개나 수정가능 여부에 따라 몇 가지로 분류한다.


오픈소스 라이선스의 분류

오픈소스 라이선스의 수는 진짜엄청나게 많아서 다 외우기 힘들다. 오픈소스 소프트웨어 라이선스 정보 시스템에 따르면, 몇십가지가 있어서 모두 소개하기는 힘들지만, 기본적으로 가장 많이 쓰이는 라이선스는 소개할 수 있다.

그 전에 SW 지식 재산권의 의미를 먼저 살펴보도록 한다.

SW와 지식재산권

SW의 비용이 증가하고 규모가 방대해지는 만큼 SW도 지식재산권에 의해 보호받고있다. 이를 4가지로 분류한다.

  • 저작권: 창작물에 대해 창작자(저작자)가 취득하는 권리로서 창작의 결과물을 보호한다. 이는 창작과 동시에 권리가 발생하며, 저작권자는 프로그래머 혹은 소속 회사이다.

  • 특허권: 특허권은 발명에 관하여 발생하는 독점적/배타적 지배권으로 법에 정해진 절차에 의해 출원을 하여야 하며, 심사를 통해 부여되는 권리이다. 특허 기술을 이용하기 위해서는 반드시 특허권자의 허락을 얻어야한다.

  • 상표권: 상표권은 상표권자가 지정상품에 관하여 그 등록상표를 사용할 독점적 권리이다. 특허권과 마찬가지로 일정한 절차에 따라 등록하여야 효력이 발생한다. 상표 사용을 위해 반드시 상표권자의 허락을 얻어야한다.

  • 영업비밀: 공개되지 않은 SW의 경우 영업비밀로서 보호를 받을 수 있으며, 공개된 SW라 하더라도 아이디어에 대한 부분은 영업비밀로 보호 받을 수 있다. 단, 영업비밀로서 SW보호는 널리 공개되어 배포되는 경우에는 보호받기 어렵다.

오픈소스 라이선스

라이선스는 앞서 언급한 지식재산권을 사용하기 위한 권한을 부여하는 것을 말한다. 우리가 말하는 오픈소스 라이선스는 원작자의 소스코드를 타인이 사용하거나 수정하여 재배포, 혹은 이를 상업적으로 이용할 경우 어느정도까지 허용할 수 있는지에 따라 분류를 한다.

여기서 라이선시(Licensee)는 라이선스 이용자를 말한다.

  • 라이선시는 해당 오픈소스SW를 자유롭게 이용할 수 있다.
  • 라이선시는 해당 오픈소스SW를 자유롭게 복제할 수 있으며, 일정 조건하에 재배포할 수 있다.
  • 라이선시는 해당 오픈소스SW를 자유롭게 수정하여 이용할 수 있으며, 일정 조건하에 재배포할 수 있다.
  • 라이선시는 해당 오픈소스SW를 소스코드를 자유롭게 획득하고 접근할 수 있다.

일정 조건 하라는 것은 각 라이선스마다 모두 다르다. 하지만 라이선스들은 몇몇의 큰 뿌리에서 브랜칭한 개념이라고 생각하면 쉽다.

그렇다면 주요 라이선스를 알아보자.

주요 라이선스

BSD

BSD는 다음을 준수하는 경우 개작/배포에 제한을 받지 않는다.

  • 소프트웨어를 재배포할 때 저작권 표시를 할 것: BSD 라이선스가 걸린 소프트웨어를 이용하는 경우, 해당 저작권자의 이름과 BSD 라이선스의 내용을 같이 배포해야한다.

  • 보증부인: BSD 라이선스가 걸린 소프트웨어로 인하여 법률상/도의상 피해가 발생하더라도, 그 책임을 저작권자에게 물을 수 없다.

3조항(3-Clause) 이상 라이선스를 사용하는 경우 다음 항목이 추가된다.

  • 저작권자의 이름을 광고에 사용을 금지한다.

4조항(3-Clause) 이상 라이선스를 사용하는 경우 다음 항목이 추가된다.

  • 광고에서의 저작권자 표기: BSD 소프트웨어를 사용 또는 포함한 것을 광고할 때에는 광고에 저작권자를 명시해야한다.

GPL에서 요구하는 전염성이 없다. BSD는 소스코드 공개의 의무가 없으며 상업적 이용에도 제한을 받지 않는다.

대표적으로 BSD, MIT, Apache 라이선스 등이 포함된다.

GPL

GPL형 라이선스는 GPL 2.0, 3.0, LGPL 2.1, 3.0 등이 포함되며 대부분 Free Software Foundation의 주도하에 만들어졌다.

GPL 2.0은 다음을 준수해야 한다.

  • 각 복제본에 적절한 저작권 표시와 보증책임이 없음을 명시
  • GPL 라이선스를 언급한느 고지사항과 보증책임 관련 고지사항을 원본 그대로 유지
  • 소프트웨어를 양도받는 모든 이들에게 소프트웨어와 함께 GPL 라이선스 사본을 제공(전염성)
  • 파일을 수정한 경우 수정했다는 사실과 날짜를 파일에 명기
  • 원본 저작물과 파생저작물을 GPL 2.0에 의해 배포
  • 원본 저작물 및 파생저작물에 대한 소스코드를 제공하거나 요청 시 제공하겠다는 약정서 제공

여기서 마지막 2개는 BSD와 차이점을 볼 수 있다.

대표적으로 리눅스 커널이 있다.

GPL 3.0은 다음을 준수해야한다.

  • 각 복제본에 저작권 고지와 보증책임이 없음을 명시
  • GPL 3.0의 조건 및 제 7조의 조건에 관한 내용을 있는 그대로 유지
  • 소프트웨어를 양도받는 모든 이들에게 소프트웨어와 함께 GPL 라이선스 사본을 제공
  • 소프트웨어를 수정했을 경우 수정사실 및 일시를 명시
  • 원본저작물 및 파생저작물을 GPL 3.0에 의해 배포
  • 원본저작물 및 파생저작물에 대한 소스코드를 제공하거나 요청 시 제공하겠다는 약정서 제공
  • 사용자 제품에 대한 인증키 등 설치정보를 제공
  • 차별적인 특허라이선스 계약을 체결하지 말 것

2.0과 다른점은 마지막 2개라고 할 수 있다.

LGPL

LGPL은 주로 라이브러리에 사용하기 위해 FSF가 GPL과는 별도로 만든 라이선스이다. 라이브러리에 GPL을 적용하면 응용프로그램까지 GPL로 배포해야 하므로 사용자는 해당 라이브러리 사용을 꺼리게된다. 해당 라이브러리를 이용한 응용프로그램은 소스코드 제공 의무가 없는 형태로 제공된다.

  • 각 복제본에 적절한 저작권 표시와 보증책임이 없을을 명시
  • LGPL 라이선스를 언급하는 안내 사항과 보증책임 관련 고지사항을 원본 그대로 유지
  • 소프트웨어를 양도받는 모든 이들에게 소프트웨어와 함께 LGPL 라이선스 사본을 제공
  • 라이브러리 형태의 수정을 허용하며 만약 수정한 경우, 수정사실과 날짜를 파일에 명기
  • 원본저작물과 파생저작물을 LGPL또는 GPL에 의해 배포
  • 원본저작물 및 파생저작물에 대한 소스코드를 제공하거나 요청 시 제공하겠다는 약정서를 제공
  • 응용프로그램을 배포할 경우 LGPL 라이브러리를 사용하고 있다는 사실을 명시
  • 사용자가 라이브러리를 수정해도 응용프로그램을 사용할 수 있도록 허용할 것

GPL 2.0와 유사하나 마지막 2개가 다르다.

MPL

MPL형 라이선스는 주로 기업들이 주도하는 오픈소스 프로젝트에서 사용한다. MPL, CDDL, EPL등이 포함된다. 처음부터 법률가들이 참여하여 만들었기 때문에 소프트웨어 라이선스의 관점에서 더 정교하다고 볼 수 있지만 프로그래머들에게는 그만큼 복잡하고 어려울 수 없다.

폰트 라이선스

폰트에 대한 라이선스도 존재한다. GPL Font Execption, SIL? Open Font License(OFL), Ubuntu Font License 등이 있다.


결론

여러가지 오픈소스 라이선스에 대해 알아봤다. 대표적으로 BSD, GPL, LGPL, MPL이 있었다. 비슷하지만 조금씩 다른 점이 있었고 이는 각 라이선스들이 지향하는 바에 따라 달랐다.

우리가 자주 볼 수 있는 npm의 모듈들에게서 라이선스를 보면 아는척 해주자. 그리고 잘 구분해서 사용하도록 하자.

참고자료

https://dzone.com/articles/free-software-vs-open-source-vs-freeware-whats-the

https://www.olis.or.kr/license/licenseGuide.do

https://www.olis.or.kr/license/compareGuide.do

https://www.oss.kr/oss_license

profile
인생은 하드코어하게

0개의 댓글