ActivityPub 플러그인

저도 마찬가지입니다. 스레드의 소유자를 변경할 수 없어요. 카테고리가 비연동 상태인데도 말이죠.

그것들은 오류가 아니라 경고입니다. 반드시 문제가 있다는 뜻은 아니며, 현재 상황을 더 자세히 알려주기 위해 표시되는 것입니다. Fediverse의 콘텐츠가 처리되지 않는 이유는 여러 가지가 있을 수 있으며, 그 중 상당수는 콘텐츠를 보낸 사람의 문제와 관련이 있습니다. 로그에 이런 경고가 표시되지 않기를 원하시면 ActivityPub 플러그인의 상세 로깅(activity pub verbose logging)을 꺼두세요.

해당 주제가 ActivityPub 카테고리에 있는지, 아니면 ActivityPub 태그가 붙어 있나요?

해당 주제가 ActivityPub 카테고리에서 생성되었거나 ActivityPub 태그가 붙어 있나요?

ActivityPub 주제에 대해서는 주제 소유자 변경이 의도적으로 비활성화되어 있음을 유의하세요. 그 이유에 대해서는 위에서 확인해 주세요:

이것은 Activitypub 범주이지만, 해당 스레드의 소유자는 Activitypub에 관여하지 않는 별개의 계정입니다.

Activitypub에 어떤 업데이트도 보내지 않고 소유자를 변경할 수 있는 옵션이 제공되어야 한다고 생각합니다. 그렇지 않으면 Discourse에 소유자를 변경할 수 있는 모달이 있는 것이 의미가 없습니다.
또한 Activitypub에 업데이트를 보내지 않고 소유자를 변경할 수 있는 기능은 저희에게 매우 적합합니다.

1개의 좋아요

사람들이 게시물의 소유권을 변경할 수 있는 기능을 원한다는 것을 이해합니다. 이 측면에서 해결해야 할 문제는 위에서 제가 설명한 것이며, 특히 다음과 같습니다:

당신의 Discourse에 표시되는 콘텐츠는 당신이 관리자가 아닌 서비스에서 온 것입니다. ActivityPub가 없었다면 당신은 이 서비스에 대해 아무런 통제권도 없었을 것입니다. 이 사실을 충분히 고려하지 않고 해당 콘텐츠의 작성자 변경 기능을 단순히 확장하는 것은 현명하지 않습니다.

ActivityPub를 통해 게시된 주제에서 당신의 Discourse 사용자들이 작성한 콘텐츠의 경우, 게시물 작성자를 변경한 후 콘텐츠에 업데이트가 이루어지면 어떻게 되어야 하는지 고려해 보세요. 우리는 다음 중 무엇을 해야 할까요?

  1. ActivityPub 업데이트 게시를 중단하거나;
  2. “구” 액터(사용자)로 게시하거나;
  3. “신” 액터(사용자)로 게시합니다.

기존 객체에 대해 새로운 액터(즉, 3번)로 업데이트 활동을 게시하는 것은 Discourse에서는 작동합니다(이 질문에 대한 affordance를 제공하려고 시도했듯이), 하지만 다른 ActivityPub 서비스에서는 작동하지 않습니다. 실제로 저는 이 이유로 ActivityPub 생태계에서 이 점을 이미 주장해 왔습니다. 여기 참고하세요:

또한 3번을 가능하게 하기 위해 Mastodon에 미처리된 PR이 있습니다

여기서 발생하는 문제 중 하나에 대한 예를 들어보겠습니다. 당신의 계정(그리고 당신의 이름과 사진)이 첨부된 ActivityPub 콘텐츠를 게시하고 있다고 가정해 보세요. 당신의 “경쟁자” 중 한 명이 당신의 콘텐츠를 팔로우합니다. 그들의 서버에서는 당신의 콘텐츠가 포함된 모든 게시물의 소유권을 당신에 의한 게시물이 아니라 그들에 의한 게시물(그들의 이름과 사진)로 변경합니다. 이는 다소 이해할 수 있는 방식으로 당신을 불편하게 만들 수 있습니다. 네, 물론 커스텀 코드를 사용하면 항상 가능하지만, 문제는 이것이 플러그인의 기본 affordance에 내장되기를 원하는지 여부입니다.

이것을 밤새 생각해 보았는데, 이 문제를 다소 완화할 수 있는 한 가지 접근 방식은 ActivityPub 상태 표시에 게시 액터를 추가하는 것입니다:

그런 방향의 다른 아이디어에도 열려 있습니다.

맞습니다. 여기의 근본적인 질문이 해결될 때까지 ActivityPub 주제에서 모달을 완전히 제거할 것 같습니다.

2개의 좋아요

문제를 이해합니다. 저희의 경우, Activitypub를 사용하여 각 카테고리에 대해 계정을 하나씩 만들고, 해당 업데이트를 게시합니다. 따라서 Activitypub의 다양한 상황에서 스레드의 소유자가 누구인지에 대해 저희는 크게 중요하게 생각하지 않습니다. 이 때문에, 어떤 경우에도 이 기능을 사용할 수 있어야 한다고 생각합니다.

ActivityPub는 단순히 포럼을 어떻게 사용하는지에 관한 것이 아니라, 포럼이 나머지 fediverse와 어떻게 상호작용하는지에 관한 것입니다. 또한, 플러그인에 특정 기능을 구현하려면 다른 사용 사례도 고려해야 합니다.

게시물 소유자 변경을 허용하는 것이 적극적으로 검토 중인 문제가 아니거나, 향후 업데이트에서 허용되지 않을 것인 것처럼 오해를 주지 않기를 바랍니다. 저는 위에서 언급한 근본적인 문제들을 해결하기 위해 사람들이 가지고 있는 모든 아이디어에 관심을 가지고 있습니다.

이 예시를 다루기 위해, 연동(federation)되어 들어온 게시물의 소유권 변경은 금지하되, 해당 Discourse 인스턴스 내에서 작성된 게시물의 소유권은 연동 여부와 관계없이 관리자가 변경할 수 있도록 하는 것이 합리적일 것입니다.

관리자는 사용자를 사칭할 수 있습니다. 따라서 관리자는 플랫폼의 기존 기능 내에서 플랫폼의 어떤 사용자로 가장하여 콘텐츠를 작성할 수 있습니다. 관리자가 이러한 권한을 남용하지 않기를 바랍니다. 저도 남용하지 않습니다. 그러나 이러한 권한은 연동되었든 아니든 게시물의 소유권을 변경할 수 있는 능력과 유사한 영향을 미칩니다. 일반적으로 '관리자가 무언가 악의적인 행위를 할 수 있다’는 사실은 이미 수많은 방식으로 참입니다.

(최소한 제가 이해하는 범위 내에서 :grin:) 연동을 통해 작성된 게시물의 소유권 변경(따라서, 주제 게시물이 아님)은 큰 의미가 없다고 생각합니다. 사이트 내에서 작성된 게시물의 소유권 변경과 달리, 이 기능에 대한 사용 사례가 명확히 제시된 것을 본 기억이 없습니다.

이 기능은 이러한 유형의 공격에 대한 강건성뿐만 아니라, 연동을 더 가시적으로 만들어 사이트 방문자가 팔로우할 액터를 찾는 것을 더 쉽게 만들어 준다는 점에서 좋습니다. 카테고리 액터(그리고 어쩌면 언젠가는 사이트 액터?)와 개인 액터가 있는 경우 이 표시는 어떤 모습일까요? 목록을 표시할까요?

  • [@category@site](link) 에 의해 게시됨
  • [@person@site)(link) 에 의해 게시됨
1개의 좋아요

유용한 분석을 감사합니다.

동의합니다.

이 분석은 비연동(non-federated) 게시물에만 적용됩니다. 문제는 Discourse 자체에서 게시물 소유권을 변경하는 것이 합리적인지 여부가 아닙니다. 문제는 소유권 변경이 연동 콘텐츠에 어떤 영향을 미치는지입니다. 연동된 로컬 게시물의 소유권을 변경하면 다음 질문에 직면하게 됩니다:

먼저, 1과 2 모두 상당한 문제점을 가지고 있음을 지적하겠습니다. 필요시 더 자세히 설명할 수 있습니다. 답은 플러그인이 이미 지원하는 "3"일 수 있습니다. 하지만 그 방향으로 간다면 (제가 Mastodon에 제출한 현재 PR이 병합되지 않는다고 가정하면) 다음과 같은 일이 일어날 것입니다:

  1. 토픽이 연동됩니다.
  2. 토픽의 게시물들이 Mastodon에 표시됩니다.
  3. 사이트 관리자가 게시물 소유권을 변경합니다.
  4. 새로운 게시물 소유자가 게시물에 여러 가지 편집을 수행합니다.
  5. 편집 내용이 Mastodon(또는 그 밖의 어떤 ActivityPub 플랫폼)에 반영되지 않습니다.

그리고 이로 인해 다음이 발생합니다:

  1. 누군가 와서 "내 편집 내용이 연동되지 않고 있다"고 할 것입니다. 그 이유는 Discourse의 관점에서는 편집 내용이 연동되고 있기 때문에 바로 파악하기 어렵습니다.

여기서 핵심은 이 접근 방식을 채택할 경우, 제가 아는 한 우리는 페디버스(fediverse)에서 이렇게 하는 최초의 플랫폼이 된다는 점입니다. 상호 연결된 노드 시스템에서 유일한 노드가 무언가를 수행하는 것은 분명히 바람직한 일이 아닙니다. 우리는 그런 면에서 변화를 촉발할 수 있지만, 우리가 시도하고 있는 것이 바로 그 것임을 의식해야 합니다.

그럼에도 불구하고, 저는 이미 3을 구현했으며, 이것이 결국 이 제한을 제거할 수 있게 해줄 최종 답안일 것이라고 추측합니다. 여전히 누군가가 좀 더 세분화된 접근 방식이나, 제가 아직 생각하지 못한 무언가를 제안해 줄 수 있기를 희망하고 있습니다.

오직 해당 객체의 attributedTo Actor만 나열되므로, 하나만 있을 것입니다.

1개의 좋아요

나는 그 지저분함을 분명히 인지하고 있습니다. 제가 그 지점에 도달하게 된 사고 과정은 다음과 같습니다…

나는 #3에 #2의 아주 작은 부분을 더한 것을 단순히 상상해볼 수 있습니다 — 즉, 마지막에 게시한 버전의 상단이나 하단에 "향후 업데이트는 @newuser@site를 팔로우하세요"와 같은 모호한 시스템 생성 텍스트를 추가하는 방식으로, 기존 사용자의 생성된 업데이트를 연동(federate)하는 것입니다.

그러면 (다시 한번 단순히) 업데이트된 게시글에 새로운 attributedTo 아래에서 새 소유자의 업데이트에 사용될 새로운 ID를 할당하는 것이 합리적으로 보일 것입니다.

나에게 명백해 보이는 엣지 케이스는 소유권을 원래 소유자에게로 되돌리는 경우입니다 — 기존 게시글 ID로 되돌아가는 것일까요, 아니면 또 다른 ID를 할당하는 것일까요? 저는 되돌아가는 것이라고 생각하는데, 그렇다면 연동된 게시글 ID는 실제로 (사용자, 디스커스 게시글) 튜플의 키가 되어야 할 것입니다. 이를 지원하기 위해 후방 호환성을 가진 마이그레이션이 필요할 것으로 예상됩니다.

이 모든 것이 사고 실험으로서, 마스토돈(Mastodon)에 대한 제안된 변경 사항이 고려되는 것을 서두르지 않으려는 이유가 더 명확하게 이해되게 합니다! :slightly_smiling_face:

마스토돈 PR이 승인되는 것을 제외하고, 개별 게시글을 비연동(unfederated)으로 표시할 수 있다고 상상해볼 수 있습니다. 이는 이전에 연동된 경우 삭제 연동으로 처리되며, 플러그인이 설치되어 있지만 연동이 활성화되기 전에 수행할 수도 있고, 비연동 게시글에 대해서만 소유권 변경을 허용할 수 있습니다. 제 생각에, 소유권을 변경하고 싶은 모든 게시글은 연동할 가치가 없는 게시글입니다.

마스토돈 PR이 승인되고 소유권 변경이 지원되더라도, 이것이 유용할 수 있다고 상상해볼 수 있습니다. 예를 들어, 카테고리 주제 게시글을 연동하는 것이 어떤 의미가 있는지 모르겠습니다. 적어도, 만약 제외할 옵션이 있다면, 소유권 변경이 지원되더라도 제 사이트에서 연동에서 모든 것을 제외할 것이라고 생각합니다.

흥미로운 사고 실험이지만, 몇 가지 이유로 인해 이는 작동하지 않을 것입니다.

  • 디스커스 activitypub에서 개별 사용자를 팔로우하지 않습니다.
  • 기존 activitypub 객체의 ID를 변경할 수 없습니다(새로운 객체를 생성해야 합니다).
  • 말씀하신 대로 소유권이 다시 변경되거나 여러 번 변경되면, 하나의 게시물에 대해 여러 객체가 생성되어 관리할 수 없게 됩니다.

이 맥락에서 지금 제가 할 수 있는 한 가지는 로컬 토픽의 첫 번째 게시물이 게시되었는지에 대한 제한을 변경하는 것입니다. 말씀하신 대로 일부 토픽에 도움이 될 것입니다.

1개의 좋아요

제 오해였습니다. 카테고리 액터와 함께 그 기능도 만들었다고 생각했습니다. (기능 요청이 아니라, 그저 오해였을 뿐입니다.)

제가 설명하려던 것이 바로 그것인데, 분명히 설명을 잘 못했습니다. 어쨌든 그것은 일종의 reductio ad absurdum(귀류법)으로 의도된 것이었습니다. :smiling_face:

그것은 정말 좋겠습니다! :heart:

1개의 좋아요

안녕하세요, Lemmy에 어떤 제한이 있나요?

예를 들어 @batepapo@lemmy.eco.br를 팔로우할 수 없어요.

사실 팔로우는 할 수 있습니다. 프로필 아래에 “팔로우 취소” 버튼도 표시되는데, 페이지를 새로고침하면 모든 것이 사라져요.

1개의 좋아요

잘하셨어요! 액티비티펍(Activity Pub) 전송 지연 분수에 대해 질문이 있습니다. 이 기능을 비활성화하여 게시물이 바로 보이게 할 수 있는 방법이 있을까요?

1분으로 설정하면 거의 즉시 실행되지만, 실시간으로 게시하는 것도 원합니다.

1개의 좋아요

@David_Ghost 이것을 읽어보세요

2개의 좋아요

저도 처음에 눈치챈 것이 바로 이것입니다. ActivityPub를 통해 배포되는 게시글에 새 주제의 제목을 추가하는 것의 단점은 무엇일까요?

[디스커스 주제 제목]
[빈 줄]
[디스커스 주제 본문, 현재 게시된 방식 그대로]

Lemmy 팀은 Discourse 호환성을 추가하는 작업을 진행 중이었습니다. 해당 사항에 대해 확인하는 것이 제 업무 계획에 포함되어 있습니다.

이는 Discourse가 Follow를 보내고 있지만, Lemmy로부터 Accept 응답을 받지 못하고 있다는 뜻입니다.

현재 환경 변수(예: app.yml 파일에서 설정)를 사용하여만 이 작업을 수행할 수 있습니다.

DISCOURSE_ACTIVITY_PUB_DELIVERY_DELAY=0

주제의 제목은 이미 공개되어 있습니다. 이는 주제와 연관된 컬렉션의 name입니다.

Discourse에서 Discourse로, 또는 Discourse에서 NodeBB로, 혹은 Discourse에서 다른 포럼형 플랫폼으로의 연동 시 주제 제목이 포함되는 방식이 바로 이렇습니다. Mastodon은 제목을 처리하지 않습니다. 제안하신 대로 Note의 콘텐츠에 주제 제목을 넣는 경우, 제목을 지원하는 플랫폼으로 콘텐츠가 연동될 때 문제가 발생할 수 있습니다.

근본적으로, 여러분이 설명하고 있는 제한 사항은 Mastodon이 마이크로 블로깅 플랫폼이라는 점입니다. 우리는 이를 고려하여 [note][/note] 마크업을 통해 연동하려는 콘텐츠를 지정할 수 있는 기능을 이미 추가했습니다. 진정한 포럼형 연동을 원하신다면, 다른 Discourse 인스턴스와의 연동을 권장합니다.

Mastodon 인스턴스가 많이 있지만, Discourse 인스턴스도 많습니다. 연동하고자 하는 Discourse 인스턴스가 아직 설정되어 있지 않다면, 설정을 돕기 위해 기꺼이 도움을 드리겠습니다.

5개의 좋아요

액터를 삭제할 수 있을까요?
그리고 디스커스에서 새로운 모든 내용을 게시할 수 있도록 여러 카테고리를 설정하는 것도 가능할까요?
그렇지 않으면, 모든 카테고리의 콘텐츠를 얻기 위해 누군가가 마스토돈에서 xx개의 핸들을 팔로우해야 합니다.

액터를 비활성화할 수 있으며, 이를 통해 해당 액터와 관련된 모든 기능이 비활성화됩니다.

액터가 연관된 카테고리나 태그를 삭제하면 액터도 함께 삭제됩니다. 액터만 단독으로 삭제하는 것은 현재 불가능합니다. 액터를 비활성화하는 것을 권장합니다.

이것은 디스코스 전체를 위한 “Application” 액터를 추가하게 된다면 미래에(중장기적으로) 가능할 수 있습니다. 디스코스의 모든 것을 단일 액터를 통해 연동하는 것은 아마도 항상 니치(특정 소수) 사용 사례가 될 것입니다.

1개의 좋아요

음, 알겠습니다. 아마 제 이해가 가능 범위에 대해 다를 수 있겠네요…

어제 설정을 해보았는데 잘 작동했습니다. Discourse에서 게시물을 삭제했는데, 그냥 테스트해본 것이어서 그랬는데, Mastodon에서는 여전히 게시물이 온라인에 남아 있습니다. 그래서 계정을 삭제하면 Mastodon의 콘텐츠도 함께 삭제될 것이라고 생각했습니다.

그냥 비활성화만 하면 콘텐츠가 여전히 Mastodon에 남아 있습니다.
그리고 삭제할 수 없다면, 나중에 다른 카테고리에 이 핸들을 사용할 수 없게 됩니다. 나중에 카테고리를 변경하고 싶을 수도 있지만, xx명의 팔로워가 있는 그 핸들을 사용할 수 없으니, 새로운 핸들을 만들어야 하고 모든 사람이 다시 팔로우해야 합니다. 더 이상 필요 없는 핸들을 단순히 비활성화하는 것의 장점을 전혀 찾지 못하겠습니다.

그리고: 핸들을 하나 비활성화하면 다른 핸들도 함께 비활성화됩니다. 그러면 여러 핸들을 동시에 실행하거나, 아무것도 실행할 수 없는 것뿐인가요?

하지만 제가 원하는 것이 바로 그건데, 제가 잘못 이해하고 있는 걸까요? 저는 제 전체 Discourse에 대한 토론에 대해 소셜 네트워크의 사람들에게 알리고 싶은데, 하나의 태그나 카테고리만으로는 부족합니다. “뉴스” 섹션을 운영한다면 이해할 수 있지만, 저는 모든 사람이 토론에 참여하기를 원하므로 하나의 카테고리만 게시하는 것이 아니라 모든 것을 게시해야 합니다.