게시: 2021년 1월 22일
현재를 살아가는 개발자들에게 없어서는 안 될 것이 바로 오픈소스 SW이다. 많은 개발자들이 오픈소스 SW의 개발자이면서 동시에 사용자이다. 글쓴이도 최근 애플리케이션 개발을 거의 마치고 배포를 앞두고 있는 시점인 데 처음으로 애플리케이션을 직접 배포하다 보니 오픈소스 라이선스를 등록하는 방법이나, 라이선스마다의 특징 및 의무 사항이 제각각이어서 많은 어려움을 느껴 이 포스팅을 쓴다. 아래의 정보들은 모두 OLIS(오픈소스 SW 라이선스 종합정보시스템)에서 수정을 거치지 않고 그대로 가져온 내용이므로 출처를 남긴다.
오픈소스 라이선스를 알기 전 먼저 오픈소스 SW란 무엇인지 알아야 한다. 일반적으로 오픈소스 SW란 소스코드가 공개되어 있는 SW를 말하며, 일반적으로 자유롭게 복제/배포/수정할 수 있다. 대표적인 예로는 Linux 커널 및 Apache 웹서버, FireFox 웹브라우저, MySQL 등이 있다.
전 세계적으로 오픈소스 SW는 FSF(Free Software Foundation)의 자유 SW(Free Software)를 포함한 넓은 의미로 사용되고 있다. 하지만 자유 SW와 오픈소스 SW는 역사 및 추구하는 이념 등에서 미묘한 차이가 있다. 1980년대부터 소프트웨어가 거대 부가가치 산업으로 발전하자, 지식재산권 및 라이선스 계약을 통하여 소프트웨어의 복제, 배포, 수정에 제한을 가하려는 움직임이 나타났다. 이런 움직임에 반대하여 리처드 스톨만은 FSF를 설립하고 자유 SW(Free Software) 운동을 전개하였다.
그러나 자유SW의 ‘자유(Free)’라는 단어가 일반인들에게 ‘무료’로 인식되고, 엄격한 GPL조항 때문에 상용 SW 개발에 이용할 수 없어 대다수 기업들이 자유SW운동에 참여하기를 꺼려하자 소스코드 공개에 보다 많은 참여를 이끌어내기 위하여 에릭 레이먼드, 브루스 페런스 등은 '오픈소스 (Open Source)' 라는 새로운 용어를 제안했다.
그리고 이러한 ‘오픈소스’는 1998년 오픈소스SW오픈소스 SW 활성화 및 오픈소스 SW에 대한 인증을 담당하는 OSI (Open Source Initiative)가 결성되면서 널리 사용되기 시작했다. OSI는 오픈소스에 해당하는 라이선스의 최소한의 기준을 정의 (Open Source Definition, OSD) 해놓고 이 정의에 따라 인증, 관리 및 촉진시키는 일을 한다.
현재 SW는 다음과 같이 저작권, 특허권, 상표권, 영업비밀 등의 지식재산권에 의해 보호받고 있다.
저작권(copyright)은 창작물에 대하여 창작자(저작자)가 취득하는 권리로서 창작의 결과물을 보호 하며, 창작과 동시에 권리가 발생한다. 따라서 어떤 프로그래머가 특정 SW를 개발하면 컴퓨터 프로그램 저작권이 자동 발생하며, 그 권리는 프로그래머 또는 그가 속한 회사에 부여된다. 저작권이 있는 저작물의 경우 누구도 저작권자의 허락 없이는 해당 저작물을 쓸 수 없다.
특허권(patent)은 발명에 관하여 발생하는 독점적/배타적 지배권으로 법에 정해진 절차에 의해 출원을 하여야 하며, 심사를 통해 부여되는 권리이다. 특허기술을 사용하기 위해서는 반드시 특허권자의 허락을 얻어야만 한다. 특허 받은 방식을 구현하는 SW라면 프로그래밍 언어나 소스 코드와 상관없이 특허권자의 명시적인 허락을 받아야 한다.
상표권(trademark right)이란 상표권자가 지정상품에 관하여 그 등록상표를 사용할 독점적인 권리로서 일정한 절차에 따라 등록하여야 효력이 발생한다. 이러한 상표를 사용하기 위해서는 반드시 상표권자의 허락을 얻어야 하며 허락받지 않고 상표를 사용할 경우 처벌을 받게 된다 상표권을 취득한 SW의 경우 상표를 사용하려면 상표권자의 명시적인 허락을 받아야 한다.
공개되지 않은 SW의 경우 영업비밀로서 보호를 받을 수 있으며, 공개된 SW라 하더라도 아이디어에 대한 부분은 영업비밀로 보호를 받을 수 있는 가능성이 있다. 단, 영업비밀로서의 SW 보호는 널리 공개되어 유통되는 경우에는 보호받기 어렵고, 이를 알지 못하고 사용한 제3자에게 법적으로 문제를 삼을 수 없다.
앞서 언급한 3가지에 의해 보호받으며 저작권자만이 쓸 수 있지만, 권리자가 다른 사람에게 일정한 조건으로 특정 행위를 할 수 있는 권한을 부여할 수 있다. 이와 같은 권한을 보통 '라이선스(license, 이용허락)' 라고 한다. 예를 들면 우리가 윈도즈를 구입하면, SW권리자인 마이크로소프트로부터 윈도즈 XP를 한 대의 컴퓨터에 설치하여 이용할 수 있는 라이선스 (권리)를 받은 것에 불과하다. 그러므로 윈도즈 정품을 구입했다고 해서 다른 사람에게 빌려주거나 복제하여 팔 수 없다.
오픈소스 SW 라이선스란 오픈소스 SW 개발자와 이용자 간에 이용 방법 및 조건의 범위를 명시한 계약이다. 따라서 오픈소스 SW를 이용하기 위해서는 개발자가 규정한 라이선스를 지켜야 하며, 이를 위반할 경우에는 라이선스 위반 및 저작권 침해가 발생하고, 이에 대한 책임을 지게 된다.
이런 오픈소스SW오픈소스 SW 라이선스는 기본적으로 이용자의 자유로운 사용을 보장하고 있다. 오픈소스 SW가 이와 같은 라이선스를 만들어서 운영하는 이유는 오픈소스 SW를 이용하여 개발한 SW에 대해서도 법의 테두리 안에서 소스코드를 공개하도록 하기 위한 것이다.
2017년 05월 현재 오픈소스SW 라이선스의 인증을 관장하고 있는 OSI에 따르면 78개가 있다. 하지만 실제로 많이 사용되는 라이선스의 개수는 한정되어 있다. 오픈소스 프로젝트 개발 포털사이트인 Freshmeat에 등록된 프로젝트 약 43,722개 중 약 72%가 GPL과 LGPL 라이선스이다.
License | Branches | Percentage |
---|---|---|
GNU GENERAL PUBLIC LICENSE (GPL) | 30,299 | 64.70% |
GNU LESSER GENERAL PUBLIC LICENSE(LGPL) | 3,067 | 6.55% |
BSD LICENSE (ORIGINAL) | 1,366 | 2.92% |
BSD LICENSE (REVISED) | 1,354 | 2.89% |
FREEWARE | 1,079 | 2.30% |
FREELY DISTRIBUTABLE | 980 | 2.09% |
오픈소스 SW는 독점 SW(proprietary software)와 동일하게 저작권 등에 의한 법적 보호를 받고 있으며, 이와 같은 권리에 기반하여 오픈소스 SW 저작권자는 오픈소스 SW 이용자에게 라이선스를 부여한다. 그러나 오픈소스 SW 라이선스는 일반적인 독점 SW 라이선스와는 많은 점에서 차이가 있다. 이를 살펴보면 아래와 같다. 여기서 라이선시(Licensee)는 라이선스를 받는 자이고, 라이선서 (Licenser)는 라이선스를 부여하는 자이다.
라이선시는 해당 오픈소스SW를 자유롭게 이용할 수 있다.
라이선시는 해당 오픈소스SW를 자유롭게 복제할 수 있으며, 일정한 조건하에 재배포할 수 있다.
라이선시는 해당 오픈소스SW를 자유롭게 수정하여 이용할 수 있으며, 일정한 조건하에 수정된 내용을 재배포할 수 있다.
라이선시는 해당 오픈소스SW의 소스코드를 자유롭게 획득하고 접근할 수 있다.
오픈소스SW오픈소스 SW 라이선스는 또한 SW 이용자에게 일정한 의무를 부과한다. 자세한 내용은 오픈소스 SW와 함께 배포되는 라이선스를 통해 알 수 있다. 해당 오픈소스 SW에 대한 라이선스는 주로 소스코드 내부나 홈페이지 등에 명시되어 있다.
이용자가 오픈소스SW 라이선스에서 요구하는 준수사항을 이행하지 않으면 권리자로부터 저작권법 위반(또는 계약 위반)으로 소송을 제기당할 수 있다. 패소할 경우, SW 배포는 불가능하며 손해 배상을 포함한 책임을 부담할 수 있다. 따라서 라이선스의 의무사항을 명확히 이해하여 이런 상황을 예방해야 한다.
그러나 독점SW 라이선스에서 규정된 의무사항과 비교하면 오픈소스 SW 라이선스가 요구하는 내용은 결코 어렵지 않으며, 이를 잘 이해하고 준수하면 독점 SW보다 훨씬 비용을 절감할 수 있다. 또한 몇몇 라이선스만이 독자 개발한 소스코드의 공개를 요구하고 있기 때문에 이를 잘 분석한 후 이용한다면 문제의 발생 소지는 거의 없다고 봐야할 것이다
따라서 오픈소스SW를 다운로드하여 개발에 적용할 때는 반드시 라이선스의 요구 사항을 확인하여야 한다. 자체 판단이 불가능할 경우에는 외부 전문가에게 조언을 의뢰하여 개발 시작 전 해당 라이 선스의 요구 사항과 오픈소스SW의 이용목적을 확실히 분석하여야 한다. 이렇게 하는 것만으로도 충분히 올바르게 오픈소스 SW를 최대한 활용할 수 있으며, 나중에 발생할 수 있는 문제들을 사전에 차단할 수 있다.
오픈소스 SW 라이선스의 의무사항은 각각의 라이선스마다 조금씩 차이가 있지만 크게 나누어 보면 공통적으로 '저작권 관련 문구 유지', '제품명 중복 방지', '서로 다른 라이선스의 SW 조합 시 조합 가능 여부 확인' 등이 있고, 선택적으로는 '소스코드 공개', '특허 관련 사항 준수' 등이 있다.
저작권이란 표현된 결과물에 대해 발생하는 권리이며 저작물의 창작과 함께 자동적으로 부여된다. SW의 경우는 소스코드에 프로그램의 이름과 개발자, 버전, 연락처 등을 포함하고 있는 경우가 많으며 이러한 것들은 저작인격권으로 보호받는다. 오픈소스SW는 거의 대부분 소스코드 상단에 개발자 정보와 연락처 등이 기록되어 있으며 개발자 정보를 임의로 수정하거나 삭제하여서는 안된다. 특히 GPL 등 수정된 결과물을 다시 공개하도록 규정하고 있는 '상호주의(reciprocal)' 라이선스들의 경우 저작인격권으로 보호받기 때문에 소스코드 상의 개발자 정보가 수정, 삭제된 채로 외부에 공개되면 저작권 침해 문제가 발생할 수 있으므로 주의해야 한다. 저작권 관련 문구 유지는 쉽게 판단이 가능한 사항이므로 항상 준수하여야 한다.
SW의 제품명은 상표권으로 보호받는다. 따라서 오픈소스SW의 경우에 이와 동일한 이름을 제품명이나 서비스명으로 사용하면 상표권 침해의 문제가 생기게 된다. 특히 유명한 오픈소스SW일수록 해당 오픈 소스 SW의 이름이 상표로 등록되어 있는 경우가 많기 때문에(예: 리눅스) 더욱 조심해야 한다.
SW를 작성하고자 할 경우 기존에 만들어진 코드를 재사용하거나 결합하는 경우가 많은데, 이러한 때 결합되는 각 코드의 라이선스가 서로 상충되는 경우가 있다. 이러한 문제를 라이선스의 양립성 (Compatibility) 문제라고 한다. 서로 다른 라이선스로 배포된 오픈소스SW를 결합하는 경우 반드시 두 개의 라이선스가 서로 호환되는지를 확인하여야 한다.
선택적 준수사항은 라이선스에 따라 다르다. 자세한 사항은 PDF로 제공하는 오픈소스 라이선스 가이드의 라이선스별 준수사항 부분(3.2)을 참고하기 바란다.
많은 오픈소스SW 라이선스들은 SW를 이용할 때 해당 오픈소스 SW가 이용되었음을 명시하도록 하고 있다. 이것은 이 SW는 오픈소스 SW인 무엇 무엇을 이용하였습니다.라는 식으로 이용 여부를 명확히 기술하라는 것이다. 이용자 매뉴얼이나 기타 매뉴얼을 대체하는 매체가 있다면 그곳에 기술하면 된다.
오픈소스SW는 라이선스에 따라서 수정하거나 추가한 부분이 있을 때 해당 부분의 소스코드도 공개하여야 한다고 명시하는 경우가 있다. 대표적인 라이선스로 GPL이 있다. 그러나 정확한 공개 범위는 각각의 라이선스에서 정하고 있는 범위와 SW를 개발하는 방법에 따라서도 달라질 수 있다.
어떤 기술이 특허로 보호될 경우 해당 기술을 구현할 때 반드시 특허권자의 허락을 받아야 한다. 이 조건은 오픈소스 SW 여부와 상관없다. 그러나 특허 기술을 오픈소스 SW로 구현할 경우 라이선스 때문에 오픈소스 SW 관련 특허권 문제는 보다 복잡하다. 특히 최근 SW 특허가 급격히 증가하면서 관련 문제가 심각해지고 있기 때문에 새롭게 만들어지는 오픈소스 SW 라이선스들에서는 특허 관련 조항을 포함하고 있는 경우가 많아지고 있다.
뭐든 그렇듯 처음 오픈 소스SW에 대해 길게 읽어보기 시작하고 여러 블로그를 찾아봤을 때는 두리뭉실하니 이해가 잘 안 갔는 데, 이렇듯 공식 사이트나 관련 사이트를 찾아보니 길지만 명확하게 글이 쓰여있어서 이해가 쉬웠다. 역시 지식에 왕도는 없나 보다. 바로 그 사이트에 갈 수 있는 링크를 발견하시면 좋겠지만 혹시 나처럼 여러 블로그를 떠 돌다 마지막쯤 발견하는 사람이 있을까 하여 그 내용을 그대로 발췌해왔다. 해당 사이트로 바로 가고 싶은 사람들은 아래의 링크를 클릭하기 바란다.