플러그인 또는 테마 유효성 확인

디스코urs 플러그인/테마를 위한 약 200개의 GitHub 저장소를 수집했는데, 최신 디스커스 버전과의 호환성을 확인할 방법이 있을까요?

          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/Fakebook
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-brand-header
          - git clone https://github.com/discourse/discourse-knowledge-base-theme
          - git clone https://github.com/discourse/discourse-characters-required
          - git clone https://github.com/discourse/discourse-solved
          - git clone https://github.com/discourse/discourse-voting
          - git clone https://github.com/discourse/discourse-calendar
          - git clone https://github.com/discourse/discourse-styleguide
          - git clone https://github.com/discourse/discourse-assign
          - git clone https://github.com/discourse/discourse-yearly-review
          - git clone https://github.com/discourse/discourse-sitemap
          - git clone https://github.com/discourse/discourse-custom-header-links
          - git clone https://github.com/discourse/discourse-fingerprint.git
          - git clone https://github.com/discourse/wp-discourse
          - git clone https://github.com/discourse/discourse-translator
          - git clone https://github.com/discourse/discourse-tooltips
          - git clone https://github.com/discourse/discourse-knowledge-explorer
          - git clone https://github.com/discourse/DiscoTOC
          - git clone https://github.com/discourse/discourse-chart
          - git clone https://github.com/discourse/discourse-social-share
          - git clone https://github.com/discourse/discourse-users-nav
          - git clone https://github.com/discourse/discourse-algolia
          - git clone https://github.com/discourse/discourse-whos-online
          - git clone https://github.com/discourse/discourse-amazon-sns
          - git clone https://github.com/discourse/discourse-login-with-amazon
          - git clone https://github.com/discourse/discourse-reply-template-component
          - git clone https://github.com/discourse/discourse-azure-blob-storage
          - git clone https://github.com/discourse/discourse-header-submenus
          - git clone https://github.com/discourse/discourse-push-notifications
          - git clone https://github.com/discourse/discourse-affiliate
          - git clone https://github.com/discourse/discourse-backup-s3-uploads
          - git clone https://github.com/discourse/Discourse-Tiles-image-gallery
          - git clone https://github.com/discourse/discourse-placeholder
          - git clone https://github.com/discourse/discourse-plugin-office365-auth
          - git clone https://github.com/discourse/discourse-topic-group-button-component
          - git clone https://github.com/discourse/discourse-topic-author
          - git clone https://github.com/discourse/discourse-alt-logo
          - git clone https://github.com/discourse/discourse-like-column
          - git clone https://github.com/discourse/discourse-linkify-words
          - git clone https://github.com/discourse/discourse-optional-title-mobile-header
          - git clone https://github.com/discourse/discourse-expand-collapse-banner
          - git clone https://github.com/discourse/discourse-full-width-banner
          - git clone https://github.com/discourse/discourse-two-columns-banner
          - git clone https://github.com/discourse/Discourse-nav-links-component
          - git clone https://github.com/discourse/twitter-profile-link
          - git clone https://github.com/discourse/plugin_discourse_dynamic_sidebar
#          - git clone https://github.com/discourse/discourse-zendesk-plugin
          - git clone https://github.com/discourse/discourse-prometheus-alert-receiver
          - git clone https://github.com/discourse-pro/df-paypal-buy-now
          - git clone https://github.com/discourse/discourse-steam-login
          - git clone https://github.com/discourse/discourse-graphviz
          - git clone https://github.com/discourse/discourse-backup-uploads-to-s3    
          - git clone https://github.com/discourse/discourse-focused-sidebar
          - git clone https://github.com/tshenry/discourse-blog-post-styling

##       https://github.com/procourse/    
          - git clone https://github.com/procourse/discourse-mlm-daily-summary
          - git clone https://github.com/procourse/discourse-house-ads
          - git clone https://github.com/procourse/procourse-installer
          - git clone https://github.com/procourse/procourse-static-pages
          - git clone https://github.com/tshenry/discourse-versatile-banner

##       https://github.com/paviliondev/    
          - git clone https://github.com/paviliondev/discourse-pavilion
          - git clone https://github.com/paviliondev/discourse-question-answer
          - git clone https://github.com/paviliondev/discourse-follow
          - git clone https://github.com/paviliondev/user-card-directory
          - git clone https://github.com/paviliondev/discourse-wikimedia-auth
          - git clone https://github.com/paviliondev/discourse-advanced-ticketing
          - git clone https://github.com/paviliondev/discourse-locations
          - git clone https://github.com/paviliondev/discourse-landing-page
          - git clone https://github.com/paviliondev/discourse-ratings
          - git clone https://github.com/paviliondev/discourse-topic-previews
          - git clone https://github.com/paviliondev/discourse-multilingual          
          - git clone https://github.com/paviliondev/discourse-team-timezones       
          - git clone https://github.com/paviliondev/discourse-custom-wizard
            
# https://github.com/mozilla
          - git clone https://github.com/mozilla/discourse-email-all
          - git clone https://github.com/mozilla/discourse-post-read-email
          - git clone https://github.com/mozilla/discourse-mozilla-iam
          - git clone https://github.com/mozilla/discourse-category-categorization
          - git clone https://github.com/mozilla/discourse-tldr
          - git clone https://github.com/mozilla/discourse-group-category-notification    
          - git clone https://github.com/mozilla/discourse-mozilla-theme
#pfaffman
          - git clone https://github.com/pfaffman/discourse-ucf-to-account-page
          - git clone https://github.com/pfaffman/discourse-add-to-summary
#merefield
          - git clone https://github.com/merefield/discourse-sign-in-with-apple
          - git clone https://github.com/merefield/discourse-discord-bot
          - git clone https://github.com/merefield/discourse-onebox-assistant
#programmersforum
          - git clone https://github.com/programmersforum-reborn/discourse-simplify-category-list
          - git clone https://github.com/programmersforum-reborn/discourse-hide-category-selector
          - git clone https://github.com/programmersforum-reborn/discourse-disable-onboarding-overlay
          - git clone https://github.com/programmersforum-reborn/discourse-adjust-emoji-sizes


          - git clone https://github.com/ilikourou/discourse-ads
          - git clone https://github.com/AtakanYildirim1/esporintheme
          - git clone https://github.com/crbothe/discourse-wizard

          - git clone https://github.com/sylque/dcs-discourse-plugin
          - git clone https://github.com/jjaffeux/discourse-group-checklist
          - git clone https://github.com/markschmucker/digest_webhook
          - git clone https://github.com/tshenry/discourse-agreement-banner
          - git clone https://github.com/Daemonite/discourse-material-theme
          - git clone https://github.com/hnb-ku/discourse-checkout

          - git clone https://github.com/rimian/discourse-subscriptions
          - git clone https://github.com/roblox-dev-forum/discourse-definitions
          - git clone https://github.com/roblox-dev-forum/simple-flags
          - git clone https://github.com/eviltrout/discourse-no-nazis

          - git clone https://github.com/anythingagency/discourse-cm-theme
                      
          - git clone https://github.com/RobertFULL30/Discourse-Beer-Component-
          - git clone https://github.com/dfuzr/libra-discourse-category-banners
          - git clone https://github.com/iunctis/discourse-boutons-extras

          - git clone https://github.com/openSUSE-zh/discourse-cjk-text-spacing
          - git clone https://github.com/aksoforever/discourse-hello
          - git clone https://github.com/tshenry/discourse-last-seen-user-card-theme-component
          - git clone https://github.com/murayuki/Discourse-Keyboard-Text
          - git clone https://github.com/lionel-rowe/unformatted_code_detector
          - git clone https://github.com/anythingagency/discourse-cm
          - git clone https://github.com/bbardin/c.f-discourse-easy-footer
          - git clone https://github.com/Ebsy/discourse-nationalflags
          - git clone https://github.com/angusmcleod/discourse-tickets

          - git clone https://github.com/communiteq/discourse-multiple-hostnames
          - git clone https://github.com/featheredtoast/discourse-pushover-notifications
          - git clone https://github.com/lingokids/discourse-video-url
          - git clone https://github.com/mcwumbly/discourse-slackdoor
          - git clone https://github.com/davidtaylorhq/discourse-media-recorder-theme

          - git clone https://github.com/angusmcleod/discourse-layouts

          - git clone https://github.com/chrisbeach/discourse-camera-icon

첫째, 그 중 많은 것들은 테마이며 app.yml 파일을 통해 설치해서는 안 됩니다.

둘째, Discourse에서 기본적으로 어떤 플러그인도 설치해서는 안 됩니다. 토론 포럼을 운영하기 위해 필요한 모든 것은 메인 소프트웨어에 이미 포함되어 있습니다. 플러그인은 추가되는 기능이 증가하는 복잡성을 상회할 경우에만 신중하게 고려한 후 추가해야 합니다.

물론입니다. 다시 빌드해서 모두 정상적으로 작동하는지 테스트해 보세요.

솔직히 말해서, 그런 질문을 하고 계신다면 여러분에게 의미 있는 답변을 드릴 수 있는 방법은 사실상 없습니다.

플러그인은 문제를 해결할 때 설치하는 것이지, 모든 것을 설치한 후에 고치려고 하지 마세요.

저는 cdck 표준 또는 비즈니스 플랜에 포함된 플러그인 세트를 자동으로 설치해 주는 사이트가 있습니다. 하지만 많은 경우, 그것조차 항상 좋은 아이디어는 아닙니다.

제가 만든 플러그인 두 개는 거의 확실히 필요 없을 것입니다. 그들께서는 매우 특이한 요구 사항을 가진 특정 커뮤니티에 유용합니다.

알겠어요.
두 번째는, 혹시 모를 상황에 대비해서 그들이 무엇을 하는지 궁금해서요. 비슷한 해결책이 있다는 건 알고 있어요.

그렇다면 그들을 설명하는 주제, 플러그인 Readme 또는 코드 자체를 살펴봐야 합니다. "이 50개의 플러그인이 무엇을 하는지?"라고 묻는 것은 의미가 없습니다.

나를 오해하고 계시네요.
첫째, 말씀하신 대로 문서를 읽는 것이었고,
둘째는 설치해서 실제로 어떤 모습인지 확인하는 것이었습니다.
제가 하려는 것은 바로 그 것입니다.
플러그인이나 테마를 비활성화/활성화하여 미리보기할 수 있는 간단한 포럼을 만들고 싶은데요. 현재는 미리보기가 거의 없고, 일부만 있으며, 동시에 어떤 테마가 적합한지 알 수 없습니다.

동일한 라우트를 사용하는 플러그인이 많으며, 이로 인해 충돌이 발생할 수 있습니다. 플러그인을 설치하는 가장 좋은 방법은, Discourse 코어에 포함되지 않은 솔루션이 커뮤니티에 필요하다고 느낄 때만 설치하는 것입니다. 저는 클라이언트를 위해 약 24개의 커뮤니티를 구축했지만, 실제 플러그인을 선택한 커뮤니티는 그중 6개뿐이었습니다. 이는 해당 사용 사례가 Discourse에 이미 포함된 기능 이상의 것이 필요했기 때문입니다. 대부분의 커뮤니티는 테마를 사용하면 거의 항상 달성할 수 있는 시각적 개선만 필요로 합니다.

네, 실제로 충돌이 많이 발생했고, Ruby에 익숙하지 않아서 코드 읽기를 꺼려합니다. 그래서 요구사항이 있을 때 선택할 수 있는, 이미 검증된 플러그인과 테마 호환성이 있는지 궁금합니다. 만약 그런 것이 있다면 디스코스 커뮤니티 참여자들에게 많은 시간을 절약해 줄 수 있을 것입니다.

최신 호환성을 최우선으로 고려할 때 가장 안전한 선택은 공식 플러그인을 사용하는 것입니다. 공식 플러그인은 비교적 큰 사용자 기반을 통해 Discourse와 정상적으로 작동하는지 테스트되는 경우가 많으며, 문제가 발생했을 때 빠른 수정이 이루어질 가능성이 더 높기 때문입니다.

저는 이 원칙을 잘 알고 있지만, 가끔은 우리 커뮤니티의 성장을 방해하기도 합니다.

이것은 출시되지 않은 플러그인이며 지원되지 않습니다. Apple 측의 변경 사항이 필요한 상태의 진행 중(WIP) 저장소일 뿐입니다. 상황이 허락할 때 다시 작업할 수 있도록 제 목록에 올려두었습니다.

출시했다면 사용법에 대한 전용 토픽이 있었을 것입니다.

정상적으로 작동하는 제3자 플러그인은 일반적으로 Customization > Plugin 카테고리 내에 사용법을 설명하는 전용 토픽이 있습니다. 이 토픽이 없다면 매우 주의해야 합니다.

Falco의 의견대로, 먼저 기본(vanilla) 소프트웨어를 사용해야 하며, 반드시 필요한 기능을 추가할 때만 플러그인을 설치해야 합니다. 또한, 모든 업그레이드가 사이트가 제대로 작동하지 않을 위험을 수반하므로, 플러그인의 히스토리를 통해 잘 유지보수되고 있는지 판단할 수 있을 때만 설치해야 합니다.

따라서 다음과 같은 경우 플러그인 설치를 권장하지 않습니다:

  • Customization > Plugin 내에 출시되었다는 내용이 명시된 전용 토픽이 없는 경우
  • 해당 토픽이 #plugin:broken-plugin으로 이동된 경우
  • 최근 커밋이 보이지 않는 경우 (Discourse와의 호환성을 유지하기 위한 업데이트나 버그 수정을 위한 능동적인 지원이 반영되었을 가능성이 높음)
  • 플러그인이 기능적으로 무엇을 하는지 이해하지 못하는 경우

플러그인을 더 추가하면 커뮤니티가 성공할 것이라는 기대는 불행히도 매우 흔한 오해입니다.

생각이 하나 들었습니다. 테스트만 단독으로 실행하는 것이 가능할까요?

생각해본 아이디어: 플러그인을 설치하고 실행하지 않고, 저장소에서 테스트만 설치하는 방법은 없을까요?

개발 설치 howto 토픽에서는 테스트를 실행하는 방법에 대해 설명하고 있으며, 이 테스트들은 모든 설치된 플러그인에 대해 실행될 것이라고 생각합니다. 많은 플러그인은 테스트가 없거나, Discourse의 동작 방식을 변경하도록 설계된 경우 테스트 실패를 유발할 수 있도록 작성되어 있을 수 있습니다.

또한, (Superseded) Set up plugin continuous integration tests on Travis CI 링크를 통해 특정 커밋마다 해당 플러그인의 테스트를 실행할 수 있습니다.

Travis가 특정 플러그인 세트에 대해 전체 테스트를 실행하여 충돌이 없는지 확인하는 방법을 알고 싶습니다. 언젠가 이 주제에 대해 토픽을 만들 예정입니다.

위에서 언급된 모든 플러그인의 테스트가 실패할 것은 분명하며, 실패한다는 사실만으로는 누구에게도 도움이 되지 않을 것입니다.

네, 물류 측면에서는 부담이 큽니다. 순열(permutation)은 개별 값의 개수를 n이라고 할 때 2n 정도를 의미하나요?

어쨌든, 리소스를 "사전(ahead of time)"으로 준비하는 경우라면, 애드온이 단 30개만 있어도 가능한 조합이 10억 개를 넘습니다. 게다가 이는 특정 시점의 “스냅샷” 기준이며, 버전이 바뀔수록 그 의미는 점점 희미해집니다.

“요청 시(on demand)” 서비스로 제공하는 경우라면, 모든 가능성을 제시할 좋은 UI를 생각하기 어렵고, UI를 극도로 제한하더라도 설치된 리포지토리를 통제하지 않으면 보안 위험이 생길 수 있습니다.

불가능하거나 실현 불가능하다고 말하는 것은 아닙니다. 어떤 수익과 비용 모델이 작동할지 저도 알지 못합니다.