A couple days ago, I got a DM from a #Bonfire user. I happily replied and sent a follow request—but the Accept never came back, even though they hadn't enabled manuallyApprovesFollowers. My DM reply probably never arrived either. Classic interop bug.

I checked out the Bonfire source and dug in. Turns out Bonfire hasn't implemented RFC 9421 yet, so it was silently discarding any activity signed with it. That alone would be workable, except for one more issue: Bonfire was responding 200 OK even when signature verification failed, instead of 401 Unauthorized.

This matters because Fedify implements a double-knocking mechanism—if a request signed with RFC 9421 fails, it retries with the older draft cavage signature. But since Bonfire returned 200 OK on the failed first knock, #Fedify had no reason to send a second one.

I filed two issues on the Bonfire #ActivityPub repo—one requesting RFC 9421 support, and one about returning 401 on invalid signatures. For the latter, I also sent a PR, which got merged pretty quickly: bonfire-networks/activity_pub#9.

That said, individual Bonfire instances won't pick up the fix until they actually deploy it. So in the meantime, I patched Hollo and Hackers' Pub to use draft-cavage-http-signatures-12 as the firstKnock, so Bonfire instances can at least understand the first request.

One last thing: Fedify caches whether a given server supports RFC 9421, and the Bonfire servers I'd already talked to were cached as “supports RFC 9421”—because they'd been returning 200 OK. I had to manually clear that cache on both hollo.social and hackers.pub before everything finally worked.

After all that, the mutual follow went through and my DM reply landed. Worth it.

#fedidev #fediverse #Hollo #HackersPub

RFC 9421: HTTP Message Signatures

This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.

Hackers' Pub 신고(flag) 기능 기획서

https://hackers.pub/@hongminhee/2025/moderation

Hackers' Pub 신고(flag) 기능 기획서

개요 목적 신고 기능은 Hackers' Pub 커뮤니티의 행동 강령(code of conduct)을 위반하는 콘텐츠나사용자를 식별하고, 관리자가 적절한 조치를 취할 수 있도록 돕는 시스템입니다. 핵심 철학 신고 기능의 궁극적인 목적은 계도와 성장입니다. 무균실처럼 완벽한 사용자만을 남기려는것이 아니라, 신고를 통해 각자의 행동을 돌아보고 더 나은 커뮤니티 구성원으로 성장할 수있는 기회를 제공하는 데 있습니다. 추방은 최후의 수단이며, 시스템은 다음과 같은 단계적 접근을 권장합니다: 인지 — 피신고자가 자신의 행동이 문제가 될 수 있음을 알게 됩니다 성찰 — 왜 그 행동이 문제인지 이해할 기회를 갖습니다 개선 — 행동을 수정하고 커뮤니티와 조화롭게 참여합니다 제재 — 개선 의지가 없거나 심각한 위반의 경우에만 적용됩니다 분산형 네트워크 고려 Hackers' Pub은 ActivityPub 프로토콜 기반의 분산형 소셜 네트워크입니다.따라서 신고 기능도 다음을 고려하여 설계되었습니다: 다른 서버(인스턴스)에 호스팅된 콘텐츠도 신고 가능 Mastodon 등 주요 ActivityPub 플랫폼과의 호환성 연합(federation) 환경에서의 조치 전파 설계 원칙 신고자 보호 원칙신고자의 신원은 철저히 비공개로 유지됩니다.근거신고자가 보복을 두려워하면 신고를 주저하게 되고, 이는 커뮤니티 건강성을해칠 수 있습니다. 익명성이 보장되어야 신고 시스템이 효과적으로 작동합니다.구현피신고자에게는 신고 사실과 사유만 전달되며, 신고자 정보는 공개되지 않습니다 관리자만 신고자 정보에 접근할 수 있습니다 데이터베이스 수준에서도 접근 제어가 적용됩니다 피신고자의 알 권리 원칙피신고자는 자신이 왜 신고되었는지 알 권리가 있습니다.근거무엇이 문제인지 알지 못하면 개선할 수 없습니다. 계도라는 목적을 달성하려면피신고자가 자신의 행동을 돌아볼 수 있는 충분한 정보를 제공해야 합니다.구현신고 사유(행동 강령 위반 내용)가 피신고자에게 전달됩니다 어떤 콘텐츠가 문제가 되었는지 명시됩니다 단, 신고자가 누구인지는 알 수 없습니다 행동 강령의 유연한 참조 원칙행동 강령은 살아있는 문서이며, 시간이 지남에 따라 발전하고 변화할 수 있습니다.근거커뮤니티가 성장하고 사회적 맥락이 변화함에 따라 행동 강령도 함께 진화해야합니다. 신고 시스템은 이러한 변화에 유연하게 대응할 수 있어야 합니다.구현신고 사유를 특정 조항 번호에 하드코딩하지 않습니다 신고 시점의 행동 강령 버전을 기록하여 맥락을 보존합니다 LLM 매칭 시 현재 행동 강령 전문을 참조하여 동적으로 분석합니다 신고자가 작성한 원본 사유는 항상 보존됩니다 투명한 처리 과정 원칙신고의 처리 과정과 결과는 관련 당사자에게 투명하게 공유됩니다.근거신고자는 자신의 신고가 어떻게 처리되었는지 알 권리가 있으며,피신고자도 어떤 조치가 취해졌는지 알아야 합니다.구현신고자에게 처리 진행 상황과 최종 결과가 통보됩니다 피신고자에게 조치 내용과 사유가 전달됩니다 관리자의 판단 근거가 기록됩니다 단계적 제재 원칙제재는 위반의 심각성과 빈도에 비례하여 단계적으로 적용됩니다.근거경미한 위반에 과도한 제재를 가하면 커뮤니티 참여를 위축시키고,심각한 위반에 가벼운 제재를 가하면 커뮤니티 안전을 해칩니다.구현경고 → 콘텐츠 검열 → 일시 정지 → 영구 정지의 단계적 체계 위반 이력이 누적되어 다음 제재 수준에 반영됩니다 심각한 위반은 단계를 건너뛰고 즉각적인 강력한 조치 가능 용어 정의 용어정의신고(flag/report)행동 강령 위반으로 의심되는 콘텐츠나 사용자를 관리자에게 알리는 행위신고자(reporter)신고를 제출하는 사용자피신고자(reported)신고의 대상이 되는 사용자신고 대상(target)신고된 콘텐츠(게시글, 단문) 또는 사용자관리자(moderator)신고를 검토하고 조치를 취할 권한이 있는 사용자조치(action)관리자가 신고에 대해 취하는 결정 (기각, 경고, 검열, 정지 등)이의 제기(appeal)피신고자가 조치에 대해 재검토를 요청하는 행위로컬 사용자Hackers' Pub에 계정이 있는 사용자원격 사용자다른 ActivityPub 인스턴스의 사용자 신고 대상 콘텐츠 신고 사용자는 다음 유형의 콘텐츠를 개별적으로 신고할 수 있습니다: 게시글(article) 신고 대상장문의 블로그 형식 게시글표시 위치게시글 하단 또는 더보기 메뉴에 “신고하기” 옵션신고 시 수집 정보게시글 ID 및 영구 링크 게시글 작성자 정보 신고 시점의 게시글 내용 스냅샷 (증거 보존) 신고자가 작성한 사유 단문(note) 신고 대상짧은 마이크로블로그 형식 글표시 위치단문의 더보기 메뉴에 “신고하기” 옵션신고 시 수집 정보게시글과 동일 사용자 신고 특정 사용자의 전반적인 행동 패턴이 문제가 되는 경우, 개별 콘텐츠가 아닌사용자 자체를 신고할 수 있습니다. 사용 시나리오여러 콘텐츠에 걸쳐 지속적으로 문제 행동을 보이는 경우 개별 콘텐츠는 경계선상에 있지만, 전체적인 패턴이 문제인 경우 프로필 자체(이름, 약력, 프로필 사진 등)가 행동 강령을 위반하는 경우 표시 위치사용자 프로필 페이지의 더보기 메뉴에 “사용자 신고하기” 옵션신고 시 수집 정보사용자 ID 및 프로필 링크 신고 시점의 프로필 정보 스냅샷 신고자가 작성한 사유 (선택) 관련 콘텐츠 링크 첨부 가능 원격 콘텐츠 및 사용자 다른 ActivityPub 인스턴스의 콘텐츠와 사용자도 동일하게 신고할 수 있습니다. 근거연합 타임라인에 표시되는 모든 콘텐츠는 Hackers' Pub 사용자에게영향을 미치므로, 원격 콘텐츠도 신고 대상이 되어야 합니다.처리 방식Hackers' Pub 내에서의 표시/연합 여부에 대한 조치 원격 인스턴스로 ActivityPub Flag 액티비티 전송 (선택적) 신고 프로세스 신고 흐름도 flag_processstart사용자가콘텐츠/사용자신고 클릭form신고 양식표시start->formreason사유 작성(자유 형식)form->reasonsubmit신고 제출reason->submitllmLLM이 사유를분석submit->llmcoc행동 강령조항 매칭llm->cocsave신고 저장(대기 상태)llm->savenotify_mod관리자에게알림 발송save->notify_modnotify_reporter신고자에게접수 확인notify_mod->notify_reporter 신고 양식 신고 양식은 간결하면서도 필요한 정보를 수집할 수 있도록 설계됩니다. 필수 입력 항목 신고 사유 (자유 형식 텍스트) 이 콘텐츠/사용자를 신고하는 이유를 설명해 주세요.구체적인 행동 강령 조항을 알지 못해도 괜찮습니다.어떤 점이 불편하거나 문제가 된다고 느꼈는지자유롭게 작성해 주세요.[ ][ ][ ]최소 10자 이상 작성해 주세요. 근거: 사용자가 행동 강령의 모든 조항을 숙지하고 있다고 가정하지 않습니다 자유 형식으로 작성하면 더 풍부한 맥락을 수집할 수 있습니다 LLM이 사유를 분석하여 관련 조항을 자동으로 매칭합니다 선택 입력 항목 추가 콘텐츠 링크 (사용자 신고 시) 관련된 다른 콘텐츠가 있다면 링크를 추가해 주세요. (선택)[링크 추가 +] 근거: 사용자 신고의 경우, 문제 행동의 패턴을 보여주는 여러 콘텐츠를함께 제출하면 관리자가 더 정확한 판단을 내릴 수 있습니다. LLM 기반 행동 강령 매칭 신고가 제출되면 LLM이 신고 사유를 분석하여 관련된 행동 강령 조항을 식별합니다. 매칭 프로세스 입력 구성 신고자가 작성한 사유 텍스트 현재 버전의 행동 강령 전문 신고된 콘텐츠 내용 (있는 경우) LLM 분석 신고 사유와 행동 강령 조항 간의 관련성 분석 관련 조항 식별 및 신뢰도 점수 산출 분석 요약 생성 결과 저장 매칭된 조항 목록 (신뢰도 점수 포함) LLM 분석 요약 신고 시점의 행동 강령 버전 식별자 행동 강령 버전 관리 근거행동 강령이 변경되면 과거 신고의 맥락이 불명확해질 수 있습니다.따라서 신고 시점의 행동 강령 버전을 기록하여 맥락을 보존합니다.구현 방식행동 강령 파일의 Git 커밋 해시를 버전 식별자로 사용 신고 기록에 버전 식별자 저장 관리자가 신고를 검토할 때 해당 버전의 행동 강령 참조 가능 매칭 결과 활용 관리자 검토매칭 결과는 관리자의 참고 자료로 활용됩니다최종 판단관리자가 매칭 결과를 수정하거나 무시할 수 있습니다피신고자 통보최종 확정된 위반 조항이 피신고자에게 전달됩니다 중복 신고 처리 같은 콘텐츠나 사용자에 대해 여러 신고가 접수될 수 있습니다. 처리 방식동일 대상에 대한 신고는 하나의 “신고 케이스”로 그룹화됩니다 각 신고의 사유는 개별적으로 보존됩니다 관리자에게는 신고 건수와 함께 표시됩니다 신고 건수가 많을수록 우선순위가 높아집니다 근거여러 사람이 독립적으로 같은 문제를 발견했다면 더 심각한 문제일 가능성이 높습니다 다양한 관점의 신고 사유를 종합하면 더 정확한 판단이 가능합니다 신고 내역 조회 신고자는 자신이 제출한 신고의 상태를 확인할 수 있습니다. 확인 가능한 정보신고 대상 (콘텐츠/사용자) 신고 일시 자신이 작성한 신고 사유 처리 상태 (대기 중 / 검토 중 / 처리 완료) 처리 결과 (조치됨 / 기각됨) 확인 불가능한 정보다른 신고자의 존재 여부 구체적인 제재 내용 (프라이버시 보호) 피신고자의 이의 제기 내용 관리자 처리 프로세스 신고 검토 흐름도 moderation_processcluster_review콘텐츠/사용자 검토pending신고 접수(대기 상태)check관리자가신고 확인pending->checkreviewing검토 시작(검토 중)check->reviewingreview1신고된 콘텐츠 확인review2신고 사유 검토review3LLM 매칭 결과 참고review4사용자 이력 확인review5맥락 파악decision판단 결정review5->decisiondismiss기각decision->dismisswarn경고decision->warnaction제재decision->actionnotify조치 기록 및 알림- 신고자에게 결과 통보- 피신고자에게 조치 통보- (필요시) 원격 서버 통보dismiss->notifywarn->notifyaction->notify 신고 상태 상태설명pending신고가 접수되어 검토 대기 중reviewing관리자가 검토 중resolved처리 완료 (조치됨)dismissed기각됨 (위반 아님) 검토 시 확인 사항 관리자는 다음 정보를 종합적으로 검토합니다: 신고 정보 신고자가 작성한 사유 LLM이 매칭한 행동 강령 조항 신고 건수 (중복 신고의 경우) 각 신고자의 사유 (중복 신고의 경우) 콘텐츠 정보 신고된 콘텐츠 원문 콘텐츠의 맥락 (댓글 스레드 등) 신고 시점의 스냅샷 (수정/삭제된 경우) 사용자 정보 피신고자의 이전 위반 이력 이전 경고/제재 기록 계정 생성일 및 활동 기간 로컬/원격 사용자 여부 조치 옵션 관리자는 다음 조치 중 하나를 선택합니다: 조치설명적용 기준기각위반이 아니라고 판단행동 강령 위반 사실이 없는 경우경고경고 메시지 발송경미한 위반, 초범인 경우콘텐츠 검열해당 콘텐츠 숨김 처리콘텐츠 자체가 문제인 경우일시 정지일정 기간 계정 정지반복 위반 또는 중간 수준의 위반영구 정지계정 영구 정지심각한 위반 또는 지속적 악의적 행동 조치 시 필수 입력 사항 관리자가 조치를 취할 때 다음을 기록해야 합니다: 위반 조항 (최종 확정):[행동 강령 내 관련 조항 선택/입력]조치 사유:[관리자의 판단 근거를 상세히 기술]피신고자에게 전달할 메시지:[피신고자가 받을 통보 내용](일시 정지의 경우) 정지 기간:[시작일] – [종료일] 근거: 조치의 투명성을 확보합니다 이의 제기 시 검토 자료로 활용됩니다 일관된 판단 기준을 유지하는 데 도움이 됩니다 피신고자 프로세스 신고 통보 피신고자는 자신이 신고되었다는 사실과 사유를 알림으로 받습니다. 통보 시점 즉시 통보하지 않는 경우: 신고 접수 직후에는 피신고자에게 통보하지 않습니다 무분별한 신고로 인한 불필요한 스트레스 방지 통보하는 경우: 관리자가 신고를 검토하고 조치를 결정한 후 통보합니다 기각된 경우에도 교육적 목적으로 통보할 수 있습니다 (관리자 재량) 통보 내용 경고/제재 시: 귀하의 [콘텐츠/계정]에 대해 신고가 접수되어 검토한 결과,행동 강령 위반으로 판단되어 다음과 같은 조치가 취해졌습니다.위반 내용:[행동 강령의 관련 조항]대상 콘텐츠:[해당되는 경우 콘텐츠 링크]조치:[경고 / 콘텐츠 검열 / N일 정지 / 영구 정지]관리자 메시지:[관리자가 작성한 설명]이 조치에 대해 이의가 있으시면 아래 버튼을 통해이의 제기를 하실 수 있습니다.[이의 제기하기] 기각 통보 시 (선택적): 귀하의 [콘텐츠/계정]에 대해 신고가 접수되었으나,검토 결과 행동 강령 위반에 해당하지 않는다고 판단되었습니다.다만, 일부 커뮤니티 구성원이 불편함을 느꼈을 수 있으므로참고해 주시면 감사하겠습니다.관련 내용:[간략한 설명] 피신고자가 확인할 수 있는 정보 정보확인 가능 여부신고된 사실가능위반으로 지적된 행동 강령 조항가능대상 콘텐츠가능조치 내용 및 기간가능관리자의 판단 사유가능신고자가 누구인지불가능신고자가 작성한 원본 사유불가능신고 건수불가능 근거: 피신고자에게 개선에 필요한 정보는 모두 제공하되,신고자를 특정할 수 있는 정보는 철저히 보호합니다. 제재 중 제한 사항 콘텐츠 검열 해당 콘텐츠가 타임라인과 검색에서 숨겨집니다 직접 링크(퍼머링크)로는 접근 가능하지만, 검열 안내가 표시됩니다 작성자 본인은 콘텐츠를 볼 수 있습니다 일시 정지 새로운 콘텐츠 작성 불가 댓글 작성 불가 반응 불가 팔로/언팔로 불가 기존 콘텐츠 열람은 가능 DM 수신은 가능하나 발신 불가 영구 정지 계정 접근 불가 모든 기능 사용 불가 기존 콘텐츠는 숨김 처리됨 이의 제기 프로세스 이의 제기 자격 조치를 받은 피신고자만 이의 제기 가능 하나의 조치에 대해 1회의 이의 제기 가능 이의 제기 기한: 조치 통보 후 14일 이내 이의 제기 흐름도 appeal_processstart피신고자가이의 제기write이의 내용작성start->writesubmit이의 제출write->submitreview관리자 검토(다른 관리자권장)submit->reviewdecision판단review->decisionreject기각decision->rejectuphold조치 유지decision->upholdmodify조치 변경decision->modifynotify결과 통보(피신고자,원신고자)reject->notifyuphold->notifymodify->notify 이의 제기 양식 이의 제기 사유:[왜 이 조치가 부당하다고 생각하시는지 설명해 주세요]추가 맥락 또는 증거:[조치 결정 시 고려되지 않았다고 생각되는맥락이나 정보가 있다면 제공해 주세요][제출] 이의 제기 검토 검토 원칙가능하면 원래 조치를 결정한 관리자가 아닌 다른 관리자가 검토합니다 원 신고 내용, 조치 사유, 이의 제기 내용을 종합적으로 검토합니다 새로운 정보나 맥락이 있는지 확인합니다 결정 옵션이의 기각: 원 조치 유지 조치 완화: 더 가벼운 조치로 변경 (예: 정지 → 경고) 조치 철회: 조치 취소 및 기록 정정 조치 강화: 드문 경우, 이의 제기 과정에서 더 심각한 위반이 발견된 경우 결과 통보 피신고자에게: 귀하의 이의 제기를 검토한 결과를 알려드립니다.결정: [이의 기각 / 조치 완화 / 조치 철회]판단 사유:[관리자의 검토 결과 설명](해당 시) 변경된 조치:[새로운 조치 내용] 원 신고자에게: 귀하가 신고하신 건에 대해 피신고자로부터이의 제기가 있어 재검토가 진행되었습니다.재검토 결과: [원 조치 유지 / 조치 변경](조치가 변경된 경우)변경 사유에 대한 간략한 설명:[설명] 패널티 체계 패널티 종류 및 기준 경고 (warning) 설명위반 사실을 알리고 재발 방지를 요청하는 가장 가벼운 조치입니다.적용 기준경미한 행동 강령 위반 초범이며 악의가 없어 보이는 경우 실수나 무지로 인한 위반으로 판단되는 경우 효과경고 메시지가 발송됩니다 경고 이력이 기록되어 향후 판단에 참고됩니다 일정 기간(예: 1년) 경과 후 이력에서 제외될 수 있습니다 경고 누적경고 3회 누적 시 자동으로 더 강한 조치 검토 대상이 됩니다 단, 자동 제재는 없으며 관리자의 판단이 필요합니다 콘텐츠 검열 (content censorship) 설명특정 콘텐츠를 공개 영역에서 숨기는 조치입니다.적용 기준콘텐츠 자체가 행동 강령을 위반하는 경우 사용자의 전반적 행동보다 특정 콘텐츠가 문제인 경우 효과해당 콘텐츠가 타임라인, 검색, 추천에서 제외됩니다 퍼머링크는 유지되나, 접근 시 검열 안내가 표시됩니다 연합(federation)으로 다른 서버에 Delete 액티비티가 전송될 수 있습니다 검열 콘텐츠 표시 이 콘텐츠는 행동 강령 위반으로 검열되었습니다.[원문 보기] (클릭 시 경고와 함께 표시) 일시 정지 (temporary suspension) 설명일정 기간 동안 계정 활동을 제한하는 조치입니다.적용 기준경고에도 불구하고 위반이 반복되는 경우 중간 수준의 심각한 위반인 경우 즉각적인 활동 중단이 필요하지만 영구 정지까지는 아닌 경우 정지 기간최소 1일 – 최대 90일 관리자가 위반 정도에 따라 결정 권장 기준:경미한 반복 위반: 1–7일 중간 수준 위반: 7–30일 심각한 위반 (초범): 30–90일 효과새 콘텐츠 작성 불가 상호작용(반응, 댓글 등) 불가 기존 콘텐츠 열람은 가능 정지 해제 시 완전한 기능 복구 원격 사용자의 경우Hackers' Pub 내에서 해당 기간 동안 연합 차단 원격 서버 관리자에게 ActivityPub Flag 액티비티로 통보 영구 정지 (permanent suspension) 설명계정을 영구적으로 비활성화하는 가장 강력한 조치입니다.적용 기준매우 심각한 행동 강령 위반 (혐오 발언, 불법 콘텐츠 등) 일시 정지 후에도 동일한 위반이 반복되는 경우 명백한 악의를 가지고 커뮤니티를 해치려는 의도가 확인된 경우 효과계정 로그인 불가 모든 기능 사용 불가 공개 콘텐츠 숨김 처리 프로필 페이지에 정지 안내 표시 원격 사용자의 경우Hackers' Pub과의 영구적 연합 차단 원격 서버 관리자에게 ActivityPub Flag 액티비티로 통보 복구원칙적으로 영구 정지는 복구되지 않습니다 극히 예외적인 경우, 충분한 시간 경과 후 재심 요청 가능 패널티 이력 관리 패널티이력 보존 기간비고경고1년1년간 추가 위반 없으면 이력에서 제외콘텐츠 검열무기한콘텐츠 존재하는 한 유지일시 정지무기한기록은 유지, 판단 시 경과 시간 고려영구 정지무기한- ActivityPub 연합 처리 개요 Hackers' Pub은 ActivityPub 프로토콜을 사용하는 분산형 네트워크의 일부입니다.신고 기능도 이 환경에서 원활히 작동해야 합니다. Flag 액티비티 ActivityPub 명세에는 Flag 액티비티가 정의되어 있으며, 이를 통해 신고를연합 네트워크에 전파할 수 있습니다. Flag 액티비티 구조: { "@context": "https://www.w3.org/ns/activitystreams", "type": "Flag", "actor": "https://hackerspub.example/users/moderator", "object": [ "https://remote.example/users/reported_user", "https://remote.example/posts/problematic_post" ], "content": "Violation of Code of Conduct: harassment"} 원격 콘텐츠 신고 처리 신고 접수 로컬 사용자가 원격 콘텐츠/사용자를 신고합니다 신고는 Hackers' Pub 데이터베이스에 저장됩니다 관리자가 일반 신고와 동일하게 검토합니다 조치 적용 Hackers' Pub 내 조치: 해당 콘텐츠의 로컬 캐시 숨김/삭제 해당 사용자와의 연합 차단 (일시/영구) 원격 서버 통보 (선택적): Flag 액티비티를 원격 서버에 전송 원격 서버의 조치 여부는 해당 서버의 재량 외부에서 받은 Flag 처리 다른 서버에서 Hackers' Pub으로 Flag 액티비티가 전송된 경우: Flag 액티비티 수신 및 파싱 신고 대상이 로컬 사용자/콘텐츠인지 확인 관리자에게 외부 신고로 표시하여 알림 관리자가 검토 후 자체 판단에 따라 조치 외부 신고 표시: [외부 신고] remote.example에서 접수됨대상: @localuser의 콘텐츠사유: "Violation of our community guidelines"* 이 신고는 외부 서버에서 접수되었습니다. 자체 행동 강령에 따라 판단해 주세요. Mastodon 호환성 Mastodon은 가장 널리 사용되는 ActivityPub 구현체입니다.Mastodon과의 호환성을 위해 다음을 고려합니다: Mastodon의 Flag 액티비티 형식 지원 Mastodon 관리자 API와의 연동 고려 (향후) Mastodon에서 보내는 신고 수신 및 처리 알림 체계 알림 유형 알림 유형수신자내용flag_received관리자새 신고 접수됨flag_resolved신고자신고 처리 완료됨action_taken피신고자조치가 취해짐appeal_received관리자이의 제기 접수됨appeal_resolved피신고자이의 제기 처리 완료됨appeal_result신고자이의 제기로 인한 변경 알림suspension_ending피신고자정지 해제 임박 알림 알림 채널 인앱 알림기본 알림 방식이메일중요 알림 (조치, 정지 등)ActivityPub원격 사용자의 경우 해당 서버로 전송 프라이버시 및 보안 신고자 익명성 보호 원칙신고자의 신원은 피신고자에게 절대 공개되지 않습니다.기술적 조치API 응답에서 신고자 정보 필터링 관리자 UI에서만 신고자 정보 표시 로그에서 신고자 정보 마스킹 (필요시) 데이터 접근 제어 역할접근 가능 정보일반 사용자자신의 신고 내역만피신고자자신에 대한 조치 및 사유 (신고자 정보 제외)관리자모든 신고 정보 (신고자 정보 포함) 콘텐츠 스냅샷 신고 시점의 콘텐츠를 스냅샷으로 저장하는 이유: 피신고자가 콘텐츠를 수정/삭제해도 원본 증거 보존 공정한 판단을 위한 기록 유지 이의 제기 시 참고 자료로 활용 보존 기간케이스 종료 후 최소 1년간 보존 법적 요구사항이 있는 경우 더 오래 보존 악용 방지 허위 신고 방지동일 사용자의 동일 대상 반복 신고 제한 허위 신고 시 신고자에 대한 제재 가능 신고 패턴 모니터링 신고 폭주 방지단시간 다수 신고 시 속도 제한 관리자에게 이상 패턴 경고 관리자 대시보드 대시보드 개요 관리자 대시보드는 신고 관리의 중심 허브입니다. 주요 화면대기 중인 신고 목록 신고 상세 및 처리 화면 이의 제기 목록 통계 및 분석 제재 중인 사용자 목록 신고 목록 화면 ┌─────────────────────────────────────────────────────────┐│ 신고 관리 [통계 보기] │├─────────────────────────────────────────────────────────┤│ 필터: [전체 ▼] [대기 중 ▼] [최신순 ▼] 검색: [____]│├─────────────────────────────────────────────────────────┤│ ││ ⚠️ 높은 우선순위 (신고 5건 이상) ││ ┌─────────────────────────────────────────────────┐ ││ │ 🔴 @user123의 콘텐츠 (신고 7건) │ ││ │ "혐오 발언", "차별적 표현" 외 5건 │ ││ │ 최초 신고: 2시간 전 │ ││ └─────────────────────────────────────────────────┘ ││ ││ 일반 신고 ││ ┌─────────────────────────────────────────────────┐ ││ │ 🟡 @[email protected] 사용자 (신고 2건) │ ││ │ "스팸 행위" │ ││ │ 최초 신고: 5시간 전 │ ││ └─────────────────────────────────────────────────┘ ││ ┌─────────────────────────────────────────────────┐ ││ │ 🟢 @newuser의 댓글 (신고 1건) │ ││ │ "부적절한 언어 사용" │ ││ │ 신고: 1일 전 │ ││ └─────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────┘ 신고 상세 화면 ┌─────────────────────────────────────────────────────────┐│ 신고 상세 - 케이스 #12345 [← 목록] │├─────────────────────────────────────────────────────────┤│ ││ 📋 기본 정보 ││ ──────────────────────────────────────── ││ 대상: @user123의 콘텐츠 ││ 유형: 단문 (note) ││ 신고 건수: 7건 ││ 상태: 대기 중 ││ ││ 📝 신고된 콘텐츠 ││ ──────────────────────────────────────── ││ ┌─────────────────────────────────────────────────┐ ││ │ [콘텐츠 원문 표시] │ ││ │ 작성일: 2024-12-01 14:30 │ ││ └─────────────────────────────────────────────────┘ ││ ││ 🔍 신고 사유 (7건) ││ ──────────────────────────────────────── ││ 1. "명백한 혐오 발언입니다" - 신고자A, 2시간 전 ││ 2. "특정 집단을 비하하는 표현" - 신고자B, 3시간 전 ││ 3. "불쾌한 차별적 언어" - 신고자C, 4시간 전 ││ ... (더 보기) ││ ││ 🤖 LLM 분석 결과 ││ ──────────────────────────────────────── ││ 관련 행동 강령 조항: ││ - 차별 금지 (신뢰도: 95%) ││ - 존중하는 언어 사용 (신뢰도: 88%) ││ ││ 📊 피신고자 이력 ││ ──────────────────────────────────────── ││ - 가입일: 2024-06-15 ││ - 이전 경고: 1회 (2024-09-20) ││ - 이전 정지: 없음 ││ ││ ⚡ 조치 ││ ──────────────────────────────────────── ││ [기각] [경고] [콘텐츠 검열] [일시 정지] [영구 정지] ││ │└─────────────────────────────────────────────────────────┘ 통계 화면 기간 선택 드롭다운으로 조회 범위를 설정합니다 (예: 최근 30일). 요약 항목값총 신고 건수127건처리 완료98건 (77%)평균 처리 시간4.2시간 조치 분포 조치건수비율기각45건46%경고38건39%콘텐츠 검열10건10%일시 정지4건4%영구 정지1건1% 위반 유형 (상위 5개) 순위유형건수1스팸/광고32건2혐오 발언24건3괴롭힘18건4부적절한 콘텐츠12건5허위 정보8건 향후 고려사항 자동화 기능 (향후 도입 검토) 자동 숨김: 특정 임계값 이상의 신고가 접수되면 관리자 검토 전 임시 숨김 AI 기반 사전 필터링: 명백한 위반 콘텐츠 자동 감지 스팸 자동 처리: 명백한 스팸에 대한 자동 조치 주의 자동화 기능은 오탐의 위험이 있으므로 신중하게 도입해야 합니다. 커뮤니티 참여 신뢰할 수 있는 신고자: 정확한 신고 이력을 가진 사용자의 신고에 높은 가중치 커뮤니티 중재자: 관리자 부담 분산을 위한 커뮤니티 중재자 제도 검토 다국어 지원 신고 사유 자동 번역 (관리자가 다른 언어 사용 시) 행동 강령 다국어 버전과의 연동 조치 통보 메시지 다국어 템플릿 법적 요구사항 대응 법적 요청에 따른 데이터 보존/제공 절차 저작권 침해 신고 (DMCA 등) 별도 처리 절차 사법기관 협조 절차 부록: 용어 대조표 한국어영어설명신고flag/report위반 의심 콘텐츠/사용자를 알림행동 강령code of conduct커뮤니티 규칙관리자moderator신고 처리 권한자검열censorship콘텐츠 숨김 처리정지suspension계정 활동 제한이의 제기appeal조치에 대한 재검토 요청연합federation분산 네트워크 간 연결콘텐츠post게시글과 단문을 통칭게시글article장문의 블로그 형식 글단문note짧은 마이크로블로그 형식 글타임라인timeline콘텐츠 피드팔로follow다른 사용자 구독팔로워follower나를 구독하는 사용자차단block특정 사용자 접근 제한반응react콘텐츠에 이모지로 반응연합우주fediverseActivityPub 기반 분산 소셜 네트워크인스턴스instance연합우주의 개별 서버 이 문서는 Hackers' Pub 커뮤니티의 의견을 수렴하여 지속적으로 개선됩니다.

Hackers' Pub
#phanpy 컬럼으로 #HackersPub 타임라인 보고 싶다

ソフトウェアエンジニア向けのフェディバースサービスHackers' Pubをご存知でしょうか?私たちが特に大切にしているのは、他のプラットフォームとは少し異なる行動規範です。

私たちは現実社会の不平等がオンライン空間にも反映されることを認識しています。そのため、「すべての人を同じように扱う」という表面的な中立性ではなく、構造的不平等に積極的に対応する姿勢を明確にしています。このアプローチの一環として、差別的発言と差別に対抗する発言を区別しています。これにより、差別への批判まで同列に扱ってしまう「両極端主義」の落とし穴を避けられると考えています。

技術コミュニティでよく見られる問題として、特定の技術選択への批判や技術レベルによる階層化があります。「これも知らないの?」という態度は学びを阻害するだけです。私たちは初心者も経験者も同じく尊重される環境づくりを重視しています。

また、フェディバースの核心的価値としてプライバシーがありますが、Hackers' Pubでは特に匿名性の権利を強調しています。他者の素性を特定しようとする行為や、匿名であることを理由とした差別を禁止することで、安心して参加できる場を目指しています。

こうした行動規範自体も完璧ではなく、コミュニティとともに進化するものだと考えています。すべてのメンバーが改善案を提案できる仕組みを整えることで、より良い環境を共に創っていきたいと思います。

詳細はHackers' Pubの行動規範をご覧ください。フェディバースでより健全な技術コミュニティを一緒に育てていきませんか?

※Hackers' Pubは現在招待制となっています。ご興味のある方はコメントや私(@hongminhee)へのDMでメールアドレスをお知らせください。

#HackersPub #行動規範 #フェディバース #TechCommunity

Hackers' Pub

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

소프트웨어 엔지니어를 위한 연합우주 서비스 Hackers' Pub을 알고 계신가요? 저희가 특별히 중요시하는 것은 다른 플랫폼과는 조금 다른 행동 강령입니다.

저희는 현실 세계의 불평등이 온라인 공간에도 그대로 반영된다는 사실을 인식하고 있습니다. 그래서 “모든 사람을 동등하게 대우”한다는 표면적인 중립성이 아닌, 구조적 불평등에 적극적으로 대응하는 자세를 분명히 하고 있습니다. 이러한 접근의 일환으로, 차별적 발언과 차별에 대항하는 발언을 구분합니다. 이를 통해 “차별은 안 된다”는 명목 하에 차별 비판까지 동일시하는 “양비론”의 함정을 피할 수 있다고 생각합니다.

기술 커뮤니티에서 자주 볼 수 있는 문제로는 특정 기술 선택에 대한 비판이나 기술 수준에 따른 계층화가 있습니다. “이것도 모르냐?”는 태도는 학습을 방해할 뿐입니다. 저희는 초보자와 경험자 모두 동등하게 존중받는 환경 조성을 중요시합니다.

또한, 연합우주의 핵심 가치로 프라이버시가 있지만, Hackers' Pub에서는 특히 익명성의 권리를 강조합니다. 타인의 신원을 특정하려는 행위나 익명이라는 이유로 차별하는 것을 금지함으로써, 안심하고 참여할 수 있는 공간을 지향합니다.

이러한 행동 강령 자체도 완벽하지 않으며, 커뮤니티와 함께 발전해 나가는 것이라고 생각합니다. 모든 구성원이 개선안을 제안할 수 있는 체계를 마련함으로써, 더 나은 환경을 함께 만들어 나가고자 합니다.

자세한 내용은 Hackers' Pub 행동 강령을 참조해 주세요. 연합우주에서 더 건강한 기술 커뮤니티를 함께 키워나가지 않으실래요?

#HackersPub #행동강령 #연합우주 #기술커뮤니티

Hackers' Pub

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

Are there any other instances of Hackers' Pub yet?

Love to see how fast there is a new community popping up here and how active @hongminhee is in making it happen. Curious if anyone has tried to take the software and build a different community with it!

Hackers' Pub
hackers.pub 로그인 페이지에서,
가입하려 이메일을 넣었더니, 베타 서비스라 안된다는 메시지가 뜹니다. 음, 제 생각엔 이 메시지는 로그인 폼에 뭔가를 입력하기 전에 나오는 게 더 부드럽지 않을까 싶어요.
#HackersPub
rel="me" 메모

서문 (동기) 아래와 같은 Hackers' Pub 글을 보았습니다:<이제 프로필의 링크에 인증 여부가 보이게 됩니다. 링크를 인증하기 위해서는, 링크된 페이지 측에서도 Hackers' Pub 프로필을 rel="me" 속성과 함께 링크해야 합니다. Mastodon이나 GitHub 같은 경우 프로필에 링크를 추가하면 rel="me" 속성이 추가되게 되어 있으니, Mastodon이나 GitHub 프로필 링크를 추가하면 인증은 자동으로 될 겁니다. 개인 웹사이트가 있으신 분들은 Hackers' Pub 프로필을 rel="me" 속성과 함께 링크하면 인증이 됩니다. 참고로 인증은 프로필 설정을 저장할 때 이뤄집니다. 이미 Mastodon이나 GitHub 프로필을 링크해 두신 분들은 인증 표시가 안 뜰 수도 있는데, 그럼 프로필 설정에 들어가셔서 저장 버튼을 한 번 눌러주시면 인증 버튼이 붙을 겁니다. from https://hackers.pub/@hongminhee/0195ad00-50db-7bb1-b0a0-edaf9ce73515<그래서 Hackers' Pub 설정으로 들어가서 GitHub 링크를 추가하고 저장버튼을 눌러봤지만 체크 표시가 나타나지 않았습니다. rel="me"가 뭔지 잘 몰라서 https://github.com/moreal?rel=me 같이 추가해봤는데 이것도 아니라서 (아닐 것 같았지만) 찾아본 내용을 가볍게 메모로 남깁니다.본문 rel="me"를 검색하니 MDN 문서가 반겨주었습니다. HTML <link rel="stylesheet" ... 할 때 rel 속성이었습니다. <link rel="me" 혹은 <a rel="me" 같은 느낌으로 사용할 수 있는 것 같았습니다. https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/me GitHub 프로필 설정에서 https://hackers.pub/@moreal 소셜 링크를 추가하면 아래처럼 링크 a 요소에 rel="me" 속성을 추가하여 줍니다.<a rel="nofollow me" class="Link--primary wb-break-all" href="https://hackers.pub/@moreal">https://hackers.pub/@moreal</a><이 값을 활용하여 인증 마크를 표시하는 것으로 보입니다. (Hackers' Pub 링크 인증 소스코드)결론 GitHub 등에서 https://hackers.pub/@<id> 를 연관 링크로 추가하고 Hackers' Pub 프로필 설정에서 다시 저장 버튼을 누르면 체크 표시가 나타납니다!여담 함께 rel 속성에 달려있는 nofollow 같은 값은 검색엔진에게 주는 힌트처럼 보입니다. 해당 링크와 연관이 있음을 보장하지 않음, 같은 의미 같습니다. 일단 지금 하려던것과 무관하니 더 찾아보지는 않았습니다. https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel#nofollow 그리고 Hackers' Pub이 오픈소스라서 실제로 어떻게 인증마크를 표시하는지 확인할 수도 있었습니다!

Hackers' Pub