예를 들어, 내 고객 중 한 명은 TL2 이상에게 접근이 가능한 “판매” 카테고리가 있는 포럼을 운영하고 있습니다.
그들은 특정 멤버들이 그곳에서 주제를 생성하는 것을 금지하길 원하지만, 이를 위해 TL2와 동일한 구성원이 5명의 특정 사용자를 제외한 그룹을 복사하고 유지보수해야 합니다.
아마도 같은 방식으로, 특정 기준(예: TL2로 승격된 것 감지?)에 따라 사용자를 그룹으로 배정하고, 필요 시 제거하는 것일 겁니다. TL2가 가입 기준일 뿐이라고 해서, 멤버십을 결정하는 데 TL2 상태에 의존해야 한다는 뜻은 아니죠? 또한 인스턴스 자체 또는 주변에서 무언가를 엔지니어링할 시간과 자원이 있는지에 따라 달라집니다.
제가 모든 상황에 대한 일괄 해결책이라고 제안한 것은 아닙니다. 추가 작업을 원하지 않는다면 해당 사용 사례에는 맞지 않을 수 있지만, 제 클라이언트 사례처럼 인스턴스를 길드/클랜/그 외 무엇으로 분할하는 시나리오에서는 좋은 선택이 될 수 있습니다.
솔직히 말해서, ban은 단순히 배제(exclusion)를 가리키는 다른 표현일 뿐이고, Discourse에는 애초에 배제 권한이라는 개념이 존재하지 않습니다. '포함되지 않음’이 실질적으로 동일한 효과를 내는 상황에서, 배제 권한이 별도로 존재해야 할 필요가 있을까요? 저는 명시적 허용(permit) 모델을 좋아합니다. 이렇게 하면 문제 해결이 훨씬 수월해지거든요.
여전히 가끔 악몽을 꿉니다. 몇 년 전 vBulletin에서 permit/deny 모델을 어떻게든 해결하려던 그 시절을 떠올리면요. 그보다 더 큰 고통과 부채를 경험한 것은 RSOP뿐입니다.
@crius 플러그인으로 구현 가능할 것 같습니다. 클라이언트 측에서는 카테고리 직렬화기(serializer)에서 permissions를 오버라이드하면 꽤 멀리까지 갈 수 있고, 서버 측에서는 NewPostManager.add_handler를 사용해 추가 검사를 넣으면 됩니다.
그룹을 사용하는 것을 고려해 보셨나요? 접근 권한을 위한 2개의 그룹을 가진 카테고리를 만들어 보세요. 1개의 그룹은 카테고리 관리자이고, 다른 하나는 서브포럼의 참여자입니다. 참여자 그룹은 서브포럼 영역에 접근하기 위해 권한 요청을 해야 합니다. 카테고리 관리자 중 일부 또는 전원이 해당 그룹의 소유자입니다. 사용자가 규칙을 위반하여 서브포럼에서 퇴출해야 하는 경우, 참여자 그룹에서 퇴출하고 기간에 대해 다른 카테고리 관리자와 소통하세요.
TL 또는 사용자 그룹으로 이를 관리할 가능성을 평가해 보았지만, 이는 модератор(관리자)들의 업무량을 증가시킬 것이며, 이는 대규모 커뮤니티에서는 단순히 실현 불가능합니다.
특히 사용자 그룹은 간결한 사용자 경험에 해가 됩니다.
저는 소프트웨어 엔지니어로서 풍부한 경험을 가지고 있으며, 다른 분들도 마찬가지입니다. 그래서 스폰서십을 요청할 필요는 없습니다. 우리는 단순히 Ruby를 사용하지 않기 때문에, 그것이 유일한 지연 요인이 될 것입니다.
어쨌든 의견 주셔서 감사합니다. 이 포럼은 의견이 매우 분분한 경향이 있다는 점은 잘 알고 있지만, 소프트웨어 자체에 대해서는 단순히 "옵션을 제공하라"는 접근 방식을 따르는 것이 더 좋다고 생각합니다. 물론 그 반대편에는 코드 측면에서 추가적인 복잡성이 있게 되겠지만요.