GPL 라이센스에 대해서 궁금합니다.

topia의 이미지

* http://debianusers.org/jsboard/read.php?table=qna&no=28439&page=2
(데비안유저 홈페이지 질문과 답변 링크입니다.)
위 글을 보고 GPL 라이센스의 범위에 대해 궁금증이 많이 생겼습니다.
(특히 gcc의 경우 어디까지가 GPL이 적용되는지 이해가 잘 가질 않습니다.)
개발자는 전혀 아니고, 일반 리눅스 유저에 해당합니다. gcc 와 GPL라이센스 관계에 대해서 궁금해서 질문드리게 되었습니다.

---1---
* GPL컴파일러인 gcc로 자신이 만든 source를 컴파일했다면
결과물(binary)이 무조건적으로 GPL라이센스가 되어야 하는지.
-------------------------------------------------------

리눅스용 gcc로 이용한(컴파일한) 프로그램은 자동적으로 GPL 라이센스가 되는 겁니까?
(qmail 소스를 gcc로 컴파일했다고 해서 GPL이 되지는 않지 않나요?)

gcc 컴파일러 자체에 변경을 가하지 않았고, GPL 라이브러리를 사용하지 않았다면,
gcc로 만든 결과물이 GPL이 되지 않아도 상관없는게 아닌지요.
(gcc가 가장 표준에 근접한 컴파일러라고 들었는데, 그 표준이라는 것이 GPL 라이센스는 아니지 않나요?)

gcc를 이용한다는 것이
gedit 처럼 gcc 컴파일러 자체는 변경하지 않고 gcc로 결과물을 만들어 내는 것으로 생각되는데,
GPL 관점에서 다르다면 둘의 차이점을 어떻게 알고 있으면 될지요.
(만약 gcc를 이용한 결과물이 GPL을 적용받는다면, gcc의 라이브러리 때문인가요?)

질문의도는 gcc 컴파일러를 이용해서 컴파일하여 결과물(binary)을 만들어 낼때,
결과물도 GPL이 적용되는지 입니다.
(제가 초보적으로 알고 있기론 GPL로 만들어진 소스 자체를 수정해서 재이용할 때나
이미 개발되어 있는 GPL 관련 다른 라이브러리를 포함하여 개발된 프로그램의 경우
수정,추가된 부분도 같이 GPL이 추가적으로 적용되는지로만 알았습니다.)

* 리눅스용 아래아 한글은 어떤 컴파일러를 이용했나요?

---2---
http://kldp.org/~kss/node/11 의 내용 중 발췌한 것인데요,
----------------------------------------------------------------
즉 예를 들어 어떤 회사에서 MySQL을 사용하여 웹사이트를 제작하였을 경우
MySQL을 사용하는 해당 웹사이트 엔진은 다른 곳에 판매되지 않는 한은
MySQL 상용 버전을 구매하지 않아도 사용이 가능하다는 것입니다.
(물론 소프트웨어를 판매하는 경우에 대해서는
해당 소프트웨어가 GPL/오픈소스 라이센스가 아닐 경우 상용 버전을 구매하여야 합니다.)
-----------------------------------------------------------------
이 글의 의미로
상용 웹사이트 엔진을 구매한 사람이 MySQL을 구매해야 한다는 뜻인가요?
(독해력이 떨어져서 인지 이해가 좀 안되네요.)

아니면
상용으로 개발된 웹사이트 엔진이 MySQL 기반으로 돌아간다면,
MySQL을 제외한 웹사이트 엔진만을 판매한다하더라도,
웹사이트 엔진을 개발한 곳이 MySQL을 구매하여 판매(배포)해야 한다는 얘기인지..

----------------------------------------------
http://kldp.org/node/61537#comment-267925 를 보면
----------------------------------------------
이것은 xvid코덱을 포함해서 배포해서 GPL 위반이라고 한 것 같은데요.
동영상 플레이어가 비록 xvid 코덱을 이용해서 플레이 할 수 있다 하더라도
동영상 플레이어를 배포할 때
xvid 코덱을 포함하지 않고(사용자가 플러그인으로 추가할 수는 있게 하고) 배포하면
GPL에 위배되지 않지 않는지..

---3---
재배포라는 것은 소스코드를 수정했을 때만 유효한 것입니까?
소스코드를 수정하지 않았다고 가정한다면,

인터넷 공유기를 보면 GNU/Linux를 채용한 게 있는데,
이 경우에 만약 GPL로 된 소프트웨어만 쓴다고 가정하고
전혀 소프트웨어 소스자체를 수정한게 없고 GPL로 된 애플리케이션을 조합해서 판매 했을 경우에도
사용한 원본 프로그램의 목록과 소스를 배포해야 합니까?

만약 소스코드를 수정했더라도 배포하지 않고 자신(회사)만이 사용한다면 재배포의 의무가 없는 것인지요?
소스코드를 수정했다면 무조건 재배포가 이루어져야 하는 것인지.

* (anygate, iptime등 인터넷 공유기 업체 상당수가 제원을 보면
GNU/Linux를 사용했다고 밝히면서도 소스코드공개등이 전혀 이루어지지 않고 있는데,
언제 게시판 글에 답변 단 걸 본 기억이 납니다... 중대한 사안이라 소스코드공개는 어렵다..)

댓글

익명 사용자의 이미지

1 - 단순유저(혹은 최종유저)로 gcc를 사용할 경우엔 특별히 gpl 준수조항 해당 없음

2 - MySQL은 이중 라이센스로, 상업용 목적시엔 상업용 라이센스를 아닌 경우엔 gpl을 따름.

3 - 사실이라면 anygate나 iptime의 gpl 위반임. 비슷한 예로 링크시스는 결국 소스코드 공개되었음. 재미난 것은 링크시스(Linksys WRT-54G) 소스코드 공개 때문에 여러 목적으로 코드를 바꾸어 사용하는 사람들이 늘었고, 이 때문에 오히려 판매가 잘 되었다고 함.

kslee80의 이미지

자세히는 모르지만 약간 참고하시라고 적어 봅니다.
(언제 GPL 라이센스 전문 전체를 읽어보려고 하지만 영 손이 안 가네요)

1. 결과물에 대해 GPL 라이센스를 강제하는 것은 derived work 로 알고 있습니다.
소프트웨어(gcc) 의 경우에는, 해당 소프트웨어의 소스코드를 이용하여 새로운 컴파일러를 만들어 냈다면(소스코드의 사용) GPL 을 따라야 합니다.
GPL 소프트웨어를 사용한 경우라면 영향을 받지 않는다고 볼 수 있습니다.
GNU bison 의 결과물을 이용한 소프트웨어에 GPL 을 적용하기 어렵다는 판례가 있었습니다.
라이브러리의 경우, 해당 라이브러리를 이용하여 개발된 소프트웨어가 실행되기 위해서 라이브러리가 꼭 필요한 경우 GPL 을 따라야 합니다.
이러한 제약사항을 완화하여 라이브러리에 단순히 링크되는 경우라면(GPL 라이브러리가 수정되지 않는다면)
GPL 을 따르지 않아도 되게 하기 위해서 LGPL 이 존재합니다.

단지, gcc 에 포함되어 있는 libgcc 가 문제가 될 소지가 있다고 보입니다.
(libgcc 의 라이센스가 GPL 인지 LGPL 인지 확인을 안 해 봤습니다; LGPL 이라면 문제가 되지 않을 것입니다)
(물론, gcc 를 수정하지 않았다는 전제조건입니다)

2. MySQL 에 대해서는 후자가 맞습니다.
소스코드 배포의무는 GPL 소프트웨어(및 라이브러리)를 이용하여 개발된 derived work 가 배포되는 경우 생깁니다.
MySQL 을 이용하여 non-GPL 소프트웨어를 제작할 수는 있지만,
해당 소프트웨어가 상용으로 판매되는 순간 해당 소프트웨어는 배포된 것으로 간주되기 때문이죠.
(판매하지 않는다면 배포되지 않은 것이기에 소스코드 배포의무는 없습니다)
MySQL 로 상용 엔진을 만든 회사에서 엔진을 판매하게 되더라도 소스코드 배포의무를 회피하기 위해서는
GPL 인 MySQL 을 사용하는것이 아닌, 상용인 MySQL 을 사용하여야 하는 것이죠

XVID 코덱에 대해서는,
배포시에 XVID 코덱을 같이 배포하지 않더라도
동영상 플레이어의 실행에 XVID 코덱이 꼭 필요하다면 GPL 을 따라야 합니다.
XVID 코덱이 없는 경우에 XVID 로 인코딩된 동영상은 재생되지 않지만
동영상 플레이어 자체는 동작한다. 라면 상관 없습니다.

3. 수정하지 않았더라도 배포해야 합니다.(LGPL 은 수정한 경우 배포해야 하는 것으로 알고 있습니다)
소스코드라는것이 단순히 프로그램 소스코드만을 의미하는 것이 아니라,
컴파일시 사용한 컴파일 옵션이라던지 설정 같은 것도 포함되는 것입니다.

따라서, 예로 드신 인터넷 공유기 업체들의 경우
모두 GPL 위반으로 알고 있습니다.

topia의 이미지

* 리눅스 커널 자체가 GPL 인 것이 생각나서 추가적 궁금증을 질문드립니다.

GNU/Linux는 기본적으로 리눅스 커널에 기반하여 돌아가는데,
GNU/Linux를 이용한다면 GPL인 리눅스 커널 위에서 애플리케이션을 구동한다는 이야기가 성립되나요?

qmail의 경우 GNU/Linux에서 만큼은 리눅스 커널이 없이는 돌아가지 못하는데, 비단 리눅스 만이 아닌 다른 플랫폼에서도 동작하는, 이렇게 멀티플랫폼을 지원하는 애플리케이션의 경우 GPL 라이센스는 어떻게 되는 겁니까?

GNU/Linux에서만큼은 모든 애플리케이션이 "GPL 리눅스 커널" 기반 위에서 돌아간다고 보여지는데...

그렇다면,
GNU/Linux 위에서 동작하는 애플리케이션은 모두 GPL?? 이 되야 하는 것 아닌가요?

너무 광범위하게 잡은 것은 같습니다만,
GPL인 소프트웨어를 이용해서 개발했을 경우 GPL이 되어야 한다는데 GNU/Linux의 기초이자 핵심?인 리눅스 커널이 GPL인데 그 위에 돌아가는 애플리케이션이 GPL이 아닐 수도 있다라는 얘기가 이해가 가질 않습니다.

kslee80의 이미지

커널의 경우는 어떤 어플리케이션의 동작을 위해 필요한 라이브러리 가 아닌
어떤 어플리케이션과는 별도의 다른 어플리케이션으로 취급하여 라이센스를 적용하는듯 합니다.

커널을 하나의 어플리케이션으로 본다면,
API 콜은 단지 하나의 어플리케이션에서 다른 어플리케이션으로 메시지를 전달하고 받는것에 지나지 않죠.

Linux 환경에서 동작하는 어플리케이션들중 GPL 이 아닌 소프트웨어가 존재하며,
해당 소프트웨어에 대한 어떠한 라이센스 문제 제기도 없는것을 봐서는
커널은 하나의 어플리케이션으로 취급하는 것이 아닌가 싶습니다.

topia의 이미지

kldp.org에 접속하기가 쉽지 않더군요.. 화면이 늦게 뜨는 정도가 아니라 잘 안나와서.. 그럼에도 답변 계속 달아 주셔서 감사드립니다.

zeroboard의 MySQL 이용 관련하여 질문 추가해도 될까요?
zeroboard는 무료로 공개되어 있지만 zeroboard라는 글자를 없애려면 돈을 지불해야 하는 것으로 알고 있습니다.
(또한 zeroboard는 기본적으로 MySQL을 써야만 하지 않나요? 뗄레야 뗄수 없는 관계로 알고 있습니다만..)

그렇다면 zeroboard 글귀 삭제에 대한 비용을 받는 것은,
말씀하신 MySQL의 이중라이센스 중 무료공개를 제외한 "판매"에 해당 된다고 보여지는데 그렇다면 zeroboard 측에서 MySQL을 구입하여 배포해야 되는 것이지요?
(현재 zeroboard가 MySQL에 비용을 지불한지에 대해서는 모르겠습니다.)

만약 zeroboard측이 zeroboard 글귀를 지우는 것에 대한 비용(판매)을 받으면서 MySQL에 대해 비용을 지불하지 않았다면 GPL 위반이 되지 않는지요..

* 웹호스팅 업체의 경우 apache,php,mysql 조합으로 서비스를 주로 하는데 웹호스팅 업체의 경우 MySQL 라이센스가 어떻게 되나요?
돈을 받으니 판매?에 해당되게 되나요?
(웹호스팅 업체의 자체웹툴등에 연동이 되지 않고 순수하게 APM을 연결하여 계정만 제공해 줄 경우는 무료가 되나요??)

GPL을 이해 못해서 궁금증이 계속 늘어납니다..^^;

irondog의 이미지

topia wrote:
그렇다면 zeroboard 글귀 삭제에 대한 비용을 받는 것은,
말씀하신 MySQL의 이중라이센스 중 무료공개를 제외한 "판매"에 해당 된다고 보여지는데 그렇다면 zeroboard 측에서 MySQL을 구입하여 배포해야 되는 것이지요?
(현재 zeroboard가 MySQL에 비용을 지불한지에 대해서는 모르겠습니다.)

zeroboard는 zeroboard사이트에서 mysql을 배포하지 않지요. 사용자가 mysql을 구해서 이용하는 것이니까 zeroboard는 라이선스를 위반하지 않은 것이죠. 만일 zeroboard가 mysql을 수정해서 배포한다면 모를까 문제가 될게 없습니다.

topia wrote:
웹호스팅 업체의 경우 apache,php,mysql 조합으로 서비스를 주로 하는데 웹호스팅 업체의 경우 MySQL 라이센스가 어떻게 되나요?

아마 웹호스팅 업체는 라이선스에 문제가 없는 mysql 구버전을 쓰고 있을 겁니다.
그리고 GPL은 소스의 공개를 다루고 있는 라이선스지 금전적인 무료를 강요하는 라이선스가 아닙니다. 다시 말하면 개작을 해서 돈을 받고 파는 것을 금하지 않는다는 것이죠. 배포시 원천 소스와 개작 소스를 모두 공개 하고 사용자들에게 명시 해야 한다는 조건이 붙는다고 보시면 될 것 같습니다.

다음은 GPL의 전문에서 가져온 글입니다.

Quote:
예를 들어 GPL 프로그램을 배포할 경우에는 프로그램의 유료 판매나 무료 배포에 관계없이 자신이 해당 프로그램에 대해서 가질 수 있었던 모든 권리를, 프로그램을 받게될 사람에게 그대로 양도해 주어야 합니다. 이 경우, 프로그램의 원시 코드를 함께 제공하거나 원시 코드를 구할 수 있는 방법을 확실히 알려주어야 하고 이러한 모든 사항들을 사용자들이 분명히 알 수 있도록 명시해야 합니다.

http://korea.gnu.org/documents/copyleft/

Anonymou의 이미지

쉽게 생각하면 됩니다. 윈도우즈 오에스에서 돌아가는 어플을 만들었다고 해서 MS에 윈도우즈 오에스사용료를 내지 않습니다. API를 통한 시스템 콜은 기본적으로 라이센스 적용 대상이 아닙니다.

GPL 적용 대상은 GPL에 걸린 코드를 copy & paste해서 내 코드에 가져왔을 경우입니다. 단, 여기서 GPL에 걸린 라이브러리를 가져와 쓸때는 이것이 GPL 라이브러리를 내 코드에 copy & paste 해서 쓴 것인지, 혹은 커널위에 어플돌듯이 상관이 없는 것인지 애매모호할 때가 있는데 이럴때 이것을 커널 위에 어플 도는 것으로 명확하게 해 주자고 만들어진 라이센스가 LGPL입니다.

참고로, MySql의 경우는 이 애매모호한 라이브러리 링크 부분을 GPL로 못박고 그 부분을 통해 라이센스 판매 매출을 높이려는 정책을 쓰고 있을 따름입니다.

어느 경우든 내 소스코드 역시 공개해서 배포하면 이것이 라이센스 위반인지 아닌지 고민할 필요가 없습니다. 내 소스를 공개하지 않겠다면 그때부터 고려할 사항들이 생겨나지만 일단 다른 GPL 걸린 소스를 copy & paste만 하지 않는다면 소스코드를 공개하지 않아도 된다고 생각하면 대부분 맞아 떨어집니다.

cwryu의 이미지

라이선스나 법적인 문제라는 게 흑백으로 딱 나눠 떨어지지 않고 애매한 부분이 많은 게 사실입니다. 언제나 뭐라고 말하기 어려운 gray area가 있습니다. GPL 원문에서는 "충분히 독립적인 경우"는 derived works에 해당하지 않는다고 되어 있습니다. ("reasonably considered independent") 라이선스부터가 애매한 부분이 있죠..

GCC로 만든 프로그램은 GCC 코드의 작지만 일부분이 들어가게 되어 있죠. (crt0.s) 그래서 GCC 라이선스를 잘 보면 해당 부분은 GPL이 아니고 GCC가 출력한 프로그램이라고 GPL의 derived works가 되는 게 아니다라고 명시한 부분이 있습니다. 리눅스 커널도 POSIX API만 이용하는 거 갖고 derived works라고 하긴 어렵지만 각종 전용 API나 ioctl들을 사용하는 것도 있는데 그게 derived works인지 아닌지 애매하죠. 그래서 커널 라이선스도 잘 보면 시스템콜만 사용하는 유저레벨 프로그램은 해당사항 아니다라고 명시한 부분이 있습니다.

따라서 GCC의 문제는 GPL이 커버하느냐 커버하지 않느냐보다 저작권자가 명확히 명시했으므로 GPL의 파생코드가 아닙니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.