Discourse에서 AP(액티비티퍼블리싱) 게시물을 삭제하면 Mastodon으로 해당 콘텐츠에 대한 삭제 요청을 보내게 됩니다. 이를 처리하는 것은 Mastodon 측의 몫입니다. 이 기능이 정상적으로 작동해야 하므로, 구체적인 예시를 보여주시면 삭제 플로우가 예상대로 작동하지 않는 이유(즉, Discourse 측인지 Mastodon 측인지)를 확인해 볼 수 있습니다.
이러한 상황이 발생하는 이유는 Mastodon이 현재 핸들 변경을 지원하지 않기 때문입니다. 이는 귀하가 겪고 있는 문제의 근본 원인입니다. 저는 오랫동안 이 사항이 반영되도록 주장을 해왔으며, Mastodon에 대해 미병합 상태인 PR(Pull Request)을 가지고 있습니다. 해당 PR이 병합되면 Discourse에서 핸들을 변경하여 이 문제를 해결할 수 있게 될 것입니다.
핸들을 비활성화하는 유용함은 해당 핸들로 들어오는 콘텐츠가 처리되지 않고, 새로운 콘텐츠가 전송되지 않는다는 점입니다. 기존 콘텐츠에 대해 다른 플랫폼이 어떻게 처리할지는 해당 플랫폼의 재량이며, 우리가 보내는 삭제 활동(Delete activity)을 어떻게 처리할 것인지도 포함됩니다.
“Full Post” 설정이 켜져 있는 경우(귀하의 경우에도 켜져 있어야 합니다) 이는 예상되는 동작입니다. 콘텐츠는 사용자의 액터 이름(이 경우 귀하)으로 게시됩니다. 카테고리 액터 이름으로 게시하려면 "First Post"를 사용해야 합니다. 이 경우 각 토픽의 첫 번째 게시글만 게시됩니다. “First Post” 방식의 예시를 이 비디오에서 볼 수 있습니다:
게시물은 삭제할 수 있습니다. 게시물을 삭제하면 Discourse가 Mastodon에 삭제 요청을 보내고, Mastodon이 해당 사본을 삭제해야 합니다. 만약 작동하지 않았다면, 게시물을 복원한 후 다시 삭제해 보세요. 이 작업을 수행할 때 로그를 확인해 주세요.
말씀드렸듯이 게시물 자체는 삭제할 수 있어야 합니다. 하지만 그 외의 부분은 솔직히 너무 걱정하지 않으셔도 됩니다. Mastodon은 스트림 기반 플랫폼입니다. 테스트 게시물은 콘텐츠 스트림 속에서 금세 잊혀질 것입니다. 게다가 그 시점에 다른 사람들(본인 제외)이 실제로 당신의 액터를 팔로우하고 있었나요? 저는 페디버스에 수백 개의 테스트 게시물이 있지만 아무런 영향도 없었습니다
인스턴스 전체를 팔로우한다는 것은 해당 인스턴스의 모든 게시물이 마스토돈 피드에 하나의 연속된 스트림으로 표시된다는 것을 의미합니다. 해당 인스턴스에 활동이 많지 않다면, 나는 이것이 니치한 용도로 사용될 것이라고 추측합니다. 내가 틀렸을 수도 있지만, 겉으로 보기에는 이것이 인기 있을 것 같다는 생각은 현실적으로 불가능해 보입니다.
저는 트래픽은 적지만 분명히 활발하게 운영 중인 디스코URS 인스턴스가 긴 꼬리(long tail)처럼 존재한다고 생각합니다. 그리고 여전히 여러 카테고리를 유지하고 있죠. 물론 메타(Meta)는 이러한 작은 인스턴스 중 하나ではありません. 하지만 제가 개인적으로 관리하는 세 개의 디스코URS 인스턴스 중 하나는 트래픽이 매우 높아, 그 카테고리 중 상당수를 제 마스토돈 피드에 넣을 생각조차 하지 않습니다. 반면 나머지 두 개는 트래픽 발생 빈도가 충분히 낮아, 사이트 전체를 팔로우하는 것이 훨씬 낫다고 생각합니다. 제가 회원으로 가입해 있는 다른 곳에서도 선택지가 있다면 사이트 전체를 팔로우할 것입니다.
요청하는 것이 아닙니다. 우선순위를 바꾸라는 것도 아닙니다. 그저 대안적인 관점을 공유하는 것입니다.
이는 일부 AP 플랫폼에서 볼 수 있는 일종의 "기능"입니다. ActivityPub 사양에서는 다음과 같이 규정하고 있습니다:
HTTP GET 메서드는 객체의 id 프로퍼티를 참조하여 활동을 검색하는 데 사용할 수 있습니다. 서버는 [RFC7231]에 정의된 HTTP 콘텐츠 협상(content negotiation)을 사용하여 요청에 응답할 데이터 유형을 선택할 수 있습니다(MAY). 그러나 application/ld+json; profile="https://www.w3.org/ns/activitystreams"에 대한 응답으로 ActivityStreams 객체 표현을 반드시(MUST) 제공해야 하며, application/activity+json에 대한 응답으로도 ActivityStreams 표현을 제공해야 합니다(SHOULD). 클라이언트는 활동을 검색하려면 Accept 헤더에 application/ld+json; profile="https://www.w3.org/ns/activitystreams" 미디어 유형을 반드시(MUST) 지정해야 합니다.
오브젝트 ID는 최종 사용자가 클라이언트에서 공유하거나 복사할 수 있는 URL로 사용되도록 설계된 것이 아닙니다. 우리는 개발 및 디버깅 목적을 위해 ActivityPub 상태 모달에서 이를 제공하고 있습니다. 클라이언트는 직렬화된 객체의 url 속성을 사용해야 합니다. 예를 들어, mastodon.social에서 링크하신 토픽(여기)을 방문하여 투트 메뉴에서 "상태 링크 복사"를 클릭하면 meta에 있는 해당 토픽으로 직접 연결되는 링크임을 확인할 수 있습니다. 표준 Mastodon은 URL 공유를 위해 객체의 url을 사용합니다.
Accept 헤더가 설정되지 않아서 발생하는 문제입니다. 저는 설정을 조정하는 것에 열려 있습니다(예: 잘못된 헤더로 요청된 객체 ID를 연결된 모델 URL로 해석하는 것), 하지만 현재로서는 당신의 클라이언트를 만든 분들이 명세에 맞게 클라이언트를 업데이트해야 한다고 생각합니다(즉, 사용자 대상 URL로 객체의 id 대신 객체의 url을 사용하는 것).