# حاجات ممكن اللي مش مبرمج يعملها
## اسمع الأول

كل حاجة في الـ Open Source بتعتمد على الناس اللي شغالة فيها.  
إنت عايز تنضم لفريق، وده معناه إنك تفهم المجتمع شغال إزاي.  
لو دخلت على مشروع وقلت "هاي، أنا شايف إن المشروع المفروض يعمل كذا" غالبًا ده مش هيكون مقبول.  
ممكن مشاريع معينة تكون بتحب الأسلوب ده، لكن لو المشروع ليه فترة شغال، نسبة إن الناس تتقبل الكلام ده قليلة.  
**أحسن حاجة تعملها في الأول إنك تسمع وتشوف الناس شغالة إزاي.**

1. **اشترك في Mailing List**: في مشاريع كتير، الـ mailing list هي وسيلة التواصل الرئيسية بين الناس اللي بتطور المشروع.  
في المشاريع الكبيرة، هتلاقي كذا mailing list.  
مثلاً، مشروع PostgreSQL عنده أكتر من 12 mailing list للمستخدمين و6 للمطورين.  
ابدأ بمتابعة الـ list الأساسية للمستخدمين وواحدة من بتوع المطورين علشان تفهم اللي بيحصل.

2. **تابع Blog**: المطورين الكبار غالبًا بيكتبوا تدوينات بيشرحوا فيها اللي هيحصل في النسخ الجاية،  
وبيتكلموا عن اللي اتعمل علشان نوصل للمرحلة دي.  
في مواقع اسمها Planet بتجمع التدوينات والأخبار من كذا مصدر عن المشروع.  
لو فيه planet زي planet.gnome.org أو planet.mysql.com، يبقى ده مكان كويس تبدأ منه.  
اكتب في جوجل "planet <اسم المشروع>".

3. **ادخل على قناة IRC**: معظم مشاريع الـ Open Source عندها قنوات IRC الناس بتدخل تتكلم فيها عن المشاكل والتطوير.  
ادخل على موقع المشروع وشوف اسم القناة على أي شبكة IRC.

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

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

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

4. **حلل مشكلة (Bug)**: ساعات الناس بتبلّغ عن مشاكل بشكل مش واضح.  
لو حد قال "البرنامج بيهنّج لما بعمل كذا"، خد وقتك وحاول تعرف المشكلة دي بتحصل إزاي.  
هل بتتكرر؟ تقدر تكتب خطوات تثبت بيها إنها بتحصل؟ بتحصل على متصفح معين؟ ولا في نظام تشغيل معين؟

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

5. **اقفل التذاكر القديمة**: كتير من المشاكل بتكون اتحلت، بس التذاكر لسه مفتوحة.  
البحث في التذاكر القديمة وتنضيفها حاجة مهمة جدًا.

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

جرّب تعيد المشكلة في آخر نسخة من البرنامج.  
لو مشتغلتش، اكتب ده في التذكرة واقفلها.  
لو لسه موجودة، اكتبه برضو وسيب التذكرة مفتوحة.

## الشغل على الكود
الناس اللي عندها خبرة مختلفة في البرمجة تقدر تساعد في الكود.  
مش لازم تكون مبرمج جامد علشان تساهم.

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

مثلاً، PostgreSQL بيستقبل التعديلات على شكل Patch في mailing list، والمطورين بيراجعوها كويس جدًا.  
لكن في مشروع زي Parrot، ممكن تاخد صلاحيات التعديل بسهولة.  
لو المشروع على GitHub، غالبًا بيستخدموا Pull Requests.  
كل مشروع وليه طريقته.

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

6. **اختبر نسخة Beta أو Release Candidate**:  
المشاريع اللي بتشتغل على كذا نظام تشغيل ساعات بيكون فيها مشاكل توافق.  
قبل الإصدارات، المطورين بينزلوا نسخ تجريبية علشان الناس تجربها.  
لو شغّلت البرنامج على نظام تشغيل مختلف واشتغل، ده بيساعدهم يعرفوا إن النسخة كويسة.

مش لازم تعمل حاجة غير إنك تبني البرنامج وتفتحه وتجربه.  
لو شغال، بلغهم.  
ده بيفرق كتير جدًا مع المطورين.

7. **صلّح Bug**: ده غالبًا أول حاجة الناس بتعملها لما تبدأ تشتغل في الكود.  
دور على Bug شكله بسيط، وجرب تصلحه.  
اكتب ملاحظاتك جوه الكود، ولو في Test يوضح إن المشكلة اتحلت، ضيفه.  
لو معرفتش تصلحها، اكتب اللي وصلتله في التذكرة.

8. **اكتب Test**:  
معظم المشاريع عندها Tests، بس دايمًا فيه مكان لإضافة تانية.  
استخدم أدوات بتقيس مدى التغطية، زي `gcov` أو `Devel::Cover`.  
وشوف أجزاء الكود اللي مش متغطية، وضيف لها Test.

9. **اسكت تحذير من الكومبايلر**:  
لما تبني برامج C، ممكن يطلعلك تحذيرات.  
مش دايمًا معناها إن فيه مشكلة، بس بتشوّش.  
لو شفت تحذير، شوف هل فعلاً فيه مشكلة؟  
لو لأ، عدل الكود علشان تسكت التحذير.

10. **ضيف تعليق**:  
لو لقيت جزء في الكود مش مفهوم، اكتبه تعليق.  
أكيد في ناس غيرك هتتلخبط برضو.  
ابعت تعديل فيه التعليقات دي.

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

11. **اعمل مثال**:  
مفيش مشروع عنده أمثلة كتير كفاية.  
لو فيه API، أو مكتبة، أو برنامج GUI زي Gimp، أو حتى أداة سطر أوامر – اعمل مثال عملي بيشرح ازاي تستخدمه.

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

## اشتغل مع المجتمع
الـ Open Source مش بس كود. المجتمع هو اللي بيخلي المشاريع دي تعيش وتكبر.  
فيه طرق كتير تقدر تساعد بيها في تقوية المجتمع حوالي المشروع.

12. **جاوب على سؤال**:  
أحسن طريقة تساعد بيها المشروع والمجتمع هي إنك تساعد غيرك.  
لما حد جديد يسأل سؤال، وحضرتك تجاوبه بدل ما تقول له "روح اقرأ الـ Manual"، كده إنت مش بس ساعدته،  
إنت كمان شجّعته يكمل، ويمكن كمان يبقى عضو نشيط في المشروع بعد كده.

كلنا بدأنا من الصفر، والمشاريع محتاجة دايمًا ناس جديدة تدخل علشان تفضل عايشة.

13. **اكتب تدوينة (Blog Post)**:  
لو عندك مدونة، احكي فيها عن تجربتك مع المشروع اللي بتستخدمه.  
قول واجهت إيه مشاكل، وازاي حليتها.  
كده بتساعد المشروع بطريقتين:  
- إنك بتخلي الناس تفكر في المشروع وتسمع عنه.  
- وإنك بتسيب أثر للي بعدك لو حد واجه نفس المشكلة وعمل بحث على جوجل.

(والتدوينة دي كمان ممكن تبقى وسيلة كويسة توري بيها خبرتك الحقيقة في الشغل لما تيجي تدور على شغل.)

14. **طوّر موقع المشروع**:  
لو عندك خبرة في تصميم المواقع، وساعدت في تحسين الموقع أو شكله العام، ده وقتك مش بيضيع.  
يمكن المشروع محتاج لوجو، أو ستايل أحسن، أو تنظيم أحسن للمحتوى.  
الحاجات دي ساعات بتكون ناقصة عند المبرمجين، وساعتها أي حد عنده ذوق أو خبرة في التصميم بيفرق جامد.  
أنا عن نفسي بتمنى ألاقي حد يساعدني في التصميم في مشاريعي!

15. **اكتب توثيق تقني (Documentation)**:  
لو تقدر تشرح ازاي برنامج أو أداة شغالة، يبقى تقدر تكتب توثيق تقني عنها.  
مشاريع Open Source كتير بتبقى محتاجة توثيق جديد، أو تطوير اللي موجود، أو تبسيطه للناس.

كل ما كانت كتابتك أبسط وأوضح، كل ما كانت أحسن.  
وأجمل حاجة؟ مش لازم تكون مبرمج علشان تكتب Documentation.

والأهم من كل ده، اسمع الناس بتتكلم عن إيه.  
حاول تلاحظ المشاكل اللي محتاجة حل.  
مثلاً، في مرة على Mailing List لمشروع Parrot، قرروا ينقلوا من Trac لـ GitHub في نظام التذاكر.  
ناس كتير كانوا ضد القرار علشان مفيش طريقة ينقلوا التذاكر القديمة.  
دخلت وقلت "طب ما أكتب أنا برنامج يحوّل التذاكر؟" والناس فرحت جدًا.  
فعلاً كتبت برنامج نقل أكتر من 450 تذكرة، واحتفظنا بتاريخهم.  
نجاح جميل، وساعدت الفريق، والمطورين ركزوا في شغلهم بدل وجع الدماغ.

16. **علّم وساعد غيرك**:  
أحسن طريقة تتعلم بيها أكتر، إنك تشرح اللي فهمته لحد تاني.  
المدرّس الشاطر هو اللي يقدر يشرح حاجة معقدة بطريقة بسيطة.

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

والسلام عليكم ورحمة الله وبركاته.


