레이블이 GPL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 GPL인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 28일 수요일

삼성 exFAT 드라이버 유출과 공개 사건에 대해

삼성의 exFAT 드라이버 유출과 관련해, 엉뚱한 삼성 비난 또는 삼성 옹호 얘기가 있길래 실제 코드를 보고 파악할 수 있는 쟁점을 지적해 보고자 한다. 일단 사건의 개요는 넘어가고,

관련 기사 http://www.etnews.com/news/computing/solution/2817944_1476.html

유출된 코드 https://github.com/dorimanx/exfat-nofuse

공개된 코드 http://opensource.samsung.com/reception/receptionSub.do?method=sub&sub=F&searchValue=exfat


- 위 기사의 후반부의 특허 논란 얘기는 틀린 내용이다. 특허는 논란의 여지가 없다. 삼성과 MS는 2011년 크로스 라이선싱 계약을 맺은 상태이므로 삼성 제품에 사용하는 건 삼성의 정당한 권리. 그리고 특허 시스템을 모르는 사람들이 특허가 공개되도 괜찮으냐고 의문을 품는데, 특허는 원래 공개된 거고 특허와 소스 코드의 라이선스는 별개의 문제이다.

- 유출된 코드의 GPL 위반이 발견된 상황에서 삼성의 선택은 두 가지가 있었을 것이다. 첫 번째는 이 코드는 GPL과 별개의 작업이다라고 주장하면서 논란을 확대하는 것이고, 또 하나는 그냥 소스 코드를 공개해 버리고 논란을 종식시키는 것. 이 중에서 후자를 선택한 것은 잘 한 일이었다.

- 하지만 생각해 보면 삼성은 그렇게 선택할 수밖에 없었다. 리눅스 커널 드라이버가 GPL이냐는 떡밥은 참 전통이 깊고, 애매한 상황 아니냐고 논란이 생길 수도 있는데, 적어도 이번 사건은 지금까지 알려진  애매한 상황이 아니라 명확한 GPL 위반 상황이었다. 이 드라이버는 처음부터 리눅스를 위해 작성된 드라이버이므로 GPL v2 section 3에 정확히 걸린다. 또 유출되고 공개된 코드를 실제로 보면 기존 FAT 드라이버 코드의 많은 부분을 복사 붙여넣기 한 게 너무 명확했다. 따라서 이 드라이버는 명백한 GPL 코드의 파생물이었다. 링크가 되니 안 되니 논쟁의 문제가 아니다. 즉 애초부터 이 드라이버의 소스 코드는 삼성이 GPL로 릴리스했어야 했다. 그게 유출이라는 또 다른 불법적인 경로를 통해 들통이 난 것이다.

- 한편 많은 뉴스 기사를 보면 GPL-only symbol을 썼다고는 하는데 ("Samsung was shipping this closed-source exFAT driver on a tablet yet they were relying upon GPL-only symbols") 유출된 버전과 공개된 버전이 차이가 있다. 실제 공개된 드라이버에는 GPL 심볼이 사용되지 않아서 이 부분은 사실인지 의심스럽다. 유출된 코드에서는 GPL 심볼을 사용한 부분이 있으나 나중에 공개된 소스나 제품에 포함되어 있는 바이너리에는 그런 흔적이 전혀 없기 때문에, 유출된 버전이 나중에 수정되면서 추가된 부분일 가능성이 높다. 게다가 GPL 심볼을 사용하는 커널 드라이버가 GPL 라이선스를 안 붙이게 우회하기도 쉽지 않고, 그 과정에서 법적 논란이 있음을 쉽게 인식할 수 있는데 악의적으로 감췄을 것 같지도 않다.

- 삼성의 오픈 소스 정책이 무엇이든, 감출 수 있으면 감추는 게 기본 방침이라고 하더라도, 이번 부분은 감출 수 없고 공개했어야 하는 부분을 감춰 버렸던 것은 명백하다. 오픈소스 관리에 놓친 부분이 생긴 건 사실이다.

2009년 3월 14일 토요일

KMPlayer FFMPEG의 Hall of Shame에 등록

FFMPEG 프로젝트에서는 Hall of Shame이라는 이름으로 GPL/LGPL 위반자 목록을 정리해 놓는데..  GOM플레이어에 이어 KMPlayer도 새로 등록되었다.

FFMPEG에서 문제 삼는 이유는, 전에도 내가 썼던 글 (KMPlayer - 정말 GPL 위반 맞을까?) 중에서 명백하게 위반한 부분, 배포할 때 GPL/LGPL 바이너리 코덱을 소스 없이 배포한 사실 때문이다.

해결하자고 마음 먹는다면 (그리고 다른 의심스러운 부분이 위반이 아니라고 자신할 수 있다면) 이 부분은 사실 너무 쉽게 해결할 수 있다. 해당 소스를 묶어서 같이 배포하면 되는 일이다. 이 소스 코드를 고쳤든 안 고쳤든 GPL/LGPL에 따르면 소스 코드를 배포해야 한다는 사실은 변함이 없다.

(업데이트) 해당 이슈 트래커 항목을 보면 GPL 심볼을 레퍼런스하는 부분도 지적하고 있다. 역시 전에 썼던 이야기 중에서 아마도 위반일 거라고 했던 부분.

2009년 3월 12일 목요일

OSS 정책 - 디지털교과서 사업이 맨드리바를 부정복제?

메타냅, 한국소프트웨어진흥원에 디지털교과서용 리눅스 부정복제 중지 촉구

맨드리바 리눅스 배포판은 100% 오픈소스 버전인 Mandriva Free와 non-free 소프트웨어가 포함된 Mandriva One으로 나뉘어져 있다. 전자의 경우는 물론이고 후자의 경우도 일부를 제외하고는 모두 오픈소스 라이선스이고 사용이나 재배포를 금지하지 않는다. (단 맨드리바 상표에 대해서는 이득을 취하는 행위에 대해 이의를 제기할 수 있겠지만 메타냅 측이 지금 문제 삼는 부분은 아니다.)

그럼 과연 메타냅에서 주장하는 "부정복제"는 과연 무엇일까? 아마도 바이너리만 카피해서 배포하는 GPL 위반 행위를 말하는 것 같다. 현재 도를 넘어선 임베디드 업체들의 GPL 위반 상황을 생각해 보면 어떤 위반인지 충분히 예측할 수 있다.

하지만 왜 메타냅 측은 어떤 부분을 위반했다고 정확히 지적하지 않는 건가? 기자의 손을 거치면서 의미가 왜곡되었는지도 모르겠지만, 기사에는 어떤 이유로 GPL 위반이라는 것인지에 대해 설명하지 않았고, 오픈소스를 알지 못하는 사람들이 이 기사를 읽는다면 디지털교과서 사업에서 마치 맨드리바 측의 소프트웨어를 불법 복제한 것처럼 이해하기 쉽다.

위 기사에서 언급한 커널/드라이버/라이브러리 따위를 복제했다는 사실은 GPL에서 허용하는 것이고 위반이 아니다. GPL 위반이 문제라면 소스코드가 없다거나 라이선스를 명시하지 않았다거나 따위의 위반한 사항을 구체적으로 말해야 하지 않을까? 디지털 교과서의 컨텐츠 포맷에 특정 업체의 독점 포맷을 사용한 정책적 방향에 대해 비판할 수는 있어도 (나 역시 반대하지만), 역시 GPL 위반은 아니다.


2008년 4월 26일 토요일

KMPlayer - 정말 GPL 위반 맞을까?

먼저 하고 싶은 말은, IANAL (I Am Not A Lawyer). 지금 하는 말은 내 지식, 경험, 공개된 문서에 기반한 판단일 뿐 것일 뿐 법률적인 전문적 판단은 아니다. 하지만 사실에 기반해서 말하는 건 자신할 수 있다.

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도 기업이 만들게 되었으니 문제점을 명백하게 짚고 넘어가길 바란다.

2008년 4월 18일 금요일

GPL 버전2 3항(소스코드 공개 방법)의 불편함

GPL 버전2는 1991년에 개정됐습니다. 잠깐 기억을 되돌려봐도 당시에 인터넷이라는 건 미국 정부기관, 연구소, 대학들에서만 이용할 수 있는 장치였지 보편적인 장치가 아니었습니다. (국내에는 연결된 기관이 KAIST정도밖에 없었겠죠.) 가장 보편적으로 소스코드를 전달할 수 있는 매체는 물리적인 저장장치를 우편으로 전달하는 것이었습니다.

GPL 버전2의 3항은 그래서 이런 모습이 되어 버렸습니다. 3항은 a), b), c) 중 한 가지 방법으로 오브젝트에 대한 소스코드를 전달하도록 되어 있는데 a)는 함께 전달하는 것이고, b)는 3년간 소스코드를 물리적으로 전달한다고 보장하는 문서를 제공하는 것, c)는 비상업적인 용도에 한해 앞의 b)의 내용을 그대로 forward할 수 있다는 것입니다. 오브젝트 코드를 배포하지 않으면 아주 간단해 지지만, 배포한다면 소스코드를 같이 전달하거나 3년간 물리적인 소스코드 전달을 보장해야 합니다.

이 점은 오브젝트 코드를 배포해야 하는 업체들에게는 곤혹스러운데요. 제품과 함께 CD같은 미디어를 배포한다면 끼워넣으면 되지만, 제품에 따로 소스코드를 넣을 만한 여지가 없으면 물리적인 소스코드 전달을 보장해야 하는 번거로움이 있습니다. (물론 일반 리눅스 바이너리 CD를 판매하는 업체들도, 공식적으로 연락을 하고 우편요금을 지불하면 실제로 소스코드가 담긴 CD를 보내준다고 합니다. 물론 인터넷으로 받으면 되기 때문에 이게 되는지 일부러 실험하고 싶은 사람이 아니라면 일부러 요청할 필요가 없지만요.)

GPL 버전3은 이 부분이 보강되어 있습니다. 오브젝트와 같은 자격으로 접근할 수 있는 위치에 소스코드를 제공하는 것으로 (즉 URL을 쓰는 것으로) 조건을 만족할 수 있습니다. GPL 버전 2에선 이게 안 되고, 버전3에서만 됩니다. 시대의 변화를 반영한 이 부분은 매우 긍정적입니다. 오히려 버전3이 비지니스 프렌드리하지 않을까요.

문제는 리눅스 커널도 그렇고, BusyBox도 그렇고 "or (at your option) later version" 문구가 붙어 있지 않은 "GPL v2 only" 소프트웨어가 꽤 있어서 GPL v2는 쉽게 사라지지 않을 거고, 여전히 3년간 물리적인 매체를 통해 전달하는 보장을 해야 됩니다.

(업데이트)

참고 글: The GPL Has No (Networked) Future

2008년 4월 10일 목요일

ipTIME의 GPL 위반

주식회사 이에프엠 네트웍스의 인터넷 공유기 ipTIME이 작년 7월 제시한 timeline과는 달리 계속해서 GPL을 위반하고 있습니다. 현재 라이센스 문제를 논의하는 구글그룹을 만들었고 ipTIME 문제를 정리하고 있습니다. 그룹에 가입해서 논의에 도움을 주세요.

http://groups.google.com/group/foss-legal-kr/web/efm-networks-iptime

저도 수년간 장비 업계에 있었고 앞으로도 그럴 가능성이 있기에, 이런 흐름이 만연되어 있는 부끄러운 모습을 계속 보고 넘길 수만은 없습니다.

더구나 ipTIME은 라이센스를 잘 몰랐다거나 실수였다거나 그런 것도 아니고, "대기업의 GPL 관련 위반은 영업비밀 유지며 당사와 같이 미약한 중소기업에만 이와 같은 규칙이 엄격하게 적용되어서는 불합리하다"라고, 알면서도 고의적으로 라이센스를 위반하고 있는 모습을 보이고 있습니다.

좀 더 진행되면 나중에 다른 위반 사례에 대해서도 해결을 시도해 보고자 합니다. 너무 많아서 한숨이 나옵니다만 분위기가 조성되면 알아서 지켜지겠지요.