인기 플러그인을 Discourse 코어에 번들링

앞으로 몇 주 동안, 인기 있는 Discourse 플러그인 중 일부를 코어 저장소로 이동할 예정입니다. 이는 Discourse가 기본적으로 더 많은 플러그인을 포함하게 되며, 모든 플러그인의 테스트 및 최신 상태를 유지하는 것이 더 쉬워진다는 것을 의미합니다.

이 모든 플러그인은 기본적으로 비활성화 상태로 유지되므로, 기존 커뮤니티에는 눈에 띄는 영향을 미치지 않습니다. discourse.org와 같은 관리형 호스팅 서비스를 사용 중이라면 아무 조치도 필요하지 않습니다.

자체 호스팅 커뮤니티

Discourse를 자체 호스팅 중이고 이미 이 플러그인 중 하나를 사용 중이라면, 다음 재빌드 전에 app.yml 파일에서 관련 줄을 제거하도록 안내받게 됩니다.

개발 환경

이미 로컬에 플러그인 중 하나가 설치되어 있고 최신 버전의 Discourse 코어를 가져온 경우, 다음 두 가지 중 하나가 발생합니다.

  1. 플러그인에 심볼릭 링크를 사용하는 경우, git pull 실행 중 오류가 발생합니다. 문제를 해결하려면 심볼릭 링크를 삭제한 후 git pull을 다시 실행하십시오.

  2. 플러그인을 직접 클론한 경우, 코어의 git pull은 성공하지만 중첩된 git 저장소로 인해 예상치 못한 'unstaged changes’가 발생할 수 있습니다. 가장 좋은 진행 방법은 영향을 받은 디렉토리를 삭제한 후 main에서 restore하는 것입니다. 예를 들어:

    rm -rf plugins/discourse-reactions
    git restore plugins/discourse-reactions
    

대상 플러그인

69개의 좋아요
How plugins moving to core is communicated
Core plugins added to my updated site today
What happens next?
Bootstrap failed with exit code 128
Discourse Patreon
Discourse User Notes
Discourse Post Voting
最新版更新出错
Discourse AI
Discourse Templates
Discourse Affiliate
Discourse Topic Voting
Discourse Gamification
Self-Hosting Discourse Just Got a Whole Lot Easier
Unboxing Discourse 3.5
Discourse Birthdays & Anniversaries Today (Banner)
Sudden Sidekiq trend change & anomaly
Discourse Assign
What happens next?
How plugins moving to core is communicated
How plugins moving to core is communicated
How plugins moving to core is communicated
Discourse Captcha
Discourse Data Explorer
Discourse Login with Amazon
Discourse Graphviz
Discourse Learning Management System Integration (LTI 1.3 Authentication)
Microsoft Authentication
Discourse OAuth2 Basic
Discourse OpenID Connect (OIDC)
Discourse Reactions
RSS Polling
Discourse Subscriptions Plugin
Discourse Zendesk
Discourse Apple Authentication
Discourse Chatbot :robot:
Discourse AI Topic Summary :robot:
‘Preinstalled’ plugin label on hosted sites
Discourse Solved
Discourse Advertising Plugin (Ads)
Discourse GitHub
Discourse Policy
Discourse Docker Manager
3.5.0.beta8: Bundled plugins, a new theme, better color management, powerful filtering, and advanced image controls
Discourse Solved
Discourse Assign
Discourse Graphviz
Install plugins on a self-hosted site
How do I remove the Anniversaries option from the burger menu?
Add-on suggestions for humor focused community
[Admin Notice] One of your themes or plugins contains code which needs updating. (id:discourse.user.userOptions)
Discourse Chat Integrations
Discourse Events
Suggested improvements to plugin page now that more plugins are bundled
Error 500 when moving posts
Math and AI workarounds

첫 번째 게시물에서 HINT 전체 줄을 제공해 주셔서 감사합니다. 덕분에 오늘 아침에 실패한 재빌드를 진단할 수 있었습니다 :blush:

17개의 좋아요

감사합니다. 개발과 프로그래밍에 대한 제 지식이 부족하지만, 그래도 한 가지 질문을 드리고 싶습니다. 기본적으로 기본 설치에 추가되도록 설계된 이러한 플러그인들이, 언젠가는 플러그인이라는 성격을 잃고 아예 플러그인이라 불리지 않은 채 기본 설치의 완전한 일부가 될 수 있을까요?

3개의 좋아요

네, 그렇게 될 수도 있습니다. 특히 인증 플러그인(예: apple-auth)은 결국 코어에 통합될 가능성이 높습니다. 이는 다른 내장 인증 방식(예: Google, Facebook 등)과 동일한 경로입니다.

3개의 좋아요

기본적으로 토론 기능을 더 활성화시키고 새 설치를 용이하게 하는 흥미로운 변화입니다.

다음에 대해 한 가지 질문이 있습니다:

다음 재빌드 전에 app.yml 파일에서 관련 줄을 제거하도록 프롬프트가 표시됩니다.

관리자 업그레이드 페이지에서 업그레이드 버튼을 클릭하기 전/후에도 프롬프트나 경고 메시지가 표시되나요?

3개의 좋아요

제 경험상 기억이 맞다면, 처음에는 docker만 업데이트할 수 있습니다. docker를 업데이트한 후에는 업데이트 UI에 메시지가 표시되며, 커맨드 라인을 통해 업데이트해야 한다는 것과 그 방법에 대한 설명을 확인할 수 있습니다.

그 후 커맨드 라인에서 업데이트를 수행하면, 위 첫 번째 게시물에서 설명한 대로 app.yml에서 제거해야 하는 각 플러그인에 대한 HINT가 표시됩니다.

4개의 좋아요

좋은 업데이트이지만, 정말로 필요했나요? 재빌드 실패를 통보하는 건 좀 너무한 것 같습니다.. UI 경고나 자동 업데이트(또는 아예 무시하는 것)가 "지금 바로 이것들을 제거하라"고 총을 겨누는 것보다 나았을 것입니다.

6개의 좋아요

지난주에 커맨드 라인을 통해 업데이트를 시도했을 때 실패하면서 당황한 적이 있습니다. (리액션 플러그인)

이번 아침에도 커맨드 라인 업데이트가 다시 실패하면서 또다시 당황했습니다. (데이터 탐색기 플러그인)

업데이트 프로세스가 시작되기 이전에 커맨드 라인에서 경고가 표시되기를 진심으로 원합니다. 그리고 그 경고가 곧 실패로 이어질 것이기 때문입니다.

지난 2주 동안 두 번이나 업데이트가 실패하여, 문제를 디버깅하고, 설정을 수정하고, 다시 시도하는 등 모든 것이 고장 난 상태에서 가벼운 패닉 상태에 빠져 있는 동안 Discourse가 오프라인 상태였습니다.

8개의 좋아요

또 다른 문제가 있습니다.

Gem 의존성입니다.

중복된 코어 플러그인 클론을 삭제하는 것만으로 해결되는 문제가 아닙니다.

의존성의 양이 크게 증가하기 때문에 gem 버전 충돌 문제도 있습니다.

코어 플러그인이 상당히 뒤처져 있어, 제 플러그인 중 일부에서 특정 의존성을 하위 버전으로 낮추는 과정을 거치고 있습니다.

따라서 이번 조치는 제 생각에 불필요한 추가 의존성을 도입하고 빌드 재구성을 더 취약하게 만든다고 생각합니다.

제 경우를 들어 보면, 제 플러그인은 이미 multipart-post-2.4.0을 사용하고 있었는데 multipart-post-2.2.3을 사용하게 되었습니다.

그 결과 빌드 재구성이 두 번 실패했고, 감당하기 힘들 정도로 다운타임이 길어졌습니다.

3개의 좋아요

게시물 2개가 새로운 주제로 분리되었습니다: 코어에 더 많은 플러그인이 번들링됨에 따라 플러그인 페이지에 대한 개선 제안,

곧 진행할 조치 중 하나는 핵심 플러그인에서 gem 관련 줄을 제거하고 단일(monolith) gem 파일로 전환하는 것입니다.

3개의 좋아요

궁금한 점이 있는데, 이 플러그인 목록은 실제 운영 중인 Discourse 설치 환경에서 가져온 건가요? 제 메인 설치 환경의 플러그인과 거의 50%가 일치하네요!

2개의 좋아요

이렇게 많은 플러그인을 코어에 번들링하면 포럼이 비대해지지 않을까 궁금합니다. 예를 들어, 관리자(운영자)가 포럼에 원하지 않는 플러그인(예: Discourse AI)이 있을 수 있는데, 어쩔 수 없이 추가해야 하는 상황이 생길 것 같습니다. 물론 비활성화할 수는 있지만, 추가된 파일 등이 포럼의 성능을 저하시키지는 않을지 궁금합니다.

2개의 좋아요

클라이언트 측면에서, Discourse는 비활성화된 플러그인에 대한 JavaScript 에셋을 서빙하지 않으므로 해당 부분에는 아무런 영향이 없습니다.

서버 측면에서, 적절히 구현된 플러그인(이 경우 모두 해당됩니다)의 경우, 비활성화되면 플러그인에서来的 커스터마이징이 우회됩니다. 따라서 기술적으로 활성화/비활성화 상태를 확인하는 데 약간의 오버헤드가 발생할 수 있지만, 이는 극히 미미할 것입니다.

여기서 병합하려는 플러그인들은 discourse.org 호스팅에서 Discourse의 모든 인스턴스에서 실행되는 것들입니다. 따라서 모두 대규모 환경에서 매우 철저히 테스트되었습니다.

16개의 좋아요

알겠습니다. 설명해 주셔서 감사합니다!

2개의 좋아요

왜 릴리스 직전에 이렇게 많은 작업을 한꺼번에 진행하는 것인가요? 여가 시간에 이 일을 하는 번역가들에게는 2주 안에 3,000개의 추가 문자열이 상당한 부담입니다. 또한 이전에 플러그인이 번역되었던 언어의 경우에도 3,000개 모든 텍스트를 다시 검토해야 합니다. 가끔씩 300개씩 진행하는 것이 매주 1,500개씩 하는 것보다 훨씬 관리하기 쉬울 것입니다.

6개의 좋아요

이미 이러한 플러그인 중 하나 이상을 자체 호스팅 커뮤니티에서 실행 중인 경우, app.yml에서 플러그인을 제거하고 코어로 통합할 때 설정 데이터가 손실됩니까?

AI 플러그인을 원하는 대로 정확히 설정해 두었는데, 재설정(또는 나중에 다시 추가할 수 있도록 설정 옵션을 적어두는 것)이 필요할 경우 지금 미리 알아두면 좋겠습니다. :+1:

7개의 좋아요

번역가분들이 처음부터 다시 번역하지 않도록 Crowdin의 번역 메모리를 활용하여 이 과정을 최대한 매끄럽게 만들려고 노력하고 있습니다. 하지만 여전히 교정할 양이 많다는 점에는 동의합니다.

여기서 더 자동화할 수 있는 부분이 있는지 궁금합니다. 예를 들어, 이러한 플러그인의 문자열은 교정을 거치지 않고 "자동 승인"할 수도 있습니다 :eyes:

모든 설정/데이터는 유지됩니다.

11개의 좋아요

UI에서 실패할 재빌드를 유도하는 메시지는 정말 우아하지 못하게 느껴졌습니다.

최소 도커 관리자 버전을 실행 중인 사이트에 대해 이 주제를 최소한 표시할 수 있는 방법이 없을까요?

2개의 좋아요

이 메타 토픽은 사실 보고 싶지 않은 내용입니다.

어려운 점은 app.yml에서 어떤 플러그인을 제거해야 하고, 어떤 플러그인은 제거해서는 안 되는지를 아는 것입니다.