안녕하세요,
Discourse에는 메시지 내 사용자 멘션(언급) 수를 제한하는 기능이 있으며, “신규” 사용자(신뢰 수준 0)의 경우 이 제한이 더 엄격하게 적용됩니다.
제가 말씀드리는 것이 무엇인지 모르시겠다면, Discourse 소스 코드에 포함된 구현부는 다음과 같습니다:
이 기능 자체는 좋은 것이지만, 불행히도 일부 사용자가 실수로 이 제한에 걸려 혼란을 겪는 경우가 몇 번 있었습니다. 문제는 이들이 사용자를 의도적으로 멘션한 것이 아니라는 점입니다. 메시지에 포함된 코드 스니펫을 포맷팅하는 방법(또는 어떻게 해야 하는지)을 “잊어버렸거나”(또는 몰랐거나) 단순히 그대로 붙여넣은 것이었는데, 해당 스니펫이 Java 코드였기 때문에 @로 시작하는 애노테이션(annotation)이 포함되어 있었고, 이것이 사용자 멘션으로 해석된 것입니다.
이러한 코드의 예시는 다음과 같습니다:
public class MyCode {
@NotNull
private String foo;
@NotNull
private String bar;
@NotNull
private String foobar;
}
에러 메시지는 단순히 다음과 같습니다:
Sorry, new users can only mention 2 users in a post
마크다운으로 코드를 포맷팅하는 방법에 익숙하지 않은 사용자는 사용자 멘션이 무엇인지도 모를 수 있으며, 설령 알고 있더라도 자신이 Java 애노테이션으로 의도한 부분이 사용자 멘션으로 해석되었다는 사실을 이해하지 못할 수 있습니다.
그러므로… 해당 기능의 사용자 경험(UX)을 개선할 수 있을까요?
Discourse가 소스 코드를 자동으로 감지하여 포맷팅을 제안하거나, 검증에 실패한 메시지 부분을 하이라이트하는 방안을 논의할 수 있지만, 어느 쪽 솔루션이든 상당한 노력이 필요할 것입니다.
저는 에러 메시지를 확장하여 사용자 멘션이 무엇인지 설명하고, 몇 가지 조언을 제시하는 것만으로도 충분하다고 생각했습니다.
적어도 다음과 같은 내용이면 좋겠습니다:
Sorry, new users can only mention 2 users in a post.
User mentions are words prefixed with `@`, for example `@johnsmith`.
그리고 가능하면 다음과 같은 내용까지 포함하면 좋겠습니다:
Sorry, new users can only mention 2 users in a post.
User mentions are words prefixed with `@`, for example `@johnsmith`.
If your post includes source code, make sure to surround it with backticks to avoid having parts of your code interpreted as user mentions; see <insert some links to documentation about formatting code on discourse>.
의견이나 생각을 듣고 싶습니다. 풀 리퀘스트(Pull Request)를 보내는 것이 좋을까요? 다만, 영어와 프랑스어 로케일(locale)만 업데이트할 수 있을 것 같아 걱정입니다.
참고로, 혼란을 겪은 사용자의 예시 몇 가지입니다:

