특정 Discourse 클라이언트 배포판이 자유 소프트웨어인지 어떻게 알 수 있을까요?

비자유 소프트웨어의 실행을 피하려는 사람들에게, 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 앱이 있을까요?

Discourse는 오픈 소스이므로 사용하는 것은 무료입니다. 자체 호스팅을 하거나 CDCK를 사용하든 비용이 발생합니다.

is discourse free로 검색하면 다음과 같은 결과가 나옵니다:

물론 충분합니다. 그리고 실질적으로 사용할 수 있는 유일한 출처이기도 합니다.

제 생각에는 불가능할 것 같습니다.

일부 설치 환경은 호스팅 방식으로 제공되며, 호스팅 스택에 독점적인 요소가 포함되어 있을 수 있습니다.

자체 호스터(셀프 호스터)의 경우, 표준 설치를 사용하지 않는 것은 어리석은 선택이 될 것입니다. 표준 설치가 유지보수 비용이 가장 저렴하기 때문입니다.

다만, 플랫폼이 관리자의 재량에 따라 설치할 수 있도록 허용하는 독점적이거나 비공개 플러그인을 사용하는 사이트가 있을 수도 있습니다.

이 발언이 혼란스럽습니다. Discourse를 호스팅하는 사람들이 소프트웨어를 수정하여 재배포하지 않는다는 말씀인가요?

여기서 사람들은 이 팀을 CDCK 회사로 알고 있습니다. 물론 매일 그렇게 하고 있습니다. 항상 개발이 진행되고 있습니다. 그런데도 우리가 사용하는 것이 바로 그것입니다.

이것이 다음 질문을 열 수 있습니다:

플러그인에 대한 언급 덕분에 버전 정보를 확인할 수 있는 방법이 있는지 궁금해졌고, 이 토픽에서 버전 정보를 가져오는 방법을 설명하고 있음을 발견했습니다.

예를 들어, 이 인스턴스는 커밋 276bc8a565389ea1a145af08ec8e64c1a5bea990을 사용하고 있으며, FSF 회원 포럼은 커밋 7ecaf6295daf8759aa98d00e7035c4dc0f853303, Purism 포럼은 999aaa35a79ae7c586a91de1f6c1f7b3c8092bd2, 그리고 Exercism 포럼은 커밋 1bd9ca11e777f880462ae64c6795ef7de28a8cd2를 사용하고 있습니다. 이 모든 것은 공식 저장소에서 유효한 커밋이므로, 인스턴스들이 Discourse 자체를 수정하지 않았다고 추측할 수 있습니다(다만 플러그인을 추가했을 수는 있습니다).

그러면 남은 것은 플러그인과 테마입니다. 플러그인 스크립트에서 “data-discourse-entrypoint” 속성을 검색하면 플러그인 이름을 볼 수 있는 것 같지만, 버전 식별자는 보이지 않습니다. 설치된 플러그인 목록을 가져오는 방법을 아시는가요?

자바스크립트 패키지를 살펴보면 힌트를 얻을 수 있지만, 백엔드에는 외부의 시선을 피하기 위해 수많은 플러그인이 설치되어 있을 수 있습니다.

제가 "재배포 전에 소프트웨어를 수정한다"고 했던 것은, forums.puri.sm와 같은 공개 웹사이트에서 소프트웨어를 재배포하는 사람들이 메인 git 저장소에 변경 사항을 제출하지 않고도 자신들의 버전을 수정할 수 있다는 뜻이었습니다. 만약 그들이 Discourse와 합의를 한다면, 메인 Discourse git 저장소와 별도로 이러한 변경 사항을 비자유 소프트웨어로 배포할 수 있습니다.

메인 저장소 변경의 속도가 너무 빠르므로 포크를 유지 가능한 상태로 관리하는 데 상당한 비용이 듭니다.

바로 이것이 플러그인이 확장 솔루션으로 인기 있는 이유입니다.

큰 ‘만약’이고, 그런 일이 일어날 거라고는 생각하지 않아요 — 그리고 어떤 합의라는 건가요, Discourse는 오픈 소스이니까요. 하지만 CDCK 쪽이 더 잘 알겠죠. 아마 거기저기 포크들이 몇 개 있을 거예요. 그런데 그게 프로덕션 환경에서 쓰이는 건지… 그건 의문이에요. 하지만 로버트가 말했듯이, 컴포넌트와 플러그인으로 할 수 있는 일을 왜 굳이 그렇게 하냐는 거죠.

결국 플러그인을 확인하는 유일한 방법은 다음과 같은 것일 수도 있습니다:

  • 내 자체 Discourse 인스턴스를 설정합니다.
  • 상호작용하려는 원격 인스턴스와 동일한 플러그인을 설치해 봅니다.
  • 내 인스턴스와 상대방 인스턴스의 플러그인 JavaScript가 동일한지 확인합니다.

아니면, 플러그인 소프트웨어를 실행하는 것을 완전히 피하고 Discourse 자체에 포함된 스크립트만 사용하는 것도 고려해 볼 수 있습니다.

물론 상대방의 백엔드를 확인할 방법은 없지만, 다른 사람의 서버에 연결할 때는 클라이언트 소프트웨어만 중요하기 때문입니다.

자바스크립트 커스터마이징을 비활성화하는 안전 모드에도 관심이 있으실 수 있습니다.

아니요. 서버에서 무슨 일이 일어나고 있는지 볼 수 없습니다. 공개 API에 노출되지 않거나, 해석하기 매우 어려운 변경 사항이 많이 있을 수 있습니다.

일반인은 서버 내부에서 일어나는 일을 알 수 없습니다.

이것이 버전 정보와 결합되면, 비자유 소프트웨어를 실행하지 않으면서도 임의의 Discourse 배포판을 사용하는 데 충분하다고 생각합니다. 해당 커밋이 공식 GitHub 저장소에 있는지 확인한 후, 항상 안전 모드가 활성화되도록 하거나 안전 모드를 사용할 때 나타나는 스크립트만 “화이트리스트”(LibreJS와 같은 도구에서)에 등록하도록 하면 됩니다.

아니요. 그렇지 않습니다. 클라이언트 측 변경만 비활성화할 뿐입니다.

서버 코드를 내 컴퓨터에서 실행하지 않으므로 클라이언트 측 변경 사항에만 관심이 있습니다.

만약 제가 Discourse 서버를 운영한다면, 설치할 플러그인을 직접 선택하고 라이선스가 없는 플러그인은 설치하지 않을 것입니다.

다른 사람의 서버에 접속할 때는 상대방이 제공하는 소프트웨어를 실행해야 하는데, 이 소프트웨어에는 라이선스가 없거나 쉽게 찾을 수 없는 곳에 라이선스가 있을 수 있습니다.

대부분의 설치 환경에서는 예측 가능한 플러그인 세트가 사용될 것입니다. 하지만 모든 환경이 그런 것은 아닙니다. 해당 사이트의 권한 있는 관리자가 되지 않는 한 이를 알 수 없습니다.

제가 제대로 이해하고 있는지 확인하고 싶습니다: 변경 사항이 클라이언트 사이드가 아니라면, 그것은 Discourse 배포판의 일반 사용자(즉, 관리자가 아닌 사용자)가 실행하는 코드에 영향을 미치지 않는다는 뜻입니다. 맞습니까?

_실행_하되, 상호작용할 수 있는 정보의 처리에 대해 대상이 되지 않도록 해야 합니다.

서버가 백그라운드에서 사용자의 모든 정보를 Facebook으로 전송하고 그 대가로 돈을 받을 수도 있죠 :wink: