Discourse 커스터마이징을 어디까지 밀어붙일 수 있을까요?

Discourse를 UI뿐 아니라 기능을 이동하거나 새로운 기능을 추가하는 등 얼마나 자유롭게 커스터마이즈할 수 있는지, 그리고 Discourse 업데이트 시 이러한 커스터마이즈가 깨지지 않을 수 있는지(또는 최소한 덜 깨질 수 있는지) 궁금합니다.

저는 Discourse의 모든 점이 마음에 들지만, 결국 구현하거나 변경하고 싶은 몇 가지 사항이 있습니다. Discourse의 모바일 앱에 의존하기보다는 제 커뮤니티에 특화된 더 커스텀하고 전용인 모바일 앱을 가지고 싶습니다.

또한, 구형 모바일 폰에서는 추한 Times New Roman 글꼴과 매우 단순화된 버전의 Discourse만 보이는 것도 마음에 들지 않습니다. 시대가 앞으로 나아가는 것은 이해하지만, 더 이상 지원되지 않는다는 것을 보여주기 위해 정말로 그 추한 모습으로 돌아가야 했을까요? 그리고 아마도 더 이상 존재하지 않는, 커뮤니티에 필수적인 기능에 대한 접근이 끊기는 것은 아닌지 걱정됩니다.

UI뿐 아니라 다른 것들도 커스터마이즈하고, 새로운 기능을 구현하고, 기능을 이동하는 등 다양한 작업을 하고 싶습니다. 기본적으로 Discourse의 데이터베이스와 대부분의 "스켈레톤"을 활용하되, "색상만 다른 또 다른 Discourse 포럼"이라는 느낌을 받지 않고 제 스타일에 최대한 가깝게 만들고 싶습니다.

컴포넌트, 플러그인 등을 통해 많은 부분을 커스터마이즈할 수 있을 것이라 생각하지만, 한계가 어디까지인지 궁금합니다. 특히 Discourse 업데이트 시 기능이 깨지는 문제에 대해서는 더욱 그렇습니다.

지금 제가 하고 있는 작업이 바로 이것인데, 15년 동안 워드프레스를 사용했던 입장에서 보면 마치 시대가 역행하는 것 같습니다. 하지만 무서운 명성으로 불리는 챗GPT의 도움으로 몇 가지 요령을 배우기 시작했고, GitHub을 이해하고 파일을 편집하며 CSS 등을 사용할 수 있다면 생각보다 그렇게 어렵지 않다는 걸 깨닫고 있습니다.

네, 저는 Git/Github을 사용하며, 시스템이 어떻게 동작하는지에 대한 “기본적인” 이해는 갖추고 있습니다 (최근에는 부업으로 다른 것들을 만들면서 더 많이 배우고 있어요). 많은 것을 할 수 있을 것 같지만, 항상 이런 도전이 있습니다: 오늘 Discourse 버전 XYZ에 맞춰서 만든 것이, 내일 업데이트가 되면 깨질 수 있다는 점인데, 특히 무엇이 깨졌는지 모를 때는 정말 답답합니다…

그래서 가능한 한 최소한의 커스터마이징을 하는 것이 더 안전해 보이지만, 그만큼 "브랜딩"이 잘 되지 않아요. 어느 쪽이 더 가치 있는지는 결국 판단의 문제인 것 같습니다.

ChatGPT를 사용하시나요, 아니면 Codex를 사용하시나요? 저는 Github Codespaces에서 Claude Code CLI를 사용하고 있는데, 정말 편합니다! 그리고 Claude에게 무엇을 하라고, 어떻게 행동하라고 하는지 등 모든 것을 CLAUDE.md 파일에 기록해 두기 때문에, 환각(hallucination)을 거의 일으키지 않거나, 적어도 이전보다는 덜 심하게 일으킵니다. 이 파일은 Claude에게 하고 싶은 새로운 것들을 발견할 때마다 계속 커져 가고 있습니다.

테마에서 한 줄의 CSS만 변경하면 될 것입니다.

기존의 확장 훅(extension hooks)을 사용한다면 상당히 많이 커스터마이징할 수 있습니다.

Discourse customers | Discourse - Civilized Discussionhttps://discover.discourse.com/ 의 사이트들을 보신 적 있으신가요? 예를 들어 Epic Developer Community Forumshttps://community.robotime.com/ 같은 곳 말입니다.

솔직히 말씀드리면, 클로드(Claude)는 이미지 처리를 지원하지 않고 OPEN Router와도 잘 호환되지 않아서 삭제했습니다. 구독이 많았기 때문에 GPT만 남기고 나머지는 모두 해지했습니다.

저는 단지 예전에는 그냥 작동하던 플랫폼이 갑자기 더 이상 작동하지 않거나, 아니면 적어도 예전만큼은 아니게 된 전반적인 변화의 일부로 언급한 것입니다. 그 때문에 저는 더 이상 Discourse를 사용하는 포럼에 접속하지 않으려 합니다. 언젠가 제 휴대폰을 업그레이드해야 한다는 것은 알지만, 아직까지는 잘 작동하니까요…

이것은 꽤 괜찮아 보입니다: https://forums.unrealengine.com/
향후 참고를 위해 메모에 저장해 두었습니다. 감사합니다!
관심 있는 다른 사이트들도 몇 가지 있지만, 항상 Discourse라는 느낌이 듭니다. 저는 건설적인 작업보다는 과도하게 고민하고 있다는 것을 알지만, 실제로 얼마나 커스터마이즈할 수 있는지 궁금했습니다. 말씀드렸듯이, 특히 UI의 경우 많은 것이 가능하다고 생각합니다. Discourse가 업데이트될 때 기능이 잘 유지될지 궁금합니다. 테스트를 좀 해봐야겠습니다.

정말 자아실현적 예언이네요 :slight_smile:

저는 거의 이미지를 필요로 하지 않아서 그건 저한테 문제가 된 적이 없었어요. 아주 드물게 필요한 경우에는 ChatGPT에 요청을 했는데, 요청한 내용에 따라 다르지만 50%의 확률로 제 머릿속에 있는 것과 조금이라도 비슷한 결과물을 얻지 못하더라고요. 결국 Photoshop으로 직접 하게 됩니다.

하지만 Claude Code는 저한테 정말 큰 도움이 되고 있어요. 속도도 엄청 빠르고요.

ChatGPT가 여러분이 하는 일에 잘 맞다면, 그게 바로 올바른 도구인 거죠. 잘 작동하기만 하면 그게 가장 중요하니까요.

Discourse의 디자인이 나쁘다고 생각해서가 아니라, 구조나 특정 기능의 구현 및 표시 방식에 이르기까지 내 스타일이 더 많이 반영되기를 원할 뿐입니다.

다시 말하지만, 제가 너무 복잡하게 생각하는 것일 수도 있지만, 반드시 테스트를 해보고 어떻게 되는지 확인해 봐야 합니다.

많은 테마 등에서 과거에 머물러 있는 것 같다고 생각해요. 실제로 꽤 전에 이 주제에 대해 한바탕 불평을 늘어놓은 적도 있습니다.

또 다른 문제는 포럼은 결국 제목 목록이라는 본질적인 형태를 가지기 때문에 비슷한 모습으로 보일 수밖에 없다는 점입니다. 페이스북, 레딧, X를 보세요. 모든 플랫폼의 주제 카드가 어느 정도 유사한 형태를 띠고 있습니다.

저는 전문가가 아니지만, 제 관점에서는 Discourse는 매우 높은 수준의 커스터마이징을 지원합니다. 그것뿐만 아니라 개발자들이 끊임없이 새로운 방법과 더 쉬운 커스터마이징 방식을 만들어내고 있습니다. 또한 Discourse는 사용자가 커스터마이징한 부분에 영향을 미칠 수 있는 변경 사항이 예정되어 있을 경우, 미리 경고 메시지를 제공하는 데에도 신중을 기하고 있습니다.

색상만 다른 또 다른 Discourse 포럼’을 넘어 훨씬 더 많은 것을 만들 수 있는 가능성은 분명히 존재합니다. 실제로 공식 개발팀이 제공하는 테마 컴포넌트와 플러그인만으로 변경할 수 있는 범위가 얼마나 넓은지 놀라울 정도입니다. 그리고 지원 스태프가 말씀드린 대로, 인터페이스의 모든 요소는 API를 통해 접근할 수 있으므로, “데이터베이스와 Discourse의 대부분을 이루는 ‘골격’을 활용”하고 싶다면 이를 막을 어떠한 장애물도 없습니다.

이 모든 것을 고려해 볼 때… 다른 스레드에서 언급하신 커뮤니티 구축, 공유, 그리고 사람들이 나눌 수 있는 공간을 제공하는 아이디어를 매우 좋아합니다. 제가 시도하고 있는 것의 핵심이기도 합니다. 또한 음악가이시면서 소프트웨어 개발도 즐기신다고 하셨는데, 완전히 맞춤형 웹사이트를 구축하게 되면 유지보수에 대한 책임도 지게 됩니다. (Discourse 관련이든 아니든) 문제가 발생하면 직접 시간을 들여 해결하거나, 누군가를 고용해 수리해야 합니다.

새로운 주제들을 시작해 보세요. 각 주제에는 오직 하나의 아이디어만 담으세요. 포럼에 원하는 바를 명확히 말씀하시고, 그 아이디어를 실현하는 방법에 대한 조언을 구하세요. 기능을 개별적인 항목으로 나누면 사람들이 해결책을 함께 고민하는 데 도움이 될 뿐만 아니라, 더 구조화된 접근 방식을 취할 수 있게 하고 목표를 더 명확하게 정의하는 데에도 도움이 됩니다.

ask.discourse.org를 확인해 보세요.

Discourse를 위해 특별히 설계된 AI입니다.

그리고… 기분 상하지 마시고, 제 조언을 참고하시어 본인의 시간이 얼마나 소중한지 고려해 보신 뒤 전문 개발자를 고용하는 것도 생각해 보세요. 이 포럼에 상주하는 개발자들이 여러 명 있으며, 마켓플레이스는 이러한 문의를 위해 특별히 마련된 카테고리입니다.在那里에서는 아이디어를 제시하고 개발자들이 작업을 수행하기 위해 입찰을 할 수 있습니다.

네, 디지털 관련이라면 어떤 방식으로든 무엇이든 할 수 있다고 항상 말하곤 합니다. 그래서 이 부분에 대해 좀 더 조사하고 한 단계씩 진행해야 할 것 같습니다. 다음 단계는 제 Discourse를 다시 활성화하는 것 같습니다. 한때 설치해 두었었지만, 진정으로 집중할 준비가 될 때까지는 내려놓기로 했었거든요.

네, 2001년경부터 시작했습니다. 하지만 최근에는 특히 Claude Code의 도움으로 저를 위한 유용한 도구들을 만들 수 있었고, 궁극적으로는 다른 사람들을 위해 몇 가지를 공개하기도 했습니다.
개발자가 되거나 그쪽에 너무 많은 돈을 쓰려는 것은 아니지만, 분명히 제가 즐기는 활동입니다. 항상 창의적인 일을 하는 것은 매우 지치기 쉽습니다. 소프트웨어처럼 더 이진법(binary)적인 것이 있는 것은 매우 보람 있습니다.

전혀 상처받지 않았습니다. 어떤 피드백이든 가치 있습니다. 그리고 점점 더 자주 제 시간이 얼마나 가치 있는지를 분석하고 있는데, 특정 일을 하느라 시간을 쓰지 않고 다른 사람에게 맡기는 것이 얼마나 가치 있는지, 그리고 시간과 노력에 상관없이 제가 실제로 무엇을 즐기는지를 고려하고 있습니다. 그래서 새로운 도구 개발이 저에게 그렇게 보람 있는 것입니다. 실제로 저는 아이디어가 현실이 되는 과정을 보는 시간을 즐기기 때문에, 그 시간은 결코 낭비된 시간이 아닙니다.

네, 인터넷이 매우 "범용적"이 되었습니다. 스타일보다 기능이 우선시되기 때문이라고 생각합니다. 제가 그 자체를 문제 삼는 것은 아니지만, 독특한 무언가를 가지는 것도 중요합니다.

그리고 다른 주제에 대해서도 동의합니다. Discourse는 성장할 수 있는 공간이 많습니다. Discourse를 좋아하는 점 중 하나는 실제로 성장하는 플랫폼처럼 느껴진다는 것입니다. 팀이 여기서 소통하고, 로드맵을 공유하고, 이런 식으로 말입니다. 아무도 무슨 일이 일어나고 있는지 모르는 소위 ‘무미건조한’ 플랫폼과는 다릅니다. 저는 여기서 그런 점을 매우 소중하게 생각합니다.

100% 확신합니다. 제가 써본 백엔드 플랫폼 중에서도 손꼽히는 수준이에요.

한계는 매우 적습니다. 가장 큰 제한 사항은 템플릿을 직접 오버라이드할 수 없다는 점이며, 기존 뷰에 새로운 요소를 추가하려면 Plugin Outlets를 사용해야 한다는 것입니다. 그렇지만 이를 CSS와 함께 사용하면 보통 원하는 결과를 얻을 수 있습니다.

새로운 라우트를 생성하고 해당 라우트의 레이아웃을 완전히 제어할 수 있습니다.

백엔드는 더 유연합니다.

따라서 가능한 한 공식 API를 사용하고, 재작업(rework) 범위는 제한적이지만 유지보수 작업을 완전히 없앨 수는 없습니다.

유지보수가 전혀 없기를 기대하는 것은 합리적이지 않습니다… 제 GitHub 계정을 보시면 인기 있는 확장 기능 중 일부에 "COMPATIBILITY: "이라는 커밋이 많이 있는 것을 보실 수 있습니다. :slight_smile:

업그레이드를 테스트하고 사용자 정의 설정이 깨지지 않는지 확인하기 위해 스테이징 서버를 유지하는 것이 좋은 관행입니다 - 사이트가 더 사용자 정의되어 있을수록 어떤 형태의 스테이징 인스턴스가 필요할 가능성이 더 커집니다 - 개발 인스턴스를 사용하는 것도 도움이 될 수 있습니다.

구체적인 사항을 알지 못하면 커스터마이징이 얼마나 "안전"한지 단정하기 어렵습니다… 하지만 일반적으로 커스터마이징을 많이 할수록 유지보수도 더 많이 필요하게 됩니다.

플러그인 아웃렛에 커스텀 컴포넌트를 추가하거나 Discourse 컴포넌트를 완전히 교체하는 경우… 일반적으로 이러한 커스터마이징은 확장 지점에 커스텀 코드를 삽입하는 방식이기 때문에 계속 작동하게 됩니다(많은 사람들이 이 지점들을 사용하므로 우리는 이 지점들을 보존하려고 노력합니다).

CSS에서는 가능할 경우 기존 --variables를 활용하여 스타일을 변경하는 것이 좋습니다. 콘텐츠 구조가 변경될 수 있지만, 그렇게 되더라도 동일한 변수를 재사용할 수 있기 때문입니다.

따라서 다음과 같은 방식이 더 안전한 경로입니다:

.d-header {
   --title-color--header: red;
}

다음은 상대적으로 덜 안전한 방식입니다:

.d-header {
    .extra-info-wrapper .topic-link {
      color: red;
    }
}

우리는 템플릿 오버라이드나 modifyClass 사용과 같이 깨지기 쉬운 구식 커스터마이징 방식에서 플랫폼을 벗어나도록 노력해 왔습니다. 또한 더 안정적인 API도 개발 중이지만… 여전히 때때로 일부 유지보수가 필요할 것입니다.

피드백 감사합니다.
스테이징 서버에 대해 정말 깊이 생각해 봐야 할 것 같습니다. 분명 좋은 접근법이네요.

지금은 첫 단계로 Discourse를 다시 설치하고, 콘텐츠를 만든 뒤, 시기가 되면 큰 변경이 필요하지 않고 Components로 처리할 수 있는 쉬운 것들부터 시작하는 것이 좋다고 생각합니다. 어디까지 진행할 수 있는지 살펴본 후, 그때 스테이징 서버에 대해 생각하겠습니다.

감사합니다!

변수에 대한 그 팁은 정말 가치 있네요.
어느 날坐下来서 변경하거나 구현하고 싶은 것들의 목록을 만들고, 컴포넌트를 통해 수정할 수 있는 것부터 하나씩 진행해 보며 얼마나 멀리 갈 수 있는지 확인해 봐야 할 것 같습니다.

맞습니다.

현재 저는 Discourse의 체계적인 안정화 작업을 진행하고 있습니다.

이를 위해 일부 주제 컴포넌트를 사용하고, 일부는 직접 작성하여 사용자화함으로써, 제 지역 사용자의 문화적 습관에 부합하도록 하고 있습니다.