VPN GUI, GPL 엔진, 인스톨러: 무엇이 배포되는가?
GPL과 OpenSSL 조건이 VPN GUI 번들에 어떻게 적용되는지 결정하기 전에 무엇이 배포되고, 무엇이 수정되었으며, 각 부분이 어떻게 통신하는지 정리합니다.
질문은 라이선스 문제로 시작되지만, 답은 목록 작성에서 출발합니다. VPN 인터페이스, 그것이 구동하는 OpenVPN 엔진, TLS 라이브러리, 인스톨러는 서로 다른 네 가지 조건 집합을 가질 수 있으며, 제품의 겉모습만으로는 어떤 파일이 어느 집합에 속하는지 알 수 없습니다. 배포되는 순서대로 산출물을 살펴보면, 답변 자격을 갖춘 사람에게 넘길 때쯤 법적 질문은 훨씬 좁아집니다. 각 단계는 무엇이 배포되고, 무엇이 수정되었으며, 각 부분이 어떻게 통신하는지의 관점에서 더 좁아집니다.
인스톨러가 디스크에 놓는 것부터 시작하십시오
개발 체크아웃이 아니라 배포된 인스톨러나 패키지를 가져와, 깨끗한 머신에 놓는 모든 파일을 나열하십시오. 인터페이스, 엔진, TLS 라이브러리의 버전을 기록하고, 엔진이 별도 실행 파일인지 같은 프로세스에 로드되는 라이브러리인지 적어 두십시오.
이 마지막 사실이 이후의 모든 것을 규정합니다. 소켓을 통해 실행되는 별도 실행 파일은 하나의 바이너리로 컴파일된 코드와는 다른 질문을 제기하며, 둘을 나란히 놓기만 하는 인스톨러는 어느 쪽으로도 문제를 해결하지 않습니다. 번들링은 패키징의 결정이고, 프로그램 사이의 관계는 아키텍처의 결정입니다.
조건이 주 버전마다 다르므로 목록은 버전과 함께 적으십시오.
dpkg -L openvpn | head -n 40
openssl version -a인터페이스와 엔진을 분리하십시오
OpenVPN 복사 파일은 GPL 버전 2를 명시하고 OpenSSL에 대한 링크 예외를 범위가 정해진 특정 허가이며 조건을 섞기 위한 일반 라이선스가 아닌 것으로 문서화합니다.
프로젝트 웹사이트에 오늘 있는 것이 아니라, 여러분의 빌드와 함께 배포되는 라이선스 문구를 확보하십시오. 더 오래된 브랜치를 고정한 릴리스는 그 브랜치의 문서를 함께 가집니다. 저장소 페이지의 스크린샷은, 필요한 파일이 산출물 안에 있는 이상, 대체물이 아닙니다. 패키지가 완전하도록 인스톨러 옆에 보관하십시오.
그다음 인터페이스가 엔진을 자식 프로세스로 시작해 텍스트 프로토콜로 대화하는지, 아니면 라이브러리를 링크해 내부 구조를 주고받는지 그 통합 방식을 정직하게 서술하십시오. 후자의 구성은 전자와는 다른 방식으로 긴밀하며, 검토자가 가장 먼저 묻는 것이 바로 이 차이입니다.
어떤 파일을 수정했는지 적어 두십시오
수정된 소스 코드는 어떤 패키징 세부 사항보다 분석을 크게 바꿉니다. 엔진에 패치를 적용했다면 패치 자체가 파생 저작물이며, 의무는 결과를 배포하는 사람에게 붙습니다.
저장소를 한 번도 떠나지 않은 패치도 바이너리를 배포한다면 배포물의 일부이므로, 각 패치와 그 목적, 업스트림으로 보냈는지를 기록하십시오.
설정 파일, 테마, 번역은 보통 인터페이스와 함께 있지만, 엔진 소스 문자열을 포함하는 번역은 경계가 디렉터리가 아니라 파일 단위임을 알려 주는 작은 신호입니다. 업스트림 릴리스와 여러분의 빌드 사이의 차이를 보관해, 나중에 재구성하는 대신 요청이 있으면 바로 답할 수 있게 하십시오. 그 차이는 감사자가 무엇이 바뀌었는지 물을 때 가장 유용한 산출물이기도 합니다.
OpenSSL 버전은 따로 확인하십시오
OpenSSL 3.0 이후는 Apache License 2.0으로 배포되며, 더 오래된 릴리스는 OpenSSL/SSLeay 조건을 가집니다. 이는 서로 다른 의무를 지닌 서로 다른 문서이며, 번들된 엔진은 빌드 시스템이 찾은 쪽을 링크했을 수 있습니다.
빌드 스크립트에 적힌 것이 아니라 실제로 배포되는 버전을 확인하십시오.
OpenVPN 의존성이 OpenSSL에 대한 모든 수정을 GPL 코드로 바꾸는 것은 아니며, 링크 예외가 라이브러리를 재배포할 때 따르는 다른 의무를 없애지도 않습니다. 예외는 더 큰 분석 안의 한 조항으로 다루고, TLS 라이브러리 자체의 고지도 다른 모든 것과 함께 기록하십시오.
증거 패키지를 구성하십시오
패키지는 버전이 붙은 파일 목록, 통합 설명, 차이가 포함된 수정 목록, 배포되는 그대로의 라이선스 문구라는 네 부분으로 이루어집니다. 여러분이 배포하는 고지 파일과, 의무상 제공이 필요하다면 소스 코드를 제공하는 장소를 추가하십시오.
패키지를 한 명의 관리자 아래 두어, 그것 없이는 어떤 릴리스도 나가지 못하게 하십시오.
이 중 어느 것도 법적 질문을 결정하지 않으며, 누군가 기억으로 조립한 요약 대신 자격을 갖춘 검토자에게 사실을 넘기는 것이 핵심입니다. 공급업체의 마케팅 설명은 그들의 아키텍처에 대한 증거가 아니며, 여러분 자신의 추측도 증거가 아닙니다.