خلف الكواليس: قصة طلبات السحب لمشاريع ميتا وفيرسل

خلف الكواليس: قصة طلبات السحب لمشاريع ميتا وفيرسل

M. Zakyuddin Munziri

M. Zakyuddin Munziri

@zakiego

كتب أصلاً بـ Bahasa Indonesia.

تم نشر هذا المقال سابقاً على ميديوم: خلف الكواليس: قصة طلبات السحب لمشاريع ميتا وفيرسل.

الخلفية

في تلك الليلة، عندما تم دمج أول طلب سحب لي في مشروع مملوك لميتا (فيسبوك سابقاً)، كانت فرحتي لا توصف.

إنجاز للقادم الجديد في عالم تطوير البرمجيات.

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

2021

بالعودة إلى الوراء، قبل عام. عندما كانت تغريدات @mathdroid، @BukanYahya، @tibudiyanto، @resir014، @pveyes، @sonnylazuardi، @agalliosamai، و@zainfathoni تملأ خط الزمني.

كان هؤلاء المطورون الإندونيسيون الأسطوريون يعرضون كيف يتعاونون أمام الجمهور. كنت مندهشاً. أردت المساعدة، لكن في ذلك الوقت، كل ما كنت أعرفه هو HTML.

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

بعد فترة وجيزة، ظهرت مشاريع wargabantuwarga.com و silacak. لا أزال أتذكر بوضوح، عندما كان مشروع silacak قيد التشغيل، كنت قد تعلمت للتو استخدام Tailwind CSS. كانت هناك مشكلة لإنشاء جزء من لوحة التحكم، وحاولت بناءها.

عندما كتبت أكثر من نصف الكود، ترددت في المساهمة. لم أكن واثقاً من كودي الفوضوي. في النهاية، تُرك الكود على جهازي المحلي.

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

خطوات صغيرة

على سريري، قبل النوم. كنت أشعر بالملل، فتحت موقع lexical.dev، وهو إطار عمل محرر نصوص جديد.

شعرت بشيء غريب. عند استخدام الوضع المظلم، أصبح التمرير فوق زر "Visit Button" أسود. (فيديو)

من هناك، فكرت في إصلاحه. كانت مجرد مشكلة CSS بسيطة. أعني، لم أكن بحاجة لكتابة كود بمنطق معقد للغاية. فقط بضعة أسطر بسيطة.

أخيراً، تشجعت.

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

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

https://github.com/facebook/lexical/pull/2462#issue-1274990303

ها هو. طلب السحب تم إنشاؤه (https://github.com/facebook/lexical/pull/2462). أضفت عمداً تسجيل شاشة حتى يتمكن المراجع من فهم المشكلة التي أعنيها بسهولة.

https://github.com/facebook/lexical/pull/2462#issuecomment-1158837326

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

https://github.com/facebook/lexical/pull/2462#pullrequestreview-1010455855

في أقل من 15 دقيقة، كان المراجع قد أعطى ملاحظاته. كنت بحاجة فقط للضغط على "commit suggestion" لتغيير الكود وفقاً لاقتراح المراجع.

طلب السحب تمت الموافقة عليه.

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

طلب السحب تم دمجه!

الخطوة الثانية

بعد إنشاء طلب سحب في مشروع ميتا، شعرت أنه من الأسهل إنشاء طلب سحب في مشاريع أخرى. أعني، من حيث إقناع نفسي.

في تلك الأيام كنت أتصفح بنشاط مستودع Next.js لأن الإصدار 12.2 كان على وشك الإطلاق. لذلك قرأت كل التزام تم إجراؤه، ونظرت فيما تم تغييره. أحد الالتزامات التي لاحظتها كان عندما قام Lee Robinson (أحد أروع المطورين الذين أعجب بهم) بإصلاح خطأ إملائي، من rewrites (بحرف "s" في النهاية) إلى rewrite.

https://github.com/vercel/next.js/pull/38000

لكن عند قراءة صفحة Middleware Upgrade Guide، كان لا يزال مكتوباً rewrites (مع "s").

لذا مرة أخرى، حاولت إصلاح هذا الخطأ الإملائي الصغير.

https://github.com/vercel/next.js/pull/38016

ذكرت طلب السحب الذي أنشأه Lee سابقاً، لأظهر أن التغيير الذي أجريته مشابه لتغييره.

https://github.com/vercel/next.js/pull/38016#pullrequestreview-1019410068

هذا المشروع كان أبسط، لا حاجة لاتفاقية مثل مشروع ميتا. فقط انتظار الموافقة من المراجع. إذا تمت الموافقة، سيتم دمجه في الفرع الرئيسي.

الخطوات التالية

مرة أخرى، بدءاً من تويتر، هذا أحد الأسباب التي تجعلني أتابع العديد من المطورين على تويتر. أعلن المطور الرئيسي لـ SWC (وهو مترجم يستخدمه Next.js) أنه أنشأ للتو مشروعاً جديداً (مرة أخرى) يسمى FnApi.

عندما نظرت، لم يكن موقع التوثيق مريحاً لمستخدمي الهاتف المحمول. كان الموقع لا يزال مبنياً على Nextra الإصدار 1.

بالصدفة، رأيت مؤلف Nextra يغرد عن Nextra الإصدار 2.

انطلاقاً من ذلك، أنشأت طلب سحب، باستخدام مشروع Cobe كمرجع.

كملاحظة، في وقت كتابة هذا، كان Nextra الإصدار 2 لا يزال في مرحلة بيتا ولم يكن التوثيق للترقية إلى الإصدار 2 متاحاً بعد.

أسرع. تم الدمج!

الدروس المستفادة

بعض الدروس للمطورين المبتدئين مثلي لبدء المساهمة:

  • المساهمات لا تتطلب كتابة كود معقد، يمكنك البدء بـ تقديم المشكلات أو إصلاح الأخطاء الإملائية.
  • اتبع أسلوب كتابة الالتزام لكل مشروع. لمعرفة ذلك، اقرأ سجل الالتزامات لهذا المشروع.
  • "ابحث عن الأخطاء" في المشاريع الصادرة حديثاً. مثل إطار عمل Fresh من Deno الذي كان رابط التذييل الخاص به لا يزال يشير إلى GitHub القديم (https://github.com/denoland/fresh/pull/296).

الختام

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

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

هذا يتعلق بعملية التعلم، وفهم كيفية عمل الأنظمة، والتحلي بالشجاعة.

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

أخيراً، لمطوري البرمجيات المبتدئين مثلي الذين يريدون تعلم المساهمة، أوصي بشدة بدليل المساهمة (CONTRIBUTING_ID.md) من KawalCovid19.

تواصل

هل تريد مناقشة المزيد حول هذا الموضوع أو مواضيع أخرى متعلقة بالتكنولوجيا؟ يمكنك التواصل معي عبر @zakiego!

مقالات أخرى

توقفت عن الحفر في السجلات

توقفت عن الحفر في السجلات

تغير تصحيح الأخطاء (Debugging) عندما توقفت عن قراءة السجلات يدوياً وبدأت في استخدام وكلاء الذكاء الاصطناعي لربط الأخطاء عبر بيانات المراقبة - وصول أسرع للسبب الجذري، وطرق مسدودة أقل.

السرعة لم تكن أبداً الجزء الصعب في CI/CD

السرعة لم تكن أبداً الجزء الصعب في CI/CD

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