Electrobun: وداعاً لـ Node وChromium.. أداء Bun الخالص لمشاريعك

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00هذا هو ElectroBun، وهو إطار عمل لتطبيقات سطح المكتب متعدد الأنظمة ينتج أحجام
00:00:05حزم أصغر بكثير من Electron، ولا يتطلب منك كتابة أي كود بلغة Rust مثل Tauri، ويمنحك
00:00:11أداءً أصلياً بفضل قوة Bun وأغلفة C++ الخاصة به. لذا لا حاجة لـ Node.js أو V8.
00:00:18لكن هل حقيقة أنه يستخدم WebView الأصلي لنظامك بدلاً من استخدام Chromium لجميع
00:00:22أنظمة التشغيل تجعل من الصعب بناء تطبيقات حقيقية متعددة الأنظمة؟
00:00:27اضغط على زر الاشتراك ولندخل في التفاصيل.
00:00:32منذ أن أعلن فريق Bun عن الملفات التنفيذية كاملة المسار (full-stack executables) العام الماضي،
00:00:36جعلني ذلك متحمساً حقاً لوجود بديل جيد لـ Electron.
00:00:40لكن بعد الاستحواذ من قبل Anthropic، والذي سأتحدث عنه لاحقاً في الفيديو،
00:00:44أصبح من المستبعد أن يكون هذا هو التوجه الذي سيسلكه فريق Bun.
00:00:49لذا قام Yoav من Blackboard بإنشاء ElectroBun، وهو أقرب شيء سنحصل عليه لـ Electron مبني على Bun،
00:00:55وقد بنى بالفعل بعض الأشياء الرائعة به مثل أداة هجينة تضم متصفحاً ومحطة طرفية ومحرر أكواد
00:01:01تسمى Colab، وتطبيق لتحويل النص إلى كلام مدعوم بـ Quen، بل إنه جعل لعبة Doom تعمل على
00:01:07تطبيق ElectroBun بقوة WebGPU. دعونا نستعرض كيفية استخدامه في مشروع بسيط.
00:01:12الآن، عند بدء تشغيل ElectroBun لأول مرة، ستحصل على مجموعة من القوالب التي يمكنك
00:01:17استخدامها لرؤية كيفية عمل التطبيق، مثل تطبيق تدوين الملاحظات البسيط هذا، وتطبيق متعدد النوافذ،
00:01:22وحتى تطبيق شريط المهام (tray app) الذي يفتح الوثائق داخل متصفح الويب الخاص بك.
00:01:26ولأن ElectroBun يدعم تقنيات الويب، يمكنك استخدام أي إطار عمل JS تريده
00:01:31من Svelte إلى Vue إلى Solid.js وحتى Angular.
00:01:35لكنني سأقوم بشرح مشروع أساسي من الصفر لمساعدتك على فهمه بالكامل.
00:01:40لدي هنا تطبيق Bun React أساسي، سنقوم بتحويله إلى تطبيق Mac أصلي
00:01:45من خلال قوة ElectroBun. وللقيام بذلك، قمت بالفعل بتثبيت ElectroBun،
00:01:49ولدي بالفعل نص برمجي لبدء بناء نسخة التطوير لـ ElectroBun،
00:01:53بالإضافة إلى نص برمجي لبناء تطبيق ElectroBun النهائي.
00:01:55في الواقع، لا نحتاج إلى “type module” هنا بما أننا لن نستخدمه.
00:01:59داخل المجلد الرئيسي للمشروع، قمت بإنشاء ملف تكوين لـ ElectroBun،
00:02:03والذي يحتوي حالياً على اسم تطبيقي، ومعرف، بالإضافة إلى نقطة دخول لبناء Bun.
00:02:09الآن، لم أقم بإنشاء نقطة الدخول هذه بعد، لذا دعونا نفعل ذلك الآن.
00:02:12داخل مجلد المصدر (source)، قمت بإنشاء مجلد Bun، وسأقوم بإنشاء ملف index.ts،
00:02:17الذي يستدعي فئة نافذة المتصفح ويأخذ العنوان كمعامل (argument)،
00:02:22وهو النص الذي سيظهر في شريط العنوان لدينا، ورابط URL،
00:02:25وهو المكان الذي سيتوجه إليه التطبيق عند تحميله لأول مرة.
00:02:28لذا إذا قمنا بتشغيل Bun start، يجب أن نرى تطبيقنا وهو يفتح ويظهر العنوان الصحيح،
00:02:32لكن لا شيء يظهر هنا. هذا لأنه بعد أن يقوم Bun ببناء التطبيق،
00:02:36أي تحويل TypeScript إلى JavaScript، والقيام بعملية tree shaking وكل شيء آخر،
00:02:41فإنه يضع الملفات في مجلد مختلف، وهو ما نحتاج للإشارة إليه في نقطة الدخول الخاصة بنا.
00:02:46ولم نفعل ذلك بشكل جيد هنا.
00:02:48ولإصلاح ذلك، نحتاج إلى فتح ملف تكوين ElectroBun وإضافة كائن “views” جديد أولاً،
00:02:53والذي سيحتوي على الواجهات الجديدة التي نريد أن يصل إليها ElectroBun.
00:02:57ثم سنعطي واجهتنا اسم “main” وسنعطيها نقطة دخول index.html،
00:03:02والتي تحتوي على واجهة JS الأمامية التي تشير إلى التطبيق،
00:03:06الذي يحمل كل ملفات JavaScript و CSS اللازمة ليعمل هذا بشكل صحيح.
00:03:09يمكنك العثور على مزيد من المعلومات حول إعدادات البناء في وثائق ElectroBun.
00:03:13الآن بعد أن أصبح لدينا واجهتنا الرئيسية داخل مجلد Bun في المصدر،
00:03:17يمكننا فتح ملف index.ts وتحديث الرابط لاستخدام المجلد الرئيسي للواجهات.
00:03:23مما يعني أننا الآن عندما نبني التطبيق، يجب أن نرى كل شيء يعمل كما هو متوقع.
00:03:28يمكننا حتى إعطاء هذا طابع التطبيقات الحقيقية بإضافة هذه الخاصية، والتي ستزيل شريط العنوان.
00:03:34ويمكننا أيضاً استخدام كائن قائمة التطبيق لإعطاء تطبيقنا قائمته المخصصة.
00:03:39وعندما نكون مستعدين، يمكننا بناء التطبيق للإنتاج، مما ينشئ ملف DMG بحجم 17 ميجابايت
00:03:44وينشئ تطبيقاً بحجم 65 ميجابايت. وإذا قارنا ذلك بتطبيق Electron بسيط (Hello World)،
00:03:50يمكنك أن ترى أنه بحجم 271 ميجابايت، أي أكثر من أربعة أضعاف حجم تطبيق ElectroBun.
00:03:56الآن، بما أن تطبيقات ElectroBun تُبنى باستخدام WebView الأصلي للنظام، أي WebKit للماك،
00:04:01و Edge WebView 2 للويندوز و WebKit GTK للينكس، فعليك التفكير في بعض الميزات
00:04:08التي لا تدعمها واجهات الويب عند تطوير تطبيقات متعددة الأنظمة.
00:04:11رغم أن ElectroBun يدعم إطار عمل Chromium المدمج (CEF)، والذي يسمح باتساق
00:04:16عبر الأنظمة، لكن هذا يضيف متصفح Chromium كاملاً إلى تطبيقك، مما يعني تبعات
00:04:22في الحجم والأداء، مما يجعله مماثلاً لـ Electron تقريباً، باستثناء حقيقة أنه يستخدم Bun.
00:04:27هناك أيضاً بعض ميزات ElectroBun الرائعة الأخرى التي لم أتحدث عنها،
00:04:32مثل معمارية iframe خارج العمليات لتشغيل كل WebView مدمج في عمليته المستقلة،
00:04:38ونظام RPC محدد الأنواع لاتصال سلس بين العمليات، وضغط ZSTD وغلاف
00:04:44ذاتي الاستخراج لعمليات تحميل أولية أصغر، وتوقيع الكود، وأكثر من ذلك بكثير.
00:04:48لكن لسوء الحظ، واجهت بعض المشاكل عند بناء التطبيق التجريبي الذي استعرضته سابقاً،
00:04:54مثل نقص الوثائق، خاصة فيما يتعلق بالأمور المحيطة بملف دخول ElectroBun.
00:04:58كانت الصفحة تومض أحياناً عند إعادة التحميل الكامل، واستخدام أدوات الفحص أدى لتخريب
00:05:03تنسيق الصفحة لدي. الآن أعلم أن ElectroBun جديد جداً، فأول مساهمة (commit) تعود لشهر فبراير
00:05:09وبالتأكيد هناك القليل قبل ذلك. وهذا فقط لأقول إنني واثق أن هذه الميزات سيتم إصلاحها
00:05:13في المستقبل. في الواقع، آمل ذلك لأن فريق Bun منذ الاستحواذ عليهم من قبل Anthropic
00:05:19ركزوا أكثر على تحسينات واجهة السطور البرمجية (CLI) والملفات التنفيذية بدلاً من
00:05:25المضي قدماً في بناء بديل لـ Electron. لذا يبدو أن ElectroBun هو أفضل فرصة لنا
00:05:31للحصول على أداة سطح مكتب متعددة الأنظمة مدعومة بـ Bun. وإذا كنت لا تعرف شيئاً عن
00:05:37استحواذ Anthropic على Bun أو تريد فقط معرفة المزيد عن التوجه الجديد لفريق Bun
00:05:42منذ الاستحواذ، شاهد هذا الفيديو من James، الذي يتحدث عن الأمر برمته.
00:05:48انتهى.

Key Takeaway

يعتبر ElectroBun البديل الواعد لـ Electron الذي يستفيد من سرعة Bun لإنشاء تطبيقات سطح مكتب خفيفة الوزن وعالية الأداء مع دعم واسع لتقنيات الويب الحديثة.

Highlights

يعد ElectroBun إطار عمل لتطبيقات سطح المكتب يتميز بحجم حزم أصغر بكثير مقارنة بـ Electron.

يعتمد الإطار على قوة Bun وأغلفة C++ لتوفير أداء أصلي دون الحاجة إلى Node.js أو V8.

يدعم ElectroBun مختلف أطر عمل جافا سكريبت مثل React وVue وSvelte وAngular.

يوفر الإطار معمارية متطورة مثل iframe خارج العمليات ونظام RPC محدد الأنواع لاتصال سلس بين العمليات.

يستخدم WebView الأصلي للنظام (WebKit للماك وEdge للويندوز) لتقليل استهلاك الموارد.

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

Timeline

مقدمة عن ElectroBun ومميزاته الأساسية

يبدأ الفيديو بتقديم ElectroBun كإطار عمل ثوري لتطبيقات سطح المكتب يتفوق على Electron من حيث حجم الملفات النهائية. يوضح المتحدث أن الأداة لا تتطلب تعلم لغة Rust كما هو الحال في Tauri، بل تعتمد على لغة JavaScript مع Bun. يتميز النظام باستخدامه لأغلفة C++ مما يلغي الحاجة تماماً لـ Node.js أو محرك V8 التقليدي. يطرح الفيديو تساؤلاً جوهرياً حول تأثير استخدام WebView الأصلي لكل نظام بدلاً من Chromium الموحد. تهدف هذه المقدمة لبيان مدى كفاءة الأداء الأصلي الذي يطمح ElectroBun لتحقيقه.

نشأة المشروع وتطبيقاته العملية

يستعرض هذا القسم كيف قام المطور Yoav بإنشاء ElectroBun كبديل مجتمعي بعد تغير توجهات فريق Bun الرسمي عقب الاستحواذ عليهم. تم عرض نماذج مذهلة تم بناؤها بالفعل باستخدام الإطار مثل أداة Colab التي تدمج متصفحاً ومحرر أكواد في واجهة واحدة. كما يذكر الفيديو إمكانية تشغيل ألعاب معقدة مثل Doom وتطبيقات تحويل النص إلى كلام باستخدام تقنيات WebGPU. يوضح هذا الجزء مرونة الإطار وقدرته على التعامل مع مهام تقنية متقدمة. يهدف المتحدث هنا لإظهار أن المشروع، رغم حداثته، يمتلك قدرات تشغيلية حقيقية ومثبتة.

دليل عملي لبناء تطبيق باستخدام ElectroBun

يقدم هذا الجزء شرحاً تقنياً مفصلاً لكيفية تحويل تطبيق React بسيط إلى تطبيق سطح مكتب أصلي لنظام الماك. يبدأ المطور بشرح ملفات التكوين (configuration) وتحديد نقاط الدخول لبناء الملفات باستخدام Bun. يتم توضيح كيفية إعداد "views" لربط واجهة المستخدم الرسومية بالكود البرمجي الخلفي بشكل صحيح. يشرح الفيديو أيضاً ميزات تخصيص واجهة المستخدم مثل إزالة شريط العنوان وإضافة قوائم مخصصة للتطبيق. تنتهي هذه العملية بإظهار الفارق الهائل في حجم الملف النهائي الذي وصل إلى 65 ميجابايت فقط مقارنة بـ 271 ميجابايت في Electron.

المعمارية التقنية والمقارنة بين الأنظمة

يتناول هذا القسم الجوانب الهندسية لـ ElectroBun وكيفية تعامله مع WebView الأصلي مثل WebKit وEdge WebView 2. يشير المتحدث إلى وجود خيار لدمج إطار عمل Chromium (CEF) لضمان الاتساق الكامل، رغم أن ذلك يزيد من حجم التطبيق. يتم تسليط الضوء على تقنيات متقدمة مثل معمارية iframe التي تعمل في عمليات مستقلة لتعزيز الأمان والاستقرار. كما يتحدث عن نظام RPC (Remote Procedure Call) الذي يسهل التواصل بين العمليات المختلفة بفاعلية عالية. يتضمن هذا الجزء أيضاً ميزات إضافية مثل ضغط ZSTD وتوقيع الكود البرمجي لضمان الأمان.

التحديات الحالية ومستقبل تطوير Bun

في الختام، يستعرض المتحدث بصدق بعض العقبات التي واجهته أثناء التجربة مثل نقص الوثائق البرمجية وبعض المشاكل البصرية في أدوات الفحص. يوضح أن المشروع لا يزال حديثاً جداً حيث تعود أولى مساهماته لشهر فبراير، مما يبرر وجود بعض الأخطاء التقنية. يربط الفيديو بين أهمية ElectroBun وبين تحول تركيز فريق Bun الأساسي نحو تحسين أدوات السطور البرمجية بعد الانضمام لشركة Anthropic. يؤكد المتحدث في النهاية أن ElectroBun هو الأمل الأكبر للمطورين الراغبين في بديل خفيف لـ Electron يعتمد على Bun. ينتهي الفيديو بتوجيه المشاهدين لمصادر إضافية لفهم التوجه الجديد لبيئة عمل Bun.

Community Posts

View all posts