GPL과 바이너리 커널 모듈
글쓴이: 방준영 / 작성시간: 화, 2003/12/09 - 12:32오전
리눅스 커널 모듈도 리눅스 커널과 마찬가지로 GPL의 제한을 받으며, 바이너리로만 모듈을 배포하면 GPL에 위배된다는 소식입니다.
http://kerneltrap.org/node/view/1735
그런데 예전에 보면 커널 모듈은 커널이 아니기 때문에 GPL을 따를 필요가 없다고들 했는데(그 이유로 국내 몇몇 회사들이 프로그램을 모듈로 만든 다음 바이너리만을 배포하기도 했었지요), 지금 다시 보니 어디서 그런 주장이 나왔던 것인지 상당히 의아해지네요...
Forums:
[quote="방준영"]그런데 예전에 보면 커널 모듈은 커널이 아니기 때
오픈 소스라는 책에 보면 리누스가 쓴 "첨단의 리눅스" 란 글이 있습니다.
그 글 내용중에 (한글판 기준으로 p203 에 보면)
라는 부분이 있습니다. 여기서 온게 아닐까요? :)
뭔가 해석하기 애매합니다.http://korea.gnu.org/g
뭔가 해석하기 애매합니다.
http://korea.gnu.org/gl/gb-2001-2-1.html
단지 저것만 보자면 별 문제 없을 듯 싶은데요. 모듈에도 적용되는 이야기 인가요?
추가 : 방준영 님이 올리신 글에 답이 있는듯 싶습니다. 제가 너무 성급히 글을 올렸네요.
[quote="markboy"]그 글 내용중에 (한글판 기준으로 p203
위에 제가 링크한 글에 보면 리누스 토발즈가 앤드류 파일시스템을 언급한 부분이 있는데, 비슷한 얘긴 것 같습니다. 앤드류 파일 시스템은 원래 리눅스를 위해 만든 게 아니었는데 나중에 리눅스로 이식되었으므로 여기에 GPL을 적용하기가 좀 그랬다고 합니다. 그러나 처음부터 리눅스를 염두에 두고 커널 모듈로 만든 프로그램은 전부 GPL을 따라야만 한다고 못을 박았군요.
한국 BSD 사용자 포럼
Re: GPL과 바이너리 커널 모듈
링크하신 http://kerneltrap.org/node/view/1735 는 GPL과 커널에 대한 라이센스 이슈들을 이해하기에 매우 좋은 스레드인것 같습니다.
상당히 길기 때문에 저도 아직 다 읽지는 못했지만, 소스코드를 공개하기를 꺼려하는 분들(회사/개인 등등)이 리눅스 커널을 이용해서 무엇인가를 할 때 어떻게 해야 하고 무엇을 지켜야 하고 GPL과의 관계는 어떻게 되는지 한번쯤 읽어보는 것이 좋을 것 같네요.
어디서부터 그런 이야기가 나왔는지 모르지만, "리눅스 커널이 GPL이기 때문에 리눅스 커널을 수정해서 제품을 만들 경우에는 수정한 소스를 다시 GPL로 릴리즈해야 하나 모듈로 구현해서 원래 커널에 집어넣을 경우에는 그 모듈을 GPL로 릴리즈하지 않아도 된다. 따라서 모듈로 개발하면 소스코드를 공개할 필요 없이 리눅스 커널을 이용할 수 있다." 라고 이해하는 사람이 많았고 저 역시 그중 한명이었습니다. 여기저기 컨퍼런스나 세미나, 기사내용 등에도 비슷한 이야기가 많이 있었고요.
다시한번 알려주신 스레드를 모두 읽어보고 가능하면 정리를 해 보아야겠습니다. (어제 /.에서 헤드라인만 보고 넘어갔는데 다시 읽고 있습니다. :) )
http://www.kernelnewbies.org/kernels/rh9
http://www.kernelnewbies.org/kernels/rh9/SOURCES/COPYING.modules 에서도 커널 모듈에 대한 Linus의 의견들을 요약해서 읽을 수 있습니다.
정리하자면,
1. 모든 리눅스 커널 모듈은 GPL이어야 한다.
2. 어떤 리눅스 커널 모듈이 GPL이 아닐 수 있으려면 그것이 리눅스 커널의 derived work이 아니어야 한다.
로 요약할 수 있겠고, 어떤 것이 derived work이냐/아니냐에 대해 논란의 여지가 있는데 그것은 다음 인용구를 보시면 좀더 확실해질 것으로 생각됩니다만 시간이 허락한다면 http://www.kernelnewbies.org/kernels/rh9/SOURCES/COPYING.modules 전체를 주의깊게 읽어보시는 것이 좋을 것으로 판단됩니다.
[quote="권순선"]1. 모든 리눅스 커널 모듈은 GPL이어야 한
흠!! 새로운 사실이네요. MODULE_LICENSE()가 존재하는 이유가 binary 형태의 module 허용 하는것으로 알고 있었거든요. 다만 printk 와 같은것을 쓰지 못하고, module내에서 구현해야 하는것으로요..
근데 kerneltrap 에 있는글을 보니까.. Linus 말은 "단지 documentation"일뿐이라고 얘기하고 있네요.
만약 모든 모듈이 GPL이어야 한다면 (그 애매한 gray area는 논외로 합니다. Linus 가 쓴글을 보자면 derived work가 아닌 linux module은 찾기 어려워보입니다) 다른곳에서 GPL이 아니라고 준 소스 코드를, 내가 다른 사람에게 GPL 로 바꿔서 보내줘도 되는것인지 궁금하네요. 그렇게 되면 proprietary module이었기 때문에 쓸데없이 커진 코드를 줄여서 GPL 로 배포할수 있기 때문이죠......
정말. 흥미롭네요.
[quote="MasterQ"]만약 모든 모듈이 GPL이어야 한다면 (그
그 경우는 커널 모듈을 GPL로 배포하지 않은 것 자체가 라이센스 위반이기 때문에 다른 사람이 GPL로 배포를 하더라도 원작자로서는 막을 방법이 없겠지요.
한국 BSD 사용자 포럼
얼마전까지만 해도 보안 OS 만드는 회사에서 근무를 했는데그것이
얼마전까지만 해도 보안 OS 만드는 회사에서 근무를 했는데
그것이 커널 모듈로 만든건데.. 그렇다면 이것이 GPL에 위배 된다는
거군요.
대부분의 회사가 저렇게 할터인데.. 리눅스상에서 제품 팔기가
좀 애매해 지는 거군요..
screen + vim + ctags 좋아요~
[quote="김충길"]얼마전까지만 해도 보안 OS 만드는 회사에서 근무
GPL의 가이드라인을 잘 따른다면 판매에도 문제가 없지요. 다만 가이드라인을 따르지 않은 채로 이미 판매를 했다거나, 향후에도 GPL을 따르지 않을 계획이라면 문제가 될 소지가 있겠지요.
제 개인적으로는 GPL 역시 라이센스이기 때문에 GPL에 대한 해석은 법
제 개인적으로는 GPL 역시 라이센스이기 때문에 GPL에 대한 해석은 법(저작권법, 특허법 등)의 테두리 안에서 이루어져야 할 것이며, 최종 판결은 법원이 한다는 사실을 먼저 염두에 두어야 한다고 생각합니다. 엔지니어의 입장에서 법을 해석한다는 것은 정말 위험한 일이니까요...^^;;
GPL에 대해 이런저런 소문이 무성한 이유도 바로 법원의 명확한 판례가 없기 때문입니다. Loadable Kernel Module 역시 이런 경우로, 현실을 보자면 거의 대부분의 D/D 제조회사들은 Binary Only Module 형태로 판매하고 있습니다. 물론 이를 허락하는 명문 규정은 없습니다. 이런 해석의 근원 중 하나는 Torvalds의 User Program에 대한 예외를 인정한 COPYING 파일의 문구입니다. Loadable Module 역시 modoue_init()/module_exit()을 이용한 system call을 통한 서비스를 받는 것에 불과하기 때문입니다. 그리고 MODULE_LICENSE() 매크로는 다른 라이센스를 적용한 Module이 있을 수 있음을 반증하는 것이며, EXPORT_SYMBOL_GPL()은 GPL 라이센스의 모듈에게만 해당 심볼을 허용하겠다는 매크로로 이 역시 다른 라이센스의 모듈을 인정하는 것입니다. 또한 Derived Works(2차적저작물)에 대한 미국의 저작권법의 해석과 GPL의 해석이 다른 점도 문제가 되고 있습니다. 이런 등의 이유로 인해 최근 SCO가 GPL의 위법성에 대해 법원의 판결을 구하는 소를 제기하기도 하였죠? 참고로, 저작권법에 따르면 Module은 2차적저작물이 아니며, 그리고 Dynamic Linking 역시 2차적 저작물이 아니라고 합니다. 그러나 GPL은 모두를 2차적저작물로 간주하고 있습니다. 최종 판결은 법원에서 한다는 점을 고려할 때 이는 GPL을 너무 엄격하게 해석하고 있다는 느낌을 받을 수 있습니다.
그리고 토발즈 역시 Module에 대해 말이 자주 바뀌고 있는 인상을 받을 수 있습니다. 이 글을 쓰고 있는 저 역시 엔지니어로써 제 개인적인 의견(Loadable Kernel Module은 GPL이 아님)을 올리고 있을 뿐입니다. 다른 모든 사람 역시 답을 올리는 것이 아니라 그들의 개인적인 생각/의견을 올리는 것일테구요...
[quote="chief1976"]제 개인적으로는 GPL 역시 라이센스이
말씀중에 약간 오해가 있어서 지적하고자 합니다. 우선 디바이스 드라이버는 사용자 프로그램이 아닙니다. 디바이스 드라이버는 커널 모드에서 커널과 바로 링크하는 프로그램입니다. 두번째로 커널 모듈이 호출하는 것은 시스템 콜이 아닙니다. 시스템콜은 사용자 모드에서 호출가능한 커널 함수를 뜻하는 말이고, 커널 모드에서 바로 호출하는 함수는 그냥 커널 함수라고 합니다. 간단한 예로 printk()같은 함수는 시스템콜이라고 하지 않지요. 마지막으로 MODULE_LICENSE()같은 매크로는--리누스 토발즈의 표현에 따르면--"gray area"에 속하는 커널 모듈을 링크하는 데 사용할 목적으로 만든 것입니다. 따라서 언급하신 내용만으로는 커널 모듈에 GPL을 적용하지 않아도 된다는 주장을 뒷받침하기에 부족합니다.
상위법에서 커널 모듈을 2차 저작물로 인정하지 않는 것이 사실이라면, GPL의 존립 근거가 심각하게 흔들릴 것 같습니다. 아울러 오픈소스 전체가 법적 문제로 곤경을 당할 수도 있겠네요. 흠...
한국 BSD 사용자 포럼
좀 더 정확히 설명하자면 다음과 같습니다.Torvalds의 사용자 프
좀 더 정확히 설명하자면 다음과 같습니다.
Torvalds의 사용자 프로그램에 대한 예외적인 규정을 유추해석/적용한 것이며, 그 근거로는 비록 사용자 프로그램은 아니더라도 Loadable Module형태의 D/D는 Load시 create_module 시스템 콜 호출(127번), Unload시 delete_module 시스템 콜 호출(129번)을 통하여 kernel과 링크되기 때문에 결국 토발즈가 예외로 인정하는 Normal System Call을 이용한 사용자 프로그램과 다를바가 없기 때문입니다. 즉, 커널의 서비스를 받는 것이지 위에서 언급하신 커널 함수(예: printk())를 사용하는 것은 아닙니다. 그리고 시스템 콜의 일반적인 의미가 user 영역에서 kernel 영역으로 들어가기 위해 사용하는 것이지, kernel module에 이용되는 시스템 콜도 있다는 점 확인바랍니다.
그리고 아시겠지만, 리눅스에 copyright을 소유하고 있는 사람은 토발즈 이외에 무수히 많은 사람들이 있습니다. 즉, 토발즈는 리눅스에 대해 법적 권한을 행사할 수 있는 무수히 많은 사람들 중 한명에 불과합니다. 따라서 토발즈는 비록 리눅스 개발에는 막강한 영향력을 행사하겠지만 GPL과 관련하여서는 그 만큼 막강한 영향력을 행사할 수가 없는 상황입니다.
그리고 마지막으로 하나 더 붙이자면, Kernel Module에 GPL을 적용할 필요가 없다는 가장 확실한 증거는 비록 100%는 아니지만 이미 개발자들 사이에서 보편화 되어 있다는 것입니다. 법원의 판결 기준이 명문 규정이 없으면 현실을 반영하지 않을까요?
[quote="chief1976"]좀 더 정확히 설명하자면 다음과 같습니
며칠 동안 GPL 문제에 대해서 생각해 보았습니다만, 커널 모듈이 커널의 2차적 저작물이 아닐지라도 비GPL 커널 모듈을 GPL 커널과 링크하는 것은 라이센스 위반입니다. 왜냐하면 GPL 자체가 그러한 행위를 명시적으로 금지하고 있기 때문입니다. 2차적 저작물이냐 여부에 관계없이 말이죠. 그리고 사용자 프로그램에서 시스템콜을 호출하는 것과 커널 모듈에서 시스템콜을 호출하는 것은 성격이 매우 다릅니다. 전자의 경우 단지 공개된 API를 호출하는 것에 불과합니다. 후자는 공개 API를 호출하는 것을 넘어서 커널 모듈이 커널과 같은 주소공간상에서 서로 결합됩니다. 한 덩어리 프로그램이 되는 거죠. 이것은 커널의 라이센스가 그러한 행위를 허용하고 있거나, 또는 공개된 API만을 통해 커널과 커널 모듈이 통신하는 방식이 아닌 한 언제나 문제의 소지가 있습니다. 반면 윈도라면 디바이스 드라이버는 항상 DDK에 정의된 공개 API만을 호출합니다. 따라서 커널과의 결합성이 상당히 떨어지죠. 커널내에서 쓰는 내부 함수에는 접근이 불가능하니까요. 그런데 리눅스 커널 모듈은 커널 내부 함수와 구조체를 대부분 자유롭게 사용하기 때문에 커널과의 결합성이 매우 높습니다. 커널의 내부 구조체를 바꿨을 때 여기 의존하는 모듈을 전부 재컴파일하는 것만 봐도 두개가 사실상 한 프로그램이라고 보는데 무리가 없죠. 그러나 만약 커널의 공식 API만을 사용하고, 커널 내부구조에 의존하지 않는 커널 모듈이 있다면, 그래서 커널 변경의 영향을 받지 않도록 만든 모듈이라면 GPL로부터 어느 정도 자유로울지 모르겠습니다.
또한 시스템콜이라는 건 말 그대로 (특권 모드에서 동작하는) 시스템을 부른다는 것인데, 이미 특권화된 커널 모드에서 동작중인 프로그램의 일부가 자기 자신 안에 있는 함수를 호출한다고 그것까지 시스템콜이라고 부른다면 시스템콜의 일반적인 의미를 지나치게 광범위하게 해석하는 것입니다.
아주 많은 사람들이 법을 어긴다고 해서 그 법 자체가 무효화되지는 않습니다. 예전 BSD와 USL간의 소송 사건에서 보면 BSD 사용자가 미대학가에 광범위하게 퍼져 있었지만 결국은 BSD측의 과실도 어느 정도 인정이 되었죠. 또한 현재 SCO가 IBM등을 토대로 벌이고 있는 소송이 혹시라도 승리를 거둔다면, 그 사이 리눅스를 판매해 온 기업들(SCO의 표적이 되고 있는)은 문제가 되는 소스 코드를 전부 삭제하고 SCO에게 막대한 배상금을 지불하게 됩니다. 그런 면에서 가장 합리적인 타협은 리누스 토발즈를 비롯한 커널 개발자들이 비GPL 커널 모듈 제작업체를 용서하는 대가로 이제부터는 비GPL 커널 모듈을 더 이상 배포하지 않기로 합의한다든가 그렇게 되겠죠.
물론 지금까지 비GPL 커널 모듈을 제작하고 판매해온 업체의 입장으로는 억울하고 불합리하다고 느낄 수 있겠지만, 그것이 GPL의 기본 취지인 만큼 업체들이 패배하지 않는다면 결국 전세계 GPL 소프트웨어 사용자들이 패배하는 것입니다. GPL로 만든 소프트웨어가 전부 무효가 되는 비상사태를 막기 위해서라도 불가피하다고 봅니다.
한국 BSD 사용자 포럼
먼저 저의 의견에 계속 답글을 주셔서 감사드립니다.제가 궁금한 것은
먼저 저의 의견에 계속 답글을 주셔서 감사드립니다.
제가 궁금한 것은 1, '커널 모듈이 커널의 2차적 저작물이 아닐지라도 비GPL 커널 모듈을 GPL 커널과 링크하는 것은 라이센스 위반입니다. 왜냐하면 GPL 자체가 그러한 행위를 명시적으로 금지하고 있기 때문입니다.'라고 하셨는데, 그 명시적 문구가 어떤 것인지요?, 그리고 2. '아주 많은 사람들이 법을 어긴다고 해서 그 법 자체가 무효화되지는 않습니다'라고 하셨는데, 물론 법을 어긴 사람들의 경우에는 당연한 얘기겠지요. 그렇지만 module을 GPL로 공개하지 않는 것이 위법이라 판결나지는 않았죠? 이런 상황에서 법원이 판단을 내리기 위한 기준으로 위법이 아닌 일반적인 현실 의견을 반영할 수 있지 않을까요?
[quote="chief1976"]먼저 저의 의견에 계속 답글을 주셔서
다음과 같은 부분을 들 수 있습니다:
즉, 완전한 소스 코드란 리눅스의 경우 커널과 커널 모듈을 전부 포함해야 합니다.
GPL된 프로그램은 독점 프로그램에 포함될 수 없다고 명시하고 있습니다.
현실 의견보다는 라이센스가 우선이고, 라이센스보다는 상위법이 우선인 걸로 알고 있습니다. 그러니까 라이센스가 무효라는 것을 입증하려면 상위법중 어떤 조항과 배치된다는 걸 증명해야 하는데, GPL의 경우 그런 소지가 있나요?
참고로 GPL에 관한 법정 분쟁 한가지를 소개합니다:
http://slashdot.org/article.pl?sid=02/02/26/1915212
한국 BSD 사용자 포럼
'3. For an executable work, complete sou
'3. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.'
-> 이 부분의 의미는 소스 공개 시 완전한 실행 파일, 즉 사용자가 받아서 그대로 실행이 가능하도록 필요한 모듈이나 인터페이스 정의, 스크립트 등을 모두 포함하라는 의미로 저는 이해하고 있습니다. 보시면 아시겠지만 일반적인 모듈이지 커널 모듈이라는 단어는 없습니다. 그리고 리눅스는 GPL 라이센스를 적용한 수많은 프로그램 중 하나에 불과합니다. 따라서 GPL은 리눅스를 염두에 두고 만들어진 라이센스가 아닙니다. 시기적으로도 그렇죠? 토발즈가 리눅스 배포에 GPL 라이센스를 적용한 것에 불과하지 양자는 아무런 상관관계가 없습니다. 게다가 모듈이 없으면 커널 사용이 불가능한 건 아니죠?
'This General Public License does not permit incorporating your program into proprietary programs.'
-> 이 부분의 의미는 말씀하신 것처럼 GPLed 프로그램은 독점 프로그램에 포함될 수 없다는 것입니다. 즉, 상용 프로그램 라이센스와 GPL은 라이센스 자체가 양립할 수 없다는 뜻이지요. 그러나 어떠한 경우든 항상 예외는 있습니다. GPL FAQ "How can I allow linking of proprietary modules with my GPL-covered library under a controlled interface only?"를 보시면 특별한 예외를 인정하고 있습니다. 커널 역시 하나의 프로세스가 아니라 스마트한 라이브러리이며, module은 특정한 인터페이스를 통해 커널과 링크되기 때문이지요.
"현실 의견보다는 라이센스가 우선이고, 라이센스보다는 상위법이 우선인 걸로 알고 있습니다."
->위에서 말씀하신 내용은 당연한 내용입니다. 하지만 라이센스나 상위법에 해당 소송건과 관련한 명문 규정이 없으면 판사는 어떻게 할까요? 'Kernel Module은 GPL이다'라는 명문 규정은 GPL 뿐만 아니라 상위법에도 명문 규정이 없기 때문에 논란의 여지가 있는 것이며, 이와 관련된 소송이 발생할 경우 판사는 어디에 의지하여 판단할 지는 충분히 예측 가능한 것입니다. 실제로도 법조문이 아니면 관습법에 따른다라는 내용이 법에 있다고 합니다.
"그러니까 라이센스가 무효라는 것을 입증하려면 상위법중 어떤 조항과 배치된다는 걸 증명해야 하는데, GPL의 경우 그런 소지가 있나요? "
->GPL은 그런 소지가 충분히 있습니다. 대표적인 것이 GPL Library의 경우 dynamic linking도 허용하지 않잖아요? 그렇지만 미국 저작권법에 따르면 dynamic linking의 경우는 2차적 저작물이 아니라고 합니다. SCO가 GPL의 위법성에 대해 법원의 판결을 구하는 소를 제기한 것도 바로 이런 등의 이유가 아닐까 생각합니다.
http://lwn.net 에 이와 관련된 이야기들이 있습니다. 참고하세
http://lwn.net 에 이와 관련된 이야기들이 있습니다. 참고하세요...
http://lwn.net/Articles/61490/
[quote="chief1976"]'3. For an executable
"일반적인 모듈"이라는 건 커널 모듈도 포함합니다. 게다가 GPL이 리눅스를 염두에 두고 만들어진 라이센스라는 것은 의미가 없고(미래에 나올지 안나올지 모르는 프로그램을 염두에 두고 만든 라이센스란 세상에 존재할 수가 없습니다), 리눅스가 GPL을 염두에 두고 만든 프로그램이라는 게 중요한 거죠. 그리고 예를 들어 방화벽 기능을 커널 모듈로 제공해서 커널과 함께 판매를 했는데, 모듈이 없으면 당연히 방화벽 기능을 사용할 수가 없겠죠? 그러니 그 경우 "모듈이 없으면 커널 사용이 불가능한 건" 당연한 얘깁니다.
커널은 라이브러리가 아닙니다. 커널은 컨텍스트를 가진 하나의 프로세스죠. 임의의 용어를 자의적으로 재정의해서 증거로 삼으신다면 곤란합니다.
그리고 인용하신 "How can I allow ..." 부분은 예외를 허용하기 위한 문구를 명시적으로 삽입하도록 요구하고 있습니다. 아시다시피 리눅스 커널에는 그런 예외 허용 문구가 없습니다.
만약 그 말씀이 맞다면 처음부터 커널 모듈을 만들 필요도 없습니다(GPL 자체가 무효니까). 그냥 커널안에다 기능을 구현해서 소스 공개 안하고 한덩어리로 팔면 되죠. 커널 모듈로 따로 만들어서 판매했다는 행위 자체가 GPL의 제약을 충분히 인지하고 있었다는 얘기죠. 그럼 앞뒤가 안맞습니다. 어차피 법적 효력이 없는 라이센스라는 걸 확신하는데 그걸 피해가기 위해 노력을 강구할 필요가 없죠.
그리고 중요한 것으로 호혜성의 원칙이 있습니다. 업체들이 윈도나 상용 유닉스를 안쓰고 리눅스를 쓰는 것은 라이센스 비용이 없기 때문입니다. 그러나 라이센스 비용을 안무는 대신 소스 코드를 공개하는 의무가 주어지는 것이죠. 소스 코드를 공개하기 싫다면 리눅스용 커널 모듈을 안만들면 됩니다. 대신 상용 OS용 커널 모듈이나 디바이스 드라이버만을 만들면 됩니다. 또한 "나는 라이센스료를 물기도 싫지만 소스 코드를 공개하고 싶지도 않다" -- 이건 저작권법 자체의 정신에도 어긋납니다. 어차피 저작권법이라는 게 휼륭한 작품을 만든 저작권자에게 어떤 형태로든 보상을 하기 위해 만든 법인데 가져다 쓰고도 아무 대가를 지불하지 않는다면 법 자체가 유명무실해지겠죠.
그러나 그런 경우를 위해서도 어떤 형태로든 자유롭게 사용할 수 있도록 BSD 라이센스를 따르는 프로그램과 운영체제가 있습니다. 이들 운영체제에서는 라이센스료를 지불할 필요도 없지만, 파생 저작물의 소스 코드를 공개해야 할 의무도 없습니다. 그러니 기업의 입장에서는 충분한 고려하에 적절한 라이센스를 채택하는 것이 중요합니다. 지금처럼 GPL 자체의 모호성을 문제로 삼는 것은 GNU/리눅스 오픈소스 공동체를 위협하는 결과밖에 초래하지 않는다고 봅니다.
한국 BSD 사용자 포럼
[quote="chief1976"]'3. For an executable
"일반적인 모듈"이라는 건 커널 모듈도 포함합니다. 게다가 GPL이 리눅스를 염두에 두고 만들어진 라이센스라는 것은 의미가 없고(미래에 나올지 안나올지 모르는 프로그램을 염두에 두고 만든 라이센스란 세상에 존재할 수가 없습니다), 리눅스가 GPL을 염두에 두고 만든 프로그램이라는 게 중요한 거죠. 그리고 예를 들어 방화벽 기능을 커널 모듈로 제공해서 커널과 함께 판매를 했는데, 모듈이 없으면 당연히 방화벽 기능을 사용할 수가 없겠죠? 그러니 그 경우 "모듈이 없으면 커널 사용이 불가능한 건" 당연한 얘깁니다.
커널은 라이브러리가 아닙니다. 커널은 컨텍스트를 가진 하나의 프로세스죠. 임의의 용어를 자의적으로 재정의해서 증거로 삼으신다면 곤란합니다.
그리고 인용하신 "How can I allow ..." 부분은 예외를 허용하기 위한 문구를 명시적으로 삽입하도록 요구하고 있습니다. 아시다시피 리눅스 커널에는 그런 예외 허용 문구가 없습니다.
만약 그 말씀이 맞다면 처음부터 커널 모듈을 만들 필요도 없습니다(GPL 자체가 무효니까). 그냥 커널안에다 기능을 구현해서 소스 공개 안하고 한덩어리로 팔면 되죠. 커널 모듈로 따로 만들어서 판매했다는 행위 자체가 GPL의 제약을 충분히 인지하고 있었다는 얘기죠. 그럼 앞뒤가 안맞습니다. 어차피 법적 효력이 없는 라이센스라는 걸 확신하는데 그걸 피해가기 위해 노력을 강구할 필요가 없죠.
그리고 중요한 것으로 호혜성의 원칙이 있습니다. 업체들이 윈도나 상용 유닉스를 안쓰고 리눅스를 쓰는 것은 라이센스 비용이 없기 때문입니다. 그러나 라이센스 비용을 안무는 대신 소스 코드를 공개하는 의무가 주어지는 것이죠. 소스 코드를 공개하기 싫다면 리눅스용 커널 모듈을 안만들면 됩니다. 대신 상용 OS용 커널 모듈이나 디바이스 드라이버만을 만들면 됩니다. 또한 "나는 라이센스료를 물기도 싫지만 소스 코드를 공개하고 싶지도 않다" -- 이건 저작권법 자체의 정신에도 어긋납니다. 어차피 저작권법이라는 게 휼륭한 작품을 만든 저작권자에게 어떤 형태로든 보상을 하기 위해 만든 법인데 가져다 쓰고도 아무 대가를 지불하지 않는다면 법 자체가 유명무실해지겠죠.
그러나 그런 경우를 위해서도 어떤 형태로든 자유롭게 사용할 수 있도록 BSD 라이센스를 따르는 프로그램과 운영체제가 있습니다. 이들 운영체제에서는 라이센스료를 지불할 필요도 없지만, 파생 저작물의 소스 코드를 공개해야 할 의무도 없습니다. 그러니 기업의 입장에서는 충분한 고려하에 적절한 라이센스를 채택하는 것이 중요합니다. 지금처럼 GPL 자체의 모호성을 문제로 삼는 것은 GNU/리눅스 오픈소스 공동체를 위협하는 결과밖에 초래하지 않는다고 봅니다.
한국 BSD 사용자 포럼
"게다가 GPL이 리눅스를 염두에 두고 만들어진 라이센스라는 것은 의미가
"게다가 GPL이 리눅스를 염두에 두고 만들어진 라이센스라는 것은 의미가 없고(미래에 나올지 안나올지 모르는 프로그램을 염두에 두고 만든 라이센스란 세상에 존재할 수가 없습니다), 리눅스가 GPL을 염두에 두고 만든 프로그램이라는 게 중요한 거죠"
->제가 쓴 글을 제대로 이해하신 후에 답글을 달아 주셨으면 합니다. 'GPL이 리눅스를 염두에 두고 만들어진 라이센스'라는 것은 당연히 의미가 없죠. 저는 그런 의도로, 그리고 그런 표현을 사용한 적이 없습니다. 또한 'Reble Code: Linux and the open source revolution(Glyn Moody)"이라는 책은 보시면 토발즈는 리눅스 공개 시 여러 라이센스 중 하나인 GPL을 선택한 것이지, 처음부터 리눅스가 GPL을 염두에 두고 만든 프로그램은 아닙니다.
"예를 들어 방화벽 기능을 커널 모듈로 제공해서 커널과 함께 판매를 했는데, 모듈이 없으면 당연히 방화벽 기능을 사용할 수가 없겠죠? 그러니 그 경우 "모듈이 없으면 커널 사용이 불가능한 건" 당연한 얘깁니다."
-> 위에서 드신 예처럼, 모든 경우에 사용자가 필요로 하는 모든 프로그램을 함께 제공해야 하는 것은 아닙니다. 즉, 기본 커널은 제공하고 방화벽 기능이 필요한 고객에게만 따로 판매하면 되는 것이지요. 반례로 QT Window System위에 돌아가는 Application을 사용하는 사용자에게 무조건 QT Window System까지 함께 제공해야 할 의무는 없잖아요?
"커널은 라이브러리가 아닙니다. 커널은 컨텍스트를 가진 하나의 프로세스죠. 임의의 용어를 자의적으로 재정의해서 증거로 삼으신다면 곤란합니다."
->'커널은 프로세스가 아니라 일종의 라이브러리이다'라는 표현은 제가 임의로 정의한 것이 아니라 'Linux System Programming Bible'의 저자 권수호씨께서 하신 말씀입니다. 방준영님께서 얼마나 리눅스 개발 경험이 많으신지 잘 모르겠지만, 리눅스 관련 책의 저자이자 오랜 경험을 갖고 있는 분의 의견을 인용한 것입니다. 그리고 잘 모르시면 확실히 알아본 후에 의견을 밝히시는 것이 좋을 듯 합니다.
"만약 그 말씀이 맞다면 처음부터 커널 모듈을 만들 필요도 없습니다(GPL 자체가 무효니까)." "어차피 법적 효력이 없는 라이센스라는 걸 확신하는데 그걸 피해가기 위해 노력을 강구할 필요가 없죠."
-> 저는 GPL 자체가 무료하고 얘기한 적이 없습니다. 그럴 소지가 충분히 있다는 것을 밝혔을 뿐이며 있는 그대로의 사실을 애기한 것입니다. 자의적 해석을 통한 비약이 너무 심하신 것 같습니다.
"업체들이 윈도나 상용 유닉스를 안쓰고 리눅스를 쓰는 것은 라이센스 비용이 없기 때문입니다"
->혹시 GPL 전문 한 번 보셨나요? 리눅스는 돈을 받고 팔 수도 있습니다. GPL 자체에서 명문으로 그것을 허용하고 있습니다. 그리고 현재 많은 대기업들이 리눅스 업체와 라이센싱 계약을 맺어 사용하고 있습니다.
"지금처럼 GPL 자체의 모호성을 문제로 삼는 것은 GNU/리눅스 오픈소스 공동체를 위협하는 결과밖에 초래하지 않는다고 봅니다."
->GPL의 모호성을 문제 삼는 것이 아니라, 좀 더 명확한 해석을 통해 오픈 소스의 발전을 꾀하자는 것입니다. 명확한 해석없이 어떻게 오픈 소스의 발전이 있을 수 있겠습니까?
[quote="chief1976"]"게다가 GPL이 리눅스를 염두에 두고
처음부터 GPL을 염두에 두었는지 여부는 문맥과 관련이 없습니다. 물론 저는 처음부터라는 단서를 달지도 않았습니다만. *지금* GPL을 따르면서 만들고 있다는 게 중요한 거죠.
그런데, 지금 *실제로* 그렇게 하고 계십니까? 리눅스 커널의 종류가 무수히 많은데 커널 모듈만 따로 공급한단 얘기는 상상하기가 힘들군요.
그랬다면 그분이 잘못 알고 계신 겁니다. 그리고 제가 누구이고 무슨 일을 했는지는 구글 검색 엔진으로 찾아보시면 되겠습니다. "잘 모르면서 아는 체한다"같은 뉘앙스를 풍기는 표현은...글쎄요, 좀 위험한 것이 아닌가 싶네요.
일하고 계신 업체에서 오픈 소스 발전을 위해 무엇을 했는지 소개해 주실 수 있나요? 그리고 GPL의 허점을 발견해서 비GPL 커널 모듈을 합법적으로 배포할 수 있게 되면 오픈 소스의 발전에 어떻게 도움이 되는지 이해할 수가 없습니다.
물론 저와의 논쟁에서 이기든 지든 변하지 않을 사실은 리누스 토발즈는 여전히 비GPL 커널 모듈을 허용하지 않을 거란 점입니다. 그러니 커널 모듈을 합법적으로 배포하시겠다면 일단 법원에 GPL 무효 소송을 청구하는 것이 가장 빠른 방법이 될 겁니다.
한국 BSD 사용자 포럼
얘기가 본의 아니게 이상한 방향으로 흘러가고 있는 듯한 느낌이 듭니다.
얘기가 본의 아니게 이상한 방향으로 흘러가고 있는 듯한 느낌이 듭니다.
암튼 몇 가지 더 말씀드리겠습니다.
"리눅스 커널의 종류가 무수히 많은데 커널 모듈만 따로 공급한단 얘기는 상상하기가 힘들군요."
->커널 모듈의 대표적인 예가 D/D임을 잘 알고 계시겠죠? 그렇다면 상용 D/D업체들이 Binary Only Module만을 따로 판매하고 있다는 사실도 아실테구요..그리고 커널 모듈만 따로 제공한다는 얘기는 그 모듈이 동작하기 위해 필요한 커널은 당연히 GPL이므로 기본적으로 제공됨은 상식이라 생각합니다. 하나 더 말씀드리자면 저는 회사입장에서 이 글을 쓰고 있는 것이 아님을 밝혀 둡니다.
"그랬다면 그분이 잘못 알고 계신 겁니다. 그리고 제가 누구이고 무슨 일을 했는지는 구글 검색 엔진으로 찾아보시면 되겠습니다"
->지금 글을 쓰고 계신 분이 누구이고 어떤 일을 했는지는 중요한 것이 아닌 듯 합니다. 중요한 것은 사실이지요. 그리고 기술 뿐만 아니라 모든 분야에 있어서 단정적으로 어떤 분의 의견이 아니라는 얘기는 해서는 안된다고 생각합니다. 하나 더 질문을 드리자면 '커널이 컨텍스트를 가진 프로세스이다'에 대한 나름대로의 논리적 근거가 무엇인지요?
"잘 모르면서 아는 체한다"같은 뉘앙스를 풍기는 표현은...글쎄요, 좀 위험한 것이 아닌가 싶네요."
-> 그런 의미로 전달되었다면 사과드립니다. 하지만 "커널은 라이브러리가 아닙니다. 커널은 컨텍스트를 가진 하나의 프로세스죠. 임의의 용어를 자의적으로 재정의해서 증거로 삼으신다면 곤란합니다.(이전 글)"의 경우 역시 저에게는 마찬가지 의미로 들립니다. '커널이 하나의 프로세스'라는 것 역시 방준영님의 개인적 의견 아닌가요?
"일하고 계신 업체에서 오픈 소스 발전을 위해 무엇을 했는지 소개해 주실 수 있나요? 그리고 GPL의 허점을 발견해서 비GPL 커널 모듈을 합법적으로 배포할 수 있게 되면 오픈 소스의 발전에 어떻게 도움이 되는지 이해할 수가 없습니다"
->사고의 다양성을 인정하시기 바랍니다. Kernel Module이 GPL이 아니라고 해서 오픈 소스 발전이 반드시 저해되는 것은 아닙니다. 일례로 D/D에 대한 상업적 개발이 가능하다면 그 만큼 다양한 D/D가 적기에 공급될 수 있을 것입니다. 물론 이는 방준영씨와 같은 개발자들에게는 좋은 일이 아닐 수도 있지만, 일반 사용자의 입장에서 생각해 보시기 바랍니다. 일반 사용자의 입장에서는 소스 코드의 제공보다 더 중요한 것은 다양한 Application 또는 D/D 제공일 것입니다. 소스 코드가 제공되었을 때 이를 원하는 대로 고쳐쓸 수 있는 사람들이 과연 얼마나 되리라 생각하십니까? 진정으로 오픈 소스의 발전을 위해 일하셨고 앞으로도 그럴 생각이시라면 개발자의 사고를 한 번쯤 벗어나는 것도 좋으리라 생각합니다.
"리누스 토발즈는 여전히 비GPL 커널 모듈을 허용하지 않을 거란 점입니다"
->제가 앞에서도 언급했지만 토발즈는 법적인 측면에서 볼 때 리눅스의 수많은 저작권자 중 한 명에 불과합니다. 토발즈의 언급이 곧 법이 되는 것은 개발자 세계에서나 가능하리라 생각합니다.
"그러니 커널 모듈을 합법적으로 배포하시겠다면 일단 법원에 GPL 무효 소송을 청구하는 것이 가장 빠른 방법이 될 겁니다."
->저는 본 게시판을 통해 Kernel Module이 GPL이 아닐 수도 있다라는 생각을 얘기하였습니다. 비약이 좀 심한 것 같군요.
그리고 하나 더 말씀드리자면, 방준영씨처럼 오픈 소스 커뮤니티에서 직접 개발에 참여하는 사람만이 오픈 소스를 위하는 것은 아닙니다. 다양한 계층의 참여가 있을 때에만 진정한 오픈 소스 발전이 가능하리라 생각합니다만...
[quote="chief1976"]"일하고 계신 업체에서 오픈 소스
소스 코드가 제공되지 않는 것은 장기적인 관점에서 보면 개발자가 아닌 일반 사용자에게도 해가 된다고 생각합니다.
----------------------------
May the F/OSS be with you..
[quote="chief1976"]"리누스 토발즈는 여전히 비GPL 커널
리눅스 커널의 패치를 linus에게 보낸 사람들은 비 gpl 커널 모듈 허용하지 않는다는 것에 동의를 했다고 봐야 할겁니다.
수 많은 저작권자 중의 한 명이 아니라... 커널 개발에 참여한 사람들은 비 GPL 커널 모듈을 원하고 그래서 GPL을 적용했다고 봐야 한다고 생각합니다.
- 죠커's blog / HanIRC:#CN
nVidia의 kernel module이 어떤 방향으로 흘러가냐에 따라
nVidia의 kernel module이 어떤 방향으로 흘러가냐에 따라 결론이 나겠군요...
There is no spoon. Neo from the Matrix 1999.
한 가지 확실한 것은 코어 칩을 제작하는 회사가 아니고서는 디바이스 드라
한 가지 확실한 것은 코어 칩을 제작하는 회사가 아니고서는 디바이스 드라이버를 공개하기 꺼림직스럽다는 것이죠.
코어 칩을 만든 회사야 많이만 팔면 되지만, 그거 사다가 뭔가 만들어서 파는 회사의 입장에서는 무장해제나 다름없는 디바이스 드라이버 소스의 공개가 쉬울까요?
코어 칩도 코어 칩 스펙만 정확히 다 있으면 똑같이 만드는 세상인데,, 결국 원가 경쟁을 해야 한다는 건데 그런 세상이 올까요?
제 생각은 근본적으로 그것이 만약 불가능하다 하더라도 앞으로 수 년간은 아무도 그것을 가지고 트집잡지는 않을 거 같군요... 지금까지 그래왔듯,,
지금 당장 그것을 불가능 하게 한다면, 리눅스는 앞으로 영원히 침범(?)할 수 없는 영역이 생기고 말테니 깐요(주관적인 생각입니다^^)..
간단한 예를 하나 들어보죠. 어떤 회사에서 몇 억짜리 장비(과장이 넘 심한가^^)를 팔고 있습니다. 이 회사는 한 달에 하나 팔아서 먹고 삽니다. 근데, 이 회사에서 서비스 차원에서 리눅스도 지원하려 하는데,, 이 경우 이 회사는 라이센스 문제로 인해 결국, 윈도만 지원할 수 밖에 없게 되겠죠. 저는 이런 장비들도 리눅스에서 사용하고 싶은 데 말이죠..
사실 지금 싸구려(?) 2000마넌 짜리 데이터 수집보드로 프로젝트 진행중인데,, 이 녀석이 리눅스를 지원하지 않아 머리털 나고 처음으로 vs6라는 넘 깔짝되고 있는데,, 앞으로도 이런 보드는 리눅스에서 사용하기 힘들겠구나 하는 생각에 횡설수설 했습니다... 쩝... 근데, 생각보다 윈도도 썩 쓸만하군요..