نظرًا لأنني كنت أعمل بدوام كامل تقريبًا على [Neotoma](https://neotoma.io) (آشفيل سابقًا) منذ الصيف الماضي، فقد أتيحت لي الفرصة لإتقان استخدام البرامج مفتوحة المصدر لأول مرة.

يسعدني أن أقول إنه بالإضافة إلى العمل على المستودعات المتاحة للعامة والمخصصة لـ Neotoma، فقد قمت بإنشاء بعض المستودعات التي نأمل أن تكون مفيدة كوحدات لتطبيقات Node.js الأخرى بشكل عام:

- [Park Ranger](https://github.com/markmhx/park-ranger): مدير للتبعيات الخاصة بالبيئة مثل متغيرات البيئة وملفات التكوين وملفات شهادات SSL.

  يطلق عليه اسم "park ranger" لأن برنامج الكمبيوتر يعمل دائمًا في بيئة معينة، غالبًا ما يتم تحديدها بواسطة جهازه أو بيئة معينة يتم اختيارها داخل هذا الجهاز إلى جانب البيئات المحتملة الأخرى. ومن الذي تبحث عنه عندما تستمتع بالبيئة الطبيعية ولديك أسئلة عنها...؟ هذا صحيح، حارس الحديقة.

  لقد واصلت بشكل أساسي إعادة كتابة نفس كود الأداة المساعدة عبر مستودعاتي للتعامل مع الاختلافات القائمة على البيئة، خاصة بين جهاز التطوير المحلي ومضيف النشر. لذلك، قمت بإعادة هيكلة كل ذلك في هذه الوحدة لتسريع تحسينات التعليمات البرمجية والصيانة في المستقبل. كانت نقطة البداية هي [dotenv](https://github.com/motdotla/dotenv) لكنني أدركت بسرعة أنها كانت بسيطة جدًا بالنسبة لاحتياجاتي.

- [Hoist](https://github.com/markmhx/grunt-hoist): مجموعة من مهام Grunt لنشر تطبيقات Node.js على المضيفين وتنفيذ الإجراءات عن بعد ذات الصلة.

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

- [الوكيل](https://github.com/neotoma/proxy): خادم وكيل لطلبات HTTP وHTTPS.

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

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

هناك عدد من المستودعات العامة الأخرى قيد التطوير المرتبطة بشكل مباشر بـ Neotoma والتي لن أدرجها هنا ولكن يمكن العثور عليها في [مؤسسة Neotoma GitHub](https://github.com/neotoma). على الرغم من أنني لم أطلب المساهمات بشكل نشط حتى الآن، فإن جميع المستودعات المذكورة أعلاه وفي تلك المؤسسة مفتوحة لطلبات السحب إذا كنت تريد إجراء أي تغييرات!