فرانسيسكو فرانكو من مقابلة فرانكو كيرنيل الجزء الأول

الجزء الأول من مقابلة مع فرانسيسكو فرانكو، مطور برنامج Franco Kernel والتطبيقات الأخرى للعديد من الأجهزة المختلفة.

لقد سعدت مؤخرًا بإجراء مقابلة مع الرجل الذي يقف وراء واحدة من أكثر نواة Android شهرة على الإطلاق، وهي Franco Kernel. حاليًا، النواة متاحة على العديد من الأجهزة المختلفة، بما في ذلك أجهزة Nexus وOnePlus المختلفة وأجهزة Google Pixel / Pixel XL.

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


أنا آدم كونواي هنا على XDA لإجراء مقابلة مع فرانسيسكو فرانكو، مطور Franco Kernel! هل تريد أن تقدم نفسك؟

بالتأكيد، اسمي فرانسيسكو، كما قلت للتو، وأعتقد أنني عضو في XDA منذ مليون عام بالفعل! تم القيام بكل أنواع الأشياء. حبات, تطبيقات، ومؤخرًا كنت أتراجع قليلاً عن استخدام النواة لأنها تصبح مرهقة بعد فترة من الوقت، لكنني لا أزال بكامل طاقتي في معظم أجهزتي.

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

لقد كنت دائمًا شغوفًا بأجهزة الكمبيوتر، كما أعتقد مثل أي طفل أثناء نشأتي. بعد أن بلغت 18 عامًا وقررت أن أذهب إلى الجامعة مثل أي شخص آخر، وأعتقد أنني كنت آخذها علوم الكمبيوتر أو شيء من هذا القبيل ولكن بعد عام أو نحو ذلك، أدركت أن هذا ليس ما كنت شغوفًا به بالفعل عن. بعد ذلك العام، بدأت توقعاتي في الانخفاض لأن الأمر كله كان مجرد كلام وليس عمل، وقد كنت كذلك بدأت أشعر بالملل - ليس لأنني كنت أفضل من أي شخص آخر، بل كنت متوسطًا فقط - ولكن بسبب الانضباط الفعلي لم تكن كذلك بالضبط ماذا اردت. لذلك تحدثت مع والدي، وكانا يدركان أنني لم أكن سعيدًا جدًا بذلك. خلال عيد الميلاد عام 2010، حصلت على أول هاتف يعمل بنظام Android. هاتف LG P500، وهو هاتف اقتصادي ورخيص جدًا، لكنني كنت أعلم أنه يعمل بنظام Linux، وكان تخصصي المفضل في الجامعة هو هندسة الكمبيوتر أو شيء من هذا القبيل، أنظمة التشغيل. وكنا نتعلم القليل من الصدفة ونتحدث قليلاً عن نواة Linux وماذا كان جزءًا من النواة وكل وسائل الاتصال الموجودة في النواة ونظام التشغيل الفعلي وما إلى ذلك كان مبهر لي. وبعد ذلك بدأت في إعادة بناء نواة Linux لجهاز الكمبيوتر المحمول القديم الخاص بي مع صديق. لقد عطلنا أجهزة الكمبيوتر المحمولة الخاصة بنا حوالي 100 مرة أثناء القيام بذلك، لكننا تعلمنا من خلال هذه العملية. وبعد ذلك بدأت اللعب بجهاز LG الخاص بي، وأعتقد أن أول شيء فعلته هو محاولة تحسين الأداء قليلاً لأن هذا الجهاز كان في الواقع سيئًا للغاية. لذا فإن أفضل شيء يمكنني فعله هو الاطلاع على معلمات Linux kernel القياسية الفعلية إدارة الذاكرة والأشياء، وحاول فقط العثور على شيء أفضل قليلًا مما كان موجودًا بالفعل هناك. لقد استمتعت قليلا بعد ذلك.

أعتقد أنني لم أخبر هذا من قبل في مقابلاتي السابقة، ولكن في ذلك الوقت كان هذا الجهاز يستخدم نظام ملفات قديم يسمى YAFFS - وهذا يعني فلاش آخر نظام الملفات، لكنه كان بطيئًا جدًا عندما حاولنا التثبيت مثل قرص مبادلة مدعوم بذاكرة الوصول العشوائي (RAM)، لذلك، لا أتذكر التفاصيل، لكننا قمنا بكل أنواع مختلفة تجارب مع ذلك وانتهى بنا الأمر بتركيب Dalvik أعلى ذاكرة الوصول العشوائي (RAM) التي كان لا بد من إعادة بنائها في كل عملية إعادة تشغيل لأنه، كما تعلم، تختفي ذاكرة الوصول العشوائي (RAM) كل مرة الوقت الذي نعيد فيه التشغيل. ولكنه جعل فتح التطبيقات وتشغيل المعايير أسرع بكثير، لذلك كنا سعداء. وبعد ذلك، بدأت بالتعمق قليلاً، ومحاولة تجميع مصادر نواة LG للجهاز، وقمت بكل أنواع الأخطاء الأحكام وجميع أنواع الأخطاء - شبكة Wi-Fi، أيًا كانت - كل ما يمكن أن تتخيله من شخص ليس لديه خبرة. كان هذا ممتعًا، لقد تعلمت الكثير. أعتقد أنه بعد عام أو ستة أشهر من القيام بذلك، أصبحت أكثر تركيزًا بعض الشيء، وكنت أعرف بشكل أفضل قليلاً ما يجب عليّ الحصول عليه للحصول على التنزيلات. وهذا ما نريده جميعا في نهاية اليوم. وبعد ذلك، تمكنت من الحصول على بعض التبرعات والانتقال إلى أجهزة أخرى. أعتقد أن Nexus S، ثم Galaxy Nexus، وبعد تلك الفترة، تمكنت من إصدار أول تطبيق لي. أعتقد أنني كنت محظوظًا جدًا وتمكنت من تمويل نفسي لشراء أجهزة جديدة، وانفجرت الأمور من هناك. لذا، أعتقد في نهاية المطاف أنني مدين لكل شيء، لن أقول XDA ولكن المنصة التي توفرها لنا XDA.

والمجتمع يقف وراء ذلك وكل ذلك.

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

لا يوجد فيديو، والناس لا يرون البندقية موجهة نحو رأسك، لا بأس.

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

حسنًا، أعتقد أن رؤيتك كما بدأت مع... وكان LG P500 ذلك؟

نعم نعم.

منذ كم سنة مضت كان هذا؟ لأن ذلك يجب أن يكون حول الإصدارات الأصلية من Android، أليس كذلك؟ حول Froyo أو شيء من هذا؟

نعم، تم شحن ذلك مع Froyo وتمت ترقيته إلى Gingerbread بعد شهرين. أعتقد أن هذا الجهاز كان في عام 2010، بداية عام 2011، وربما في وقت سابق. أعلم أنه تم إنشاء حسابي على XDA في ديسمبر 2010 ولكن كان لدي الجهاز مسبقًا. لذلك أعتقد أنه ربما في ذلك الوقت تقريبًا، نعم.

كيف تطور أداء Android منذ ذلك الحين؟ مثل كيف تغير الأمر بالنسبة لك أثناء كتابة النوى في ذلك الوقت وكتابتها الآن؟ وأفترض ما هي آرائكم حول التغييرات.

من ناحية Kernel، أعتقد أننا تطورنا باستخدام Linux kernel الفعلي وجميع التغييرات التي أراد فريق Android إجراؤها بالفعل يتم تنفيذه لإصدار Android معين، لذا فهم يحددون معظم الميزات الخاصة التي ستحتوي عليها النواة، بناءً على ما يريدون لشحن. لكنني أعتقد أن الأداء الفعلي، والمزيد من النوى يساعد كثيرًا لأنه في ذلك الوقت لم يكن لديك أي طريقة حقيقية لذلك انقل هذا الموضوع (كذا)، أو تخيل طلبات الشبكة من خلال مؤشر ترابط في الخلفية، أو على الأقل في الوقت الفعلي الفعلي خيوط. أعتقد أن هذا كان أكبر تغيير على مر السنين، حيث كان لديك المزيد من الطرق لنشر عملك، ولم يكن نظام Android يتباطأ فحسب لأن الجميع يحاولون الاستيلاء على هذا القدر الصغير من حصة وحدة المعالجة المركزية. أكثر من أي شيء أعتقد أنه متعدد النواة وخيوط متعددة حقيقية مدعومة بنظام Linux. اعتقدت أن هذا [كان] التغيير الأكبر.

حسنًا، ما رأيك إذن في HMP وEAS؟ لأنه من الواضح أن EAS جديد فقط ولا يُستخدم إلا في عدد قليل من الأجهزة - مثل استخدام Google Pixel، أليس كذلك؟

نعم، أستخدم حاليًا هاتف Galaxy S8، ولكن لدي هاتف Pixel أيضًا. لا أعرف كليهما في هذه التفاصيل [الكثيرة]، فهما مجرد تطبيقات مختلفة لكيفية عمل الجهاز متعدد المجموعات بناءً على ما يحدث على الجهاز في أوقات معينة. يعد تشغيل مجموعتين مختلفتين باستهلاكين مختلفين للطاقة أمرًا صعبًا للغاية. يجب عليك تلبية توقعات المهام التي تتحرك لأعلى ولأسفل، وهناك زمن انتقال متضمن هناك، وكان HMP أول تطبيق حقيقي لـ بنية حقيقية متعددة المجموعات لـ ARM، لأنه إذا كنت أتذكر بشكل صحيح، قبل أن يتم استخدام HMP في العالم الحقيقي، كان لدى Samsung بنية أولية التنفيذ حيث كنت تستخدم النوى الأربعة الأولى، مثل النوى منخفضة الطاقة، أو أربعة نوى عالية الأداء ولكنها لم تعمل مطلقًا نفس الوقت. ولكن بعد ذلك باستخدام HMP، أصبحت النوى جاهزة للاستخدام في أي وقت وانتقلت المهام من مجموعة إلى أخرى والعكس صحيح وقد نجح ذلك خارجًا، لكن لم يكن لديك الكثير من المعلومات من المجدول لإظهار ذلك للمحافظ ليقرر فعليًا نوع التردد الذي سيتم استخدامه في ذلك وقت محدد، لذلك كان عليك التعامل مع، مثل محاولة فهم ما يحدث في [حوالي] 20 ثانية ثم بناءً على ما حدث هناك، عليك أن تقرر ما يجب فعله يفعل. EAS، يتعلق الأمر أكثر بفهم ما سيحدث في المستقبل واتخاذ القرار في الوقت الفعلي بناءً على ذلك مخرجات الطاقة لكل نواة، ثم إنها مجموعة من الحسابات والأشياء المعقدة في خلفية

مثل نماذج الطاقة وما إلى ذلك لدعم كل شيء.

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

لذا، عليك أن تعرف بالضبط ما تفعله، فهو ليس وظيفة رجل واحد؟

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

إذن أنت تعتبره تحسنا؟

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

أعتقد أنه إذا كان هناك المزيد من اعتماد EAS في المستقبل، فكيف ترى أن ذلك يؤثر على تطورك فيما يتعلق بالنوى؟ هل ستظل متمسكًا بـ HMP أم ستختار نماذج الطاقة التي تم إصدارها بالفعل؟ على سبيل المثال، في هاتف OnePlus 3، يقوم [مطورو ذاكرة القراءة فقط] بإعادة استخدام نموذج الطاقة من Google Pixel لـ EAS. هل يمكن أن ترى نفسك تفعل شيئا من هذا القبيل؟

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

فيما يتعلق بالحديث عن المستقبل مع Android وkernels، ما رأيك في إصدار Android Oreo الأخير؟ هل تعتقد أن التغييرات جيدة؟ هل نظرت إلى أي من التزامات kernel الجديدة؟

لم يكن هناك الكثير من التغييرات على جانب النواة في Nexus 6P وNexus 5X، فقط إصلاحات بسيطة هنا وهناك. على Google Pixel، كانوا يكررون تنفيذ EAS، وأمضوا بعض الوقت في تحسين قسم الموثق، لأن الموثق الآن، جنبًا إلى جنب مع Project ثلاثة أضعاف، إنه يشبه تقسيم الحزم المختلفة، لذا يتعين عليهم المرور عبر 50 أو 100 تصحيح مختلف لتحسين الرابط وفصله إلى أجزاء مختلفة العمليات. بخلاف ذلك، كان مجرد عمل عادي لإصدار كبير. عندما يكون هناك إصدار جديد للنظام الأساسي، فإنك عادةً لا تعبث بالنواة كثيرًا، لأن العبث kernel أنت في الواقع بحاجة إلى الكثير من ضمان الجودة، إذا قمت أحيانًا بتغيير شيء ما تسمعه فإنه يؤثر على شيء آخر النظام الفرعي. هذا ما يفعلونه عادةً، ولهذا السبب لا يكون لديك إصدار kernel يتأرجح بين ترقيات النظام الأساسي. إنه مجرد الكثير من العمل. عادةً لا يستحق كل هذا العناء، لكن نعم، كان الأمر في الغالب عبارة عن أشياء مجلدة، وقليلًا من برنامج الجدولة، والإصلاحات الأمنية المعتادة. لقد مررت بهم جميعًا، لكن لم يلفت أي شيء انتباهي حقًا. تم لفت انتباهي فقط إلى الموثق.

آه حسنًا، فقط الأشياء القياسية حقًا.

نعم، إنهم معقدون للغاية ولا يسألونني عن تفاصيل!

هذا موضوع مختلف تمامًا، ما رأيك في F2FS مقابل ext4؟ لأنك ترى الكثير من الناس سيقولون أن F2FS غير مستقر ويتسبب في حدوث مشكلات،أنا فقط أتساءل ما هو رأيك في ذلك.

لا أعرف أيًا من التفاصيل لأن أنظمة الملفات صعبة للغاية، وهناك الكثير من الأجزاء المتحركة هنا وهناك. سأقتبس فقط من أحد مهندسي Google قوله إنه بناءً على اختباره، فإن F2FS لا يعمل بشكل أسرع من ext4، وفوق كل ذلك عندما كانوا يختبرون أشياءً لـ Google Pixel، ولم يقدم F2FS الدعم لـ... أعتقد أنه كان تشفيرًا لكتلة الملفات، بينما كان ext4 للدعم هو - هي. وهذا وحده يعني - فقط قم بإلغائه. عليك أن تفكر في شيئين، لقد تم العمل على ext4 لمدة 20 عامًا تقريبًا مع الكثير من المهندسين الأذكياء من شركات مختلفة وهم يعرفون ما يفعلونه. تم تطبيق F2FS، إذا كنت أتذكر بشكل صحيح، بواسطة Samsung. إنه نظام ملفات جديد تمامًا، لذا فإن الأمور المعقدة مثل هذه تستغرق وقتًا للتحسين والتكرار، مثلك تمامًا يمكنهم رؤيته من خلال نظام ملفات Apple الذي تم إصداره للتو على نظام التشغيل iOS، وسيفعلون الشيء نفسه مع نظام التشغيل Mac نظام التشغيل. تستغرق الأمور وقتًا، وتحتاج إلى فريق ضخم للقيام بهذه الأمور بشكل صحيح. أنا مؤيد كبير لمبدأ "إذا كان يعمل، فلا تلمسه" وما لدينا الآن - إنه يعمل، ولا أعتقد أنه يسبب لك أي مشاكل في الأداء لذا لا أرى سببًا لذلك الفوضى معها.

آه حسنًا، هذا عادل بما فيه الكفاية! ماذا عن SDCardFS يجري التحول إلى من FUSE؟ ماذا سيكون رأيك في ذلك؟

حدث ذلك لأن نظام ملفات FUSE الأقدم كان أحد أسوأ الأشياء التي حدثت على Android. كان الأداء سيئًا، وكان هناك الكثير من مكالمات النظام بين النواة ومساحة المستخدم والآن مع SDCardFS تم تنفيذ الأمر بشكل صحيح. إنه نظام ملفات عادي للتعامل مع هذا، ومرة ​​أخرى لا أعرف التفاصيل لأنه أمر معقد للغاية، ولكن ما قمت به إن القراءة والمشاهدة والاستماع إلى ملفات podcast المختلفة من فريق Android هي أنها أصلحت جميع المشكلات القديمة نظام. لقد كان ذلك فظيعًا للغاية، وكان الأداء فظيعًا.


تحقق من الجزء 2 بالضغط على هذا الزر!