비자유 소프트웨어의 실행을 피하려는 사람들에게, Discourse 기반 포럼에 접근하기 위해 웹사이트가 제공하는 소프트웨어가 자유 소프트웨어인지 어떻게 알 수 있을까요?
JavaScript 클라이언트 소프트웨어 없이 포럼은 읽기 전용으로 보이기 때문에, 웹사이트에서 JavaScript를 실행하고 싶습니다. 그러나 Discourse Meta나 Purism 포럼(이것도 Discourse 기반)에서 클라이언트 소프트웨어가 자유 소프트웨어라는 어떠한 표시도 찾을 수 없습니다. 일부 스크립트 파일에는 소스 맵(source map)에 대한 링크가 있지만, 확인해 본 소스 맵에는 라이선스 정보가 포함되어 있지 않았습니다.
“There is only one version of Discourse – the awesome open source version.”라고 언급된 오래된 주제를 찾았지만, 이 주제에서는 CLA(기여자 계약서)가 비공개 버전이 허용될 수 있음을 시사한다고 하는데, 비공개 버전에 대한 구체적인 예시는 없습니다.
라이선스 정보를 표시하는 Discourse 인스턴스 중 하나는 FSF 회원 포럼(회원에만 접근 가능하다고 생각합니다)인데, 여기에는 GitHub의 Discourse 저장소, FSF git 저장소, 그리고 확장 프로그램의 GitHub 저장소로 링크되어 있습니다. 하지만 이 정보는 클라이언트 소프트웨어가 이미 실행된 후에만 표시되므로, 프로그램을 실행할지 여부를 결정하는 데는 큰 도움이 되지 않습니다.
클라이언트 소프트웨어를 실제로 실행하지 않고 Discourse 인스턴스가 제공하는 소프트웨어가 자유 소프트웨어인지 알아낼 방법이 있을까요? 혹은 소프트웨어를 실행해야 하더라도, Discourse 인스턴스의 클라이언트 소프트웨어에 대한 전체 라이선스된 소스 코드를 어떻게 얻을 수 있을까요? 사람들이 재배포하기 전에 소프트웨어를 수정했을 수 있으므로, 원래의 discourse GitHub 저장소만으로는 항상 충분하지 않을 것입니다.
대안으로, 연결되는 서버에서 소프트웨어를 다운로드하지 않는 다른 Discourse 앱이 있을까요?
플러그인에 대한 언급 덕분에 버전 정보를 확인할 수 있는 방법이 있는지 궁금해졌고, 이 토픽에서 버전 정보를 가져오는 방법을 설명하고 있음을 발견했습니다.
예를 들어, 이 인스턴스는 커밋 276bc8a565389ea1a145af08ec8e64c1a5bea990을 사용하고 있으며, FSF 회원 포럼은 커밋 7ecaf6295daf8759aa98d00e7035c4dc0f853303, Purism 포럼은 999aaa35a79ae7c586a91de1f6c1f7b3c8092bd2, 그리고 Exercism 포럼은 커밋 1bd9ca11e777f880462ae64c6795ef7de28a8cd2를 사용하고 있습니다. 이 모든 것은 공식 저장소에서 유효한 커밋이므로, 인스턴스들이 Discourse 자체를 수정하지 않았다고 추측할 수 있습니다(다만 플러그인을 추가했을 수는 있습니다).
그러면 남은 것은 플러그인과 테마입니다. 플러그인 스크립트에서 “data-discourse-entrypoint” 속성을 검색하면 플러그인 이름을 볼 수 있는 것 같지만, 버전 식별자는 보이지 않습니다. 설치된 플러그인 목록을 가져오는 방법을 아시는가요?
제가 "재배포 전에 소프트웨어를 수정한다"고 했던 것은, forums.puri.sm와 같은 공개 웹사이트에서 소프트웨어를 재배포하는 사람들이 메인 git 저장소에 변경 사항을 제출하지 않고도 자신들의 버전을 수정할 수 있다는 뜻이었습니다. 만약 그들이 Discourse와 합의를 한다면, 메인 Discourse git 저장소와 별도로 이러한 변경 사항을 비자유 소프트웨어로 배포할 수 있습니다.
큰 ‘만약’이고, 그런 일이 일어날 거라고는 생각하지 않아요 — 그리고 어떤 합의라는 건가요, Discourse는 오픈 소스이니까요. 하지만 CDCK 쪽이 더 잘 알겠죠. 아마 거기저기 포크들이 몇 개 있을 거예요. 그런데 그게 프로덕션 환경에서 쓰이는 건지… 그건 의문이에요. 하지만 로버트가 말했듯이, 컴포넌트와 플러그인으로 할 수 있는 일을 왜 굳이 그렇게 하냐는 거죠.
이것이 버전 정보와 결합되면, 비자유 소프트웨어를 실행하지 않으면서도 임의의 Discourse 배포판을 사용하는 데 충분하다고 생각합니다. 해당 커밋이 공식 GitHub 저장소에 있는지 확인한 후, 항상 안전 모드가 활성화되도록 하거나 안전 모드를 사용할 때 나타나는 스크립트만 “화이트리스트”(LibreJS와 같은 도구에서)에 등록하도록 하면 됩니다.