saquetim
(Sérgio Saquetim)
1
여러분 안녕하세요! 레거시 “widget” 렌더링 시스템에서 벗어나기 위한 우리의 노력의 마지막 단계로, Discourse에서 위젯 사용을 비추천(deprecate) 처리하고 곧 완전히 비활성화할 예정입니다.
타임라인
이는 추정치이며 변경될 수 있습니다
2025년 7월:
코어에 비추천 경고 추가 및 비활성화를 위한 실험적 사이트 설정 추가
Meta에 공지 게시
2025년 8월
공식 플러그인과 테마 컴포넌트를 Glimmer Components 사용하도록 업그레이드.
위젯 비활성화 상태로 Meta 운영.
관리자 경고 배너와 함께 비추천 메시지 활성화.
2025년 3분기:
- 서드파티 플러그인과 테마가 업그레이드되어야 합니다.
2025년 4분기:
이 시점 이후 호환되지 않는 플러그인과 테마는 제대로 작동하지 않게 됩니다.
이것이 여러분에게 무엇을 의미합니까?
플러그인이나 테마 중 ‘widget’ API를 사용하는 것이 있다면, 2025년 4분기 마감일 전에 더 새로운 API 또는 Glimmer Components를 사용하도록 업데이트해야 합니다.
커스텀 플러그인 또는 테마가 설치되어 있습니다. 업데이트가 필요합니까?
다음 중 하나를 사용하는 경우 플러그인 또는 테마를 업데이트해야 합니다:
createWidget
decorateWidget, changeWidgetSetting, reopenWidget 또는 attachWidgetAction
MountWidget 컴포넌트
팁: 이러한 커스터마이징을 사용하는 확장 기능이 있다면, 어떤 플러그인이나 컴포넌트가 업그레이드되어야 하는지 식별하는 경고가 콘솔에 표시됩니다.
중요: 인스턴스에서 여러 테마를 사용하는 경우, 경고는 활성 플러그인과 현재 사용 중인 테마 및 테마-컴포넌트에 대해서만 표시되므로 모든 테마를 확인하십시오.
비추천 ID는 다음과 같습니다: discourse.widgets-end-of-life
이는 최근의 포스트 스트림(post-stream) 현대화와 어떤 관련이 있습니까?
포스트 스트림은 여전히 위젯 렌더링 시스템을 사용하던 Discourse의 마지막 주요 부분이었습니다. 현대화를 통해 이제 위젯 시스템의 완전한 폐지를 진행할 수 있습니다. 해당 변경 사항에 대한 자세한 내용은 업그레이드 가이드를 참고하십시오.
어떻게 업그레이드합니까?
서드파티 플러그인 또는 테마를 사용하는 경우: 새로운 시스템과 호환되는 업그레이드된 버전이 저자에 의해 출시되었는지 확인하십시오.
플러그인/테마 개발자인 경우:
- 커스텀 위젯을 Glimmer Components로 교체
- 플러그인-아웃렛(plugin-outlet) 커넥터를 사용하여 UI에 삽입
이러한 업데이트를 수행하는 방법에 대한 자세한 내용은 개발자 가이드를 참고하십시오.
saquetim
(Sérgio Saquetim)
4
Discourse 설치 환경을 다음 업데이트할 때, 위젯 렌더링 시스템이 비활성화되며 위젯 기반 커스터마이징은 더 이상 렌더링되지 않습니다.
현재로서는 호환되지 않는 사이트에서 관리자가 다음 설정 값을 수정하여 이전 동작을 다시 활성화할 수 있습니다:
deactivate_widgets_rendering
이것은 Discourse 코드베이스에서 구식 코드를 제거하기 전의 마지막 단계입니다. 구식 코드 제거는 약 1개월 후에 이루어질 예정이며, 이후에는 위젯을 다시 활성화할 수 없습니다.
saquetim
(Sérgio Saquetim)
5
Discourse에서 위젯 시스템을 제거하는 PR이 어제 병합되었습니다.
loginerror
(Maciej Kuźmicz)
6
아마도 멍청한 질문일 수도 있지만, Discourse에서 플러그인 컴포넌트 마이그레이션을 돕기 위해 사용자가 선택한 CLI 코드 도구에 입력할 수 있는 가이드/도움말이 담긴 .md 파일을 제공할 수 있을까요?
그냥 생각나는 대로 물어봅니다 
saquetim
(Sérgio Saquetim)
7
가장 일반적인 커스텀 패턴, 예를 들어 post-stream을 수정하는 패턴에 대한 마이그레이션 지침을 제공하려고 했습니다.
위젯을 사용하면 거의 모든 것이 가능하기 때문에 더 포괄적인 가이드를 작성하는 것은 어렵습니다. 따라서 나머지 커스텀 작업은 사례별로 컴포넌트로 변환해야 합니다.
해당 주제들을 주시하고 있으며, 아직 마이그레이션이 필요한 분들을 돕기 위해 여기에 게시된 질문에 답변을 드릴 것입니다.
브라우저 콘솔을 통해 포럼에서 비추천(deprecation)을 트리거하는 것으로 보이는 코드를 잠시 살펴봤는데, 다음과 같은 줄인 것 같습니다:
const { iconNode } = require("discourse-common/lib/icon-library");
let iconsjira = iconNode('icons-jira');
iconNode는 위젯에서만 사용되었으며, 지금은 noop 함수입니다. 코드에서 이 변수가 사용되고 있지 않은 것으로 보이므로, 이 줄들을 단순히 제거해도 안전할 것입니다.
추가 도움이 필요하시면 알려주세요.