ActivityPub 지원: Phase 1 RFC에서 저는 Discourse에 ActivityPub 지원을 도입할 비즈니스 사례를 평가하고, Discourse가 처음부터 연동(federation)을 염두에 두고 구축되었다고 가정하여 MVP를 넘어선 가능성을 살펴보기 위한 아이디어 발상 운동을 제시했습니다:
따라서 저는 현재 코드베이스의 기술적 실용성을 고려하지 않고, 네이티브 연동 지원이 어떤 모습일지에 대한 비전을 가지고 브레인스토밍으로 아이디어 발상을 시작하겠습니다. 이 모든 것에는 많은 세부 사항과 엣지 케이스가 있다는 것을 인지하고 있습니다. 자, 시작합니다..
커뮤니티에는 경계가 없다
(Pixabay의 Pexels 사진)
우리는 모두 하나의 행성을 공유하며 복잡한 사회 구조 속에서 섞여 살아갑니다. 왜 Discourse 커뮤니티가 단일 포럼으로 제한되어야 하는가요?
저는 Humane Tech Community (HTC)의 관리자이며, 우리는 기술 관련 다양한 주제 영역을 다루고 있으며 “자유 > 프라이버시”, “정렬 > 윤리”, “정렬 > 표준” 등의 (하위)카테고리를 가지고 있습니다. 아마도 너무 광범위할 수 있으며, 이러한 카테고리에 특화되어 우리를보다 더 잘 수행하는 다른 많은 Discourse 포럼들이 존재합니다. 그러나 휴먼 테크놀로지라는 _전체 분야_에 대한 개요를 얻고자 하는 사람들에게는 이러한 광범위한 포지셔닝이 합리적입니다.
카테고리 연동
예를 들어, 우리의 “프라이버시” 하위 카테고리를 PrivacyTools 포럼의 “블로그 게시물” 하위 카테고리와의 연동이 가능하다고 가정해 봅시다. 아마도 HTC의 프라이버시 하위 카테고리가 더 광범위한 범위를 가지고 있으므로 한 방향으로만 주제를 동기화하도록 설정할 수 있습니다 - PrivacyTools에서 생성된 주제가 HTC 포럼에 나타나고, 우리의 멤버들이 그와 상호작용할 수 있도록 하는 것입니다. HTC 포럼의 주제 게시물은 PrivacyTools의 해당 주제로 다시 전송되고 그 반대도 마찬가지입니다. 두 포럼의 주제는 동기화 상태로 유지됩니다. 아마도 저는 PrivacyTools의 여러 하위 카테고리를 HTC의 "프라이버시"로 한 방향으로 동기화하는 것도 원할 수 있습니다. 그리고 왜 비슷한 방식으로 다른 프라이버시 관련 커뮤니티들과 동기화하지 않겠습니까.
또 다른 예입니다. Feneas와 SocialHub 모두 최상위 “ActivityPub” 카테고리를 공유합니다. 여기에는 중복이 있으며, 한 커뮤니티의 멤버들이 다른 커뮤니티에서 무슨 일이 일어나고 있는지 모르고 있습니다. 이는 "ActivityPub"이 양방향 동기화의 후보가 될 수 있는 기회로, 각 포럼이 동일한 주제 목록을 포함하게 됩니다.
태그 및 개별 주제 연동
태그에도 동일한 원리가 적용될 수 있으며, 특정 태그가 연동되도록 구성될 수 있습니다. 예를 들어, SocialHub에서 #specification 태그가 있는 모든 주제가 HTC의 “정렬 > 표준” 하위 카테고리로 연동되도록 설정할 수 있습니다.
주제는 또한 툴바 명령을 통해 트리거되는 경우별(case-by-case)로 연동될 수 있으며, 이때 연동할 대상 포럼을 지정하고, 주제가 나타날 원격 카테고리를 선택할 수도 있습니다(즉, 원격 브라우징을 위해 포럼 카테고리 목록도 연동됨).
멤버 멘션 및 프로필 보기
주제가 다른 포럼으로 연동되면, 내부의 멘션은 멤버가 어디에 위치하는지 반영하도록 조정되어야 합니다. HTC에서의 제 @aschrijver 핸들은 동기화 후 SocialHub 포럼에서 @aschrijver@humanetech로 나타날 수 있습니다.
저는 SocialHub에서도 사용자이므로, 프로필 설정에서 계정을 연결할 수 있으며, 인증 후 동기화된 주제에서 제 로컬 계정 핸들이 표시될 수 있습니다.
원격 핸들 또는 멤버 아바타를 클릭하면 원격 포럼의 프로필 카드가 표시됩니다. 프로필 요약을 보기 위해 다시 클릭하면, 동기화된 주제 상호작용으로 인해 로컬 포럼에서 발생한 활동 지표만 표시될 수 있습니다. 또는 더 흥미롭게도, 연동 설정의 일부인 모든 알려진 포럼의 요약을 표시할 수 있습니다. 예를 들어, 저는 응답이 다른 포럼의 매우 활동적인 전문가 멤버로부터 온 것임을 알 수 있게 될 것입니다.
직접 메시지 및 알림
DM은 로컬이 아닌 모든 연동 포럼 간에 가능하며, DM에서 원격 멤버를 태그/멘션함으로써 가능합니다. 그 외에는 DM 통신 방식에 차이가 없습니다. 현재 로컬 전용 DM과 동일하게 작동합니다.
위에서 설명한 모든 연동 사항으로부터 알림도 연동할 필요가 생깁니다. 원격 멤버의 게시물에 응답하거나, 그 게시물을 좋아하거나, 동기화된 주제 스레드에서 그들을 멘션하면, 원격 포럼에 멤버를 알리기 위한 UI 알림이 나타날 수 있습니다. 이메일 알림도 원격 포럼에서 처리됩니다. 그러나 멤버가 두 포럼 모두에서 계정을 연결했다면, 상호작용이 처음 발생한 로컬 포럼에서 알림이 올 수 있습니다.
단일 로그인 (SSO)
지금까지 설명된 모든 기능에서 SSO가 필요하지 않다는 점에 유의하세요. 원격 멤버는 다른 연동 포럼에 자동 특권 접근 권한을 갖지 않습니다. 그렇다면 일방향 동기화된 주제 스레드에서 멘션되면 어떻게 될까요? 그 경우, 그들은 자신의 포럼 인스턴스에서 온 UI 알림과 이메일을 받게 되며, 클릭하면 다른 포럼(아마도 새 브라우저 탭에서)으로 이동하여 주제를 단순히 볼 수 있습니다. 응답하려면 먼저 가입하고 계정을 연결해야 합니다.
Fediverse에서 SSO는 아직 좋은 해결책이 없는 까다로운 문제라는 점에 유의하세요. 그러나 Discourse-to-Discourse 연동에서는 SSO 기능을 구현하는 것이 훨씬 쉬울 수 있습니다. SSO 통합이 있다면, 알림을 클릭하면 현재 포럼 내에서 컨텍스트에 맞게 주제가 열릴 수 있으며('원격 보기’로), 멤버가 원활하게 상호작용할 수 있습니다.
연동 관리 및 복잡성
이 전체 사용 사례는 Discourse가 처음부터 내장된 연동 지원과 함께 구축되었다고 가정하여 설명되었습니다. 이 모든 것이 구현되면 제품의 거의 모든 기능에 영향을 미칩니다. 이 스레드를 시작한 사용 사례인 FB 스타일 개인화된 피드와 달리, 여기의 연동은 개별 멤버의 임의적인 판단이 아니라 포럼 스태프에 의해 신중하게 관리됩니다.
연동 설정의 대부분은 관리자 전용 사항입니다. 커뮤니티 조직과 콘텐츠가 직관적이고 논리적으로 유지되도록 전략적이고 좋은 계획에 따라 수행되어야 합니다. 연동 설정은 캐주얼하게 추가되는 것이 아니라, 커뮤니티 빌딩 워크플로우의 일부로 시간이 지남에 따라 점진적으로 구축됩니다.
상호 운용성
물론 이 ActivityPub 지원 비전은 Discourse로 제한될 필요가 없습니다. 모든 호환 가능한 소프트웨어 프로젝트가 분산 커뮤니티 구조의 일부가 될 수 있습니다. 예를 들어, 제가 방금 이 게시물의 방향을 가리켜 준 forem의 오픈소스 커뮤니티 빌딩 소프트웨어와 loomio 협업 의사결정 플랫폼 등이 있습니다. 그러나 Discourse는 이 모든 것에서 선두를 차지할 기회를 가지고 있습니다.
Fediverse 통합
지금까지의 모든 연동 지원은 포럼/커뮤니티 비즈니스 도메인으로 제한되었지만, ActivityPub 통합을 통해 상호 운용성은 더 넓은 Fediverse를 포괄하여 확장될 수 있으며, 수많은 흥미로운 비즈니스 사례를 가능하게 합니다. 지금 제 머릿속에 떠오르는 몇 가지를 나열해 보겠습니다:
- Mastodon / Pleroma 마이크로블로깅 플랫폼의 투츠(toots)로 포럼 게시물을 Fediverse 전체에 공지합니다.
- 임베드된 이미지는 자동으로 PixelFed에 업로드되고 거기서 제공됩니다(예: Blender 커뮤니티에 적합).
- 날짜/시간 툴바를 사용하여 Fediverse를 대상으로 한 전체 Mobilizon 이벤트를 RSVP 기능과 함께 설정합니다.
- 통합은 양방향으로 활성화되며, 이벤트의 Mobilizon 토론은 실제로 Discourse 주제입니다.
- 특별한 비디오 기능을 가진 PeerTube 주제를 생성하며, 게시물은 PeerTube의 댓글 스레드입니다.
- 게시된 주제가 자동으로 Writefreely 블로그 게시물 및 댓글 스레드가 됩니다.
- 포럼의 일부를 Nextcloud에 앱으로 임베드합니다(그들의 ActivityPub 지원을 통해).
- 팟캐스트 기능을 Funkwhale을 통해 통합합니다(팟캐스트 지원에 대한 최근 비디오 참조).
- 개발 중인 전문 소셜 네트워크(LinkedIn 같은 롤로덱)인 Flockingbird에서 프로필 정보를 가져옵니다.
ActivityPub Watchlist의 계속 증가하는 앱 수를 살펴보고 상상력을 펼쳐 보세요 ![]()
결과
잠시 모든 기술적 장벽과 장애물을 잊고, 이것이 Discourse라는 제품에게 무엇을 의미하는지 생각해 봅시다. 또는 Discourse가 더 이상 '단순한 제품’이 아닌 경우: Discourse는 분산 커뮤니티 구조가 되었습니다.
포럼 스태프는 더 이상 단순히 스태프가 아닙니다. 그들은 커뮤니티 빌딩에 훨씬 더 넓은 관점을 채택하게 될 것입니다. 커뮤니티와 커뮤니티 콘텐츠는 모두 Discourse 구조 전체에 걸쳐 존재합니다. 스태프는 다른 Discourse 인스턴스를 적극적으로 살펴보고, 그들의 스태프를 접촉하여 파트너십을 형성하고, 커뮤니티 조직과 콘텐츠를 가장 흥미롭게 슬라이스하고 다듬기 위한 흥미로운 연동 설계를 만들 것입니다.
커뮤니티 멤버들도 훨씬 더 잘 서비스받을 것입니다. 더 흥미로운 콘텐츠가 그들의 포럼 '포털’로 흘러들고, 포럼은 로컬에만 국한된 것보다 더 활동적이 될 것입니다. 커뮤니티 멤버들은 구조 전체에 걸쳐 다른 포럼 인스턴스의 멤버들을 발견하고 상호작용할 수 있게 됩니다. 사실 커뮤니티 경계는 제거되었습니다: 커뮤니티에는 경계가 없다.

