diff --git a/docs/additional-material/Things a non Programmer can do.eg.md b/docs/additional-material/Things a non Programmer can do.eg.md new file mode 100644 index 00000000..734428ec --- /dev/null +++ b/docs/additional-material/Things a non Programmer can do.eg.md @@ -0,0 +1,161 @@ +# حاجات ممكن اللي مش مبرمج يعملها +## اسمع الأول + +كل حاجة في الـ 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. **علّم وساعد غيرك**: +أحسن طريقة تتعلم بيها أكتر، إنك تشرح اللي فهمته لحد تاني. +المدرّس الشاطر هو اللي يقدر يشرح حاجة معقدة بطريقة بسيطة. + +لو علمت حد، أو ساعدته، مش بس هتحس إنك عملت حاجة كويسة، +ده كمان هيثبت المعلومة في دماغك، ويقوّي مهاراتك. +ولما حد يساعدك، ما تحتفظش بالمعلومة لنفسك. +شارك اللي عرفته، وخلّي الدنيا مكان أحسن. +