عقد من التأثير: كيف وصلت حزم npm الخاصة بنا إلى مليار تحميل وشكلت جافا سكريبت

NPM packages billion downloads ecosystem

مقدمة

في عالم JavaScript و Node.js، هناك بعض الحزم الأساسية — يتم تنزيلها ملايين المرات يوميًا وتشغل التطبيقات حول العالم. وراء هذه الأدوات يوجد مطورون يركزون على جودة المصدر المفتوح. اليوم، نعرض كيف يساعد فريقنا في بناء وصيانة حزم npm التي أصبحت أجزاءً رئيسية من نظام JavaScript البيئي.

الرواد الذين يثقون بنا: إسحاق ز. شلوتر و Forward Email

نحن فخورون بوجود إسحاق ز. شلوتر (GitHub: isaacs) كمستخدم. أنشأ إسحاق npm وساعد في بناء Node.js. ثقته في Forward Email تظهر تركيزنا على الجودة والأمان. يستخدم إسحاق Forward Email لعدة نطاقات بما في ذلك izs.me.

تأثير إسحاق على JavaScript ضخم. في عام 2009، كان من أوائل من رأوا إمكانات Node.js، حيث عمل مع ريان دال، الذي أنشأ المنصة. كما قال إسحاق في مقابلة مع مجلة Increment: "في وسط هذه المجتمع الصغير جدًا من مجموعة من الناس يحاولون معرفة كيفية جعل JS على الخادم يحدث، خرج ريان دال بـ Node، الذي كان بوضوح النهج الصحيح. راهنت على ذلك وشاركت بعمق حوالي منتصف 2009."

Note

لمن يهتم بتاريخ Node.js، هناك أفلام وثائقية ممتازة توثق تطوره، بما في ذلك قصة Node.js و 10 أشياء أندم عليها بخصوص Node.js - ريان دال. يحتوي موقع ريان دال الشخصي أيضًا على رؤى قيمة حول عمله.

من إنشاء npm إلى قيادة Node.js

أنشأ إسحاق npm في سبتمبر 2009، مع إصدار أول نسخة قابلة للاستخدام في أوائل 2010. ملأ هذا مدير الحزم حاجة رئيسية في Node.js، مما سمح للمطورين بمشاركة وإعادة استخدام الكود بسهولة. وفقًا لـ صفحة ويكيبيديا Node.js، "في يناير 2010، تم تقديم مدير حزم لبيئة Node.js يسمى npm. يسمح مدير الحزم للمبرمجين بنشر ومشاركة حزم Node.js، إلى جانب شفرة المصدر المصاحبة، وهو مصمم لتبسيط التثبيت والتحديث وإلغاء تثبيت الحزم."

عندما تراجع ريان دال عن Node.js في يناير 2012، تولى إسحاق قيادة المشروع. كما هو مذكور في سيرته الذاتية، "قاد تطوير عدة واجهات برمجة تطبيقات أساسية في نواة Node.js، بما في ذلك نظام وحدات CommonJS، وواجهات برمجة نظام الملفات، والتدفقات" و "عمل كـ BDFL (الديكتاتور الخيّر مدى الحياة) للمشروع لمدة عامين، مما ضمن جودة متزايدة وعملية بناء موثوقة لإصدارات Node.js من v0.6 إلى v0.10."

قاد إسحاق Node.js خلال فترة نمو رئيسية، واضعًا معايير لا تزال تشكل المنصة حتى اليوم. أسس لاحقًا npm, Inc. في 2014 لدعم سجل npm، الذي كان يديره بمفرده سابقًا.

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

المهندس وراء الكود: رحلة نيك باو

في قلب نجاحنا في المصدر المفتوح يوجد نيك باو، مؤسس ومالك Forward Email. يمتد عمله في JavaScript لما يقرب من 20 عامًا وقد شكل كيفية بناء عدد لا يحصى من المطورين للتطبيقات. تظهر رحلته في المصدر المفتوح مهارات تقنية وقيادة مجتمعية.

لجنة Express الفنية والمساهمات الأساسية

أكسبته خبرة نيك في إطار العمل الويب مكانًا في لجنة Express الفنية، حيث ساعد في أحد أكثر أُطُر Node.js استخدامًا. نيك مدرج الآن كعضو غير نشط في صفحة مجتمع Express.

Important

تم إنشاء Express في الأصل بواسطة TJ Holowaychuk، وهو مساهم نشط في المصادر المفتوحة ساهم بشكل كبير في تشكيل نظام Node.js البيئي. نحن ممتنون للعمل الأساسي الذي قام به TJ ونحترم قراره بأخذ استراحة من مساهماته الواسعة في المصادر المفتوحة.

كعضو في اللجنة التقنية لـ Express، أظهر نيك اهتمامًا كبيرًا بالتفاصيل في قضايا مثل توضيح توثيق req.originalUrl وإصلاح مشاكل معالجة النماذج متعددة الأجزاء.

مساهمات إطار عمل Koa

يُظهر عمل نيك مع إطار عمل Koa—وهو بديل حديث وأخف من Express تم إنشاؤه أيضًا بواسطة TJ Holowaychuk—التزامه بتحسين أدوات تطوير الويب. تشمل مساهماته في Koa القضايا والرموز من خلال طلبات السحب، حيث عالج مشاكل التعامل مع الأخطاء، وإدارة نوع المحتوى، وتحسين التوثيق.

يمنحه عمله عبر كل من Express و Koa رؤية فريدة لتطوير الويب باستخدام Node.js، مما يساعد فريقنا على إنشاء حزم تعمل بشكل جيد مع أنظمة أطر عمل متعددة.

من مساهم فردي إلى قائد منظمة

ما بدأ كمساعدة في مشاريع قائمة تطور إلى إنشاء وصيانة أنظمة حزم كاملة. أسس نيك عدة منظمات على GitHub—بما في ذلك Cabin، Spam Scanner، Forward Email، Lad، و Bree—كل منها يحل احتياجات محددة في مجتمع جافاسكريبت.

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

منظماتنا على GitHub: أنظمة بيئية للابتكار

ننظم عملنا في المصادر المفتوحة حول منظمات GitHub مركزة، كل منها يحل احتياجات محددة في جافاسكريبت. يخلق هذا الهيكل عائلات حزم متماسكة تعمل جيدًا معًا مع الحفاظ على التجزئة.

Cabin: تسجيل منظم للتطبيقات الحديثة

تُعد منظمة Cabin رؤيتنا لتسجيل التطبيقات البسيط والقوي. تحتوي الحزمة الرئيسية cabin على ما يقرب من 900 نجمة على GitHub وأكثر من 100,000 تحميل أسبوعيًا[1]. توفر Cabin تسجيلًا منظمًا يعمل مع خدمات شهيرة مثل Sentry وLogDNA وPapertrail.

ما يجعل Cabin مميزة هو واجهة برمجة التطبيقات المدروسة ونظام الإضافات الخاص بها. تدعم الحزم مثل axe للوسيط Express وparse-request لتحليل طلبات HTTP التزامنا بحلول كاملة بدلاً من أدوات معزولة.

تستحق حزمة bson-objectid ذكرًا خاصًا، حيث تجاوزت 1.7 مليون تحميل في شهرين فقط[2]. أصبح هذا التنفيذ الخفيف لـ MongoDB ObjectID الخيار المفضل للمطورين الذين يحتاجون إلى معرفات بدون الاعتماد الكامل على MongoDB.

Spam Scanner: مكافحة إساءة استخدام البريد الإلكتروني

تُظهر منظمة Spam Scanner التزامنا بحل المشاكل الحقيقية. توفر الحزمة الرئيسية spamscanner كشفًا متقدمًا للبريد المزعج، لكن حزمة url-regex-safe هي التي شهدت اعتمادًا مذهلاً.

مع أكثر من 1.2 مليون تحميل في شهرين[3]، تصلح url-regex-safe مشكلات أمنية حرجة في تعبيرات منتظمة أخرى لاكتشاف عناوين URL. تُظهر هذه الحزمة نهجنا في المصادر المفتوحة: إيجاد مشكلة شائعة (في هذه الحالة، ثغرات ReDoS في التحقق من صحة URL)، إنشاء حل قوي، وصيانته بعناية.

بري: جدولة الوظائف الحديثة باستخدام خيوط العمل

تُعد منظمة بري إجابتنا على تحدٍ شائع في Node.js: جدولة الوظائف الموثوقة. الحزمة الرئيسية bree، التي تحظى بأكثر من 3100 نجمة على GitHub، توفر مجدول وظائف حديث يستخدم خيوط عمل Node.js لأداء وموثوقية أفضل.

Note

تم إنشاء بري بعد أن ساعدنا في صيانة Agenda، حيث طبقنا الدروس المستفادة لبناء مجدول وظائف أفضل. ساعدتنا مساهماتنا في Agenda على إيجاد طرق لتحسين جدولة الوظائف.

ما الذي يجعل بري مختلفًا عن المجدولات الأخرى مثل Agenda:

  • بدون تبعيات خارجية: على عكس Agenda التي تحتاج إلى MongoDB، لا يتطلب بري Redis أو MongoDB لإدارة حالة الوظائف.
  • خيوط العمل: يستخدم بري خيوط عمل Node.js لعمليات معزولة، مما يوفر عزلاً وأداءً أفضل.
  • واجهة برمجة تطبيقات بسيطة: يقدم بري تحكمًا مفصلًا مع بساطة، مما يسهل تنفيذ احتياجات الجدولة المعقدة.
  • دعم مدمج: أشياء مثل إعادة التحميل السلس، وظائف الكرون، التواريخ، والأوقات الصديقة للبشر مضمنة بشكل افتراضي.

يُعد بري جزءًا أساسيًا من forwardemail.net، حيث يتولى مهام خلفية حرجة مثل معالجة البريد الإلكتروني، التنظيف، والصيانة المجدولة. استخدام بري في Forward Email يظهر التزامنا باستخدام أدواتنا الخاصة في الإنتاج، مما يضمن تلبيتها لمعايير موثوقية عالية.

نستخدم أيضًا ونقدر حزم خيوط العمل الرائعة الأخرى مثل piscina وعملاء HTTP مثل undici. تستخدم Piscina، مثل بري، خيوط عمل Node.js لمعالجة المهام بكفاءة. نشكر Matteo Collina، الذي يصون كل من undici و piscina، على مساهماته الكبيرة في Node.js. يعمل Matteo في لجنة التوجيه الفني لـ Node.js وقد حسّن بشكل كبير قدرات عملاء HTTP في Node.js.

فورورد إيميل: بنية تحتية للبريد الإلكتروني مفتوحة المصدر

مشروعنا الأكثر طموحًا هو Forward Email، خدمة بريد إلكتروني مفتوحة المصدر توفر إعادة توجيه البريد الإلكتروني، التخزين، وخدمات API. يحتوي المستودع الرئيسي على أكثر من 1100 نجمة على GitHub[4]، مما يعكس تقدير المجتمع لهذا البديل لخدمات البريد الإلكتروني المملوكة.

حزمة preview-email من هذه المنظمة، التي تجاوزت 2.5 مليون تحميل خلال شهرين[5]، أصبحت أداة أساسية للمطورين الذين يعملون مع قوالب البريد الإلكتروني. من خلال توفير طريقة بسيطة لمعاينة الرسائل أثناء التطوير، تحل هذه الحزمة نقطة ألم شائعة في بناء تطبيقات تدعم البريد الإلكتروني.

لاد: أدوات ومرافق أساسية لـ Koa

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

koa-better-error-handler: تحسين معالجة الأخطاء لـ Koa

تقدم koa-better-error-handler حلاً أفضل لمعالجة الأخطاء في تطبيقات Koa. مع أكثر من 50 نجمة على GitHub، تجعل هذه الحزمة ctx.throw ينتج رسائل خطأ صديقة للمستخدم مع معالجة عدة قيود في معالج الأخطاء المدمج في Koa:

  • يكتشف ويتعامل بشكل صحيح مع أخطاء DNS في Node.js، وأخطاء Mongoose، وأخطاء Redis
  • يستخدم Boom لإنشاء استجابات خطأ متناسقة ومنسقة جيدًا
  • يحافظ على الرؤوس (على عكس المعالج المدمج في Koa)
  • يحافظ على رموز الحالة المناسبة بدلاً من الافتراض الافتراضي 500
  • يدعم رسائل الفلاش والحفاظ على الجلسة
  • يوفر قوائم أخطاء HTML لأخطاء التحقق من الصحة
  • يدعم أنواع استجابة متعددة (HTML، JSON، والنص العادي) هذه الحزمة ذات قيمة خاصة عند استخدامها جنبًا إلى جنب مع koa-404-handler لإدارة شاملة للأخطاء في تطبيقات Koa.

passport: المصادقة لـ Lad

@ladjs/passport يوسع وسيط المصادقة الشهير Passport.js مع تحسينات محددة لتطبيقات الويب الحديثة. تدعم هذه الحزمة عدة استراتيجيات مصادقة مباشرة:

  • المصادقة المحلية باستخدام البريد الإلكتروني
  • تسجيل الدخول باستخدام Apple
  • مصادقة GitHub
  • مصادقة Google
  • مصادقة كلمة المرور لمرة واحدة (OTP)

الحزمة قابلة للتخصيص بدرجة كبيرة، مما يسمح للمطورين بضبط أسماء الحقول والعبارات لتتناسب مع متطلبات تطبيقاتهم. تم تصميمها لتتكامل بسلاسة مع Mongoose لإدارة المستخدمين، مما يجعلها حلاً مثالياً لتطبيقات Koa التي تحتاج إلى مصادقة قوية.

graceful: إيقاف تشغيل أنيق للتطبيق

@ladjs/graceful يحل التحدي الحرج لإيقاف تشغيل تطبيقات Node.js بشكل أنيق. مع أكثر من 70 نجمة على GitHub، تضمن هذه الحزمة أن يتم إنهاء تطبيقك بشكل نظيف دون فقدان البيانات أو ترك الاتصالات معلقة. تشمل الميزات الرئيسية:

  • دعم الإغلاق الأنيق لخوادم HTTP (Express/Koa/Fastify)
  • إيقاف نظيف لاتصالات قواعد البيانات (MongoDB/Mongoose)
  • الإغلاق الصحيح لعملاء Redis
  • التعامل مع مجدولات الوظائف Bree
  • دعم معالجات الإيقاف المخصصة
  • إعدادات مهلة قابلة للتكوين
  • التكامل مع أنظمة التسجيل

هذه الحزمة ضرورية لتطبيقات الإنتاج حيث يمكن أن تؤدي عمليات الإيقاف غير المتوقعة إلى فقدان البيانات أو تلفها. من خلال تنفيذ إجراءات إيقاف صحيحة، يساعد @ladjs/graceful في ضمان موثوقية واستقرار تطبيقك.

Upptime: مراقبة وقت التشغيل مفتوحة المصدر

تمثل منظمة Upptime التزامنا بالمراقبة الشفافة ومفتوحة المصدر. يحتوي المستودع الرئيسي upptime على أكثر من 13,000 نجمة على GitHub، مما يجعله واحدًا من أكثر المشاريع شعبية التي نساهم فيها. يوفر Upptime مراقب وقت تشغيل وصفحة حالة تعمل بالكامل بدون خادم.

نستخدم Upptime لصفحة الحالة الخاصة بنا على https://status.forwardemail.net مع توفر الشيفرة المصدرية على https://github.com/forwardemail/status.forwardemail.net.

ما يجعل Upptime مميزًا هو هيكله:

  • مفتوح المصدر 100%: كل مكون مفتوح المصدر بالكامل وقابل للتخصيص.
  • مدعوم من GitHub: يستفيد من GitHub Actions وIssues وPages لحل مراقبة بدون خادم.
  • لا حاجة لخادم: على عكس أدوات المراقبة التقليدية، لا يتطلب Upptime تشغيل أو صيانة خادم.
  • صفحة حالة تلقائية: يولد صفحة حالة جميلة يمكن استضافتها على GitHub Pages.
  • إشعارات قوية: يتكامل مع قنوات إشعارات متعددة بما في ذلك البريد الإلكتروني، والرسائل النصية القصيرة، وSlack.

لتحسين تجربة مستخدمينا، قمنا بدمج @octokit/core في قاعدة شيفرة forwardemail.net لعرض تحديثات الحالة الحية والحوادث مباشرة على موقعنا. يوفر هذا التكامل شفافية واضحة لمستخدمينا في حال حدوث أي مشاكل عبر كامل البنية التحتية لدينا (الموقع، API، MongoDB، Redis، SQLite، SMTP، POP3، IMAP، Bree، إلخ) مع إشعارات فورية، تغييرات في أيقونة الشارة، ألوان تحذيرية، والمزيد.

تتيح لنا مكتبة @octokit/core جلب البيانات الحية من مستودع Upptime على GitHub، معالجتها، وعرضها بطريقة سهلة الاستخدام. عندما يحدث انقطاع أو تدهور في أداء أي خدمة، يتم إخطار المستخدمين فورًا من خلال مؤشرات بصرية دون الحاجة لمغادرة التطبيق الرئيسي. يضمن هذا التكامل السلس أن يكون لدى مستخدمينا دائمًا معلومات محدثة عن حالة نظامنا، مما يعزز الشفافية والثقة.

تم اعتماد Upptime من قبل مئات المؤسسات التي تبحث عن طريقة شفافة وموثوقة لمراقبة خدماتها والتواصل مع المستخدمين حول الحالة. يظهر نجاح المشروع قوة بناء أدوات تستفيد من البنية التحتية القائمة (في هذه الحالة، GitHub) لحل المشكلات الشائعة بطرق جديدة.

مساهماتنا في نظام Forward Email البيئي

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

من الحزم إلى الإنتاج

تتطلب الرحلة من الحزم الفردية إلى نظام إنتاج متكامل دمجًا وتمديدًا دقيقًا. بالنسبة لـ Forward Email، تشمل هذه العملية:

  • الامتدادات المخصصة: بناء امتدادات خاصة بـ Forward Email لحزمنا مفتوحة المصدر التي تلبي متطلباتنا الفريدة.
  • أنماط التكامل: تطوير أنماط لكيفية تفاعل هذه الحزم في بيئة الإنتاج.
  • تحسينات الأداء: تحديد ومعالجة اختناقات الأداء التي تظهر فقط على نطاق واسع.
  • تعزيز الأمان: إضافة طبقات أمان إضافية خاصة بمعالجة البريد الإلكتروني وحماية بيانات المستخدم.

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

حلقة التغذية الراجعة

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

قاد هذا النهج إلى العديد من التحسينات:

  • الإغلاق السلس في Bree: حاجة Forward Email للنشر بدون توقف أدت إلى تعزيز قدرات الإغلاق السلس في Bree.
  • التعرف على الأنماط في Spam Scanner: أنماط الرسائل المزعجة الواقعية التي واجهناها في Forward Email أثرت على خوارزميات الكشف في Spam Scanner.
  • تحسينات الأداء في Cabin: كشف التسجيل عالي الحجم في الإنتاج عن فرص تحسين في Cabin تفيد جميع المستخدمين.

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

المبادئ الأساسية لـ Forward Email: أساس للتميز

تم تصميم Forward Email وفقًا لمجموعة من المبادئ الأساسية التي توجه جميع قرارات تطويرنا. تضمن هذه المبادئ، المفصلة على موقعنا، أن تظل خدمتنا صديقة للمطورين، آمنة، ومركزة على خصوصية المستخدم.

دائمًا صديقة للمطورين، مركزة على الأمان، وشفافة

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

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

الالتزام بمبادئ تطوير البرمجيات المجربة عبر الزمن

نتبع عدة مبادئ تطوير برمجيات راسخة أثبتت قيمتها على مدى عقود:

  • MVC: فصل الاهتمامات من خلال نمط النموذج-العرض-المتحكم
  • فلسفة يونكس: إنشاء مكونات معيارية تقوم بشيء واحد بشكل جيد
  • KISS: الحفاظ على البساطة والوضوح
  • DRY: لا تكرر نفسك، تعزيز إعادة استخدام الشيفرة
  • YAGNI: لن تحتاجها، تجنب التحسين المبكر
  • العوامل الاثني عشر: اتباع أفضل الممارسات لبناء تطبيقات حديثة وقابلة للتوسع
  • موسى أوكام: اختيار أبسط حل يلبي المتطلبات
  • استخدام منتجاتنا بأنفسنا: استخدام منتجاتنا الخاصة بشكل مكثف هذه المبادئ ليست مجرد مفاهيم نظرية—بل هي مدمجة في ممارساتنا اليومية في التطوير. على سبيل المثال، يظهر التزامنا بفلسفة Unix في كيفية تنظيمنا لحزم npm الخاصة بنا: وحدات صغيرة ومركزة يمكن تركيبها معًا لحل مشكلات معقدة.

استهداف المطور المكافح والممول ذاتيًا

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

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

المبادئ في التطبيق: قاعدة كود Forward Email

تظهر هذه المبادئ بوضوح في قاعدة كود Forward Email. يكشف ملف package.json الخاص بنا عن اختيار مدروس للاعتمادات، كل منها مختار ليتماشى مع قيمنا الأساسية:

  • حزم تركز على الأمان مثل mailauth لمصادقة البريد الإلكتروني
  • أدوات صديقة للمطور مثل preview-email لتسهيل تصحيح الأخطاء
  • مكونات معيارية مثل مختلف أدوات p-* من Sindre Sorhus

باتباع هذه المبادئ باستمرار مع مرور الوقت، بنينا خدمة يمكن للمطورين الوثوق بها في بنية البريد الإلكتروني الخاصة بهم—آمنة، موثوقة، ومتوافقة مع قيم مجتمع المصادر المفتوحة.

الخصوصية حسب التصميم

الخصوصية ليست فكرة لاحقة أو ميزة تسويقية لـ Forward Email—إنها مبدأ تصميم أساسي يوجه كل جانب من جوانب خدمتنا وكودنا:

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

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

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

نؤمن بأن برامج المصادر المفتوحة تحتاج إلى نماذج مستدامة لتزدهر على المدى الطويل. يشمل نهجنا:

  • الدعم التجاري: تقديم دعم وخدمات مميزة حول أدوات المصادر المفتوحة الخاصة بنا.
  • التراخيص المتوازنة: استخدام تراخيص تحمي حريات المستخدمين واستدامة المشروع.
  • المشاركة المجتمعية: التفاعل النشط مع المساهمين لبناء مجتمع داعم.
  • خرائط طريق شفافة: مشاركة خطط التطوير لدينا للسماح للمستخدمين بالتخطيط وفقًا لذلك.

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

الأرقام لا تكذب: إحصائيات تنزيل npm المذهلة لدينا

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

Top npm Packages by Downloads

Important

بينما نحن فخورون بمساعدتنا في صيانة عدة حزم ذات تنزيلات عالية في نظام JavaScript البيئي، نود أن نعترف بأن العديد من هذه الحزم تم إنشاؤها في الأصل بواسطة مطورين موهوبين آخرين. حزم مثل superagent و supertest تم إنشاؤها في الأصل بواسطة TJ Holowaychuk، الذي كانت مساهماته الغزيرة في المصادر المفتوحة حاسمة في تشكيل نظام Node.js البيئي.

نظرة عامة على تأثيرنا

في فترة شهرين فقط من فبراير إلى مارس 2025، سجلت الحزم الرئيسية التي نساهم فيها ونساعد في صيانتها أرقام تنزيل مذهلة:

Note

هناك عدة حزم أخرى نساعد في صيانتها لكننا لم ننشئها لديها أرقام تنزيل أعلى، بما في ذلك form-data (أكثر من 738 مليون تنزيل)، toidentifier (أكثر من 309 مليون تنزيل)، stackframe (أكثر من 116 مليون تنزيل)، و error-stack-parser (أكثر من 113 مليون تنزيل). نحن فخورون بالمساهمة في هذه الحزم مع احترام عمل مؤلفيها الأصليين.

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

Package Categories Distribution

التأثير اليومي على نطاق واسع

تكشف أنماط التنزيل اليومية عن استخدام مستمر وعالي الحجم، مع ذروات تصل إلى ملايين التنزيلات يوميًا[22]. تعكس هذه الثبات والموثوقية لهذه الحزم — فالمطورون لا يجربونها فقط؛ بل يدمجونها في سير عملهم الأساسي ويعتمدون عليها يومًا بعد يوم.

تُظهر أنماط التنزيل الأسبوعية أرقامًا أكثر إثارة للإعجاب، حيث تحوم باستمرار حول عشرات الملايين من التنزيلات أسبوعيًا[23]. هذا يمثل بصمة ضخمة في نظام جافا سكريبت البيئي، مع تشغيل هذه الحزم في بيئات الإنتاج عبر العالم.

ما وراء الأرقام الخام

بينما إحصائيات التنزيل مثيرة للإعجاب بحد ذاتها، فإنها تروي قصة أعمق عن الثقة التي يضعها المجتمع في هذه الحزم. تتطلب صيانة الحزم على هذا النطاق التزامًا لا يتزعزع بـ:

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

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

دعم النظام البيئي: رعاياتنا مفتوحة المصدر

Tip

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

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

أندريس راينمان: رائد بنية البريد الإلكتروني التحتية

أندريس راينمان هو منشئ Nodemailer، مكتبة إرسال البريد الإلكتروني الأكثر شعبية لـ Node.js مع أكثر من 14 مليون تحميل أسبوعيًا[24]. يمتد عمله إلى مكونات بنية البريد الإلكتروني الحيوية الأخرى مثل SMTP Server، Mailparser، وWildDuck.

تساعد رعايتنا في ضمان استمرار صيانة وتطوير هذه الأدوات الأساسية التي تدعم التواصل عبر البريد الإلكتروني للعديد من تطبيقات Node.js، بما في ذلك خدمة Forward Email الخاصة بنا.

سيندري سورهاس: عبقري حزم الأدوات المساعدة

سيندري سورهاس هو أحد أكثر المساهمين إنتاجًا في المصادر المفتوحة في نظام جافاسكريبت البيئي، مع أكثر من 1000 حزمة npm باسمه. أدواته مثل p-map، p-retry، وis-stream هي لبنات أساسية تُستخدم في جميع أنحاء نظام Node.js البيئي.

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

تعكس هذه الرعايات التزامنا بالنظام البيئي الأوسع للمصادر المفتوحة. نحن ندرك أن نجاحنا مبني على الأساس الذي وضعه هؤلاء المساهمون وغيرهم، ونحن ملتزمون بضمان استدامة النظام البيئي بأكمله.

كشف ثغرات الأمان في نظام جافاسكريبت البيئي

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

إنقاذ Koa-Router

في فبراير 2019، اكتشف نيك مشكلة حرجة في صيانة حزمة koa-router الشهيرة. كما أبلغ على Hacker News، تم التخلي عن الحزمة من قبل الصيانة الأصلية، مما ترك ثغرات أمنية دون معالجة والمجتمع بدون تحديثات.

Warning

الحزم المهجورة التي تحتوي على ثغرات أمنية تشكل مخاطر كبيرة على النظام البيئي بأكمله، خاصة عندما يتم تحميلها ملايين المرات أسبوعيًا.

ردًا على ذلك، أنشأ نيك @koa/router وساعد في تنبيه المجتمع حول الوضع. ومنذ ذلك الحين، يقوم بصيانة هذه الحزمة الحيوية، مما يضمن لمستخدمي Koa وجود حل توجيه آمن ومُدار بشكل جيد.

معالجة ثغرات ReDoS

في عام 2020، اكتشف نيك وعالج ثغرة حرجة في هجوم حجب الخدمة عبر التعبيرات النمطية (ReDoS) في الحزمة واسعة الاستخدام url-regex. هذه الثغرة (SNYK-JS-URLREGEX-569472) قد تسمح للمهاجمين بالتسبب في حجب الخدمة عبر تقديم مدخلات مصممة خصيصًا تسبب تتبعًا رجعيًا كارثيًا في التعبير النمطي.

بدلاً من مجرد تصحيح الحزمة الحالية، أنشأ نيك url-regex-safe، تنفيذًا معاد كتابته بالكامل يعالج الثغرة مع الحفاظ على التوافق مع واجهة برمجة التطبيقات الأصلية. كما نشر مقالًا شاملاً يشرح الثغرة وكيفية التخفيف منها. يُظهر هذا العمل نهجنا في الأمان: ليس فقط إصلاح المشكلات ولكن أيضًا تثقيف المجتمع وتوفير بدائل قوية تمنع حدوث مشاكل مماثلة في المستقبل.

الدعوة لتحسين أمان Node.js و Chromium

كان نيك نشطًا أيضًا في الدعوة لتحسينات الأمان في النظام البيئي الأوسع. في أغسطس 2020، اكتشف مشكلة أمان كبيرة في Node.js تتعلق بكيفية تعامله مع رؤوس HTTP، والتي تم الإبلاغ عنها في The Register.

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

تأمين بنية npm التحتية

في وقت لاحق من نفس الشهر، اكتشف نيك مشكلة أمان حرجة أخرى، هذه المرة في بنية البريد الإلكتروني الخاصة بـ npm. كما ورد في The Register، لم يكن npm ينفذ بشكل صحيح بروتوكولات مصادقة البريد الإلكتروني DMARC و SPF و DKIM، مما قد يسمح للمهاجمين بإرسال رسائل تصيد تبدو وكأنها صادرة من npm.

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

مساهماتنا في نظام Forward Email البيئي

تم بناء Forward Email على عدة مشاريع مفتوحة المصدر حيوية، بما في ذلك Nodemailer و WildDuck و mailauth. قدم فريقنا مساهمات كبيرة لهذه المشاريع، مما ساعد في تحديد وإصلاح مشكلات عميقة تؤثر على تسليم البريد الإلكتروني وأمانه.

تعزيز الوظائف الأساسية لـ Nodemailer

يُعد Nodemailer العمود الفقري لإرسال البريد الإلكتروني في Node.js، وساعدت مساهماتنا في جعله أكثر متانة:

  • تحسينات خادم SMTP: قمنا بإصلاح أخطاء التحليل، ومشكلات معالجة التدفق، ومشاكل تكوين TLS في مكون خادم SMTP[25][26].
  • تعزيزات محلل البريد: عالجنا أخطاء فك ترميز تسلسل الأحرف ومشكلات محلل العناوين التي قد تسبب فشل معالجة البريد الإلكتروني[27][28].

تضمن هذه المساهمات بقاء Nodemailer أساسًا موثوقًا لمعالجة البريد الإلكتروني في تطبيقات Node.js، بما في ذلك Forward Email.

تطوير مصادقة البريد الإلكتروني مع Mailauth

يوفر Mailauth وظائف مصادقة البريد الإلكتروني الحيوية، وقد حسنت مساهماتنا قدراته بشكل كبير:

  • تحسينات التحقق من DKIM: اكتشفنا وأبلغنا أن X/Twitter كان لديهم مشكلات في ذاكرة التخزين المؤقت لنظام أسماء النطاقات تسبب فشل DKIM لرسائلهم الصادرة، وأبلغنا عنها على Hacker One[29].
  • تحسينات DMARC و ARC: أصلحنا مشكلات في التحقق من DMARC و ARC التي قد تؤدي إلى نتائج مصادقة غير صحيحة[30][31].
  • تحسينات الأداء: ساهمنا في تحسينات تزيد من أداء عمليات مصادقة البريد الإلكتروني[32][33][34][35].

تساعد هذه التحسينات في ضمان دقة وموثوقية مصادقة البريد الإلكتروني، مما يحمي المستخدمين من هجمات التصيد والتزوير.

تحسينات رئيسية في Upptime

تشمل مساهماتنا في Upptime:

  • مراقبة شهادة SSL: أضفنا وظيفة لمراقبة انتهاء صلاحية شهادة SSL، مما يمنع توقف الخدمة غير المتوقع بسبب انتهاء الشهادات[36].
  • دعم أرقام SMS متعددة: نفذنا دعمًا لتنبيه عدة أعضاء في الفريق عبر الرسائل النصية عند حدوث حوادث، مما يحسن أوقات الاستجابة[37].
  • إصلاحات فحص IPv6: أصلحنا مشكلات في فحوصات اتصال IPv6، مما يضمن مراقبة أكثر دقة في بيئات الشبكات الحديثة[38].
  • دعم الوضع الداكن/الفاتح: أضفنا دعمًا للسمات لتحسين تجربة المستخدم لصفحات الحالة[39].
  • تحسين دعم TCP-Ping: عززنا وظيفة اختبار الاتصال TCP ping لتوفير اختبار اتصال أكثر موثوقية[40]. هذه التحسينات لا تفيد فقط مراقبة حالة Forward Email ولكنها متاحة لجميع مستخدمي Upptime في المجتمع، مما يبرهن على التزامنا بتحسين الأدوات التي نعتمد عليها.

الرابط الذي يجمع كل شيء معًا: الكود المخصص على نطاق واسع

بينما تعد حزم npm الخاصة بنا ومساهماتنا في المشاريع القائمة مهمة، فإن الكود المخصص الذي يدمج هذه المكونات هو ما يعرض حقًا خبرتنا التقنية. يمثل قاعدة كود Forward Email جهد تطوير استمر لعقد من الزمن، يعود إلى عام 2017 عندما بدأ المشروع كـ free-email-forwarding قبل دمجه في monorepo.

جهد تطوير ضخم

حجم كود التكامل المخصص هذا مثير للإعجاب:

  • إجمالي المساهمات: أكثر من 3,217 التزامًا
  • حجم قاعدة الكود: أكثر من 421,545 سطرًا من الكود عبر ملفات JavaScript وPug وCSS وJSON[^33]

يمثل هذا آلاف الساعات من العمل التطويري، وجلسات تصحيح الأخطاء، وتحسينات الأداء. إنه "الصلصة السرية" التي تحول الحزم الفردية إلى خدمة متماسكة وموثوقة يستخدمها آلاف العملاء يوميًا.

تكامل التبعيات الأساسية

تدمج قاعدة كود Forward Email العديد من التبعيات في كيان سلس:

  • معالجة البريد الإلكتروني: يدمج Nodemailer للإرسال، وSMTP Server للاستقبال، وMailparser للتحليل
  • المصادقة: يستخدم Mailauth للتحقق من DKIM وSPF وDMARC وARC
  • حل DNS: يستفيد من Tangerine لـ DNS-over-HTTPS مع التخزين المؤقت العالمي
  • اتصال MX: يستخدم mx-connect مع تكامل Tangerine لاتصالات خوادم البريد الموثوقة
  • جدولة المهام: يستخدم Bree لمعالجة المهام الخلفية الموثوقة مع خيوط العمل
  • القوالب: يستخدم email-templates لإعادة استخدام أوراق الأنماط من الموقع في اتصالات العملاء
  • تخزين البريد الإلكتروني: ينفذ صناديق بريد SQLite مشفرة بشكل فردي باستخدام better-sqlite3-multiple-ciphers مع تشفير ChaCha20-Poly1305 للخصوصية الآمنة ضد الحوسبة الكمومية، مما يضمن العزل الكامل بين المستخدمين وأن المستخدم فقط هو من يمكنه الوصول إلى صندوق بريده

يتطلب كل من هذه التكاملات اعتبارًا دقيقًا للحالات الحدية، وتأثيرات الأداء، ومخاوف الأمان. النتيجة هي نظام قوي يتعامل مع ملايين معاملات البريد الإلكتروني بشكل موثوق. كما تستفيد تنفيذات SQLite لدينا من msgpackr للتسلسل الثنائي الفعال وWebSockets (عبر ws) لتحديثات الحالة في الوقت الحقيقي عبر بنيتنا التحتية.

بنية DNS مع Tangerine و mx-connect

مكون حاسم في بنية Forward Email هو نظام حل DNS الخاص بنا، المبني حول حزمتين رئيسيتين:

  • Tangerine: تنفيذنا لـ DNS-over-HTTPS في Node.js يوفر بديلاً مباشرًا لمحلل DNS القياسي، مع إعادة المحاولة المدمجة، والمهل الزمنية، وتدوير الخوادم الذكي، ودعم التخزين المؤقت.

  • mx-connect: تنشئ هذه الحزمة اتصالات TCP إلى خوادم MX، تأخذ نطاقًا مستهدفًا أو عنوان بريد إلكتروني، تحل خوادم MX المناسبة، وتتصل بها حسب ترتيب الأولوية.

لقد دمجنا Tangerine مع mx-connect من خلال طلب السحب رقم 4، مما يضمن طلبات DNS عبر HTTP على طبقة التطبيق في جميع أنحاء Forward Email. هذا يوفر تخزينًا مؤقتًا عالميًا لـ DNS على نطاق واسع مع اتساق 1:1 عبر أي منطقة أو تطبيق أو عملية — وهو أمر حاسم لتسليم البريد الإلكتروني الموثوق في نظام موزع.

تأثير المؤسسات: من المصدر المفتوح إلى الحلول الحرجة للمهمة

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

دراسات حالة في بنية البريد الإلكتروني الحرجة للمهمة

التزامنا بالموثوقية والخصوصية ومبادئ المصدر المفتوح جعل من Forward Email الخيار الموثوق به للمنظمات التي لديها متطلبات بريد إلكتروني صارمة:

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

عقد من المصدر المفتوح: نظرة إلى الأمام

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

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

في السنوات القادمة، نلتزم بـ:

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

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

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


  1. إحصائيات تنزيل npm لـ cabin، أبريل 2025 ↩︎

  2. إحصائيات تنزيل npm لـ bson-objectid، فبراير-مارس 2025 ↩︎

  3. إحصائيات تنزيل npm لـ url-regex-safe، أبريل 2025 ↩︎

  4. عدد نجوم GitHub لمستودع forwardemail/forwardemail.net حتى أبريل 2025 ↩︎

  5. إحصائيات تنزيل npm لـ preview-email، أبريل 2025 ↩︎

  6. إحصائيات تنزيل npm لـ superagent، فبراير-مارس 2025 ↩︎

  7. إحصائيات تنزيل npm لـ supertest، فبراير-مارس 2025 ↩︎

  8. إحصائيات تنزيل npm لـ koa، فبراير-مارس 2025 ↩︎

  9. إحصائيات تنزيل npm لـ @koa/router، فبراير-مارس 2025 ↩︎

  10. إحصائيات تنزيل npm لـ koa-router، فبراير-مارس 2025 ↩︎

  11. إحصائيات تنزيل npm لـ url-regex، فبراير-مارس 2025 ↩︎

  12. إحصائيات تنزيل npm لـ preview-email، فبراير-مارس 2025 ↩︎

  13. إحصائيات تنزيل npm لـ cabin، فبراير-مارس 2025 ↩︎

  14. إحصائيات تنزيل npm لـ @breejs/later، فبراير-مارس 2025 ↩︎

  15. إحصائيات تنزيل npm لـ email-templates، فبراير-مارس 2025 ↩︎

  16. إحصائيات تنزيل npm لـ get-paths، فبراير-مارس 2025 ↩︎

  17. إحصائيات تنزيل npm لـ url-regex-safe، فبراير-مارس 2025 ↩︎

  18. إحصائيات تنزيل npm لـ dotenv-parse-variables، فبراير-مارس 2025 ↩︎

  19. إحصائيات تنزيل npm لـ @koa/multer، فبراير-مارس 2025 ↩︎

  20. إحصائيات تنزيل npm لـ spamscanner، فبراير-مارس 2025 ↩︎

  21. إحصائيات تنزيل npm لـ bree، فبراير-مارس 2025 ↩︎

  22. أنماط التنزيل اليومية من إحصائيات npm، أبريل 2025 ↩︎

  23. أنماط التنزيل الأسبوعية من إحصائيات npm، أبريل 2025 ↩︎

  24. إحصائيات تنزيل npm لـ nodemailer، أبريل 2025 ↩︎

  25. https://github.com/nodemailer/smtp-server/issues/155 ↩︎

  26. https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min ↩︎

  27. https://github.com/nodemailer/mailparser/issues/261 ↩︎

  28. https://github.com/nodemailer/nodemailer/issues/1102 ↩︎

  29. https://github.com/postalsys/mailauth/issues/30 ↩︎

  30. https://github.com/postalsys/mailauth/issues/58 ↩︎

  31. https://github.com/postalsys/mailauth/issues/48 ↩︎

  32. https://github.com/postalsys/mailauth/issues/74 ↩︎

  33. https://github.com/postalsys/mailauth/issues/75 ↩︎

  34. https://github.com/postalsys/mailauth/issues/60 ↩︎

  35. https://github.com/postalsys/mailauth/issues/73 ↩︎

  36. بناءً على قضايا GitHub في مستودع Upptime ↩︎

  37. بناءً على قضايا GitHub في مستودع Upptime ↩︎

  38. بناءً على قضايا GitHub في مستودع Upptime ↩︎

  39. بناءً على طلبات السحب في GitHub إلى Upptime ↩︎

  40. بناءً على طلبات السحب في GitHub إلى Upptime ↩︎