GPL 라이센스의 프로그램

noname_nobody의 이미지

GPL 라이센스로 배포되는 프로그램이 있을 때, 다른 사람이 이 프로그램 자체 내에서 제공하는 플러그인 기능을 이용하여 부가 기능을 만들었습니다. 여기서 플러그인 프로그램도 GPL을 따라야 하는지요? 아니면 그건 제작자의 자유인지 알고 싶습니다.

서지훈의 이미지

소스를 가져다 쓴게 아니면 GPL을 따르지 않아도 되지 않을거 같은데요.
만약 이걸로 딴지 걸면...
아파치 사용하는 모든 서버 우짤꼬...?

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

익명 사용자의 이미지

말씀하시는 플러그인 기능이라는게 정확히 어떤것인지 확실치는 않지만 만약에 원 소프트웨어가 GPL이라면 플러그인도 GPL이어야할 가능성이 큽니다. GPL은 GPL소프트위어의 소스 코드를 사용하거나, 정적/동적 링크를 하는 경우에도 파생 소프트웨어가 GPL을 따를 것을 규정하고 있습니다. 플러그인이라면 동적 링크일 가능성이 많은데 이 경우도 GPL을 따라야만 합니다. GPL이 아닌 LGPL인 경우 동적 링크는 LGPL을 따르지 않아도 됩니다. 혹시 LGPL이 아닌지 확인해보시구요.

Quote:
소스를 가져다 쓴게 아니면 GPL을 따르지 않아도 되지 않을거 같은데요.
만약 이걸로 딴지 걸면...
아파치 사용하는 모든 서버 우짤꼬...?

아파치는 GPL이 아닙니다. BSD라이센스와 유사한 아파치 라이센스를 따릅니다. 아파치 라이센스의 경우 GPL과 달리 파생소프트웨어가 아파치 라이센스를 따라야할 의무가 없습니다.
noname_nobody의 이미지

웹용 프로그램이라는 얘기를 빼먹었군요. 예를 들어 게시판이 있을 때 이 프로그램에서 외부 프로그램을 덧붙여 기능을 확장할 수 있도록 플러그인 인터페이스를 마련해 놓았을 경우와 같은 겁니다. 원 게시판 프로그램은 GPL인데 다른 사람이 덧붙여 제작한 추가 기능 소스가 있다면 그것도 GPL을 따라야 할까요. 아니면 원래 게시판 제작한 사람이 그 부분은 따로 라이센스를 적용할 수 있는지 궁금합니다.

익명 사용자의 이미지

GPL v3이전일 경우
GPL을 따라야 하지만, 따르지 않아도 됩니다.

무슨 이야기라 하면, 웹용이라면 바이너리를 배포하지 않기 때문에,
단순히 서비스를 제공하는 수준이라면,
GPL 의 범주가 아닙니다.

다만, 소스를 공개하거나 판매를 하려면 GPL을 따라야 겠지요...

GPL v3부터는 서비스를 하는 것만으로도
소스의 공개의무가 발생하는 것으로 바뀌는 것으로 알고 있습니다.

noname_nobody의 이미지

답변 감사합니다. 그런데 플러그인으로 만든 추가 기능 소스를 배포하게 되면 웹 스크립트는 소스가 그대로 공개되는데 이 경우 GPL v3 이전 버전이라도 GPL을 따라야 하는건가요. 다른 이가 만든 플러그인의 라이센스는 그 개발자의 자율에 맡기도록 모태가 된 프로그램 개발자가 정할 수 있다면 좋을 듯 한데 말이죠.

GPL로 배포되는 소스라도 원래 개발자라면 그 중의 일부를 GPL이 아닌 라이센스로 지정하는 건 가능하다고 들었습니다. 제가 잘못 알고 있는 건가요?

쌀밥의 이미지

yser wrote:
플러그인으로 만든 추가 기능 소스를 배포하게 되면
웹 스크립트는 소스가 그대로 공개되는데
이 경우 GPL v3 이전 버전이라도 GPL을 따라야 하는건가요.

배포할때 소스는 공개하지만, GPL은 따르고 싶지 않으시다는 의미이신지요?

GPL 의 파생 코드를 배포할때에는 (소스 공개는 물론 해야하고) GPL을 따라야지요.

yser wrote:
다른 이가 만든 플러그인의 라이센스는 그 개발자의 자율에 맡기도록 모태가 된 프로그램 개발자가 정할 수 있다면 좋을 듯 한데 말이죠.

LGPL을 선택하면 되겠지요..

사용하시는 S/W가 LGPL이 아닌지 확인을 해보세요..

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

noname_nobody의 이미지

처음부터 이렇게 적을 걸 조금 반성하고 있습니다. __;
상세하게 상황을 적겠습니다. (혹시라도 제가 잘못 이해하거나 받아들인 부분이 있을지 재확인하고 싶어서)

1. MARY라는 게시판을 만들었습니다. 이 게시판은 GPL 라이센스입니다. 또한 PHP로 만들어졌습니다.
2. MARY 게시판에는 기능을 덧붙일 수 있도록 플러그인 인터페이스를 마련해 놓았습니다.
3. 원래 개발자와는 상관 없는 다른 개발자가 MARY 플러그인을 만들어서 배포합니다. 이 플러그인의 이름은 JUDY 입니다.
4. 이때 JUDY 의 소스는 당연히 그대로 드러나며 MARY 의 코드를 포함하고 있지는 않습니다. MARY 가 JUDY 를 include 해서 동작하게 됩니다.
5. JUDY 는 독자적으로 기능하진 않지만 소스 코드는 MARY 의 플러그인 인터페이스를 통해 동작합니다. 이때 JUDY 가 MARY 의 파생 코드라고 봐야 할까요?

즉 c, c++언어처럼 동적/정적 링크 같은 개념이 아니라 include 하는 건데 이것을 어떻게 해석해야할지 모르겠습니다.

위의 예에서 제가 만드는 프로그램이 MARY 라고 보시면 되고, 이 프로그램의 플러그인을 만드는 타 개발자는 GPL이 아닌 다른 라이센스도 선택할 수 있도록 하고 싶습니다. 얼핏 생각하기에 그거야 원 개발자인 제가 자유롭게 선택할 수 있는 권리가 아닐까 했으나, GPL의 범위가 어디까지 적용되는지 애매하여 질문을 올렸습니다.

제대로 이해가 되는 글인지 모르겠네요. :(

1day1의 이미지

우선 제가 아는 범위에서 말씀드리면,

해당 소스를 수정하지 않은경우 GPL 을 따르지 않아도 될 듯 합니다.

그리고, 그 플러그인이라는 것이 말씀대로 제공하는 소스를 포함하고 있지 않으므로, 별도의 라이선스를 선택할 수 있도록 해야 할 듯 합니다.

어디선가 그런경우를 봤던 것 같은데, 지금은 잘 생각이 나지 않는 군요.

F/OSS 가 함께하길..

cocas의 이미지

yser wrote:
처음부터 이렇게 적을 걸 조금 반성하고 있습니다. __;
상세하게 상황을 적겠습니다. (혹시라도 제가 잘못 이해하거나 받아들인 부분이 있을지 재확인하고 싶어서)

1. MARY라는 게시판을 만들었습니다. 이 게시판은 GPL 라이센스입니다. 또한 PHP로 만들어졌습니다.
2. MARY 게시판에는 기능을 덧붙일 수 있도록 플러그인 인터페이스를 마련해 놓았습니다.
3. 원래 개발자와는 상관 없는 다른 개발자가 MARY 플러그인을 만들어서 배포합니다. 이 플러그인의 이름은 JUDY 입니다.
4. 이때 JUDY 의 소스는 당연히 그대로 드러나며 MARY 의 코드를 포함하고 있지는 않습니다. MARY 가 JUDY 를 include 해서 동작하게 됩니다.
5. JUDY 는 독자적으로 기능하진 않지만 소스 코드는 MARY 의 플러그인 인터페이스를 통해 동작합니다. 이때 JUDY 가 MARY 의 파생 코드라고 봐야 할까요?

즉 c, c++언어처럼 동적/정적 링크 같은 개념이 아니라 include 하는 건데 이것을 어떻게 해석해야할지 모르겠습니다.

위의 예에서 제가 만드는 프로그램이 MARY 라고 보시면 되고, 이 프로그램의 플러그인을 만드는 타 개발자는 GPL이 아닌 다른 라이센스도 선택할 수 있도록 하고 싶습니다. 얼핏 생각하기에 그거야 원 개발자인 제가 자유롭게 선택할 수 있는 권리가 아닐까 했으나, GPL의 범위가 어디까지 적용되는지 애매하여 질문을 올렸습니다.

제대로 이해가 되는 글인지 모르겠네요. :(

리눅스용 ATi나 nvidia 드라이버를 생각해 보면 상관 없을 것 같습니다.

쌀밥의 이미지

JUDY가 MARY 코드를 직접적으로 사용하지 않는 독립된 코드라고 하더라도
JUDY 개발자는 MARY 코드를 본뒤에 이에 맞는 코드를 작성한 것이죠.

시점을 바꿔서
MARY 가 GPL 이 아니라 상용이었다면 JUDY 개발자는 비용을 지불해야만 MARY 소스 코드를 볼 수 있었을 것이고 JUDY 개발도 가능했겠죠.
GPL 의 덕을 본것이니 파생된 저작물이라고 보아야 할것 같습니다.

이상은 어디까지나 제 생각입니다.

제가 보기에
MARY를 개발하고 계신다면
왜 LGPL을 선택하지 않으시는지 궁금합니다.
이런 경우 LGPL이 딱 맞을것 같습니다.

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

cocas의 이미지

쌀밥 wrote:
JUDY가 MARY 코드를 직접적으로 사용하지 않는 독립된 코드라고 하더라도
JUDY 개발자는 MARY 코드를 본뒤에 이에 맞는 코드를 작성한 것이죠.

시점을 바꿔서
MARY 가 GPL 이 아니라 상용이었다면 JUDY 개발자는 비용을 지불해야만 MARY 소스 코드를 볼 수 있었을 것이고 JUDY 개발도 가능했겠죠.
GPL 의 덕을 본것이니 파생된 저작물이라고 보아야 할것 같습니다.

이상은 어디까지나 제 생각입니다.

제가 보기에
MARY를 개발하고 계신다면
왜 LGPL을 선택하지 않으시는지 궁금합니다.
이런 경우 LGPL이 딱 맞을것 같습니다.

플러긴 개발을 위해서라면 꼭 풀보전의 소스를 볼 필요는 없습니다. 플러긴 개발을 위해 공개된 API만 참조하면 되지요. 문서화만 잘 되어 있다면 API 구현은 볼 필요가 없겠고요.

음.. 하지만 오픈소스계에서는 API에 대한 문서가 체계적으로 되어 있지 않은 경우 직접 찾아보는 경우가 많아서 좀 애매해지네요.

쌀밥의 이미지

문서는 어떻게 생성될까요?

GPL 소스 코드에서 파생된 문서도 역시 GPL 이 될것 같은데요?

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

나는오리의 이미지

디어셈블해서 만든것도 GPL이 되는건 아니죠? :wink:

http://korea.gnu.org/에 문의해보세요.
그게 이 게시판에서 왈가왈부하는 것보단 확실할것 같습니다.

쌀밥의 이미지

디어셈블해도 GPL되지 않겠습니까?

파생된건데...;

일반인들이 법적인 것에 대해 잘 모르는 것은 사실이지만 왈가왈부하는것도 의미가 있다고 생각합니다;

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

나는오리의 이미지

쌀밥 wrote:
디어셈블해도 GPL되지 않겠습니까?

파생된건데...;

일반인들이 법적인 것에 대해 잘 모르는 것은 사실이지만 왈가왈부하는것도 의미가 있다고 생각합니다;

IE를 디어셈블해서 확장된 IE를 만들었다고해서 그게 위반이 아니라고 생각합니다.
이건 다른 라이센스에서도 마찬가지 아닐까요?
이건 파생되었다고 보기는 힘들것 같습니다.
noname_nobody의 이미지

그런데 IE나 기타 소프트웨어를 보면 설치할 때 '리버스 엔지니어링은 법적으로 금지됩니다'라고 되어있던게 이게 디어셈블과 마찬가지 아닌가요? 사용 계약 조건이니까 '사용하진 않고(실행 x) 그저 디어셈블했다' 라고 해서 회피가 되는걸지 모르겠습니다. ;

p.s
gnu korea에 문의 메일을 보내어놓은 상태입니다. 답변이 오면 여기다 올리도록 하죠.

noname_nobody의 이미지

답변이 왔습니다. :)

Quote:
최기영입니다.

리눅스를 생각하시면 이해하기 쉬울 듯 싶습니다.

리눅스 역시 커널의 인터페이스를 이용하는 모듈에 대해서는 GPL 을 적용하지
않습니다. 말씀하신 것처럼 MARY 가 모듈들이 사용할 수 있는 인터페이스를
제공하고 있으며 MARY 의 소스코드가 변경되거나 혹은 일부가 플러그인에 포함되지
않고 모듈이 인터페이스만을 사용한다면 이는 GPL 의 적용 대상이 아닙니다.

혹여 제 해석이 잘못되었다면 저희 법률 자문이신 최은창님께서 지적해
주시리라 믿습니다.

-- 최기영 <xenus@gnu.org>

그럼 역시 JUDY는 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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.