مقابلة مع Flar2، مطور ElementalX Kernel الجزء الأول

نجري مقابلة مع flar2، مطور ElementalX kernel ونتعمق في موضوعات مثل حياته الشخصية وأعمال التطوير والمزيد.

لقد أجريت مؤخرًا مقابلة مع flar2، الرجل الذي يقف وراء نواة ElementalX الشهيرة، وتطبيقه الأكثر شهرة ElementalX Kernel Manager. لقد أصدر نسخة من النواة الخاصة به لمجموعة واسعة من الأجهزة، بما في ذلك ون بلس وأجهزة نيكزس.

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


مرحبًا يا من هناك! عرف بنفسك أولاً قبل أن نبدأ في طرح الأسئلة.

اسمي آرون سيجارت، المعروف أيضًا باسم flar2. يعرفني معظم الناس كمطور لـ ElementalX kernel. لدي أيضًا بعض التطبيقات.

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

لقد بدأت مع أجهزة الكمبيوتر عندما كنت صغيرا جدا. كان جهاز الكمبيوتر الأول الخاص بي هو Texas Instruments TI-99/4A. لقد تعلمت كيفية البرمجة بلغة BASIC وحفظت برامجي على شريط كاسيت (نعم، أنا كبير في السن). ثم اشترت عائلتنا 286 نسخة من IBM، وابتعدت عن البرمجة في تلك المرحلة لأن هذا كان من قبل كان الإنترنت معروفًا على نطاق واسع ولم يكن لدي أي موارد أو حتى أعرف أي شخص آخر لديه حاسوب. لقد بدأت علوم الكمبيوتر في الجامعة، لكنني رسبت في السنة الأولى. لم أذهب أبدًا إلى الفصل لأنني كنت مشغولًا جدًا بالاستمتاع والعزف مع فرقتي. عدت لاحقاً إلى المدرسة وحصلت على الدكتوراه في علم الاجتماع. خلال فترة دراستي، أصبحت مهتمًا بنظام التشغيل Linux والمصادر المفتوحة، لكنني لم أتدخل أبدًا في البرمجة الجادة. لقد ساهمت بأجزاء صغيرة هنا وهناك، ولكن في الغالب قمت فقط بإعداد نصوص وبرامج صغيرة لأغراضي الخاصة. ربما قمت ببناء أول نواة لينكس في عام 2002 تقريبًا. في ذلك الوقت، لم أكن أكتب التعليمات البرمجية الخاصة بي، بل قمت فقط بتجربة تصحيحات مختلفة وإنشاء خيارات لتعزيز الأداء. كنت مهتمًا أكثر ببناء أجهزة الكمبيوتر ورفع تردد التشغيل ومحاولة جعل الأجهزة تقوم بأشياء لم يكن من المفترض أن تفعلها بشكل عام.

هل أثار أي تطوير آخر غير تطوير تطبيقات Android وتطوير kernel اهتمامك؟

ليس حقًا، لقد وجدت أدوات جيدة متاحة تقريبًا لكل ما أحتاج إلى القيام به على أجهزة الكمبيوتر. السبب الذي دفعني إلى بدء العمل على النوى والتطبيقات لنظام Android هو أنني شعرت أن هناك حاجة إلى ميزات معينة ومساحة لتحسين الأدوات الحالية. على سبيل المثال، قمت بإنشاء Button Mapper لأنني أردت أن يقوم المفتاح الرئيسي على هواتف Samsung بالمزيد، ولم يعجبني المفتاحان المعكوسان والمفتاحان الأخيران. لقد قمت بإنشاء DevCheck لأن تطبيقات معلومات النظام الأخرى لم تعرض المعلومات التي أردت رؤيتها بطريقة واضحة وموجزة. يضيف ElementalX kernel ميزات جديدة للأجهزة ويتحكم EX Kernel Manager في هذه الميزات ويضيف بعض الأدوات التي أستخدمها لتسهيل عملية التطوير. أحب حل المشكلات، ويعد إجراء هندسة عكسية للأشياء أو إضافة ميزات أجهزة جديدة إلى الهاتف تحديًا ممتعًا.

كيف تواصلت مع تطوير Android، وتحديدًا تطوير kernel؟

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

نظرًا لأنني قمت بتعديل كل شيء تقريبًا وتعديله، اكتشفت XDA على الفور ووجدت أن هواتف Android لا تعمل بنظام التشغيل Linux فحسب، بل يمكن رفع تردد التشغيل أيضًا. لقد كنت من مستخدمي Linux لفترة طويلة، لذلك قمت بتقسيم إحدى النوى وأصبحت مدمن مخدرات. سرعان ما حصلت على جهاز لوحي رخيص الثمن من شركة Acer وبدأت في العبث بهذا الجهاز والنواة لأنني أردت أن يحتوي على USB OTG. تبين أن الأجهزة لم تكن قادرة، ولكن هكذا بدأت تعلم المزيد عن الأجهزة المحمولة. لم أقم مطلقًا بإصدار نواة لجهاز LG أو Acer Tablet أو One V علنًا، ولكني قمت ببناء نواة خاصة بي لكل منها وقمت بتثبيت ذاكرة القراءة فقط (ROM) المخصصة، والتي كانت ضرورية في تلك الأيام، نظرًا لأن Android لم يكن ناضجًا بعد.

لقد تجاوزت One V سريعًا واستبدلت بهاتف HTC One XL، وذلك عندما وُلدت ElementalX.

ما هو هدف ElementalX في البداية، وكيف تغير ذلك في السنوات الأخيرة؟

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

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

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

كيف أثرت التغييرات التي طرأت على نظام Android في السنوات القليلة الماضية على عملك؟

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

من الواضح أن منع تعديل قسم النظام يعد أمرًا أساسيًا لحماية سلامة الجهاز. أتذكر عندما بدأت شركة HTC في القيام بذلك في عام 2012 أو 2013 وبدا الأمر وكأنه نهاية العالم. في ذلك الوقت، كانت الكتابة إلى /system ضرورية للجذر، وتحرير build.prop، وتثبيت التطبيقات المميزة، وإزالة bloatware وعمليًا كل التعديلات الشائعة. تضمنت العديد من التخصيصات في ذلك الوقت أشياء مثل إزالة الديودكسينغ وتعديل إطار العمل. لفترة طويلة، لم يكن مصدر kernel متاحًا من HTC، لذلك قمت بإنشاء وحدة kernel لتعطيل حماية الكتابة في النظام في kernel المخزون، والتي أصبحت مشهورًا بها لأول مرة كمطور. ولكن مع مرور الوقت، عندما أصبحت وسائل الحماية مثل Verity جزءًا أساسيًا من Android، فقد فرضت الابتكار والأفضل حلول مثل جذر Chainfire غير النظامي والآن يوجد Magisk الذي يقوم بكل أنواع الأشياء بدون نظام.

هناك مشكلة كبيرة أخرى وهي SELinux، والتي تسببت في توقف الكثير من التطبيقات عن العمل. لقد كرهه العديد من المستخدمين وما زال هناك حتى يومنا هذا أشخاص يستخدمون SELinux في وضع متساهل، وهي فكرة سيئة للغاية. أود أن أقول إن SELinux هي الميزة الأمنية الأكثر أهمية في Android. ولإعطاء مثال على أهمية SELinux، عندما حصلت على Pixel XL لأول مرة، لم يكن هناك جذر متاح، ولكن استغلال Dirty Cow كان يتصدر الأخبار. لقد كنت متشوقًا لبدء تطوير النواة، وهو ما يعني البحث في ملفات sysfs أو تعديلها، وهو ما يتطلب الوصول إلى الجذر. لقد قمت بتجميع أحد إثباتات مفاهيم Dirty Cow وتمكنت من تشغيل الأوامر كجذر، لكن SELinux منعني من القيام بأي شيء مثير للاهتمام. اضطررت إلى تعديل ملف boot.img لجعل SELinux متساهلاً. ربما تمكنت من تحقيق الوصول الكامل دون تعديل النواة، لكن الأمر كان سيستغرق ساعات عديدة. كل هذا لنقوله، اترك تطبيق SELinux، فهو خط الدفاع الرئيسي ضد البرامج الضارة. تعلم كيفية استخدام sepolicy-inject لتغيير سياسات محددة حسب الحاجة.

عندما ظهر Nougat، أصبح كل من /sys و/proc تقريبًا غير مرئيين في البداية لتطبيقات المستخدم. لقد كان الجذر دائمًا ضروريًا لإجراء التغييرات، ولكن فجأة أصبح الجذر ضروريًا ببساطة لقراءة /sys و/proc. هناك بالتأكيد معلومات في أنظمة الملفات تلك يمكن استخدامها لاستغلال جهاز ما، لذلك كان من الضروري إضافة قيود. ولكن هناك أيضًا الكثير من المعلومات التي يجب أن يتمكن المستخدمون من رؤيتها. لماذا يجب أن يُطلب الوصول إلى الجذر لرؤية جدولة الإدخال/الإخراج الحالية، أو تردد وحدة معالجة الرسومات، أو نوع أجهزة اللوحة؟ اضطررت إلى إجراء الكثير من التغييرات على DevCheck للتعامل مع هذا الأمر، وكان الكثير من المستخدمين في حيرة من أمرهم بشأن سبب عدم توفر المعلومات بعد التحديث إلى Nougat. في النهاية، تم رفع بعض القيود المفروضة على مسارات sysfs.

بخلاف ذلك، من منظور تطوير التطبيقات، تعجبني معظم تغييرات واجهة برمجة التطبيقات (API) لنظام Android، على الرغم من أنها تجبرني على إجراء الكثير من التغييرات على تطبيقاتي. هذه التغييرات عادة ما تكون للأفضل.


تحقق من الجزء 2 من هذه المقابلة!