إعلان التغييرات القادمة، نظام لإدارة الميزات الجديدة والتغييرات في الوظائف الحالية في مجتمعك

مع استمرارنا في تحسين Discourse، أنشأنا صفحة إعدادات جديدة تسمى “التغييرات القادمة” (Upcoming Changes) لمساعدة المسؤولين على فهم التغييرات التي ستطرأ على Discourse، وتمكينهم من إدارة كيفية تطبيق هذه التغييرات في مجتمعاتهم. نعتقد أن هذا النظام سيساعدنا على مواصلة تحسين Discourse بطريقة آمنة وشفافة.

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

نظرة عامة على كيفية عمل “التغييرات القادمة”

عند العمل على ميزات جديدة أو تغييرات أخرى، سنضيفها إلى صفحة إعدادات “التغييرات القادمة” الموجودة في المسار /admin/config/upcoming-changes. سيتضمن كل تغيير وصفاً، وحالةً، ومؤشراً يوضح المستخدمين المتأثرين به، والمستخدمين (إن وجدوا) الذين تم تفعيل التغيير لصالحهم في مجتمعك.

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

إن تعطيل تغيير ما مؤقتاً يمنحك الوقت لمعالجة أي تخصيصات موقع، أو عمليات، أو أمور أخرى متأثرة، وإعلام قاعدة أعضائك بالتغيير، أو تفويض مجموعات معينة من الأعضاء للاختبار.

تفكيك “تغيير قادم”

لنقم بتفكيك “تغيير قادم” وتحديد المعلومات التي ستظهر في كل قسم.

1 - الاسم والوصف

يوفر الاسم والوصف شرحاً موجزاً للتغيير، وسيربطان بموضوع ذي صلة على Meta لمزيد من المعلومات ومكان لجمع التعليقات.

2 - الحالة

توضح الحالة موقع التغيير في دورة التطوير. تؤثر الحالة مباشرةً على ما إذا كان التغيير اختيارياً للتفعيل (opt-in) (أي معطل افتراضياً، ولكن يمكنك تفعيله)، أو اختيارياً للعطل (opt-out) (أي مفعل افتراضياً، ولكن يمكنك تعطيله)، أو مفلاًراً قسراً (forced on) (أي مفعل، ولا يمكنك تعطيله).

نستخدم الحالات التالية في “التغييرات القادمة”:

  • Experimental (تجريبي): تغيير محتمل في مراحل التطوير/الاختبار المبكرة، ومن المتوقع أن يتطور بسرعة، أو قد يُزال تماماً إذا أنهينا التجربة (عندها سينتقل إلى حالة Inactive؛ انظر أدناه). يمكنك التفعيل الاختياري للتغييرات Experimental لاختبارها.
  • Alpha (ألفا): تغيير تم اختباره وآمن للاستخدام، رغم أنه قد تكون هناك بعض التحديثات الطفيفة في تصميمه أو وظيفته. يمكنك التفعيل الاختياري للتغييرات Alpha لاستخدامها مبكراً.
  • Beta (بيتا): تغيير تم اختباره وآمن للاستخدام، ومن غير المرجح أن يتغير كثيراً قبل الانتقال إلى حالة Stable (مستقر) أو Permanent (دائم) محتملاً.
    • :information_source: بالنسبة لمعظم المواقع على استضافتنا، والمواقع ذاتية الاستضافة، يتم تفعيل التغييرات Beta تلقائياً للجميع (إذا لم تكن قد فعّلتها سابقاً)، ولكن لا يزال بإمكانك العطل الاختياري.
  • Stable (مستقر): تغيير مكتمل[1]، ولكنه لا يزال اختيارياً للعطل (أي يمكن للمسؤولين تعطيله). سيظهر تحذير على لوحة تحكم المسؤول عندما يكون قد اختار تعطيل تغيير من حالة Stable.
  • Permanent (دائم): تغيير اكتمل اختباره، وهو مفعل قسراً (أي لا يمكن للمسؤولين تعطيله). لن تظهر التغييرات الدائمة بعد ذلك في قائمة التغييرات القادمة، بل ستُعرض في صفحة /admin/whats-new.
  • Inactive (غير نشط): تجربة متروكة. لا يمكنك التفعيل الاختياري.

في بعض الأحيان، تنتقل التغييرات خطياً عبر هذه الحالات (أي تبدأ بـ Experimental وتنتهي بـ Permanent)، ولكن ليس دائماً. قد تُقدم بعض التغييرات بحالة Alpha أو Beta، وبعضها سينتهي بحالة Stable. لن يتم نقل التغييرات من نوع “القيمة الافتراضية لإعداد الموقع” إلى الحالة الدائمة، لأنها تغير فقط القيمة الافتراضية لإعداد موجود مسبقاً.

لا يوجد وقت محدد لكيفية انتقال تغيير معين من حالة إلى أخرى، ولكن سيتم إعلام المسؤولين عند:

  • توفر تغيير جديد للتجربة
    • تُرسل هذه الإشعارات مرة واحدة أسبوعياً كحد أقصى لتجنب إرهاق الإشعارات. إذا كنت تفضل عدم تلقي هذه الإشعارات، يمكنك تعطيلها في /my/preferences/notifications
  • تمكين تغيير تلقائياً
  • عندما تكون قد عطّلت تغييراً سيتم تفعيله قسراً قريباً
    • سيظهر هذا كتحذير على لوحة تحكم المسؤول

3 - المستخدمين المتأثرين

يصف وسم “المستخدمين المتأثرين” أي المستخدمين في مجتمعك يمكنهم رؤية التغيير أو التفاعل معه بطريقة ما. ببساطة — من قد يلاحظ هذا التغيير؟ هناك عدة أنواع من المستخدمين المتأثرين:

  • Admins (المسؤولون): التغيير مرئي للمسؤولين فقط.
  • Staff (الموظفون/الإدارة): التغيير مرئي للمسؤولين و المشرفين فقط.
  • All members (جميع الأعضاء): التغيير مرئي لجميع الأعضاء في موقعك.
  • Developers (المطورون): في حالات نادرة، سيكون التغيير ملحوظاً فقط لأولئك الذين يتفاعلون مع الكود في النواة، أو السمات، أو الإضافات.

نوع التأثير

مجموعة فرعية من المستخدمين المتأثرين، ولا تظهر في القائمة، هي نوع التأثير. يصف نوع التأثير كيف سيؤثر التغيير على مجتمعك بشكل عام:

  • Feature (ميزة): يقدم التغيير ميزة جديدة أو وظيفة جديدة لمجتمعك، أو يعدّل وظيفة موجودة.
  • Site setting default (القيمة الافتراضية لإعداد الموقع): يعدّل التغيير القيمة الافتراضية لإعداد موقع موجود. لن يتأثر المسؤولون الذين غيّروا الإعداد بالفعل عن قيمته الافتراضية القديمة. لن يظهر تحذير على لوحة تحكم المسؤول لهذا التغيير بمجرد وصوله إلى الحالة المستقرة.
  • Other (أخرى): أي تغيير آخر لا ينطبق على الفئات المذكورة أعلاه.

4 - مفعّل لـ…

هذه القائمة المنسدلة هي حيث يمكنك، كمسؤول موقع، التحكم في ما إذا وكيفية إدخال هذا التغيير إلى مجتمعك عن طريق تفعيله لـ:

  • No one (لا أحد): يعطل التغيير للجميع في الموقع.
  • Everyone (الجميع): يفعّل التغيير للجميع في الموقع، بما في ذلك المستخدمين المجهولين. عندما يتم تفعيل التغيير تلقائياً (عادةً عند حالة Beta)، سيكون لـ الجميع.
  • Staff only (الإدارة فقط): يفعّل التغيير لإدارة الموقع (أي المسؤولين والمشرفين).
  • Specific groups (مجموعات محددة): يفعّل التغيير للمجموعة أو المجموعات المحددة.

:information_source: قد تكون بعض التغييرات القادمة مقيدة في خيارات “تفعيل لـ”. تتحدد الخيارات المتاحة في قائمة “مفعّل لـ” المنسدلة حسب تكوين التغيير. على سبيل المثال، قد تسمح بعض التغييرات فقط بخيارات الجميع ولا أحد، لأن الاختبار المحدود للمجموعات سيكون غير ممكن للتغيير.


حالياً، قمنا بنقل معظم التغييرات Experimental من /admin/config/experimental إلى “التغييرات القادمة”، وستبدأ في رؤية تحديثات جديدة تظهر هنا قريباً. نتطلع إلى سماع رأيكم حول الأثر الذي سيحدثه هذا في مجتمعكم، ونرحب بأي أسئلة أو تعليقات!


  1. بقدر ما يمكن اعتبار أي برنامج مكتملاً! ↩︎

43 إعجابًا

أنا فضولي - كيف يتحكم في كيفية طرح التغيير؟ هل يمكن تغييره بعد تقديم الميزة؟ شكرًا لك.

إعجابَين (2)

ميزات العلامات الأصلية! جيد جداً :clap:

سيكون من الرائع الحصول على واجهة برمجة تطبيقات (API) للإضافات.

5 إعجابات

هذه ميزة طال انتظارها! شكرًا لك!

3 إعجابات

هذا رائع، إن امتلاك القدرة على تغيير الأعلام بهذه الطريقة مذهل للأشخاص الذين يواكبون أحدث التطورات مثلي، خاصة عند تطوير سمة (theme).

ولكن، هل “التغييرات القادمة” (upcoming changes) هو حقًا أفضل اسم لها؟ على سبيل المثال، يستخدم HomeAssistant مصطلح “المختبرات” (labs) والكثير من الأشخاص الآخرين يستخدمون أشياء مثل “التجارب” (experiments) التي تبدو أفضل من التغييرات القادمة.

4 إعجابات

سيتم إعلامك بالميزات الجديدة عندما تكون لا تزال في حالة يمكنك تجربتها مبكرًا (اختيارية) وإيقاف تشغيلها مؤقتًا لإصلاح أي مشكلات ناتجة عن التغيير (عدم اختيارية). إذا كان التغيير سيصبح دائمًا (مما يعني أنه لا يمكنك إلغاء الاشتراك) وقد قمت بإيقاف تشغيله حاليًا، فسنخبرك بذلك.

يصف هذا القسم ذلك بمزيد من التفصيل:

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

3 إعجابات

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

الملخص السريع هو:

  • إضافة إعداد موقع يكون hidden: true و client: 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 لمزيد من المعلومات

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

7 إعجابات

أحب هذا! شكراً لك :raising_hands:

هل من الممكن الحصول على رابط/اختصار للإعدادات المطبقة إذا كان ذلك مناسباً؟ على سبيل المثال، تحتوي شاشة البداية المخصصة على إعدادات إضافية يجب إعدادها لكي تعمل (تحميل ملف SVG) - ولكن يجب عليك الذهاب والعثور عليها بنشاط. سيكون من المفيد وجودها بجانب المكان الذي يتم فيه تمكينها

8 إعجابات

نعم بالفعل! أعمل على هذا التغيير الآن، ويجب أن يكون متاحًا في غضون يوم أو يومين، وسأقوم بتدوين ملاحظة لنشر موقعك المستضاف حتى تحصل على التحديث :slight_smile:

تعديل: تم! :rocket:

6 إعجابات

أريد أن أسأل، كيف يمكن عرض “التغييرات القادمة” في لوحة الإدارة لنظام ديسكورس الذي قمت بنشره بنفسي؟

@lindsey

لا يزال لدينا هذا مخفيًا خلف إعداد موقع عام يسمى enable_upcoming_changes وهو مخفي، لذا يمكنك تمكين هذا في وحدة تحكم rails الخاصة بموقعك باستخدام rails c. في النهاية، سنقوم بإزالة هذا ولن تضطر إلى القيام بذلك بعد الآن.

حسناً، شكراً لك، سأنتظر إذاً~~~

لست متأكدًا مما إذا كان هذا واضحًا: لم يتم تفعيل عنصر القائمة الخاص بالتغييرات القادمة بعد، ولكن

إعادة صياغة:
إذا لم يكن لديك عنصر القائمة بعد، فلا يزال بإمكانك رؤية قسم التغييرات القادمة بالانتقال إلى [your_forum]/admin/config/upcoming-changes

إعجاب واحد (1)

يجب أن يكون موجودًا، ألا تراه هنا؟

هل تستضيفه بنفسك؟ إذا كان الأمر كذلك، فستحتاج أيضًا إلى تعيين enable_upcoming_changes (وهو إعداد مخفي) على true. نخطط لإزالة هذا في المستقبل القريب بمجرد أن نتأكد تمامًا من استقرار النظام.

3 إعجابات

هل هناك سبب لكون معظم إعدادات الموقع للتغييرات القادمة مخفية، بينما enable_auto_grid_images ليست كذلك؟

إعجابَين (2)

لا، مجرد سهو، تم الإصلاح هنا:

إعجاب واحد (1)

نعم، أنا أستضيف ذاتيًا، مثل sniper756.
ربما لم تكن عبارة “لم يتم بثه بعد” أفضل صياغة؛ سأقوم بتعديلها.

إعجابَين (2)

اليوم، كنت أفكر في أن الأمر سيكون مفيدًا لو أمكنني ترتيب التغييرات حسب الحالة: أولاً النسخة التجريبية (beta)، ثم النسخة الأولية (alpha)، وأخيرًا النسخة التجريبية (experimental). أعرف أنه يمكنني التصفية بناءً على ذلك، لكنني أفضل رؤية القائمة كاملة؛ فأنا أجد التغييرات أكثر أو أقل إثارة للاهتمام اعتمادًا على حالتها.

4 إعجابات

نعم، هذا منطقي. لقد فكّرتُ أيضًا في إضافة خيار فرز بناءً على وقت ظهور التغيير على موقعك… سأضيف كلا الخيارين :smiley:

إعجابَين (2)

إضافة رائعة!

شكرًا لك على هذا.

إعجاب واحد (1)