GPL 위반 논란이 있을 때마다 사람들은 쉽게 초점을 벗어나곤 한다. GPL을 위반했느냐 아니냐는 사실 여부를 판단하는 문제이다. 이 문제는 GPL이 허용하는 것과 허용하지 않는 것이 무엇인데, 당사자와 해당 소프트웨어가 어떻게 했는지 사실 관계를 확인하면 되는 것이다. 이 소프트웨어를 좋아하든 싫어하든, 실수로 그랬든 악의적으로 그랬든, GPL을 좋아하든 싫어하든, 개발자들이 어떤 노력을 했든, 결과적으로 공익에 좋은 영향을 미쳤든 악영향을 미쳤든 간에 라이센스 위반 여부와는 상관이 없다. 라이센스라고 해도 애매한 부분은 항상 있지만, 애매한 부분 역시 라이센스의 내용과 사실 관계에 의해서 판단할 문제이지 좋아하느냐 싫어하느냐 등 외적인 문제로 판단할 문제가 아니다.
1. MPC 코드 사용: 모르겠다
KMPlayer의 GPL 위반에 대해 가장 많이 논란이 된 부분은 MPC의 코드를 베껴오지 않았냐는 논란이었다.
이 논란에서는 좀 재미있는 점이, KMPlayer 개발자가 몹시 위험한 사실을 시인했다. "코드를 참고해서 델파이 코드를 작성했다"라고 말한 것이다. C++ 코드를 보고 델파이 코드를 작성했다면 그게 개작일까, 아닐까? 답은 그럴 수도 있고 아닐 수도 있다. 그때그때 다르고 뭐라고 말할 수 없다. 사용하는 프로그래밍 언어가 무엇인지는 중요하지 않다. 프로그래밍 언어가 다르다는 주장은, 소스 코드를 그대로 복사/붙여넣기하지는 않았다는 정도 이상의 근거가 되지 못한다.
논란의 구실을 제공하기 때문에 보통 소프트웨어를 개발할 때는 애초에 이런 애매한 상황을 만들지 않으려고 노력한다. 라이센스 논란이 있는 소프트웨어를 다시 작성할 경우에는, 라이센스 문제가 있는 어떤 코드를 한번 읽었다면 그 사람은 같은 기능을 하는 코드를 작성하지 못하게 한다. 리버스 엔지니어링이 필요한 소프트웨어의 경우 리버스 엔지니어링을 하면 그 결과를 말로 설명하는 문서로 만들고 그 문서만 보고 다른 사람이 구현한다.
2. GPL/LGPL 바이너리의 포함: 위반
이건 너무 명백하다. 위반이다.
kmp.zip에 GPL 및 LGPL 소프트웨어를 함께 배포하고 있으며 이들 소프트웨어에 대한 저작권 고지가 빠져 있다. (앞의 MPC 코드 논란 이후 GPL 전문은 포함하고 있다.) 그리고 소스코드 배포방법중 하나도 지키지 않고 있다.
맨 위 디렉토리에 눈에 보이는 것만 열거해도 GNU iconv - LGPL, xvid - GPL, liba52 - GPL, libdts - GPL, libfaac - GPL, libfaad - GPL, libmad - GPL, libmpeg2 - GPL이다. BSD-like 라이센스로 배포되는 theora/vorbis 라이브러리 역시 copyright notice는 유지해야 하는데 빠져 있다.
KMPlayer가 GPL 위반이 아니라고 말했던 어떤 글에서는, "KMP에 사용되는 외부 라이브러리는 소스 코드에 수정을 가하거나 변경하지 않았고, CVS 버전의 소스를 컴파일하거나 바이너리 버전을 가져다 사용했다"라고 했지만, GPL 소프트웨어를 수정했든 그대로 가져다가 사용했든 GPL version 2의 section 3에 제시된 방법으로 소스코드를 제공해야 한다는 사실은 변함이 없다.
3. 링크 호환성 문제: 아마도 위반
위의 라이브러리들이 GPL이라면 이것들과 링크한 건 괜찮을까? GPL 버전 2 section 2에 보면,
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. ...
KMPlayer는 이들 DLL이 없이도 독립적으로 동작하므로 "separate and independent"라고 주장할 수도 있지 않을까? 역시 앞의 글을 보면 "KMP는 외부 라이브러리에 종속성을 가지지 않는다"라면서, DLL 없이 실행 파일인 KMPlayer.exe 파일만을 떼어놓고 실행해도 동작한다고 말한다. DLL은 부가 기능일 뿐이다.
하지만 이 DLL이 어느정도 종속되느냐, 부가기능이냐 핵심기능이냐의 문제도 링크가 호환되느냐의 여부와는 별로 관계가 없다. 이 KMPlayer.exe 파일은 이들 GPL 라이브러리의 DLL과 링크가 되어 있고 DLL의 함수들을 레퍼런스하고 있다. KMPlayer가 이 라이브러리들을 사용하는 정확한 메커니즘은 알 수 없지만 FSF의 GPL FAQ에 따르면, 단순히 플러그인이라도 링크한 그 라이센스가 GPL이면 문제가 된다. 논란의 여지는 있지만. 적어도 지금까지의 사례를 보면 (NextStep의 Objective C 사건 등) 링크한 소프트웨어는 개작으로 생각하고 GPL을 따르는 쪽으로 진행되어 왔다. 그래서 위반이라고 보인다.
결론: 위반 맞다
부디 GPL 소프트웨어를 개발에 사용하는 사람들은 라이센스 전문과 GPL FAQ를 읽어 보고 사용했으면 좋겠다.
애매한 부분을 빼면 위반이 악의적이거나 고의적이라고 보이지는 않는다. 하지만 앞의 2번째 사안인 GPL/LGPL 바이너리의 포함처럼 명백한 위반이 몇년간 방치된 일은 이해하기 힘들다. KMPlayer가 판도라에 매각된 후에 개발자의 글에는, "...우리나라에서는 아직 오픈 소스에 대해서 사람들의 의식이 장착되지 않았습니다"라는 말이 있다. 의식이 장착되지 않다니, 대체 누구부터 의식이 장착되지 않은 것인가?
이제 KMPlayer도 기업이 만들게 되었으니 문제점을 명백하게 짚고 넘어가길 바란다.