تحقق من صحة الإضافة أو القالب

لقد جمعت حوالي 200 مستودع من GitHub لإضافات وسkins Discourse، هل توجد طريقة للتحقق من التوافق مع أحدث إصدار من Discourse؟

          - 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

أولاً، العديد من هذه الإضافات هي مواضيع (themes)، ولا ينبغي تثبيتها عبر ملف app.yml.

ثانياً، لا ينبغي تثبيت أي إضافة في Discourse افتراضياً. فكل ما تحتاجه لإنشاء منتدى للنقاش مدرج ضمن البرنامج الرئيسي. يجب إضافة الإضافات فقط بعد دراسة دقيقة، إذا كانت التعقيدات الإضافية تفوق الميزات المضافة.

بالتأكيد. ما عليك سوى إعادة البناء واختبار أن جميعها تعمل بشكل صحيح.

في الغالب، إذا كنت تطرح هذا السؤال، فلا توجد إجابة ذات معنى يمكن تقديمها لك.

تريد تثبيت الإضافات عندما تحل مشكلة، وليس تثبيت كل شيء ثم محاولة إصلاحها.

بالنسبة لبعض المواقع، أقوم بتثبيت مجموعات من الإضافات المضمنة في الخطط القياسية أو التجارية لـ CDCK تلقائيًا. بالنسبة للكثير من الأشخاص، حتى هذا ليس دائمًا فكرة جيدة.

من المؤكد تقريبًا أنك لا تريد أيًا من الإضافات مني. فهي مفيدة لمجتمع محدد جدًا ذات احتياجات غريبة.

لقد فهمت
الثاني فقط أريد أن أعرف ما يفعلونه في حال حدوث شيء ما، أعرف أن هناك حلاً مشابهاً

إذن، عليك مراجعة الموضوع الذي يصفها، أو ملف Readme الخاص بالإضافة، أو الكود نفسه. لا معنى لطرح سؤال مثل “ماذا تفعل هذه الإضافات الخمسون؟”.

لقد أخطأت في فهمي
الأول هو ما قلته حول قراءة الوثائق
والثاني يجب أن يكون التثبيت والتحقق من الشكل الفعلي
هذا ما أريد فعله
منتدى بسيط يمكنك من خلاله معاينة جميع الإضافات أو السمات المتاحة من خلال تعطيلها أو تفعيلها، حاليًا توجد معاينات لعدد كبير منها وليس جميعها، وفي الوقت نفسه لا نعرف ما إذا كانت أحد السمات مناسبة أم لا

هناك العديد من الإضافات التي تستخدم نفس المسار وقد تسبب تضاربًا. أفضل نهج لتثبيت إضافة هو القيام بذلك فقط عندما تشعر بأن مجتمعك يحتاج إلى حل لا يوفره ديسكورش في النواة. لقد قمت بنشر حوالي 24 مجتمعًا لعملائي، واكتسبت نصف دزينة منها فعليًا بعض الإضافات لأن حالات الاستخدام الخاصة بها تتطلب أكثر مما هو متاح بالفعل في ديسكورش. معظم المجتمعات تحتاج فقط إلى تحسينات بصرية يمكن تحقيقها في الغالب باستخدام السمات.

نعم، لقد واجهت العديد من التعارضات، ولست على دراية كافية بلغة Ruby وأتردد في قراءة الكود. لذا أتساءل عما إذا كان هناك توافق مثبت مسبقًا بين الإضافات والقوالب بينها، بحيث يمكنك اختيار ما يناسب متطلباتك. هذا سيوفر الكثير من الوقت لمشاركين مجتمع Discourse.

الخيار الأكثر أمانًا عند البحث عن أحدث توافق هو استخدام الإضافات الرسمية، حيث إنها غالبًا ما تكون تلك التي تم اختبارها للعمل مع منصة Discourse من قبل قاعدة مستخدمين كبيرة نسبيًا، ومن المرجح أن تتلقى إصلاحات سريعة في حال حدوث أي مشكلة.

أعرف هذا المبدأ بالفعل، لكنه في بعض الأحيان يعيق نمو مجتمعنا.

هذه إضافة غير مُصدرة بعد وغير مدعومة. إنها مجرد مستودع قيد العمل ينتظر تغييرات من Apple. لا يزال في قائمتي للعودة إليه عندما تسمح الظروف.
لو كنت قد أصدرتها لكان هناك موضوع مخصص يشرح كيفية استخدامها.

عادةً ما يكون للإضافات التابعة لجهات خارجية التي تعمل بشكل جيد موضوعها الخاص في فئة #plugin يصف كيفية استخدامها. إذا كان هذا غائبًا، فستكون حذرًا للغاية.

وفقًا لتوصيات Falco، يجب أن تبدأ بالبرنامج الأصلي (Vanilla) وتضيف إضافة فقط عندما تضيف ميزات لا غنى عنها، وفقط إذا كان بإمكانك التأكد من سجلها أنها مدعومة جيدًا، حيث إن كل ترقية قد تعرض موقعك لعدم القدرة على العمل بشكل صحيح.

لذلك، لا أنصحك بتثبيت إضافة إذا:

  • لم يكن لها موضوع مخصص في #plugin يصرح صراحةً بأنها مُصدرة
  • تم نقل موضوعها إلى #plugin:broken-plugin
  • لا تظهر التزامات حديثة (من المرجح أن تعكس تحديثات للحفاظ على التوافق مع Discourse أو دعم نشط لإصلاح الأخطاء)
  • لا تفهم وظيفتها بشكل واضح.

من المؤسف أن الاعتقاد بأن إضافة المزيد من الإضافات سيؤدي بطريقة ما إلى إنشاء مجتمع ناجح هو مفهوم خاطئ شائع جدًا.

فكرة عابرة. هل من الممكن تشغيل الاختبارات فقط؟

spitball: طريقة لتثبيت الاختبارات من المستودع دون تثبيت أو تشغيل الإضافة؟

تشرح مواضيع howto الخاصة بالتنصيب التطويري كيفية تشغيل الاختبارات، وأعتقد أن هذه الاختبارات ستُشغَّل ضد جميع الإضافات المثبتة. العديد من الإضافات لا تحتوي على اختبارات، أو قد تكون مكتوبة بطريقة تؤدي إلى فشل الاختبارات إذا كان الهدف منها تغيير طريقة عمل discourse.

بالإضافة إلى ذلك، يوجد هذا الرابط: (Superseded) Set up plugin continuous integration tests on Travis CI والذي يتيح لك تشغيل اختبارات لإضافة معينة عند كل التزام (commit).

أنا مهتم بمعرفة كيفية جعل Travis يُشغّل اختبارًا شاملاً لمجموعة محددة من الإضافات للتأكد من عدم وجود تعارضات. في يوم ما سأقوم بإنشاء موضوع حول ذلك.

من المؤكد أن اختبارات جميع الإضافات المذكورة أعلاه ستفشل، ومعرفتها بأنها ستفشل لن تكون مفيدة لأحد.

نعم، اللوجستيات مرعبة. هل المقصود بالترتيب هو شيء مثل 2n حيث n هو عدد القيم الفردية؟

على أي حال، حتى مع وجود 30 إضافة فقط، هناك أكثر من مليار تركيبة ممكنة كـ “مورد” مُعدّ مسبقًا. وهذا ينطبق على أي “لقطة” زمنية محددة، مع كل تغيير في الإصدار يقترب من جعل الأمر بلا جدوى.

أما إذا كان الأمر كـ “خدمة” عند الطلب، فلا يمكنني التفكير في واجهة مستخدم جيدة لعرض جميع الاحتمالات، وحتى التقييد الشديد لواجهة المستخدم قد يُحدث ثغرة أمنية إذا لم يكن تحت سيطرة ما يتم تثبيته من مستودعات.

أنا لا أقول إن الأمر مستحيل أو غير مجدٍ. لا أعرف أي نموذج للدخل والنفقات قد ينجح.