오픈소소의 공개범위에 대한 질문

dipole의 이미지

안녕하세요.

저는 현재 세트를 개발하고 있는 개발자입니다.
회사에서 하드웨어와 소프트웨어를 모두 개발하고 있습니다.
리눅스를 사용하고 있고, 부트로더나 커널은 개발후에 제품출시때 사용된 버전을 공개할 예정입니다.

두가지 문제가 있습니다.
디바이스 드라이버와 어플리케이션의 공개문제입니다.

디바이스 드라이버의 경우 BSD/GNU 듀얼 라이선스로 모듈 만들었을 경우
소스 자체를 오픈하지 않고 모듈 바이너리 파일만 오픈하려면 소스에서 사용하지 말아야 하는
부분이 있는지요? 아니면 BSD/GNU 로 하여도 소스를 오픈해야 합니까?
또 커널 드라이버에서 사용하는 커널함수들 중에 그러한 제약등이 있습니까?

시스템에서 사용하는 각종 수정한 GNU 유틸리티는 모두 공개할예정입니다.
그런데 자체적으로 제작한 보드에서 돌아가는 소프트웨어는 공개 프로그램은 사용하지 않는
모두 새로 작성된 프로그램입니다. 당연히 공개할 필요는 없지요.
그런데 작업을 하다보니 소스를 가져다가 쓰는 것이 아닌 GNU 라이브러리를 사용하기 위해서
선언을 GNU_USE 나 그런 것들을 사용해야 하는 경우가 있더군요.
이런 경우에 공개소프트웨어를 사용한 것으로 보아야 하는지요?

또 수정한 GNU 유틸리티는 시그널등을 통해서 자체의 유틸리티와 연동이 되도록 하고 있습니다.
예를 들어 수정한 GNU 유틸리티는 시그널을 보내어 자체 제작한 프로그램이 특정 동작을 하도록
하려고 합니다. GNU 유틸은 시그널을 보내기만 할뿐 그에 따른 동작이나 기능은 하지 않습니다.
이 경우에 소프트웨어의 공개 문제는 어떻게 되는지 궁금합니다.

권순선의 이미지

모듈로 작성된 디바이스 드라이버의 경우 industry에서는 GPL의 적용을 받지 않는다는 의견이 많고 community에서는 GPL의 적용을 받는다는 의견이 많습니다. 아직까지 정답은 없으니 취사 선택하시면 됩니다. 다만 non-GPL 모듈에서는 2.6.x 커널 사용시에 EXPORT_SYMBOL_GPL로 export된 커널 심볼은 접근할 수 없도록 되어 있습니다. 따라서 그러한 함수는 사용하지 않고 모듈을 구현하시면 되겠습니다. 이것도 얘기가 복잡해질 수 있는데... 지금 말씀드린 내용이 기본적인 내용입니다.

새로 작성하셨다는 프로그램은 'GNU 라이브러리'와 링크되는 것인가요? 아마 glibc를 이야기하는게 아닌가 하는데 아니라면 해당 라이브러리의 라이센스가 GPL인지 LGPL인지 파악해 보시는게 필요합니다. 만약 GPL이라면 새로 작성하신 프로그램도 GPL이 되어야 합니다.

시그널을 통해서 GPL 소프트웨어와 별도 작성하신 소프트웨어가 통신하는 경우는.... 좀 애매하군요.

dipole의 이미지

댓글 감사합니다.

export 된 심볼을 사용하지 않고 작성하면 가능하다는 것으로 받아 들이고 싶습니다.(ㅡ,ㅡ)
보통 임베디드에서 판매하는 드라이버의 경우 대부분이 이런 형태로 되어 판매되고 있는 것이 현실이구요.
소스없이 모듈만 제공하기 때문에 가능하지 않겠느냐 하는 생각에 질문드렸습니다.

새로 작성한 프로그램에 대한 질문의 경우 혼선이 있는것 같습니다.
GNU 유틸리티를 다운 받아서 시스템에서 사용하기 위해서 수정을 하였습니다.
이것은 당연히 원라이선스를 따라서 공개혹은 비공개가 될수 있겠죠.

문제는 완전히 새로 작성한 시스템에서 동작하는 응용프램의 경우입니다.
첫째 문제는 GNU_USE 와 같은 헤더에서 선언이 필요한 GNU 라이브라리를 사용하기 위한 선언이구요.
여기서 당연히 GNU 프로그램을 가져다 붙이는 형태는 아닙니다.
일부 GNU 라이브러리의 경우 헤더 선언에 #define GNU_USE 와 같이 해주어야 하더군요.
말씀하신 것처럼 glibc 의 경우입니다.
개발한 보드에는 glibc 가 들어가고 수정없이 컴파일러만 크로스툴을 이용해서 만들고,
이 부분에 대한 공개는 당연히 이루어집니다.
문제는 이 라이브러리를 사용하는 새로 작성된 응용프로그램의 경우입니다.

두번째 문제가 시그널을 사용하는 경우입니다.
수정한 GNU 소프트웨어는 특정상황에 대한 시그널을 보내거나 혹은 설정파일에 적용하기만 합니다.
그 시그널을 받든 안받든 관계가 없고, 설정파일에 바뀐 내용을 기록만 할뿐 그에 따른 처리나
다른 연계성은 전혀 없습니다.
작성한 어플리케이션에서는 시그널을 받아서 그에 따른 처리를 하거나 아니면 설절파일에 변경된
내용에 따라서 특정한 동작을 하도록 되어 있습니다.
이 경우에 라이선스 문제는 어떻게 판단해야 하는지요?

너는 누구냐?