في شركة اشتغلت معاها، كان في زول اسمو أحمد فاهم شغلة تسوية الفواتير بشكل كبير ما شاء الله. كان فاهمها من الالف للياء، لدرجة انو لما الساعة اتنين بالليل تقع الخدمه بيعرف من رسالة الخطأ أي واحد من الأربعة أنظمة اللي ممكن يكون فيهو مشكله، ولا ياتو مدخلات كان فيها فورمات تاريخ غلط.
أحمد مشى. وما قصر ادانا إشعار شهرين، وده كرم منو. وفي الشهرين دي راجعنا وكتبنا توثيق ممتاز لي كل حاجه كان شغال فيها، وسجلنا جلسات مشاركه معرفه معاهو، وعملنا تسليم وتسلم زي العسل. وبعد تسعة أسابيع من مشيتو، الشغلة وقعت وخدمات كتيره فشلت بطريقة مافي زول قدر يفسرها، والموضوع اخد ايام عديل عشان يتصلح.
والتسليم والتسلم نفسو مشى كويس. الحاجة النقلناها كانت وصف النظام، والحاجة الكانت عند أحمد قاعدة برّا الوصف ده، خلينا نشوفها مع بعض.
نفس القصه ده، بس في شركه كبيره ومعروفه
فريق secretspec أعلن يوم ١٥ أغسطس انهم بيعملو fork لـ dotenvy لـ dotenv-ng. والأسباب المذكورة هي الاسباب المعتادة للمواضيع: المكتبه الاصليه كانت الصيانة فيها متوقفة ليها زمن، وفي backlog بمشاكل وissues وقف يتحرك وبزيد بس، والdependency شايل حمل أكتر من انك تسيبو في الحالة ديه.
وdotenvy نفسو fork. هو موجود أصلاً لأنو dotenv، الـ crate الأصلي وقف. انا قمت سحبت تاريخ الـ commits للاتنين بتلقاهم في الشكل التحت.
dotenv الأصلي برّا الرسمة الفوق دي لأنو ما عندو commits تترسم. آخر commit في dotenv كان بتاريخ ٢٦ يونيو ٢٠٢٠، قبل ستة سنين، ولسه فيهو خمسين issue وpull request مفتوحين. وما في زول أوقفو رسمياً ولا أرشفو، ولسه قاعد في يتبني عليهو مشاريع جديده.
وشكل dotenvy زاتو غريب. كان فيهو ستة وسبعين commit في النص التاني من ٢٠٢٤، وبعد داك وقف. وبين فبراير ٢٠٢٥ ومارس ٢٠٢٦ المشروع فيهو commitين بالظبط، والاتنين كانو تعديلات على README ي عزيزي.
الجزء اللسه شايل الشيله
سحبت كمان أعداد المكتبات المعتمده عليهم الاتنين، والأرقام دي بتحوّل الموضوع من تنقيب في التاريخ المنسي لمشكلة حيّة.
اقرا العمود الشمال ده تاني. dotenv ما فيهو commit من يونيو ٢٠٢٠، ولسه ١٨٢١ crate معتمدين عليهو ك dependency. واتحمّل ٧.٣ مليون مرة في التسعين يوم الفاتوا بس. والموضوع ده ما مقلق لأي زول، لأنو ما في حاجة واقفه.
وآخر إصدار منشور لـ dotenvy كان مارس ٢٠٢٣. يعني الستة وسبعين commit بتاعين آخر ٢٠٢٤ ما وصلو crates.io أصلاً. وتعديلات الـ README ديك كانت عشان في زول قاعد يوضح ويعيد انو الكود الشغال قاعد في فرع ما زول قادر يثبتو.
كل مكتبة مهملة كانت سليمة يوم اتبنّاها زول. إنت بتتبنى حاجة تحت تطوير نشط (وdotenvy كان كده بالدليل في ٢٠٢٤)، وبعد سنين الصيانة بتقف بهدوء، وشجرة الاعتماديات بتاعتك قاعدة في مكانها ما اتحركت. والمخاطرة بتوصلك من غير أي حدث من ناحيتك: لا قرار، ولا ترحيل، ولا إيميل تحذير.
وبعدين إعلان الـ fork حرّك المشروع
الـ fork حصل يوم ١٥ أغسطس، وبعدها بيومين dotenvy رجع يدمج pull requests تاني. وفي ١٧ أغسطس الساعة ٦:١٨ مساءً، dotenvy دمج pull request من مجتمع المطورين لاول مره من شهور. وبحلول الساعه ٦:٥٧ كان في تغيير سلوك عجيب واصدارات و changelog داخلين. وpull request تاني اتدمج الساعة ١:٥٠ في اليوم التاني.
مشروع كان مطلّع commitين في 18 شهر، طلع أربعة في حوالي تمن ساعات.
ستة وأربعين issue وpull request مفتوحين خلّو المشروع واقف سنتين. واتحرك في أمسية واحدة، لمّن ظهر fork ممكن يتجاوزو.
التوقيت ده ما بيثبت أي سببية (Correlation vs Causation). أنا ما بقرا عقل الـ maintainer، وممكن تكون صدفة. لكن الشكل ده مألوف لأي زول شاف مؤسسة بتكتشف انو الحركه والعجلة ضروره فجأة في الأسبوع البينزل فيهو منافسهم حاجة جديده ويحسو انهم اتاخرو.
إحنا عادة بنتكلم عن الـ fork كحالة فشل: المجتمع بينقسم، والجهد بيتكرر، ومرات كتيره الfork بيفشل. وأحياناً هو الرسالة الوحيدة الباقية البتوصل للمجتمع والعالم انو الجهد والعمل موجود.
ليه التسليم ما بينفع تماماً
نرجع لأحمد، لأنو هو والـ maintainer الساكت ديل وجهان لعمله واحده بس بملابس مختلفة.
الحاجة الشايلها احمد تاريخ مضغوط من الأعطال والمشاكل. أحمد كان عارف انو التواريخ الجاية من النظام المالي في البنك الرابطين معاهو بتوصل بتوقيت مختلف في الأسبوع الأخير من السنة المالية، لأنو اتكوى منها في ٢٠١٩، الساعة تلاتة بالليل، وقضى فيها ست ساعات. الحقيقة دي ما مكتوبة في أي مكان، وما كانت حتعيش لو اتكتبت. كسطر في runbook بتقرا زي اي معلومة عابرة، والقارئ ما عندو خانة يختها فيها او يستوعب حجمها الا لمن تقابلو.
xkcd رسمها في ٢٠٢٠: البنية التحتية الرقمية الحديثة كلها، وتحتها بلوك رفيع واحد شايلها، بيصونو من ٢٠٠٣ زول عشوائي في نبراسكا بدون شكر. ضحّكت الناس، بس النكتة دي حقيقية ومخيفه شويه.

سكوت الـ maintainer ده مشكلة معرفة، وليها نفس الشكل جوة شركتك زي ما ليها في GitHub:
المعرفة ضمنية، محفوظة عند ناس معينه كتمييز أنماط في راسهم
ومركزة في زول واحد، وأحيانا اتنين
وغير مرئية طالما شغالة، وما في حاجة في أي dashboard ببقي لونها احمر لو في مشكلة
وما بتتسعّر إلا في اللحظة البتمشي فيها، ودي أسوأ لحظة ممكن تكتشف فيها السعر الحقيقي للموضوع ده
الفريق يقدر يعمل شنو
انك تدقق كل dependency غير مباشرة عندك ده كلام احلام، وبينتج جدول فيهو dependencies وال sub dependencies و BOM ماف زول بيحدثو ولا بشوفو بعد النسخة الأولى منو.
الواقعي انك تسمي المكتبات الأساسية بتاعتك (عادة بين خمسة وخمستاشر، وأي مهندس سينيور المفترض يقدر يعددهم من راسو) وتشوف لكل واحدة آخر commit نزل متين وهل في issues جديده بتاثر علي المدي القريب ولا البعيد وهل في تجاوب من المجتمع مع المشاكل ده ولا كيف. ولو في زول عمل كده لـ dotenv في ٢٠٢١، كانت الإجابة قاعدة قدامو واضحة.
وبعد داك اعمل نفس التمرين ده بالظبط على ناسك والفريق المعاك. خلي سؤال "منو المالك للنظام وكده" في الهيكل التنظيمي للمشروع، لأنو ده خيال متحافظ عليهو لمصلحة الهيكل نفسو. السوال المهم المفترض يتسال: لو الزول ده ما موجود لي مده شهر لا قدر الله، شنو الحاجة ما حنقدر نعملها من دونو؟
وصدقني في كتير من الاحيان ما حتعجبك الإجابة، وما مفروض تعجبك. الإجابة دي بتوصف الحاجة العندك حقيقية، والتوثيق (لو موجود اصلا) بيخليك تصدق انو عندك أكتر.
وبعدين الجزء الممل
الحل للاسف شخص تاني وتالت ورابع بيعمل الشغل، بشكل غلط وفيهو مشاكل في الأول، والزول الأول (الفاهم، المالك للموضوع، المقطعها) لسه موجود و يصححو.
وده صعب وغالي فكريا وزمنيا وماديه، وواضح انو غير كفء في معظم الاحيان: يكون عندك اتنين في شغلة زول واحد بيعملها أسرع وأحسن، وفي زول حيقول الكلام ده في اجتماع انو شنو الازدواجيه ده وليه التكرار. وهو كمان الحاجة الوحيدة البتنقل التاريخ المضغوط القلناهو داك، لأنو الطريقة الوحيدة لاكتساب الخبره في نظام معين انك تشوف النظام ده وهو بيتعطل ويقيف وتفهم ليه.
بالنسبه لشركاتنا ديك، في الآخر عملنا البعملوهو كل الناس البتفقد الامل. بنينا النظام من جديد. أخدت حوالي سبعة شهور وشخصين، والزول التاني منهم ده هو الان البينادوهو الساعة اتنتين بالليل والاول مشى من الشركة.
وكان لازم نبدأ قبل تلاتة سنين، وأحمد لسه زهجان يوم الخميس.
إعلان dotenv-ng هنا، والتواريخ الفوق كلها مصدرها dotenvy، dotenv. امشي عد الـ"أحمدات" البتاعينك. وبعدين شوف في زول قاعد بهدوء بيجهز يعمل ليك fork ولا لأ. ودمتم.
رسالة واحدة مع كل مقال جديد، فيها أبحاث وقرارات منتج وما تبلغنا به الفرق.







