Autohotkey의 라이센스와 제약사항에 대해 이야기를 해볼까 합니다. (위키피디아 에서는 '라이선스' 라는 페이지로 되어 있네요.)
라이센스는 저작권이나 특허, 자격등을 설명할때 사용하는 단어 입니다.
인터넷의 사용량이 늘어나면서 인터넷을 통한 컨텐츠의 교류는 눈에띄게 활발해지고 있습니다. 글, 그림, 사진, 영상, 음악 등 컴퓨터로 표현할 수 있는 다양한 컨텐츠들이 공유되면서 저작권과 라이센스에 대한 문제가 여기저기서 나타나고 있습니다. 다양한 라이센스의 종류가 있고 법적으로 인정되거나 그렇지 않은 라이센스까지 꾸준하게 생겨나고 있고 개발, 발전 되고 있습니다. 도덕적인 측면에서 접근하여 암묵적으로 통용되는 라이센스가 있는가 하면 국제적으로 인정하고 권리를 부여하는 라이센스도 있습니다.
이 포스팅에서는 Autohotkey에 관련된 라이센스에 한해서 알아보도록 하겠습니다.
Autohotkey는 GNU GPLv2 라이센스를 따릅니다. 한글로는 "일반 공중 사용 허가서"라고 명명했네요.
(GNU GPL 라이센스는 국내법상 적법성을 내세울만한 판결이 아직 존재하진 않습니다.)
위키에서 표현하기로는..
GNU 일반 공중 사용 허가서는 누구에게나 다음의 다섯 가지의 의무를 저작권의 한 부분으로서 강제한다.
1. 컴퓨터 프로그램을 어떠한 목적으로든지 사용할 수 있다. 다만 법으로 제한하는 행위는 할 수 없다.
2. 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스코드를 무료로 배포해야 한다.
3. 컴퓨터 프로그램의 소스 코드를 용도에 따라 변경할 수 있다.
4. 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 한다.
5. 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스를 취해야 한다. 즉 GPL 라이선스를 적용해야 한다.
어렵게 보일 수도 있는데, 아마 4번과 5번이 가장 거론되는 항목입니다.
이 포스팅을 보시는 분들은 "오토핫키로 만든 내 프로그램도 이 항목을 따라야 하는 것인가?" 라는 궁금증 때문에 보실듯 한데,
결론을 먼저 말씀해드리자면 "아닙니다" 라고 할수 있습니다.
하나하나 짚어보면서 왜 아닌지 알아보도록 하겠습니다.
먼저, GPL은 GNU(공식홈)와 자유 소프트웨어 재단(Free Software Foundation, FSF, 위키)에서 만든 라이센스 입니다.
간단하게 오픈소스를 위한 라이센스라고 할 수 있습니다. (링크: GNU GPL 위키 )
Autohotkey는 GPL v2를 따르고 있다는 것인데, GPL은 General Public License의 약자로 3가지 버전이 있습니다.
각 버전은 기본 자유소프트웨어 정신에 입각해서 조금씩 다른 제약조건등을 가지고 있습니다.
GPL이외에 여러 라이센스가 있지만 덧붙이지는 않겠습니다. ( 링크: GNU의 라이센스 )
GNU GPL v2 에 대한 세부적인 내용은 공식홈페이지나 위키등에서 더욱 자세하게 살펴보실 수 있습니다.
그럼, "Autohotkey는 GPL인데 왜 Autohotkey를 이용해서 만든 프로그램은 GPL이 아니냐?" 라는 물음에 답해보자면
공식적으로 GNU의 입장이 그렇기 때문이라고 말씀드릴수 있습니다.
GNU에서는 FAQ페이지를 통해서 아래와 같은 입장을 표명했습니다. (원문링크)
만약 특정한 프로그래밍 언어에 대한 인터프리터가 GPL로 공표되어 있다면 이러한 인터프리터를 사용해서 만들어진 프로그램에도 GPL과 호환되는 라이선스가 적용되어야 합니까?
인터프리터가 단순히 한 언어를 인터프리트하는 역할을 하는 경우에는 그렇지 않습니다. 인터프리터에 있어서 인터프리트된 프로그램은 단순히 데이터일 뿐입니다. GPL과 같은 자유 소프트웨어 라이선스는 저작권법에 기초하고 있기 때문에 인터프리터를 사용해서 만들어진 데이터를 제한할 수 없습니다. 어떠한 데이터에 대해서도 인터프리터를 사용할 수 있으며, 인터프리트된 데이터에 대한 어떠한 요구도 할 수 없습니다.
그러나 인터프리터가 라이브러리와 같은 요소와 바인딩되도록 확장되어 있을 경우에는, 인터프리트된 결과로 만들어진 프로그램이 바인딩을 통해서 라이브러리와 링크될 것입니다. 만약 라이브러리가 GPL로 공표된 것이었다면, 인터프리트 되어 만들어진 프로그램은 GPL과 호환되는 형태로 공표되어야 합니다. 이러한 예로 JNI와 자바 네이티브 인터페이스를 들 수 있습니다. 이러한 방법으로 접근되는 라이브러리들은 이들을 호출하는 자바 프로그램과 다이나믹하게 링크됩니다.
또하나의 일반적인 사례는 인터프리터와 이 인터프리터를 사용해서 인터프리트된 라이브러리들이 함께 제공되는 경우입니다. 예를 들면, Perl 인터프리터는 많은 종류의 Perl 모듈들과 함께 제공되고 자바 구현물에는 많은 양의 자바 클래스들이 함께 제공됩니다. 이러한 경우에는 라이브러리와 라이브러리를 호출하는 프로그램이 항상 다이나믹하게 링크되어 함께 사용됩니다.
결과적으로 GPL로 공표된 Perl 모듈이나 자바 클래스를 여러분이 만든 프로그램에 포함시키기로 결정했다면 결합된 Perl이나 자바 프로그램이 실행될 인터프리터들의 라이선스에 상관없이, 여러분의 프로그램은 GPL과 호환되는 방식으로 공표되어야만 합니다.
Autohotkey는 C/C++로 만들어진 인터프리터이고, 위 문서에 따르면 인터프리터를 사용해서 만들어진 데이터를 제한할 수 없다고 되어 있습니다. Auothotkey의 라이센스 정책이 Autohotkey를 이용해서 만든 바이너리(exe로 컴파일한)의 라이센스에 영향을 미칠 수 없다는 것을 의미 합니다.
쉬운 예를 들어 이해를 해보자면,
어느 시골 한적한곳에 볼펜공장이 하나 있었습니다. 착한 마음씨를 가진 공장 사장은 좋은 볼펜을 여러사람에게 나눠주고 싶은 마음이 들었습니다. 길거리에 볼펜을 들고 나갔습니다. 그리고는 지나다니는 사람들에게 볼펜을 공짜로 나누어 주었습니다.
볼펜을 받은 사람들 중에는 학생도 있고, 회사원도 있고, 작가도 있었습니다.
어느 한 작가가 이 볼펜을 사용해서 열심히 소설을 썼고, 이 소설책은 베스트셀러에 오르는 좋은 성과를 얻게 되었습니다.
이런 사실을 알게 된 볼펜공장 사장이 베스트셀러 작가에게,
"나는 내 볼펜을 공짜로 나눠줬으니 당신도 그 소설책을 공짜로 나누어줘야 합니다" 라고 할 수 있을까요?
이치에 맞지 않다고 느끼시겠죠. 극단적이고 유치하지만 같은 맥락이라고 생각합니다.
볼펜공장은 C컴파일러로 볼 수 있고, 볼펜은 Autohotkey이고, 원고는 ahk 스크립트, 작가는 스크립터로 볼 수 있습니다.
정황에 따라 사용자가 만든 바이너리의 라이센스를 인터프리터의 역할을 한 Autohotkey가 영향을 미칠 수도 없고, 귄리를 행사할 수도 없는 것이 맞습니다.
하지만 Autohotkey의 전체 소스코드를 다운(혹은 Fork)받아 AHK_K 라는 버전으로 수정하여 배포하는 경우에는 상황이 다를 수 있습니다. 이 경우에는 GPL v2 라이센스를 따라야 합니다.
공짜 볼펜에 10원짜리 지우개를 달아서 볼펜값 500원을 붙여 510원에 파는건 잘못된 것으로 볼 수 있죠.
주저리 주저리 말이 길었지만 사용자는 Autohotkey 스크립트를 짜서 GPL 라이센스로 소스코드와 배포를 해도 되고, 바이너리로 컴파일해서 일정 가격을 붙여 매매하는 행위도 라이센스의 문제가 전혀 없습니다.