GPL 에 대한 문의입니다.

molla의 이미지

회사에서 상용 제품을 만들고 있습니다.

그런데, 현재 작성중 일부 부분을 오픈소스 라이브러리를 가져다 사용했습니다. 그런데, 해당 라이브러리가 라이센스가 LGPL이 아닌 GPL이라 가져다 사용하는 것도 문제가 되는듯 합니다.

그래서 아예 해당 기능을 하는 동일한 라이브러리를 만드려 합니다.
그런데 여기서 궁금한 점이 생깁니다.

GPL의 범위가 어디까지 인가 라는 것입니다.
즉 이미 GPL library를 이용하도록 만든 프로그램을 거의 변화 없이 사용하기 위해서는 함수의 입출력으로 사용되는 자료 구조 등이 거의 동일하게 갈 수 밖에 없을 듯 합니다. 그런데 이런 자료 구조 등도 GPL license 에 걸릴 것인가? 라는 것이 궁금합니다.
실제 함수 내용은 이미 다 알고리즘이 공개가 되어 있기 때문에, 사실상 해당 부분을 어떻게 자료구조화 할 것인가가 더 중요할 뿐, 자료구조만 정해지면 구현은 (해당 소스를 보건 안 보건) 거의 동일하게 나올 수 밖에 없는 듯 합니다. (뭐 저도 아직 해당 부분을 자세히 본 것이 아닌 지라 자료 구조도 뻔하게 나올 법한 방식인지 아닌지는 잘 모르겠습니다.)
즉 GPL로 작성된 라이브러리의 메뉴얼만 보고 (API 관련 자료 구조는 메뉴얼에 나와 있으니까요) API를 비슷하게 만들어줄 경우도 GPL 을 위반했다는 여지가 나올 수 있는가 하는 점입니다. (해당 부분의 소스 코드를 좀 살펴본 사람 말로는, 자료구조가 동일하면 구현은 거의 달라질 거리가 없다고 하는군요.)

neogeo의 이미지

보통 이런문제 때문에

1. 소스를 한명이 보고 기능을 명세합니다.
2. 소스를 본 사람이 외의 사람이 명세된 기능을 바탕으로 프로그래밍 합니다.
3. 소스를 본 사람은 절대 절대 기능 명세 이외의 작업에 참여시키지 않습니다.

와 같은 방식으로 해보시면 법적인 문제는 논리적으로 없습니다.

Neogeo - Future is Now.

Neogeo - Future is Now.

tinywolf의 이미지

제가 일했던 회사에서는 이런식으로 회피했었습니다.

- GPL로 만들어진 라이브러리를 필요한 부분만 떼어내고 클래스로 래핑해서 DLL로 제작합니다.
- DLL의 소스와 바이너리는 GPL로 홈페이지에 공개합니다.
- 해당 DLL을 사용하는 어플리케이션을 개발해서 판매합니다.

ㅡ_ㅡ;

simpid의 이미지

글 내용대로라면 GPL 위반이 아닌가 합니다.

제가 GPL 을 잘 아는건 아니지만...

GPL 는 "정적/동적으로 링킹(바인딩)되는" 경우에 개발하신 부분이 GPL 이 되어버립니다.
글 쓴 내용대로라면 GPL 을 동적으로(DLL) 로 링킹 하신경우이므로 GPL 이 되므로 개발하신 부분을 공개해야 합니다.

만약에 가져다 쓴 코드가 LGPL 이라면 동적 링크는 괜찮은걸로 알고있습니다.

동적으로 링크해도 괜찮다면 GPL 가져다 쓰는건 전혀 걱정할께 없죠.

cwryu의 이미지

널리 통용되는 FSF의 해석에 따르면, 그런 식으로는 회피되지 않습니다. dynamic lib으로 링크해서 써도 위반이긴 마찬가지입니다.

tinywolf의 이미지

오옷 그렇군요!
오래전 글인데 지금 확인했습니다.

그럼 GPL의 기능을 사용하는 소프트웨어는 어떤 식으로 사용하든 GPL이 되는군요..
위와 같이 패키지한 라이브러리를 따로 제품으로 등록하고 공개를 한 후에 그 라이브러리를 가져다 사용하는 소프트웨어를 개발하는 형식이었는데..
결국 그 라이브러리 패키지도 GPL이고 그 라이브러리 패키지를 사용한 어플리케이션도 GPL이 되는 것이네요.
(흠.. 지금 다시 알아보니 그 때 사용한게 하나는 LGPL, 하나는 아예 free였네요.)

그렇다면.. 궁금한게 있습니다.

사실 위에서 만들어 사용했던 래퍼 라이브러리가 대상 파일이름을 전달하고 void 함수만 콜하면 바로 작동하는 것이었기 때문에 별도의 exe파일로 만들어도 상관이 없던 것이었습니다.

그럼 GPL을 사용한 하나의 단일 제품으로 해당 기능을 exe로 만들어 공개하여 배포하고..
그 입력 파일과 출력 파일을 분석해서 사용하는 실제 프론트앤드 어플리케이션쪽에서 프로세스를 생성해서 해당 제품을 호출하여 인수를 넘기고
완료할 때까지 대기했다가 그 결과물만 가져다 사용한다면..
('ls -al > list.txt'라고 호출해서 실행하고 list.txt 파일을 읽어서 처리하는 것과 마찮가지로..)

각각 따로 라이센스를 적용해도 문제가 없을까요?

--
추가로 진행상황을 확인하기 위해서 GPL이 포함된 프로그램을 socket 서버로 하고 프론트앤드 프로그램을 socket 클라이언트로 해서 몇 퍼센트 처리 중인지 확인한다면..
아니, 데이터를 socket으로 전달하고 결과를 socket로 받는 별도의 server/client 모델에서 server 제품이 GPL이고 client 제품을 상용으로 판매한다면.. (FTP와 같이 생각하면 쉽겠네요.)

라이센스 걱정없이 활용 가능한 방법인가요?

ㅡ_ㅡ;

댓글 달기

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