질문: 공유된 주제 URL이 다른 Discourse에 게시될 때 자동으로 멘션하는 방법

이 메타 포럼이나 다른 곳에서 멘션될 때, 공유된 주제 URL을 수정하는 방식으로 시스템 계정이 링크를 자동으로 언급할 수 있는 방법이 있는지 궁금합니다.

현재는 게시글을 생성한 후 소유권을 시스템으로 전환하여 이 동작을 시뮬레이션하고 있습니다. 여기에서 직접 확인해 보세요.

잘 이해가 되지 않습니다. 이것이 왜 바람직한지 구체적인 현실적인 예시를 제공해 주시겠습니까?

네,

  1. 포럼 A에 새 게시글을 생성
  2. 해당 게시글의 URL을 포럼 B에 공유합니다. 포럼 B는 다른 Discourse 인스턴스입니다.
  3. 어떤 식으로든 포럼 A에서 이 일이 발생했음을 감지하고, system을 트리거하여 원래 포럼 A 스레드에 자동으로 응답하도록 합니다. 표시 내용은 다음과 같습니다:

그래서 도움이 되긴 하는데, 왜 그런 거죠? 이게 왜 중요한 건지, 왜 필요한 건가요?

(아마 GitHub 연동에서도 비슷한 걸 하고 있긴 한데, Discourse 토픽을 커밋에 연결하는 방식이죠. 이건 초콜릿과 땅콩버터처럼 서로 다른 두 가지 훌륭한 맛을 섞는 것과 같은 거예요. 그런데 여기서는 땅콩버터에… 뭐… 또 땅콩버터를 섞는 거 아닌가요?)

저희가 meta.discourse 같은 장소를 활용해 자체 Discourse에서 논의된 이슈들을 다루고 있는데, 대부분의 관리자가 사용자나 향후 유지보수자를 위해 해당 스레드를 컨텍스트로 링크해 주는 생각을 하지 않는 경우가 많거든요. 그래서 이 기능이 정말 유용하다고 생각합니다. 저는 최근에야 포럼 유지보수를 맡게 되었기 때문에, 앞으로의 유지보수자를 위해 더 많은 정보를 남겨 두고 싶습니다. :slight_smile:

요즘 포럼 기술의 "연방(Federation)"은 뜨거운 주제인 것 같습니다. 불가능할 것 같지만, 혹시나 해서 물어봅니다.

정말 미치도록 복잡한 문제입니다. 소셜 소프트웨어에서 "완전 자율주행차가 곧 온다"는 말과 같은 맥락이죠.

GitHub ⇿ Discourse 사용 사례는 타당성이 있지만, 개인 대 개인(P2P) 방식은 그렇지 않다고 생각합니다. 리즈 피넛버터 컵의 전이 법칙으로 보면 그렇습니다.

핑백도 그렇게 작동하지 않았나요?

핑백은 블로그 스피어에서 큰 골칫거리가 되어 악용 사례가 쏟아졌지만, 근본적으로 해결된 적은 없습니다.

신뢰할 수 있는 사이트를 화이트리스트로 등록하는 방식도 가능하겠지만, 여전히 큰 노력에 비해 효과가 미미해 보입니다. 서버 중 하나가 더 새로운 버전이나 표준으로 업데이트되면 어떻게 되나요?

반면에, incoming_links, incoming_referers, incoming_domains를 사용하면 상대적으로 쉽게 구현할 수 있지 않을까요?

incoming_domain을 화이트리스트에 등록할 수 있고, 해당 도메인에서 해당 토픽으로 연결되는 링크에 대해 원박스(Onebox)를 생성할 수 있다면 어떨까요?

수정: 아래 스니펫은 특정 토픽을 가리키는 디스코르스(Discourse) 사이트*의 모든 링크를 나열합니다. 새 링크를 발견할 때마다 해당 토픽에 게시물을 삽입하는 예약 작업으로 이 코드를 넣는 것은 꽤 쉬울 것입니다. 원박스가 나머지를 처리해 줄 것입니다.

topic = Topic.find(xxx)
IncomingLink.where("post_id in (#{topic.posts.pluck(:id).join(',')})").where("incoming_referer_id is not null").each do |link|
  next unless link.incoming_referer.path.start_with?('/t/')
  puts "https://#{link.incoming_referer.incoming_domain.name}#{link.incoming_referer.path}"
end

*) 현재 디스코르스 링크인지 여부를 판단하기 위해 간단한 검사를 사용 중이지만, 사이트의 홈 페이지를 요청하여 메타데이터를 검사하는 방식으로 확장할 수도 있습니다. 비디스코르스 사이트의 링크에도 매우 잘 작동할 수 있다고 생각합니다. 플러그인 설정에서 도메인을 화이트리스트에 등록하는 방식이 될 수 있겠네요.