오픈소스
는 개발자에게 있어서 없어선 안 될 존재가 되어버렸다. 개발에서 필요한 툴과 프레임워크들이 오픈소스로 관리되고 배포되기 때문에 우리는 쉽게 사용할 수 있다.
단, 우리는 오픈소스
와 무료 소프트웨어
를 구분할 필요가 있다. 여기서는 다루지 않는다.
오픈소스
는 소스코드가 공개된 소프트웨어를 말한다. VSCode나 MySQL같은 완전한 소프트웨어나 Firefox같은 웹 브랑저, Java같은 언어도 오픈소스로 존재한다. 이를 공개나 수정가능 여부에 따라 몇 가지로 분류한다.
오픈소스 라이선스의 수는 진짜엄청나게 많아서 다 외우기 힘들다. 오픈소스 소프트웨어 라이선스 정보 시스템에 따르면, 몇십가지가 있어서 모두 소개하기는 힘들지만, 기본적으로 가장 많이 쓰이는 라이선스는 소개할 수 있다.
그 전에 SW 지식 재산권의 의미를 먼저 살펴보도록 한다.
SW의 비용이 증가하고 규모가 방대해지는 만큼 SW도 지식재산권에 의해 보호받고있다. 이를 4가지로 분류한다.
저작권: 창작물에 대해 창작자(저작자)가 취득하는 권리로서 창작의 결과물을 보호한다. 이는 창작과 동시에 권리가 발생하며, 저작권자는 프로그래머 혹은 소속 회사이다.
특허권: 특허권은 발명에 관하여 발생하는 독점적/배타적 지배권으로 법에 정해진 절차에 의해 출원을 하여야 하며, 심사를 통해 부여되는 권리이다. 특허 기술을 이용하기 위해서는 반드시 특허권자의 허락을 얻어야한다.
상표권: 상표권은 상표권자가 지정상품에 관하여 그 등록상표를 사용할 독점적 권리이다. 특허권과 마찬가지로 일정한 절차에 따라 등록하여야 효력이 발생한다. 상표 사용을 위해 반드시 상표권자의 허락을 얻어야한다.
영업비밀: 공개되지 않은 SW의 경우 영업비밀로서 보호를 받을 수 있으며, 공개된 SW라 하더라도 아이디어에 대한 부분은 영업비밀로 보호 받을 수 있다. 단, 영업비밀로서 SW보호는 널리 공개되어 배포되는 경우에는 보호받기 어렵다.
라이선스
는 앞서 언급한 지식재산권을 사용하기 위한 권한을 부여하는 것을 말한다. 우리가 말하는 오픈소스 라이선스는 원작자의 소스코드를 타인이 사용하거나 수정하여 재배포, 혹은 이를 상업적으로 이용할 경우 어느정도까지 허용할 수 있는지에 따라 분류를 한다.
여기서 라이선시(Licensee)
는 라이선스 이용자를 말한다.
일정 조건 하라는 것은 각 라이선스마다 모두 다르다. 하지만 라이선스들은 몇몇의 큰 뿌리에서 브랜칭한 개념이라고 생각하면 쉽다.
그렇다면 주요 라이선스를 알아보자.
BSD
BSD
는 다음을 준수하는 경우 개작/배포에 제한을 받지 않는다.
소프트웨어를 재배포할 때 저작권 표시를 할 것: BSD 라이선스가 걸린 소프트웨어를 이용하는 경우, 해당 저작권자의 이름과 BSD 라이선스의 내용을 같이 배포해야한다.
보증부인: BSD 라이선스가 걸린 소프트웨어로 인하여 법률상/도의상 피해가 발생하더라도, 그 책임을 저작권자에게 물을 수 없다.
3조항(3-Clause) 이상 라이선스를 사용하는 경우 다음 항목이 추가된다.
4조항(3-Clause) 이상 라이선스를 사용하는 경우 다음 항목이 추가된다.
GPL에서 요구하는 전염성이 없다. BSD는 소스코드 공개의 의무가 없으며 상업적 이용에도 제한을 받지 않는다.
대표적으로 BSD
, MIT
, Apache
라이선스 등이 포함된다.
GPL
GPL
형 라이선스는 GPL 2.0, 3.0, LGPL 2.1, 3.0 등이 포함되며 대부분 Free Software Foundation
의 주도하에 만들어졌다.
GPL 2.0은 다음을 준수해야 한다.
여기서 마지막 2개는 BSD와 차이점을 볼 수 있다.
대표적으로 리눅스 커널
이 있다.
GPL 3.0은 다음을 준수해야한다.
2.0과 다른점은 마지막 2개라고 할 수 있다.
LGPL
LGPL은 주로 라이브러리에 사용하기 위해 FSF가 GPL과는 별도로 만든 라이선스이다. 라이브러리에 GPL을 적용하면 응용프로그램까지 GPL로 배포해야 하므로 사용자는 해당 라이브러리 사용을 꺼리게된다. 해당 라이브러리를 이용한 응용프로그램은 소스코드 제공 의무가 없는 형태로 제공된다.
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