GPL 소프트웨어 바이너리는 다운로드, 소스 코드는 우편만 제공해도 되나요?

slomo의 이미지

LG 넷하드의 경우인데요. 바이너리는 고객지원센터에서 바로 다운로드 받을 수 있고
판매할 때 함께 포함된 CD에도 들어있지만 소스 코드는 메일을 보내면 CD-ROM에
담아서 보내주겠다고 합니다. 그렇게 해도 되는 것인가요? 그냥 함께 올려놓으면
편할텐데...

http://www.lge.co.kr/brand/nethard/support/NethardQnaDetailCmd.laf?brand=NETHARD&mncode=NETHARD_QNA&seq=2149

저희는 GPL을 준수하기 위해 노력하고 있으며 매뉴얼 및 CD에 사용된 GPL 프로그램과 GPL 라이센스 원문을 포함하고 있으며
소스를 받으실 수 있는 방법 또한 매뉴얼에 기재되어 있습니다.
다음은 매뉴얼에 기재되어 있는 내용입니다.
다음 e-mail을 통해 LG 전자에 소스 코드를 요청하실 경우 매체 비용, 운반비 등 제공에 필요한 제반 비용을 받고 CD-ROM에 담아 보내 드리도록 하겠습니다. :
opensource@lge.com
감사합니다.

neocoin의 이미지

그냥 소스 코드를 받는 장벽을 높인거죠. GPL2 가 작성될때 인터넷이 흔하지 않은 시절이라 그렇게 정의해놨습니다. 그걸 이런 식으로 사용하는거겠죠.

한마디로 GPL2 라면 그래도 됩니다. ;;

cwryu의 이미지

이럴 수록 진짜로 요청해서 귀찮게 해야 바뀝니다. 돈 주고받고 우편 보내는 일도 번거로운 일이지요.

3,4000원 정도면 되겠군요.

dg의 이미지

방금 펌웨어를 다운로드 받았는데 GPL이나 소스코드 관련된 내용을 전혀 고지받지 못했습니다. 과연 펌웨어에 GPL 소프트웨어가 전혀 포함되지 않은 것일까요?

Lipi의 이미지

아래의 사이트에서 Data Storage로 Category를 정해서 검색하면 넷하드 관련 소스 파일을 구하실 수가 있습니다.
넷하드뿐만 아니라 TV 및 Android폰 관련 등 공개해야 하는 소스 파일은 여기서 구하실 수가 있을 겁니다.

http://opensource.lge.com

참고로 삼성전자 Open Source사이트도 링크 걸어 놓을 게요.

http://opensource.samsung.com

dg의 이미지

넷하드 소스파일을 받아봤는데 단지 사용된 GPL 소프트웨어의 소스코드를 모아놓 것에 불과합니다. 이걸로 GPL을 준수했다고 보기 힘들것 같습니다. 펌웨어를 빌드할 수 있을 정도로 제공 되어야 된다고 봅니다. GPLv3 Section 6에서는 다음과 같이 명시적으로 규정하고 있습니다. (LG 넷하드에 사용된 소프트웨어중 GPLv3로 배포된 것이 있습니다.)

"Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

그리고 앞에서 언급했듯이 펌웨어를 배포하면서 GPL에 관련된 사항을 고지 안한것도 잘못이라고 생각합니다.

cwryu의 이미지

위 상황을 설명하고 문제를 제기해 보세요. 아마도 GPLv2 기준으로 전략을 짜 놓은 모양이군요.

gplv3 쓸 만한 소프트웨어는 아마도 samba 신버전일 것 같은데, 그러면 말씀대로 수정된 버전을 적용할 방법을 제공해야 합니다.

dg의 이미지

GPLv2 기준으로 보더라도 GPL 위반이 맞는거 같네요.
일단은 제가 다운로드 받은 펌웨어의 소스코드를 요청했으니 응답을 기다려 보지요.

cwryu의 이미지

펌웨어 다운로드할 때 고지를 안 했다는 사실은 그렇지요.

dg의 이미지

고지의 문제 뿐이 아닙니다. GPLv2의 경우라도 펌웨어의 소스코드를 제공해야지 펌웨어에 사용된 GPL 소프트웨어의 소스코드만을 제공하는 것은 GPL을 위반한 것입니다.

cwryu의 이미지

아니요. 잘못 알고 계십니다.

"소스코드를 제공해야 하는 의무"를 엄밀히 말하면 GPL에 "derived works"에 대해 같은 라이선스로 배포되어야 한다고 쓰여 있는 부분인데요. (GPLv3에서는 좀 더 명시적으로 정의되어 있습니다.) 한 바이너리로 (혹은 라이브러리로) 링크되는 것이 아니라 단지 파일시스템에 같이 설치되서 연동되서 돌아가는 것이라면 derived works의 범위로 보지 않습니다. 리눅스 배포판 모두가 모두 GPL이 되지도 않고, 지금까지 리눅스로 만들어진 GPL을 준수하는 수많은 전자제품이 그래 왔습니다.

dg의 이미지

제가 받은 펌웨어는 하나의 바이너리 파일로 되어 있었습니다. 단지 같은 파일시스템에 설치된게 아니라 하나의 바이너리로 링크되는 것에 더 가깝다고 봅니다. 수많은 전자제품이 그래왔다면 사례를 좀 알려주세요.

벨킨의 오픈소스 페이지인데요
http://www.belkin.com/support/opensource/
각 제품의 펌웨어 버젼마다 소스코드가 제공되고 그 소스코드로 펌웨어를 빌드할 수 있습니다. 님의 입장에 따르면 사용된 GPL 소프트웨어들의 소스 각각을 모아서 제공하기만 하면 되는데 벨킨은 하지 않아도 되는 일을 하고있나봅니다. (보시면 대부분 GPL 버젼 2에만 해당됩니다)

cwryu의 이미지

배포되는 파일이 1개라고 링크됐다고 부르는 게 아닙니다. 한 개의 바이너리로, 혹은 동적 라이브러리르 통해 1개의 메모리스페이스에서 돌아간다는 것이지 배포하는 포맷이 파일 1개라고 링크라고 부르는 게 아닙니다. 티보가 그렇고 공유기가 그렇고 안드로이드 휴대전화가 그렇고 전자제품 펌웨어 배포 파일은 1개입니다. 거기에 리눅스 들어 있다고 소스가 다 공개되어 있지는 않습니다.

리눅스 배포판 ISO 파일로 배포하면 거기 들어 있는 게 전부 GPL이어야 합니까?

GPLv3의 경우에는 빌드해서 적용할 수 있는 방법을 제공해야 합니다. 명시적으로 그런 의무 조건이 있으니까요. 하지만 GPLv2는 없습니다.

네 벨킨은 안 해도 되는 일을 하는 것 같네요. GPL 때문에 공개한 소스들 찾아 보십시오.

dg의 이미지

제 말은 1개의 파일로 배포됐다고 링크라고 주장하는게 아닙니다. 단지 링크쪽에 더 가깝다고 했을 뿐입니다. 아래 얘기는 GPLv2 기준입니다.

링크쪽에 더 가깝다고 한것은 펌웨어 파일에서 어느부분이 GPL의 의무사항이 적용되지 않는 부분인지 식별 가능한가... 그리고 그 부분이 GPL소프트웨어와 독립된 소프트웨어로 인정할 수 있는가... 하는 측면에서 그렇게 말한 것입니다. 이 두가지가 충족되면 GPL소프트웨어와 GPL아닌 소프트웨어를 같이 배포하면서 전체에 GPL이 강제되는 것을 방지할 수 있습니다. GPLv2에 다음과 같은 내용이 있습니다.

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.

상업적 소프트웨어가 포함된 리눅스 배포판의 경우에는 GPL 소프트웨어와 상업적 소프트웨어가 각기 다른 파일에 들어있기 때문에 쉽게 구분할 수 있습니다. ISO파일 하나로 배포되더라도 ISO파일 내부에 어떠한 파일들이 있는지 들여다 보는 것은 매우 쉽습니다. 그리고 포함된 상업적 소프트웨어는 GPL 소프트웨어와 완전히 독립적으로 동작하거나 표준적인 시스템콜, 소켓, 파이프 등 일반적으로 독립적인 프로그램 사이의 통신방법으로 인정되는 방법으로만 연동되므로 GPL소프트웨어와 독립적인 프로그램으로 인정 됩니다.

안드로이드의 경우는 리눅스 커널만 GPL입니다. 안드로이드 폰에서 수정된 커널을 돌리는게 가능하다고 하니 펌웨어 파일에서도 리늑스 커널과 나머지를 구분가능하지 안나 생각됩니다.

공유기의 경우는 제가 앞서 올린 벨킨 링크에서 소스코드를 받아보면 펌웨어 까지 빌드가능한 전체 소스가 공개되어 있습니다. 제 주변에는 링크시스 공유기 펌웨어 소스를 받아서 수정하여 수정된 펌웨어를 돌렸다는 얘기를 들었네요. Dlink도 비슷한 수준으로 공개되고 있는거 같습니다.

티보의 경우에는 디지털 서명같을것을 사용하여 하드웨어 자체가 수정된 펌웨어가 동작하지 못하도록 해서 문제가 되었는데 그얘기는 수정된 펌웨어를 빌드하는데는 문제가 없었다는 얘기인것 같군요.

언급한 사례를 일일이 확인하기 어려우니 소스코드 받을 수 있는 링크 포함해서 사례 하나만 들어주시면 안될까요? 수많은 전자제품이 그래왔다면 그런 사례 하느쯤은 있을거 아닙니까?

제가 받은 LG전자 넷하드 펌웨어는 ISO처럼 널리 알려진 형식으로 되있는것이 아닌거는 확실하네요. 펌웨어가 빌드 가능한 소스가 있었다면 빌드과정을 추적하면 알 수 있겠지만요. 그렇다고 리버스 엔지니어링 하자니 저작권법 위반인것 같고... 따라서 이런 경우는 GPLv2에 따르면 전체에 GPL이 강제되는 경우라고 봅니다.

cwryu의 이미지

대충 삼성을 골라서 보면,

http://opensource.samsung.com/

수백개 되는데 적당한 제품을 골라서 펌웨어 이미지까지 빌드할 수 있는지 살펴보세요.

안드로이드 파일은 커널 뿐만 아니라 webkit (LGPL), bluez (GPL) 코드가 공개 대상이고 파일 1개 안에 다 들어있습니다.

dg의 이미지

삼성 TV

LA32B650
LA32B750
LA40B650
LA40B750
LA46B650
LA46B750
LA52B650
LA52B750

모델 버젼 1000의 소스파일 10_LA40B750.zip을 받아본 결과 빌드해서 펌웨어에 적용하는 방법까지 설명되어 있습니다.

cwryu의 이미지

이 문제는 예제로 그렇다 아니다, 연구한다고 판단할 수 있는 성격이 아닙니다.

제 말이 미덥지 않으시면 연구하지 마시고 직접 전문가에게 문의해 보세요. 저도 가끔 SFLC 주소로 메일을 보냅니다. http://softwarefreedom.org/about/contact/

rexos33의 이미지

"펌웨어를 하나의 바이너리로 연결된 파일로 볼 것인가?"에 대해서도 논란의 여지는 다분합니다. 대부분 패키지들은 다수의 파일을 하나의 파일 스트림으로 아카이빙/압축(tar) 또는 (파일 시스템 또는 물리적) 논리 이미지 형태로 만드는게 일반적입니다. 언급한 ISO 이미지도 일종의 파일 시스템 이미지의 일종입니다. 그리고 "특정 회사에서 고유의 업그레이드 패키지를 사용한다고 해서 그 자체의 파일 구조를 공개해야 된다"는 이슈는 GPL 라이센스의 범위를 넘어서는 사항이라 생각합니다. ex) 오픈소스 워드로 작성한 문서도 공개해야 한다???

다른 이슈입니다만 "특정 제품을 판매하고 사용자 스스로 진행할 수 있는 업그레이드 펌웨어 패키지를 제공하지 않는다고 하여 GPL 라이센스 위반이라고 할 수 있는가?"에 대한 질문입니다.
또한가지로 "사용자 스스로 공개소스 소프트웨어를 수정하여 적용할 수 있는 방법 제공"에 대해서 제품의 생산 비용 및 기타의 이유로 하드웨어적 수정 및 지원이 없으면 적용이 불가능 한 경우에도 GPLv3 라이센스 위반인가?

위 벨킨社의 상기와 같은 지원 정책은 (개인적인 추측으로는) GPL 오픈소스 소프트웨어 개발 커뮤니티 활동에 적극 가담하여 GPL 진영에서 유리한 입지를 굳히기 위한 전략적인 행위라고 생각됩니다. 즉, GPLv2 라이센스를 뛰어 넘는 행위이라 생각됩니다. 이는 벨킨社 처럼 동일하게 하지 않았다고 하여 GPL 라이센스 위반이라고 하는 것은 무리입니다.

사족이지만 개발자로서 모든 회사가 친 GPL 적인 환경이라면 좋겠지만, 안탑깝게도 그렇지 못한 상황입니다. (물론 안그런 회사도 있겠지요.) 이러한 실정에도 불구하고 많은 개발자들는 생산된 결과물에 대한 (1차적) 법율적인 검토와 소스공개 방법, 수정에 따른 업데이트, 배포등을 많은 부분 담당하게 되는데, 영세한 기업에서는 이는 다소 과중한(?) 업무로 돌아오는 경우가 많습니다. 물론 그런걸 하기 싫으면 GPL 소프트웨어를 사용하지 말아야 한다고 하면 할말이 없습니다. (그러나 과연 GPL이 지향하는 철학 배경이 과연 이것인지 회의가 들겠지요...)

제가 볼땐 "GPLv3 라이센스의 소스코드 배포와 빌드 및 적용 방법의 공개에 관한 항목들"은 어떤 측면에서는 중소기업에는 불리하고 대형 및 대자본의 기업에 종속시키는 결과를 가져오지 않을까하는 우려도 듭니다. 누구나 접근가능한 소스코드 배포와 빌드/적용(업그레이드) 방법 제공은 대기업은 그동안 확보한 기술력과 축척된 자본으로 손쉽게 제공할 수 있지만 중소기업은 축적 기술과 자본 모두 부족하기 때문에 살아남기가 힘들겠지요.

그리고 "한국의 대형 IT 기업이 오픈소스 코드를 (요즘도 그러한지는 모르겠지만) 많이 사용해서 돈도 많이 버는데 오픈소스 커뮤니티에 기여도는 왜 그렇게 미미한가?"라고 비난할 수는 있겠습니다.

모두들 행복하세요~

dg의 이미지

"펌웨어를 하나의 바이너리로 연결된 파일로 볼 것인가?" 에 대해서 논란을 벌일 필요는 없다고 봅니다. GPLv2에 명시되어 있는 데로 GPL이 적용되지 않는 부분을 인식할수 있느냐 없느냐면 따지면 됩니다. 앞의 제 댓글을 보시기 바랍니다. 언급하신 것처럼 경우에 따라서는 GPL을 준수하는 것과 패키징 형식을 비공개로 하는것 두가지는 동시에 이룰수 없을수도 있습니다. 그렇다고해서 이것이 GPL의 범위를 넘는다고 생각하지 않습니다. 예로 드신것도 잘못되었습니다. GPL 소프트웨어의 출력 결과물을 derived work로 보지는 않습니다. 문제가 되는 경우는 GPL 소프트웨어 또는 GPL 소프트웨어의 derived work일 경우 뿐입니다.

GPLv3에는 펌웨어가 ROM으로 되어 있다거나 하는 경우에는 수정된 버젼을 적용하는 방법을 제공할 의무가 면제됩니다. 하지만 요새 많은 제품들이 펌웨어 업데이트를 지원하니 사용자가 수정된 펌웨어를 적용가능하게 하는것도 별로 어렵지 않다고 봅니다.

네. 제가 주장하는 것도 벨킨하고 똑같이 안해서 문제라는 것이 아닙니다. 제 글을 다 읽어보시면 아실겁니다.

회사에서는 GPL을 준수하는데 드는 비용도 있겠지만 GPL 소프트웨어를 사용하므로서 절감되는 비용도 있겠지요. 그리고 회사 내부 빌드 트리를 공개용으로 만드는데 한두사람이 하루이틀 정도 작업하면 되지 않나요? 중소기업에 특히 불리하다고 생각되지도 않네요. GPL에서 지향하는 바는 소프트웨어가 최대한 자유로운 상태로 되는것이지 기업들에 별 부담없이 영리추구에 사용될수 있게 하는것이 아니라고 봅니다. 후자를 추구하는 오픈소스 개발자라면 BSD계열 또는 그와 비슷한 라이선스로 배포하면 됩니다.

rexos33의 이미지

제가 이야기하고 픈 본연의 의미는 특정 "패키징 파일 형식"이 파생 작업(derived work)도 아니고 GPL 오픈소스 공개와도 무관하다는 겁니다.

"GPL을 준수하는 것과 패키징 형식을 비공개로 하는것 두가지는 동시에 이룰수 없을수도 있습니다."

님의 위 말씀하신 것 처럼...

패키징 형식을 공개해서 일관성 있게 패키징 하는 방법을 제공해주기가 어려울 것입니다. 내부 사정상 갑자기 형식을 변경할 필요도 있으니깐요.
설령 개발 담당자가 하고 싶어해도 윗분들은 하지 말라고 하겠지요.

그래서 패키징 파일의 구조를 공개하지 않고, 패키징하는 방법 또는 관련 툴을 지원하지 않는다고 GPLv2를 위반한 것이 아니라고 생각됩니다.

그러므로 "GPL 오픈 소스코드 사용목록과 소스코드 자체를 공개하고 그것을 패키지 빌드/적용 하는 것"과 "펌웨어 업그레이드 패키지"와는 관련성이 없다라는게 의견입니다.
아울러 "요즘 일반적으로 업그레이드를 대부분 지원한다." 그리고 "별로 어렵지 않아서..."라는 이유로 패키징/적용 방법을 제공해야 한다는 주장은 지나치게 주관적이라 생각됩니다.

이들 GPL 라이센스에 해당하는 오픈소스와 사용한 내역들을 공개하는 방법은 크게 3가지로 할 수 있을 것 같습니다. 첫째 매뉴얼에 표기하여 사용자로 하여금 온/오프라인으로 요청할 수 있게 하거나, 둘째 제품 CD 포함(이는 업그레이드로 인해서 일부분 누락이 될 수도 있으니 바람직하지 않겠지요), 셋째 제조/제작사社 웹사이트 내, 해당 제품관련 정보에 오픈소스 사용 목록을 제공하고 각각의 소스를 받을 수있게 제공하면 될 것 같습니다. 그러나 이런 경우에도 허점은 있습니다. 가령 ODM/OEM 업체라면 자신의 상표로 판매하는 업체가 해주지 않으면 해줄 수가 없습니다. 왜냐하면 대부분의 판매사는 ODM/OEM 업체가 알려지는 것을 싫어합니다. 이런 경우 GPL 라이센스 소송을 걸면 대략 난감합니다.

그리고 마지막으로 기업체에 근무하지 않는 개발자수가 과연 얼마나될까요?
(이미 알고 있지만서도...) "소프트웨어가 최대한 자유로운 상태가 되는 것"라고 덫붙이시니, 불현듯 기업체에서 일하는 저와 같은 많은 소프트웨어 개발자들에게는 풀수없는 패러독스 빠지는 것 같아 씁쓸하네요.
고용된 소프트웨어 개발자들도 다른 분야의 노동자들 처럼 먹고 살아야 합니다. 그래서 특정 노동을 제공하고 급여를 받고 급여는 제품을 팔아야 나오니.... 물론 의사나 변호사 또는 공무원, 기타 직업을 하면서 개발할 수도 있겠지요... ( ㅡ.ㅡ")

모두들 행복하세요~

slomo의 이미지

감사합니다.

그런데 저는 Data Stroage에서 N4B1 모델을 받았는데 압축을 풀다가 에러가 나네요. 다시 해봐야겠습니다.

====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas

dg의 이미지

아.. 그리고 GPLv3에 따르면 바이너리는 다운로드 받을 수 있게 하면서 소스코드는 우편으로만 제공하는것도 잘못입니다.