Discourse 개발을 시작하고 싶은데, 어디서부터 시작해야 할까요?

몇 년 전 PHP와 MySQL을 사용하던 레거시 포럼 플랫폼용 플러그인을 개발한 적이 있습니다. 제가 구현할 수 있었던 기능들 중 몇 가지에 대해 저도, 그리고 회원님들 역시 정말 만족스러워했습니다.

저는 Ruby on Rails를 사용해 본 적이 없었습니다. (데이터를 Discourse로 가져오기 위해 임포트 스크립트 과정을 고생하며 겪은 경우는 제외하구요. :joy:)

여기 있는 문서와 개발 가이드에 본격적으로 뛰어들기 전에, 먼저 기초적인 것들을 다져야 한다고 생각합니다.

Ruby on Rails를 먼저 배워야 할까요?

Ember.js도 배워야 하나요? 솔직히 이쪽도 전혀 접해본 적이 없지만, Discourse 코어에서 사용된다는 것은 알고 있습니다.

Postgres도 처음입니다.

조언과 다음 단계에 대한 제안이 있다면 감사하겠습니다.

좋습니다!

이 주제에 대해 몇 가지 유용한 글이 있습니다. 이 글들을 참고하고 있으므로 제 글 링크를 공유해 드릴게요. How can I make my own Discourse plugins? - #2 by merefield

(다만 개인적으로는 요즘 VSCode 사용을 추천합니다)

시작하는 방법 중 하나는 기존 플러그인 지원에 기여하는 것입니다. PR(풀 리퀘스트)을 제출하면서 시작하면 됩니다(저도 그렇게 시작했습니다). 처음에는 사소한 문제부터 시작해 점차 더 큰 문제를 해결하고, 새로운 기능을 추가하는 방향으로 나아가면 됩니다.

합리적으로 단순한 플러그인이나 테마 컴포넌트에 대한 아이디어가 있다면 그것부터 시작해 보세요. 개인적인 창의적 목표는 큰 동기부여가 될 수 있습니다.

처음부터 너무 많은 것을 시도하려 하지 말고 단순하게 시작하세요. 동기를 잃는 것은 가장 피해야 할 일이기 때문입니다. 특히 근본적인 변경을 시도할 때 이 작업은 어려울 수 있습니다.

인내심을 가지세요. EmberJS는 특히 이해하기가 까다로운 프레임워크입니다.

제 조언은 테마 컴포넌트부터 시작하고, 조금 나중에 플러그인으로 넘어가라는 것입니다.

항상 방대한 기존 플러그인과 TC(테마 컴포넌트) 라이브러리를 참고 자료로 활용하세요. 누군가 이미 비슷한 문제를 해결했을 수도 있습니다. 그들은 어떻게 했을까요? 코드를 살펴보세요. 항상 Discourse 코어가 설정한 표준을 따르세요. Discourse 소스 코드도 무한히 가치 있는 자료입니다.

아마도 가장 좋은 조언은 이겁니다: 그냥 해보세요! 배울 수 있는 유일한 방법은 실제로 직접 해보는 것입니다. 실수를 두려워하지 마시고, 좌절에 막히지 마세요. 계속 노력하다 보면 결국 해낼 수 있습니다. 가능한 한 스스로 해결하려고 노력하되, 정말 필요할 때는 언제든 다른 사람에게 도움을 요청할 수 있습니다.

레일즈(Rails)를 배우는 데 오랜 시간을 보냈습니다. 하지만 실제로는 Ember/JavaScript 쪽에서 많은 일이 일어나고 있습니다. 제 조언은 테마 컴포넌트(theme components)로 할 수 있는 것들부터 그쪽에서 시작해 보라는 것입니다. 훨씬 안전하고, 사용하기가 쉬우며, 할 수 있는 것들이 훨씬 많습니다.

Ember.js를 배우는 가장 좋은 방법은 무엇인가요? 추천하는 온라인 과정이 있으신가요?

혼자 이것저것 시도해 보는 것보다 구조화된 과정을 통해 배우는 편이 기초를 탄탄하게 다지는 데 도움이 되기 때문에, 저는 그런 방식으로 배우는 것을 선호합니다.

Ember.js Guides - Guides and Tutorials - Ember Guides 을 읽어보세요.

또한 https://guides.rubyonrails.org/ 도 고려해 보세요.

최근 이 분야에 발을 들이면서, 제이(@pfaffman)의 의견에 동의합니다.

가장 좋은 시작점은 theme components입니다.

몇 가지 이유를 들면 (다른 분들이 더 좋은 이유를 제시할 수 있겠지만, 제 개인적인 생각은 다음과 같습니다):

  • theme components는 개발이 쉽고, 복잡한 웹 개발 환경 설정 없이도 변경 사항을 빠르게 확인할 수 있습니다.

  • theme components는 강력하며, javascript 라이브러리를 쉽게 추가하는 것을 포함해 많은 일을 할 수 있습니다.

  • theme components에는 자체 JavaScript 코드와 셀렉터를 쉽게 추가할 수 있어, 인스펙터를 사용하여 셀렉터를 생성하고 div와 같은 요소를 삽입하는 것이 쉽습니다(당신의 애용하는 div들 말입니다).

그리고 theme components에 익숙해지고 재미를 느끼게 되면, 플러그인 개발로 더 깊이 들어갈 수 있습니다.

이는 discourse 개발 기술을 향상시키고 실무에 적응해 나가는 논리적인 방법이자 단계입니다.

죄송합니다, 이 항목을 놓친 것 같습니다. 상당히 많이 확장되었는데, 충분히 깊이 파고들 만한 자료가 많습니다: Developing Discourse Themes & Theme Components

이 주제에서 이미 언급된 훌륭한 추천들 외에도, 제 최고의 조언은 Discourse · GitHub 의 수많은 테마/컴포넌트 코드를 살펴보고 그 원리를 이해해 보라는 것입니다. 클론을 만들어 보고, 고쳐 보고, 어떻게 동작하는지 파악해 보세요. 저도 여기저기서 작은 프로젝트들을 하면서 그렇게 많이 배웠습니다.

좋은 시작은 https://github.com/literatecomputing/feverbee-engagement-theme를 살펴보고, 거기에 속하지 않는 불필요한 부분을 모두 삭제해서 정리하는 것입니다. 그런 다음 PR을 제출하면 됩니다. :slight_smile:

무엇을 하려는 건지 잘 알겠어요, @pfaffman. :grin: 그렇긴 하지만, 아직 제게 코드를 정리해 달라고 하기엔 이르다고 생각해요. 다만, PR을 제출하는 것이 좋은 시작점이 될 수 있다는 데는 동의합니다. 먼저 이 스레드에서 이미 공유된 자료들을 좀 더 자세히 살펴봐야 할 것 같아요.

지금 제가 직면한 가장 큰 과제는 LAMP 배경에서 Discourse 스택이 무엇으로 불리는지 이해하는 것이 될 거예요. LNPR(Linux, Nginx, Postgres, Ruby/Rails)? 하하.

시도를 해보는 사람에게 뭐라 할 수는 없죠. :wink:

하지만 진지하게 말하자면, 그 테마는 테마가 할 수 있는 일들에 대한 아이디어를 얻을 수 있는 다양한 기능을 제공합니다. 완전히 새로운 주제 목록을 만들 수 있다는 점은 정말 놀라운데요. 코드를 정리하는 것(아무런 쓸모도 없는 코드가 너무 많지만, 제거하려고 시도했을 때 여러 가지가 깨져서 결국 괄호를 닫는 위치를 어긋나게 만들었거나… 혹은 그 비슷한 문제를 찾지 못한 채 그대로 두었습니다)은 비록 나 자신을 위해서만이라도 꽤 좋은 연습이 될 것입니다. 제 조언이 여러분에게 도움이 될지 판단할 수 있도록 더 많은 맥락을 드리자면, 저는 CS(컴퓨터 과학) 학위를 받았지만 1998년경에 HTML 학습을 중단한 사람입니다. CSS가 이론적으로 무엇을 할 수 있는지는 이해하지만, JavaScript는 여전히 완전히 혼란스러우며, JavaScript가 어디서 끝나고 Ember가 어디서 시작되는지 이해하지 못합니다. 저는 종종 사소한 변경이 될 것이라고 생각하며 수정을 시도하다가 결국 모든 것을 망치곤 합니다.

행운을 빕니다!

저도 같은 LAMP(즉, WordPress) 배경을 가지고 있습니다. 이 부분은 어렵지만 충분한 시간을 들이면 이해할 수 있습니다.