연합 평판

SocialHub에서 @keunes는 Discourse가 ActivityPub를 지원할 경우, 사람들이 인터넷 전체의 하나 이상의 Discourse 인스턴스에서 이미 보유하고 있는 평판을 활용하여 새로운 보드에 가입할 때 초기 신뢰 수준 0과 1을 건너뛰고 바로 2(멤버) 수준으로 올라갈 수 있도록 평판을 연동(federate)하자는 제안을 했습니다.

저는 이 Discourse 인스턴스에서 첫 게시글을 작성했는데, 여기가 처음이라 링크를 두 개만 달 수 있습니다. 이해는 되지만 꽤 번거롭습니다. 그래서 생각하게 되었습니다: Discourse, 특히 제 평판을 페디버스(fediverse)화할 방법이 없을까요?

예를 들어 AntennaPod 포럼에서는 SocialHub를 '신뢰할 수 있는 신뢰 소스’로 설정하고, 다른 곳에서 획득한 신뢰 수준의 혜택을 사용자들이 누릴 수 있도록 허용할 수 있습니다.

실제로 좋은 평판을 가진 잘 알려진 네티즌이라면, 새로운 포럼에 가입할 때 낮은 신뢰 수준의 제한이 부담으로 다가올 수 있습니다. 반대로 나쁜 평판을 쌓게 되면, 새로운 보드에서 권한을 얻는 것을 막을 수도 있습니다(예: 신뢰 수준 승급에 부정적 가중치로 작용하지만, 새로운 신원을 사용하면 쉽게 우회할 수 있음).

따라서 이 아이디어의 핵심은 Discourse 인스턴스 간에 선한 행동에 대한 평판을 공유하는 것을 용이하게 하는 것입니다. 이미 Discourse 인스턴스의 글로벌 네트워크가 존재하고 있으며, Meta에 있는 사용자 중 여러 다른 인스턴스에 동시에 소속된 사용자가 상당수 있으므로, 일반 사용자들의 경우 인스턴스 간 신원을 통합하여 대화가 더 자연스럽게 흐르도록 하는 것이 점점 더 바람직해지고 있습니다. ActivityPub는 이를 실현하는 한 가지 방법이며, 우리는 현재 Discourse에 ActivityPub 지원을 추가하는 플러그인을 만드는 방법을 탐구하고 있습니다. 이는 이 기능을 포함한 다른 연동(federated) 기능들의 기반이 될 수 있습니다.

병행 역사 (Parallel History)

@erlend_sh는 3년 전의 이 잠깐의 제안에 대해 상기시켜 주었습니다:

제안된 흥미로운 기능 요약

선택적 참여 (Opt-in)

신뢰 네트워크 (Network of Trust)

발견 가능성 (Discoverability)

4번째 게시물에서 @erlend_sh는 다른 사용자와의 "공통 커뮤니티(communities in common)"를 추가하고, 궁극적으로 배지를 커뮤니티 간에 이식하여 멤버들이 새로운 커뮤니티를 더 쉽게 발견할 수 있도록 하자는 제안을 했습니다.

9개의 좋아요

“평판 마이그레이션”에 대해 떠오르는 첫 번째 생각들:

  • 포럼별로 옵트인(opt-in) 방식으로 해야 합니다
  • 사용자별로도 옵트인 방식으로 해야 합니다 (1번 항목 참조)
  • 허용된 포럼의 편집 가능한 화이트리스트(예: discourse 자체에서 제공)가 있어야 합니다
  • 허용된 포럼의 편집 가능한 블랙리스트가 있어야 합니다

1: 이는 사용자가 포럼을 처음 5분 동안 사용할 때 해당 사항에 대해 반복적으로 알릴 것인지에 대한 질문을 제기합니다

4개의 좋아요

신뢰 수준은 각 포럼의 규칙과 관습을 배우는 데 더 중점을 둔 것이라고 생각했습니다. 다른 포럼의 규칙을 근거로 2주/15회 방문의 ‘적응’ 단계(기본값)를 건너뛰게 하는 것이 그렇게 잘 작동하지 않을 수 있습니다.

중앙 디렉터리 허브에 등록된 포럼/사용자에게 적용할 수 있는 '준회원(associate member)'이라는 추가 신뢰 수준이 있으면 좋겠습니다. 이렇게 하면 많은 포럼에 읽기 접근 권한을 가질 수 있고, 투표에 참여하거나 '좋아요’를 누르는 옵션도 제공받을 수 있을 것입니다. 단, 게시물을 작성하고 신뢰 수준을 올리는 등 완전한 멤버십을 위해서는 특정 포럼에 가입해야 한다는 점은 유지되어야 합니다.

2개의 좋아요

저는 몇 개의 작은 Discord 인스턴스를 운영 중인데, 스팸과 기타 악의적인 행위를 방지하기 위해 modereration 봇을 직접 다뤄야 하는 날이 오면 벌써부터 두렵습니다.

Discord의 modereration 기능의 대부분은 신뢰도 등급(Trust Levels)으로 해결할 수 있을 텐데, 이 기능은 커뮤니티 소프트웨어에서 여전히 크게 활용되지 못하고 있습니다.

여러 상호운용 인스턴스 간에 공유되는 네트워크(연방) 기반의 신뢰도 등급은 두 가지 중요한 기능을 가능하게 합니다:

신뢰 네트워크 (Network of Trust)

Meta에서 TL 2를 달성한 사용자는 meta.discourse.org를 신뢰 포럼(Trusted Forum)으로 등록한 다른 포럼에 가입할 때 즉시 TL1로 승급되어야 합니다. 사실상 Let experienced users skip "new to Discourse" features 의 다음 단계라고 볼 수 있습니다.

이는 매우 직관적인 PageRank와 유사한 시스템입니다.

발견 가능성 (Discoverability)

Discord에는 나와 다른 사용자가 공통으로 참여하고 있는 채팅 커뮤니티(서버)를 볼 수 있는 편리한 기능이 있습니다:

이것이 아직도 가장 매력적인 사용 사례라고 생각하는, 우리의 실종된 Discourse Hub를 떠올리게 했습니다:

다른 인스턴스에서 받은 배지를 가져오는 유사한 형태도 매우 유용할 것입니다. 누군가가 첫 번째 ‘Helpful’ 배지(아직 기본적으로 그런 배지는 존재하지 않음)를 받게 되면, 그 배지가 표시되는 모든 추가 인스턴스는 다른 사람을 돕는 유형의 커뮤니티 멤버임을 그 사람에게 상기시키고 확인시켜 주는 역할을 하게 됩니다.

6개의 좋아요

신뢰 네트워크가 도입된다면, 신뢰 포럼(Trusted Forum)과 함께 신뢰 신뢰 목록(Trusted Trust List)에 대한 지원도 보고 싶습니다. 예를 들어, Discourse 인스턴스가 자신의 신뢰 포럼 목록을 게시하고, 제 인스턴스에서는 meta.discourse.org/trusted-forums.json을 신뢰하도록 선택할 수 있습니다. (아마도 재귀적이지 않을 것입니다)

3개의 좋아요

이것이 어떻게 작동할 것이라고 보시나요? 사용자 데이터 없이 익명으로, 아니면 … ?

신뢰할 수 있는 포럼 목록(trusted forum list)에 구체적으로 어떤 사용자 데이터가 관련이 있을지 확신은 없습니다. 신뢰할 수 있는 포럼(Trusted Forums)은 인스턴스 관리자가 선택하는 것이며, 관리자가 이를 공개하기로 선택한 경우 meta.discourse.org/trusted-forums.json(또는 해당 URL이 무엇이든)을 요청하면 다음과 같은 결과가 반환될 것으로 예상합니다:

{
  "trustedForums": [
    "meta.discourse.org",
    "bestforum.com",
    "marvellousdiscussions.org",
    ...
  ]
}

그런 다음 인스턴스 관리자로서, Trusted Forums에 "meta.discourse.org"를 입력하여 해당 인스턴스만 신뢰할 수 있습니다(해당 인스턴스가 신뢰하는 다른 인스턴스는 제외). 또는 더 나은 이름이 붙은 Trusted Trust List에 입력하여 해당 인스턴스와 그 인스턴스가 신뢰하는 다른 인스턴스들을 모두 신뢰할 수도 있습니다.

JSON에는 실제로 자신의 인스턴스에 대한 참조가 포함되지 않을 가능성이 높으며, 이는 단순히 다른 인스턴스에서 가져온 목록을 신뢰하면 해당 인스턴스 자체도 신뢰해야 함을 설명하기 위한 것입니다.


사용자 데이터에 대해 언급하셨으므로, 신뢰(trust)가 실제로 어떻게 작동하는지에 대해 말씀하시는 것으로 이해합니다. 이는 제가 언급했던 범위를 벗어난 내용이지만, @erlend_sh 님의 TL1로 사용자 등급을 올리는 아이디어를 고려할 때, 인스턴스는 가입 시점(또는 가입 후 사이드킥(Sidekiq) 작업에서 더 그럴 가능성이 높지만)에 이메일 주소의 sha256 해시를 신뢰할 수 있는 포럼들과 공유해야 할 것입니다.

이 방식은 사용자 데이터를 직접 공유하는 것을 피하지만, 위의 JSON을 예로 들면 즉시 한 가지 결점을 발견할 수 있습니다. 사용자가 bestforum.com에 계정이 있고 meta.discourse.org에 가입하는 경우, 첫 번째 포럼에는 사용자가 두 번째 포럼에 계정을 만들었다는 사실이, 두 번째 포럼에는 사용자가 이미 첫 번째 포럼에 계정이 있다는 사실이 노출될 수 있으며, 이는 바람직하지 않을 수 있습니다.

이 문제를 어떻게 해결해야 할지 확신이 서지 않습니다. 가입 시 사용자가 옵트인(opt-in)하도록 하는 것은 신뢰할 수 없으며, 해당 메커니즘을 악용하려는 인스턴스는 이를 단순히 제거할 수 있기 때문입니다.

아마도 "Discourse Hub"가 이 문제를 대부분 해결할 수 있을 것입니다. 허브는 해시된 이메일 주소와 관련 인스턴스 및 신뢰 수준만 유지하고(그리고 항상 해시된 이메일 주소만 제공받으며) 인스턴스가 해시된 이메일 주소로 허브에 쿼리를 보내며, 해당 해시가 확인된 인스턴스와 달성된 신뢰 수준을 기반으로 점수 기반 시스템을 사용할 수 있습니다. 이렇게 하면 인스턴스는 어떤 다른 인스턴스가 관여되어 있는지 알 수 없고, 결과적인 점수만 확인할 수 있습니다.

그러나 이러한 허브의 운영자가 Civilized Discourse Construction Kit, Inc.인 경우, 이 구성에도 여전히 중요한 질문이 있습니다. meta 및 다른 인스턴스를 사용하는 사용자로서, CDCK가 내가 어떤 다른 인스턴스를 사용 중인지 볼 수 있기를 원하는가? (인스턴스+허브 운영자가 자신의 인스턴스 사용자를 허브의 항목과 연결할 수 있기 때문입니다)

요약하자면, 신뢰가 어떻게 작동할지에 대한 내용은 이 어지러운 머리에는 너무 복잡합니다. :slight_smile:

“신뢰할 수 있는 포럼(trusted forums)” 방식은 흥미롭고 유용하다고 생각하지만, 동시에 잠재적인 보안 문제를 발견했습니다. 공격자들이 감시가 느슨한 “신뢰할 수 있는 포럼”을 표적으로 삼아, 직접 접근이 불가능한 실제 목표를 우회적으로 침입하는 식이죠. 따라서 이러한 전이적 신뢰(transitive trust) 메커니즘을 구현한다면, 쉽게 순환(traversable) 될 수 없어야 하며, 공격자를 인스턴스 전반에 걸쳐 정지시키는 강력한 보복 메커니즘을 갖추어야 합니다. 이는 상당한 복잡성을 더하는 어려운 제약 조건이므로, 개발의 2단계에서 다루는 것이 더 적절하다고 봅니다.

반면, _신뢰할 수 있는 포럼의 비공개 목록_을 유지하면서 각 포럼에서 멤버의 원격 평판이 해당 멤버의 로컬 지위를 강화하는 방식이 더 쉬울 것 같습니다(보이는 것처럼). 아마 신뢰 수준(trust levels) 개념을 사용자뿐 아니라 인스턴스에도 확장할 수 있을까요? 예를 들어 Meta라는 인스턴스가 TL3을 가진다면, 그곳에서 온 사용자는 초기에 TL2를 부여받고, 사용자가 활동하지 않을 경우 _감쇠 계수(decay factor)_가 적용되는 방식입니다. 이는 또 다른 복잡성 계층을 추가하지만, 저는 단순히 생각해보며 전체 인스턴스를 신뢰하는 방식의 대안 가능성을 스케치해 보고자 합니다.

어떤 사용자가 어떤 인스턴스를 사용하는지에 대해서는 신중해야 한다는 점에 동의합니다. 이를 고려해야 하지만, 공개 인스턴스에 게시하는 것만 해도 해당 인스턴스를 사용한다는 사실이 사실상 공개되는 것과 같을 수 있습니다. 다만, 비공개 게시판의 경우에는 상황이 다를 수 있습니다.

2개의 좋아요

여전히 디렉터리 수준에서 사용자 목록을 구현하는 방안을 고민 중입니다. :slightly_smiling_face:

https://DiscourseDiscovery.org -

익명 사용자는 공개 목록에 포함되도록 등록한 포럼들의 디렉터리를 볼 수 있으며(카테고리나 '포럼 태그’로 검색 가능), 디렉터리 내 모든 인스턴스에서 검색 키워드를 사용할 수도 있습니다.

DiscourseDiscovery 사용자 계정을 만들려면 가입하세요. 새 계정은 Hub_Level_0에서 시작하며, 특정 작업을 완료하고 사람들이 필요하다고 생각하는 모든 기술을 다루는 맞춤형 Discobot '포럼 트레이닝’을 통해 나머지 Hub_Level로 승격될 수 있습니다.

다른 Hub_Level은 디렉터리 전반에서 더 많은 기능에 대한 접근을 허용합니다. 예를 들어, 익명 사용자에게는 일반적으로 보이지 않는 카테고리를 확인하거나, ‘좋아요’ 누르기나 투표 참여와 같은 작업을 수행할 수 있습니다(애스오시에이트/Hub_Level 멤버를 나타내기 위해 아바타 이미지에 빨간색 원이 표시될 수 있음), 또는 주제 콘텐츠에 대한 알림을 받을 수 있습니다. 아바타를 탭하면 해당 사용자의 DiscourseDiscovery 사용자 카드(Usercard)가 표시됩니다.

사용자는 ‘정식 멤버’ 포럼 계정을 연결된 DiscourseDiscovery 사용자 페이지에 추가할 수 있습니다(원하는 경우 일부는 제외 가능). 여기에서 배지 수, 최신 활동 등을 집계할 수 있습니다.

포럼은 보안 설정에서 카테고리, 투표 등 특정 항목에 대한 접근을 정식 멤버로만 제한하는 옵션을 제공할 수도 있습니다. 또한 공개 디렉터리에 포함될지, 사용자의 Hub_Level에 기반한 더 사적인 디렉터리에 포함될지(아니면 아예 포함되지 않을지) 선택할 수도 있습니다.

그저 몇 가지 아이디어입니다. :slightly_smiling_face:

3개의 좋아요