أود البدء في التطوير لـ Discourse، من أين يجب أن أبدأ؟

كنتُ أقوم بتطوير إضافات لمنصة منتديات قديمة منذ سنوات عديدة كانت تستخدم PHP و MySQL. كنتُ راضيًا جدًا عن بعض الأشياء التي تمكنت من تحقيقها، وكان الأعضاء راضين أيضًا.

لم أعمل من قبل مع Ruby on Rails (باستثناء المعاناة أثناء عملية سكريبت الاستيراد لنقل بياناتي إلى Discourse في البداية :joy:).

أفترض أنه قبل الغوص في بعض الوثائق وأدلة التطوير هنا، أحتاج إلى بعض الأساسيات أولاً.

هل يجب أن أتعلم Ruby on Rails أولاً؟

هل أحتاج أيضًا إلى تعلم Ember.js؟ وأقرّ أنني لم ألمسها من قبل، لكنني أفهم أنها تُستخدم في نواة Discourse.

أنا أيضًا جديد على Postgres.

سأقدّر أي نصيحة وخطوات مقترحة تالية.

عظيم!

هناك بعض المنشورات المفيدة حول هذا الموضوع. سأرسل لك رابطًا لمنشوري لأنه يشير إلى هذه المنشورات. How can I make my own Discourse plugins? - #2 by merefield

(على الرغم من أنني أنصح شخصيًا باستخدام VSCode الآن)

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

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

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

كن صبورًا. EmberJS حيوان معقد بشكل خاص لفهمه.

نصيحتي هي أن تبدأ بمكونات الموضوع ثم تنتقل إلى الإضافات لاحقًا.

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

ربما تكون أفضل نصيحة هي: افعلها ببساطة! الطريقة الوحيدة للتعلم هي أن تتسخ حقًا. لا تخف من ارتكاب الأخطاء ولا تدع الإحباط يوقفك أبدًا. استمر في العمل وستعمل الأمور في النهاية. حاول حل الأمور بنفسك قدر الإمكان، لكن يمكنك دائمًا طلب المساعدة من الآخرين عندما تحتاج إليها حقًا.

قضيت وقتًا طويلاً في تعلم Rails. لكن الكثير من الأمور تحدث في جانب Ember/JavaScript. نصيحتي هي أن تبدأ هناك مع الأشياء التي يمكنك القيام بها في مكونات السمة (theme components). فهي أكثر أمانًا، وأسهل في الاستخدام، ويمكنها إنجاز الكثير.

ما هي أفضل طريقة للبدء في تعلم Ember.js؟ هل هناك دورات عبر الإنترنت توصون بها؟

أجد أن التعلم من خلال دورة منظمة أفضل من مجرد التجربة بمفردي، لأنها تجبرني على تعلم الأساسيات.

اقرأ دليل Ember.js Guides - Guides and Tutorials - Ember Guides

كما يُنظر أيضًا في دليل https://guides.rubyonrails.org/

بعد أن بدأت في الخوض في هذا مؤخرًا، أتفق مع جاي @pfaffman.

أفضل مكان للبدء هو مع مكونات السمة

بعض الأسباب (يمكن للآخرين تقديم أسباب أفضل، وهذه هي أسبابي، بناءً على رأيي الشخصي):

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

  • مكونات السمة قوية ويمكن إنجاز الكثير من خلالها، بما في ذلك إضافة مكتبات JavaScript بسهولة.

  • مكونات السمة تسهل إضافة كود JavaScript الخاص بك والمحددات، مما يسمح لك باستخدام أداة الفحص بسهولة لإنشاء محدد وإدراج عناصر مثل divs (مربعاتك المفضلة).

ثم، بعد أن تعتاد على مكونات السمة وتستمتع بها، يمكنك البدء في التعمق أكثر في تطوير الإضافات.

هذه طريقة منطقية / مسار لتطوير مهاراتك في تطوير Discourse وتعلم أساسيات المجال.

عذرًا، أعتقد أنني أغفلت هذه النقطة التي تم توسيعها كثيرًا، فهناك الكثير من المواد التي يمكنك الغوص فيها: Developing Discourse Themes & Theme Components

إضافيًا إلى التوصيات الرائعة التي ذُكرت بالفعل في هذا الموضوع، فإن أفضل نصيحة لدي هي قراءة أكواد العديد من السمات والمكونات على https://github.com/discourse ومحاولة فهم ما يحدث. قم باستنساخها، وكسرها، واكتشف ما يحدث. هذا هو الطريقة التي تعلمت بها إلى حد كبير، بالإضافة إلى العمل على مشاريع صغيرة هنا وهناك.

من الجيد أن تبدأ بالنظر إلى GitHub - literatecomputing/feverbee-engagement-theme: Theme component based on expert.feverbee.com · GitHub وتنظيفه بحذف كل العناصر الإضافية التي لا تنتمي إليه. ثم قم بتقديم طلب دمج (PR). :slight_smile:

أرى ما تفعله يا @pfaffman. :grin: مع ذلك، لا أعتقد أنك تريد مني تنظيف كودك في الوقت الحالي، لكنني أوافق على أن تقديم طلبات الدمج (PRs) قد يكون نقطة انطلاق ممتازة. أولاً، أحتاج إلى الغوص في بعض الموارد التي تم مشاركتها بالفعل في هذا الموضوع.

أكبر تحدي يواجهني حالياً هو الانتقال من خلفيتي في LAMP إلى ما يُعرف بمكدس Discourse. هل تقصد LNPR (Linux, Nginx, Postgres, Ruby/Rails)؟ هههه.

لا يمكن إلقاء اللوم على شخص يحاول. :wink:

لكن بجدية، هذا القالب يقوم بالعديد من الأشياء التي تمنحك أفكارًا حول ما يمكن أن تفعله القوالب. إن القدرة على إنشاء قائمة مواضيع جديدة بالكامل أمر مذهل. تنظيفه (فهناك الكثير من الأكواد التي لا تنتمي إليه أساسًا، لكن عندما حاولت إزالتها، تسببت في تعطل بعض الأمور، وفي النهاية تركتها بدلًا من البحث عن المكان الذي أخطأت فيه في إغلاق قوس أو… شيء من هذا القبيل) حتى لو كان ذلك لنفسك، سيكون تمرينًا جيدًا جدًا. ولإعطائك سياقًا أكبر لمعرفة ما إذا كانت نصيحتي مفيدة لك على الأرجح، فأنا شخص حاصل على شهادة في علوم الحاسوب وتوقفت عن تعلم HTML تقريبًا في عام 1998. أفهم نظريًا ما يمكن أن يفعله CSS، ولا يزال JavaScript يحيرني تمامًا، ولا أدرك أين ينتهي JavaScript ويبدأ Ember. غالبًا ما أحاول إجراء تغييرات أظنها تافهة، لكنني في النهاية أتسبب في تعطل كل شيء.

حظًا موفقًا!

أنا أيضًا من خلفية LAMP (أي WordPress). هذه الأمور صعبة، لكن يمكن فهمها إذا خصصت لها وقتًا كافيًا.