본문으로 건너뛰기

디렉터리

Reddit에서 r/opensource 같은 이름은 단 하나의 커뮤니티에만 속할 수 있고, 그 이름을 관리하는 쪽이 계속 차지합니다. 모더레이터가 사용자들이 싫어하는 결정을 내려도 유일한 대안은 r/opensource2를 새로 시작하는 것뿐입니다. r/opensource를 구독한 사람 대부분은 특정 모더레이션 팀이 아니라 오픈 소스 자체에 관심이 있었는데도, 새 커뮤니티는 구독자 0명에서 출발합니다.

Bitsocial 앱은 디렉터리로 이 문제를 피합니다. 디렉터리는 opensource처럼 여러 커뮤니티가 차지하려고 경쟁하는 주제 이름입니다. 그 이름의 짧은 경로는 현재 1위인 커뮤니티를 열어 주므로, 더 나은 커뮤니티는 누구의 허락 없이도 그 이름을 넘겨받을 수 있습니다.

작동 방식​

  1. 디렉터리 코드는 주제 이름입니다. Seedit은 /s/funny 같은 경로를 사용합니다. 5chan은 /g/ 같은 이미지보드 경로를 사용합니다.
  2. 커뮤니티는 후보로서 경쟁합니다. 각 디렉터리에는 후보 커뮤니티 목록이 있으며, 각 후보는 funny-posting.bso처럼 고유한 정확한 주소를 가집니다.
  3. 순위가 가장 높은 후보가 경로를 차지합니다. /s/funny를 열면 현재 1위 커뮤니티가 표시됩니다.
  4. 밀려나도 아무것도 삭제되지 않습니다. 1위가 아닌 커뮤니티도 주소, 게시물, 구독자를 그대로 유지하며, 누구나 여전히 직접 열 수 있습니다.

이름은 정체성이 아니라 현관문입니다​

디렉터리 코드는 발견을 위한 경로일 뿐입니다. 오래 유지되는 모든 것은 특정 커뮤니티의 정확한 주소를 가리킵니다.

  • /s/funny에서 구독하면 현재 1위 커뮤니티의 정확한 주소를 구독하게 됩니다. 디렉터리 코드 자체는 구독으로 저장되지 않습니다.
  • 게시물 링크는 항상 커뮤니티의 정확한 주소를 사용하므로, 1위가 바뀐 뒤에 예전 링크가 다른 커뮤니티를 가리키게 되는 일은 없습니다.
  • 1위가 바뀌면 Seedit은 기존 구독을 그대로 두고, 각 구독자에게 새 1위 커뮤니티로 옮길지, 둘 다 유지할지, 현재 커뮤니티를 유지할지 묻습니다. 자동 전환은 디렉터리별로 직접 켜야 하는 설정이며, 자동으로 전환되면 실행 취소가 가능한 알림이 표시됩니다.

따라서 경쟁 커뮤니티가 누군가의 구독을 빼앗아 가는 것은 아닙니다. 경쟁 커뮤니티가 얻는 것은 이름입니다. 새 방문자는 그 커뮤니티로 들어오고, 기존 구독자는 클릭 한 번으로 선택할 수 있습니다. 이전 커뮤니티를 선호하는 사람은 그대로 그 커뮤니티에 남습니다.

왜 선착순 이름이 아닌가​

  • 이름 선점이 통하지 않습니다. 좋은 이름을 차지하는 것만으로는 부족합니다. 커뮤니티는 그 이름에 가장 알맞은 후보로 계속 남아 있어야 합니다.
  • 이름을 배정하는 관리자가 없습니다. 관리자가 이름을 배정하면 Bitsocial이 없애려는 중앙의 거부권이 다시 생깁니다.
  • 경쟁자에게도 청중에게 닿을 길이 남습니다. 경쟁 커뮤니티는 더 못한 이름으로 처음부터 다시 시작하는 대신 같은 이름을 노립니다.
  • 클라이언트들이 같은 1위에 합의합니다. Seedit은 후보 순위를 결정론적으로 매기므로, 확정된 같은 디렉터리 스냅샷을 읽는 모든 클라이언트는 같은 1위를 표시합니다. 한 사용자의 연결에서 1위 커뮤니티에 일시적으로 접속할 수 없다고 해서 Seedit이 다른 후보로 바꿔 보여 주지는 않습니다.

현재 1위를 정하는 방법​

후보는 bitsocialnet/lists 저장소에 디렉터리마다 하나씩 JSON 파일로 게시되며, 커뮤니티는 해당 파일에 풀 리퀘스트를 보내 디렉터리에 참여합니다. 이는 초기 부트스트랩 단계입니다. 목표는 풀 리퀘스트 대신 투표로 1위를 정하는 것입니다.

  • Seedit은 디렉터리의 후보를 점수 순으로, 그다음 추가된 시각 순으로, 그다음 주소 순으로 정렬합니다. 각 디렉터리 파일에는 리비전 번호가 있으며, 후보나 1위가 바뀌면 새 리비전이 게시됩니다.
  • 5chan은 @bitsocial/pubsub-voting을 사용해 디렉터리마다 투표 경선을 하나씩 운영합니다. 클라이언트는 libp2p gossipsub으로 서명된 투표용지를 주고받고 집계를 직접 계산하며, 표를 세는 서버는 없습니다. 투표하려면 양도할 수 없는 토큰인 5chan Pass를 보유해야 하며, 보유자마다 한 표를 가집니다. 아직 목록에 없는 보드에 투표하면 그 보드를 후보로 추천하게 됩니다. 경선은 현재 Base Sepolia 테스트넷에서 진행되며, 테스트넷을 벗어나기 전까지 집계는 표시되지만 목록 순서를 바꾸지는 않습니다.

프로토콜인가, 앱인가?​

디렉터리는 커뮤니티를 저장하고 전달하는 P2P 계층인 PKC의 일부가 아닙니다. 디렉터리는 클라이언트가 그 위에서 기본 목록, 검색과 함께 적용하는 관례입니다. 콘텐츠 발견을 참고하세요. 클라이언트는 같은 디렉터리 파일을 읽을 수도, 자체 파일을 게시할 수도, 디렉터리를 아예 쓰지 않을 수도 있으며, 사용자는 언제든 주소로 어떤 커뮤니티든 열 수 있습니다.