새로운 기능과 기존 기능 변경 사항을 관리하는 시스템 'Upcoming Changes' 소개

Discourse를 지속적으로 개선해 나가는 과정에서, 관리자분들이 Discourse에 어떤 변경 사항이 적용될지 이해하고, 해당 변경 사항이 커뮤니티에 어떻게 구현되는지 관리할 수 있도록 돕기 위해 새로운 ‘예정된 변경 사항(Upcoming Changes)’ 설정 페이지를 만들었습니다. 이 시스템이 Discourse를 안전하고 투명한 방식으로 지속적으로 개선하는 데 도움이 될 것이라고 믿습니다.

이 주제(topic)에서는 이 새로운 시스템이 어떻게 작동하는지, 그리고 커뮤니티에 새로운 기능과 기타 변경 사항을 안전하게 도입하는 데 이를 어떻게 활용할 수 있는지 설명드리겠습니다.

예정된 변경 사항(Upcoming Changes) 작동 방식 개요

새로운 기능이나 기타 변경 사항을 개발하는 동안, 해당 항목을 /admin/config/upcoming-changes의 ‘예정된 변경 사항’ 설정 페이지에 추가합니다. 각 변경 사항은 설명, 상태, 어떤 사용자에게 영향을 미치는지 여부, 그리고 커뮤니티 내에서 해당 변경 사항이 활성화된 사용자(있다면)를 나타내는 정보를 포함합니다.

변경 사항의 상태에 따라 커뮤니티를 위해 이를 켜거나 끌지 여부를 결정할 수 있습니다. 다만, 일부 변경 사항은 결국 영구적으로 켜지게 되므로 적어도 일시적으로는 그렇게 할 수 있습니다.

변경 사항을 일시적으로 비활성화하면, 영향을 받는 사이트 커스터마이징, 프로세스 등을 처리하거나, 회원들에게 변경 사항을 알리거나, 특정 회원 그룹을 테스트용으로 지정하는 데 시간을 벌 수 있습니다.

예정된 변경 사항 분석하기

예정된 변경 사항을 하나 살펴보고, 각 섹션에서 볼 수 있는 정보를 정의해 보겠습니다.

1 - 이름 및 설명

이름과 설명은 변경 사항에 대한 간략한 설명을 제공하며, 추가 정보와 피드백을 수집할 수 있는 관련 메타(Meta) 주제(topic)로 링크됩니다.

2 - 상태(Status)

상태는 개발 라이프사이클에서의 위치를 나타냅니다. 상태는 해당 변경 사항이 옵트인(기본적으로 꺼져 있지만 켤 수 있음), 옵트아웃(기본적으로 켜져 있지만 끌 수 있음), 또는 강제 활성화(켜져 있으며 끌 수 없음)인지를 직접적으로 결정합니다.

'예정된 변경 사항’에서는 다음 상태를 사용합니다:

  • Experimental(실험적): 초기 개발/테스트 단계에 있는 잠재적 변경 사항으로, 빠르게 진화하거나 실험이 종료되면 완전히 제거될 수 있습니다(이 경우 Inactive 상태로 전환됩니다. 아래 참조). Experimental 변경 사항에 옵트인하여 테스트해 볼 수 있습니다.
  • Alpha(알파): 사용해도 안전한 테스트가 완료된 변경 사항이지만, 디자인이나 기능에 일부 소규모 업데이트가 있을 수 있습니다. Alpha 변경 사항에 옵트인하여 조기 사용할 수 있습니다.
  • Beta(베타): 사용해도 안전한 테스트가 완료된 변경 사항으로, Stable 또는 Permanent 상태로 전환되기 전에 크게 변경될 가능성은 낮습니다.
    • :information_source: 저희 호스팅을 사용하는 대부분의 사이트와 셀프 호스팅 사이트의 경우, Beta 변경 사항은 모두에게 자동으로 켜집니다(이전에 활성화하지 않은 경우), 하지만 여전히 옵트아웃할 수 있습니다.
  • Stable(안정적): 완료된 변경 사항[1], 하지만 여전히 옵트아웃(관리자가 비활성화 가능) 상태입니다. Stable 변경 사항에 옵트아웃한 경우, 관리자는 대시보드에서 경고 메시지를 받게 됩니다.
  • Permanent(영구적): 테스트가 완료된 변경 사항으로, 강제 활성화(관리자가 비활성화 불가) 상태입니다. 영구적 변경 사항은 더 이상 예정된 변경 사항 목록에 표시되지 않으며, 대신 /admin/whats-new 페이지에 표시됩니다.
  • Inactive(비활성): 중단된 실험입니다. 옵트인할 수 없습니다.

가끔 변경 사항은 이러한 상태를 선형적으로 통과합니다(예: Experimental로 시작하여 Permanent로 종료), 하지만 항상 그런 것은 아닙니다. 일부 변경 사항은 Alpha 또는 Beta 상태로 도입되며, 일부는 Stable 상태로 종료됩니다. “사이트 설정 기본값” 유형의 변경 사항은 기존 설정의 기본값만 변경하기 때문에 Permanent 상태로 전환되지 않습니다.

특정 변경 사항이 한 상태에서 다른 상태로 전환되는 데 걸리는 시간은 정해져 있지 않지만, 다음과 같은 경우 관리자에게 알림이 전송됩니다:

  • 새로운 변경 사항이 테스트 가능해졌을 때
    • 알림 피로감을 방지하기 위해 주 1회 이하로 전송됩니다. 이러한 알림을 수신하고 싶지 않다면 /my/preferences/notifications에서 비활성화할 수 있습니다.
  • 변경 사항이 자동으로 활성화되었을 때
  • 곧 강제 활성화될 변경 사항을 비활성화했을 때
    • 이는 관리자 대시보드 경고로 표시됩니다.

3 - 영향 받는 사용자(Impacted users)

영향 받는 사용자 태그는 커뮤니티 내에서 어떤 사용자가 해당 변경 사항을 어떤 방식으로 보거나 상호작용할 수 있는지를 설명합니다. 쉽게 말해, 누가 이 변경 사항을 인지할 수 있는가? 영향 받는 사용자의 유형은 다음과 같습니다:

  • Admins(관리자): 변경 사항이 관리자만 볼 수 있습니다.
  • Staff(스태프): 변경 사항이 관리자 모더레이터만 볼 수 있습니다.
  • All members(모든 회원): 변경 사항이 사이트의 모든 회원에게 표시됩니다.
  • Developers(개발자): 드문 경우지만, 코어, 테마, 플러그인의 코드와 상호작용하는 사람만 변경 사항을 인지할 수 있습니다.

영향 유형(Impact type)

영향 받는 사용자의 하위 집합이며 목록에 표시되지 않는 것이 영향 유형입니다. 영향 유형은 변경 사항이 커뮤니티에 광범위한 의미로 어떤 영향을 미치는지를 설명합니다:

  • Feature(기능): 커뮤니티에 새로운 기능이나 기능을 도입하거나 기존 기능을 수정합니다.
  • Site setting default(사이트 설정 기본값): 기존 사이트 설정의 기본값을 수정합니다. 이미 설정을 이전 기본값에서 변경한 관리자는 영향을 받지 않습니다. 이 변경 사항이 Stable 상태에 도달하면 관리자 대시보드 경고가 표시되지 않습니다.
  • Other(기타): 위의 카테고리에 해당하지 않는 기타 모든 변경 사항.

4 - 활성화 대상(Enabled for…)

이 드롭다운은 사이트 관리자로서 이 변경 사항을 커뮤니티에 언제, 어떻게 도입할지 활성화 대상을 지정하여 제어할 수 있는 곳입니다:

  • No one(아무도): 사이트의 모든 사람에게 변경 사항을 비활성화합니다.
  • Everyone(모두): 사이트의 모든 사람, 익명 사용자를 포함하여 변경 사항을 활성화합니다. 변경 사항이 자동으로 켜질 때(보통 Beta 상태일 때), 대상은 Everyone이 됩니다.
  • Staff only(스태프만): 사이트 스태프(즉, 관리자와 모더레이터)에게만 변경 사항을 활성화합니다.
  • Specific groups(특정 그룹): 선택한 그룹에게 변경 사항을 활성화합니다.

:information_source: 일부 예정된 변경 사항은 “활성화 대상” 옵션이 제한될 수 있습니다. “활성화 대상” 드롭다운의 사용 가능한 옵션은 변경 사항의 구성에 의해 결정됩니다. 예를 들어, 제한된 그룹 테스트가 불가능한 변경 사항의 경우 EveryoneNo one 옵션만 허용될 수 있습니다.


현재 /admin/config/experimental의 대부분의 Experimental 변경 사항을 '예정된 변경 사항’으로 이동했으며, 곧 새로운 업데이트가 여기에 반영되기 시작할 것입니다. 이 변경 사항이 커뮤니티에 미칠 영향에 대한 의견을 듣고 싶으며, 질문이나 피드백을 환영합니다!


  1. 소프트웨어가 완결된다는 것은 어디까지나! ↩︎

44개의 좋아요

호기심이 생겼는데, 이 기능이 어떻게 변경 사항의 배포를 제어하나요? 기능이 도입된 후에 변경할 수도 있나요? 감사합니다.

2개의 좋아요

네이티브 기능 플래그! 정말 좋습니다 :clap:

플러그인을 위한 API도 있으면 좋겠습니다.

5개의 좋아요

오래된 기능이었네요! 감사합니다!

3개의 좋아요

이렇게 플래그를 변경할 수 있는 기능이 있다는 것은 정말 훌륭합니다. 특히 테마를 개발하는像我 같은 최첨단(블리딩 엣지) 사용자들에게는 정말 멋진 기능입니다.

하지만 "예정된 변경사항"이 정말로 가장 좋은 이름일까요? 예를 들어 HomeAssistant는 "labs"를 사용하고, 많은 다른 서비스들은 "실험(experiments)"과 같은 표현을 사용하는데, "예정된 변경사항"보다 이런 표현들이 더 자연스럽고 좋은 것 같습니다.

4개의 좋아요

새 기능이 아직 초기에 시도해 볼 수 있는 상태(선택적 사용)이고, 변경 사항으로 인해 발생한 문제를 해결하기 위해 일시적으로 끄는 것(선택적 비사용)이 가능한 단계에서 새로운 기능에 대해 통지를 받게 됩니다. 변경 사항이 permanent(상시 적용, 즉 선택적 비사용이 불가능한 상태)가 되어야 하고 현재 해당 기능을 꺼둔 상태라면, 이를 알려드립니다.

이 섹션에서 이를 좀 더 자세히 설명합니다:

현재 설정 영역에서 Upcoming Changes로 이전된 실험적 변경 사항만 보고 있지만, 미래에는 비실험적 업데이트도 여기에 포함될 것입니다. 따라서 이 시스템을 사용하는 방식에 대해 “labs(실험실)”이라는 표현은 정확하지 않다고 느껴집니다.

3개의 좋아요

플러그인은 이미 이 시스템을 사용할 수 있습니다. 원 포스터(OP)가 기술적인 세부 사항에 대해 자세히 설명하지는 않지만, 예정된 변경 사항을 추가하는 데 필요한 내용은 많지 않습니다.

간단한 요약은 다음과 같습니다:

  • hidden: trueclient: true인 사이트 설정을 추가합니다.

  • server.en.yml 파일에 해당 설정에 대한 설명을 추가합니다.

  • 선택적으로 public/images/upcoming_changes/SETTING_NAME.png 경로에 스크린샷을 추가합니다.

  • 설정에 upcoming_change 메타데이터를 추가하며, 그 형식은 다음과 같습니다:

# upcoming_change       - /admin/config/upcoming-changes 페이지에 표시할 다음 옵션을 포함하는 추가 메타데이터:
#                          - status: experimental | alpha | beta | stable
#                          - impact: 쉼표로 구분된 두 부분 - feature|other , staff|admins|moderators|all_members|developers
#                          - learn_more_url: 추가 정보를 위한 URL

다만, 이 시스템은 주로 내부적인 목적으로 사용되도록 설계되었기 때문에 제3자 플러그인 개발자가 이 시스템을 사용하도록 의도하지는 않았습니다. 시간이 지나면서 이 사용 사례에 대해 더 깊이 고민해 볼 수 있을 것입니다.

7개의 좋아요

정말 좋아요! 감사합니다 :raising_hands:

관련 설정에 대한 링크/바로가기 제공이 가능한가요? 예를 들어, 커스텀 스플래시 스크린은 작동하려면 추가 설정(SVG 업로드 등)이 필요하지만, 이를 직접 찾아서 설정해야 합니다. 해당 기능이 활성화되는 위치에 관련 설정이 함께 표시되면 도움이 될 것 같습니다.

8개의 좋아요

네, 맞습니다! 지금 그 변경 사항을 작업 중이며, 이틀 안에 반영될 예정입니다. 호스팅된 사이트를 배포하여 업데이트를 받으실 수 있도록 메모해 두겠습니다 :slight_smile:

수정: 완료! :rocket:

6개의 좋아요

자신이 배포한 Discourse에서 이 "출시 예정인 변경 사항"을 관리자 대시보드에서 어떻게 표시할 수 있는지 여쭤봅니다.

@lindsey

이 기능은 현재 숨겨진 전역 enable_upcoming_changes 사이트 설정 뒤에 숨겨져 있습니다. 따라서 rails c를 사용하여 사이트의 Rails 콘솔에서 이 기능을 활성화할 수 있습니다. 추후에는 이 설정이 제거되어 더 이상 직접 활성화할 필요가 없게 될 것입니다.

네, 감사합니다. 그럼 저는 좀 더 기다리겠습니다~~~

이 내용이 명확하지 않았을 수 있습니다: 예정된 변경 사항 메뉴 항목은 아직 활성화되지 않았지만

다시 표현하면:
아직 해당 메뉴 항목이 없다면, [your_forum]/admin/config/upcoming-changes 경로로 이동하여 예정된 변경 사항 섹션을 확인하실 수 있습니다.

1개의 좋아요

그렇게 되어야 하는데, 여기서는 보이지 않나요?

자체 호스팅을 하고 계신가요? 그렇다면 숨겨진 설정인 enable_upcoming_changestrue로 설정해야 합니다. 시스템이 완전히 안정화되었음을 확신할 수 있게 되는 가까운 시일 내에 이 설정을 제거할 계획입니다.

3개의 좋아요

예정된 변경 사항에 대한 대부분의 사이트 설정은 숨겨져 있는데, enable_auto_grid_images만 숨겨져 있지 않은 이유가 있나요?

2개의 좋아요

아니요, 그냥 실수였어요. 여기서 수정했습니다:

1개의 좋아요

네, 스나이퍼756처럼 셀프호스팅을 하고 있습니다.
"아직 공개되지 않았다"는 표현이 가장 적절하지는 않았네요. 수정하겠습니다.

2개의 좋아요

오늘은 변경 사항을 상태로 정렬할 수 있으면 편리할 것 같다는 생각을 했어요. 먼저 베타, 그다음 알파, 마지막으로 실험적 단계 순서로요. 상태로 필터링하는 건 가능하다는 걸 알고 있지만, 전체 목록을 한눈에 보고 싶거든요. 상태에 따라 변경 사항이 더 흥미롭거나 덜 흥미롭다고 느껴지기 때문이에요.

4개의 좋아요

네, 말이 되네요. 사이트에 변경 사항이 표시된 시점을 기준으로 정렬 옵션을 추가하는 것도 생각해 봤습니다… 두 가지를 모두 추가할게요 :smiley:

2개의 좋아요

훌륭한 추가입니다!

이것을 올려주셔서 감사합니다.

1개의 좋아요