더 부드러운 슬로우 모드: 슬로우 번프?

슬로우 모드의 취지 자체는 정말 마음에 들지만, 우리 디스코에서 플레임워(온라인 논쟁)를 촉발하는 가장 흔한 원인을 정확히 다루지는 못합니다:

  • 누군가 “뜨겁게” 진입합니다 — 대개는 신규 회원이거나 다른 커뮤니티에서 온 사람 — 그리고 여러 불만을 나열합니다.
  • 기존 회원들이 다양한 동기로 원 게시자에게 말을 걸거나(또는 비난하며) 답글을 달지만, “인터넷에서 누군가가 틀렸다고 생각하는” 증후군이 가장 큰 동기가 되는 경우가 많습니다.
  • 원 게시자는 모든 사람에게 답하고 싶어 합니다.
  • 가장 건설적인 토론이라도 상황은 빠르게 눈덩이처럼 불어납니다.

슬로우 모드는 여기서 도움이 되지 않습니다. 왜냐하면 다 대 일(Many-to-One) 문제이기 때문입니다. 대개 신규 회원만 제한의 직격탄을 맞아 더욱 소외되는 결과를 낳습니다. 쿨다운 타이머가 흐르는 동안 여러 명이 그에게 답글을 달 수 있지만, 그는 단 한 번의 게시글로만 대응할 수 있기 때문입니다.

이러한 상황을 위해 제 도구함에 있으면 좋을 한 가지 도구는 토픽의 ‘범프(Bumping, 최신순 이동)’ 속도를 늦추는 것입니다. 기본 목록(최신순과 인기순 모두)은 이러한 “뜨거운” 토픽을 우선시합니다. 12시간에 한 번 등과 같이 범프 빈도를 제한할 수 있다면 좋겠습니다. 그러면 토픽이 완전히 목록에서 사라지는 것은 아니지만, 상당한 비중 감소가 되어 토론에 새로 진입하는 사람의 수를 줄이는 데 도움이 될 수 있습니다(적극적으로 찾아오는 사람은 상관없으니 말입니다).

16개의 좋아요

동기 부여가 높은 사용자는 한 번의 답변을 작성하고, 꽤 많은 다른 게시글에도 참여할 수 있겠죠, 그렇죠? …느린 모드에서도 여전히 가능할 것입니다.

하지만 느린 모드에서도 응답을 줄이는 기능이 유용할 것이라고 동의합니다. :slight_smile:

2개의 좋아요

그렇습니다. 하지만 수많은 메시지에 답하는 그런 괴물 같은 게시물은 토픽을 관리하는 것을 더욱 어렵게 만듭니다. 분리가 불가능해지고, 그들은 게시자를 더욱 적대적인 상태로 몰아넣는 경향이 있습니다(아니면 적어도, 거대한 텍스트 벽이라는 사실만으로 불만을 키우는 것처럼 보이는 것입니다).

5개의 좋아요

실제로 Julia discourse에서 우리가 목격한 슬로우 모드의 또 다른 의도하지 않은 결과입니다. Julia discourse는 꽤 활발한 유료 호스팅 인스턴스인데, 슬로우 모드가 켜지면 일부 사람들이 새 글을 쓰는 대신 기존 글을 수정하기 시작합니다. 문제적인 사용자를 TL0로 설정할 때도 비슷한 문제가 발생합니다. 이들은 새 글을 쓸 수는 없지만 기존 글을 수정할 수는 있으므로, 그렇게 하게 되는데, 특히 사람들이 답글을 단 화를 돋우는 내용을 나중에 수정할 경우 해당 답글이 맥락에 맞지 않는 것처럼 보이게 되어 더욱 문제가 됩니다.

하지만 네, @mbauman의 제안에 분명히 동의합니다. 뜨거운 주제(핫 토픽)가 너무 자주 상단으로 올라오는 것을 방지할 수 있다면 상황을 진정시키는 데 매우 도움이 될 것입니다.

3개의 좋아요

뜨거운 주제(핫토픽)가 다시 올라오는 것을 방지하는 것 외에도, 알림을 지연시키는 것도 좋은 아이디어일 수 있습니다. 이렇게 하면 누군가가 여러 사용자에게 답글을 쓰거나 멘션하는 상황에서 발생하는 문제를 어느 정도 해결할 수 있습니다.

4개의 좋아요

오늘 바로 사용할 수 있는 팁은 이 같은 주제를 비공개(미상장)로 설정하는 것입니다. 재상장할 수 있는 타이머 기능을 추가할 계획이지만, 현재는 수동으로 처리할 수 있습니다.

과거에 “Bury” 주제도 등장한 적이 있으며, 이에 대해 우리가 생각해 본 적이 있습니다.

5개의 좋아요

정확히 무엇을 제안하고 있는지 잘 이해가 되지 않습니다. 이것이 어떻게 작동하는지, 사용자가 무엇을 보게 되는지, 스태프가 무엇을 보게 되는지에 대한 UI 목업(mockup)을 보여줄 수 있을까요?

그것이 바로 슬로우 모드에서 기본적으로 편집이 제한되는 이유입니다. 커뮤니티가 이런 행동을 하지 않을 것이라고 신뢰한다면 편집 제한을 해제할 수 있습니다.

그리고 @sam이 말한 것을 고려해 보세요. 토픽을 목록에서 제외(unlisted)하세요. 더 많은 것을 제안하기 전에, 여러분의 도구 상자에 있는 기존 도구들을 완전히 활용하시길 바랍니다.

핵심 아이디어는 꽤 간단합니다: 관리자 토픽 메뉴에 “토픽 범프 제한…” 같은 이름으로 표시하면 좋겠습니다(아마 “:anchor: 범프 날짜 초기화” 항목 옆에 배치될 것입니다). 그러면 시간대를 입력하도록 요청하는 모달 박스가 나타납니다. 텍스트는 다음과 같은 내용이 될 것입니다: “이 토픽이 최신 토픽 및 기타 카테고리 목록 상단에 표시되는 빈도를 최대 X시간에 한 번으로 제한합니다.”, 기본값은 8시간 정도가 적절할 것입니다.

구현 방식에 대해서는 굳이 고집하지 않습니다. 상태 관리 방식(토픽 업데이트 시간을 범프한 마지막 게시물을 추적하고, 새 게시물의 시간이 X시간 이상 미래인 경우에만 업데이트)이거나 상태 관리가 없는 방식(유닉스 에포크 또는 첫 게시물로부터 X시간의 정수 배로 토픽 업데이트 시간을 설정)일 수도 있습니다. 아니면 다른 방식이든 상관없습니다.

사용자에게 표시되는 내용에 대해서는 100% 확신은 없지만, 반드시 사용자에게 알려야 하는 것은 아니라고 생각합니다. 대신 “미등록” 게시물 항목처럼 단순히 "이 토픽은 X시간에 한 번씩만 토픽 목록 상단에 표시됩니다."라고 표시할 수 있습니다.


다른 도구들에 관해서 말하자면, 우리는 때때로 스레드 미등록 기능을 사용하지만, 이 문제는 주로 공격적인 신규 사용자와 관련이 있습니다. 이들은 검열의 흔적에 대해 큰 불쾌감을 느낄 수 있는 유형의 사람입니다. 그리고 저는 정말로 검열/숨김/삭제를 원하지 않습니다. 핵심은 더 부드러운 개입을 통해, 그 자체로 더 많은 불만을 일으킬 가능성이 낮고, hopefully 온도를 조금 낮추는 데 도움이 되는 것입니다.

이 아이디어는 Hacker News가 업보트보다 댓글이 현저히 많은 토픽에 패널티를 부과하는 방식에서 다소 영감을 받았습니다.

2개의 좋아요

@sam @eviltrout, 이 부분에 대해 어떻게 생각하시나요? 여기서 시간을 나타내는 정수 값을 사용할 수 있습니다. 0은 “업(bump)을 절대 허용하지 않음”을 의미하고, 1~6000은 “{x}분마다 업을 1회 허용” 같은 의미로 사용할 수 있습니다.

1개의 좋아요

흥미로운 아이디어네요 - 충돌에 대한 디바운싱 같은 것 같습니다.

파워 도구처럼 보이지만, 유용하게 쓰일 수 있을 것 같습니다. 쉽게 추가할 수 있는 기능은 아닐 것 같고, 중간 정도의 노력이 필요할 것 같습니다.

1개의 좋아요

조기에 moderatation(모더레이션)이 개입할 경우, 특정 시나리오에서 토픽이 과도하게 뜨거워지는 것을 처음부터 방지하는 데 유용할 수 있다고 생각합니다. 특히 사용자가 많은 인스턴스에서 그렇습니다.

토픽이 이미 뜨거워지고 토론이 자발적으로 지속되고 있다면, 슬로우 모드가 더 나은 역할을 할 가능성이 높습니다. 토픽 내 상호작용에서 사용자가 받는 알림이(아마도) 토론을 계속 유지할 것이기 때문입니다.

소스 코드를 확인해 보았는데, 모델을 변경하는 것 외에도 bypass_bump?를 수정하는 것만으로도 토픽이 bumped(상단 고정/최신순 이동)되지 않도록 방지할 수 있을까요?

Topic에 min_seconds_between_bumps와 같은 필드를 추가하고, bypass_bump?에 또 다른 조건을 추가하는 것은 어떨까요:

def bypass_bump?
  !@post_successfully_saved ||
    @topic_changes.errored? ||
    @opts[:bypass_bump] == true ||
    @post.whisper? ||
    only_hidden_tags_changed? ||
    @topic.min_seconds_between_bumps == 0 ||
    (@topic.min_seconds_between_bumps > 0 && 
      (Time.now - @topic.bumped_at) / 60 < @topic.min_seconds_between_bumps) 
end

0 값이 토픽이 전혀 bumped되지 않아야 함을 의미하는지에 대해서는 확실하지 않습니다. 이는 일부 사용자를 혼란스럽게 할 수 있습니다. 이렇게 구현한다면, 웹앱이 0을 사용자에게 직접 노출하지 않는 것이 더 나은 UX라고 생각합니다.

3개의 좋아요

제 해석이 맞다면, 범프(bump) 여부를 결정하는 시점은 답글이 게시되는 순간이 되겠지만, 이후 노-범프(no-bump) 기간 동안 추가 답글이 게시되지 않으면 해당 토픽은 영원히 범프되지 않게 됩니다.

이것이 원하는 동작 방식인가요, 아니면 해당 기간 동안 답글이 게시된 경우 노-범프 기간이 끝나면 항상 범프가 일어나야 하는 건가요? 항상 범프가 일어나야 한다면, 범프 시점은 '현재’가 되어야 하는지, 아니면 최신 답글의 시간이 되어야 하는지 알려주시면 좋겠습니다.

2개의 좋아요

네, 이 방식에서는 답변이 게시될 때 결정이 이루어지며, 이후 추가 답변이 없으면 해당 토픽은 다시 뱀프되지 않습니다. 저는 디스코urse 소스 코드에 대한 전문가가 아니므로, 만약 제 추측이 맞다면 이것이 구현하기 가장 쉬운 방법일 것입니다.

다른 가능한 동작 방식인 쿨다운 기간 이후에 뱀프하는 방식은 @eviltrout님이 말씀하신 대로, 애플리케이션이 다음 예상 뱀프 시점을 저장하고 주기적으로 대기 중인 뱀프를 수행하는某种의 스케줄러나 sidekiq 작업이 필요하기 때문에 더 많은 작업이 필요할 것입니다.

두 가지 접근 방식 모두 유효하며, 이것이 실제로 구현된다면 어느 쪽이 선택될지는 알 수 없습니다.

개인적으로 문제 있는 토픽에 추가 답변이 없다면 영원히 뱀프되지 않는 것을 개의치 않습니다. 하지만 그것은 제 의견일 뿐입니다.

2개의 좋아요

제 생각에는 가장 단순한 로직은 다음과 같습니다:

  • 주제에 "{x}분마다 한 번만 올려질 수 있음"이라는 설정이 있으며, 분 수는 0(기본값, 답글 수만큼 자유롭게 올려질 수 있음)에서 약 10,000(주당 한 번만 올려질 수 있음)까지 조정 가능합니다. 예를 들어 누군가가 60분으로 설정했다면, 해당 주제는 최대 60분 간격으로 한 번만 올려질 수 있습니다.

  • 답글이 게시될 때, 마지막 올려진 날짜를 확인합니다:

    • 마지막 올려진 날짜가 60분 이전이라면, 이 새로운 답글로 주제를 올려도 됩니다.

    • 마지막 올려진 날짜가 60분 이내라면, 이 새로운 답글을 게시할 때 주제를 올리지 않습니다.

네, 이 정도면 단순하고 실행 가능해 보입니다. 다음 릴리스에 추가해 보죠 @sam @eviltrout?

6개의 좋아요

-1(무기한 범프 불가)도 유용할까요? 저는 그렇지 않다고 생각합니다. 나중에 그런 주제를 찾기 어렵기 때문이죠(추가 작업 없이). 그리고 관리자가 특정 주제가 절대 다시 범프되지 않기를 원한다면, 그냥 주제를 닫아두는 것이 더 합리적일 것입니다.

사실 최대 시간 설정은 관리자 페이지에서 설정 가능한 항목으로 만들어야 한다고 생각합니다. max_slowbump_time 같은 이름으로요.

그리고 이참에 카테고리 수준에서도 슬로우밤을 적용할 수 있게 해줄 수 있을까요?

이런 기능이 실제로 구현된 적이 있나요? 원래 @mbauman이 이 기능을 요청하게 된 계기가 된 또 다른 스레드가 있는데, 만약 이 기능이 현재 존재한다면 사용할 수 있으면 좋겠습니다.