हम एलिमेंटलएक्स कर्नेल के डेवलपर फ़्लार2 का साक्षात्कार लेते हैं और उनके व्यक्तिगत जीवन, विकास कार्य और बहुत कुछ जैसे विषयों पर चर्चा करते हैं।
मुझे हाल ही में प्रसिद्ध एलिमेंटलएक्स कर्नेल और उसके और भी अधिक लोकप्रिय एलिमेंटलएक्स कर्नेल मैनेजर एप्लिकेशन के पीछे के व्यक्ति फ़्लार2 का साक्षात्कार लेने का मौका मिला। उन्होंने विभिन्न प्रकार के उपकरणों के लिए अपने कर्नेल का एक संस्करण जारी किया है वनप्लस और नेक्सस डिवाइस।
इस भाग में, हम एंड्रॉइड प्रदर्शन बाधाओं पर फ़्लार2 के विचारों और उनके निजी जीवन के बारे में पूछते हैं! आप जांच कर सकते हैं इस साक्षात्कार का भाग 2 यहाँ.
सुनो! इससे पहले कि हम प्रश्नों पर उतरें, सबसे पहले अपना परिचय दें।
मेरा नाम आरोन सेगर्ट है, जिसे फ़्लार2 के नाम से भी जाना जाता है। अधिकांश लोग मुझे एलिमेंटलएक्स कर्नेल के डेवलपर के रूप में जानते हैं। मेरे पास कुछ ऐप्स भी हैं.
क्या आपको पहले से कंप्यूटर और विकास का कोई अनुभव था? जैसे कंप्यूटर विज्ञान की डिग्री या कुछ और?
जब मैं बहुत छोटा था तब मैंने कंप्यूटर से शुरुआत की। मेरा पहला कंप्यूटर टेक्सास इंस्ट्रूमेंट्स TI-99/4A था। मैंने बेसिक में कोड करना सीखा और अपने प्रोग्राम को कैसेट टेप पर सहेजा (हां, मैं बूढ़ा हो गया हूं)। फिर हमारे परिवार ने 286 आईबीएम क्लोन खरीदा, और मैं उस समय कोडिंग से दूर हो गया क्योंकि यह पहले था इंटरनेट व्यापक रूप से जाना जाता था और मेरे पास कोई संसाधन नहीं था या मैं किसी और को जानता भी नहीं था जिसके पास यह था कंप्यूटर। मैंने विश्वविद्यालय में कंप्यूटर विज्ञान शुरू किया, लेकिन मैं पहले वर्ष में असफल हो गया। मैं वास्तव में कभी कक्षा में नहीं गया क्योंकि मैं मौज-मस्ती करने और अपने बैंड के साथ कार्यक्रम बजाने में बहुत व्यस्त था। बाद में मैं स्कूल लौटा और समाजशास्त्र में डॉक्टरेट की उपाधि प्राप्त की। एक छात्र के रूप में अपने समय के दौरान, मुझे लिनक्स और ओपन सोर्स में रुचि हो गई लेकिन मैं कभी भी अधिक गंभीर प्रोग्रामिंग में नहीं गया। मैंने यहां-वहां छोटे-मोटे योगदान दिए, लेकिन ज्यादातर सिर्फ अपने उद्देश्यों के लिए स्क्रिप्ट और छोटे कार्यक्रम ही बनाए। मैंने संभवतः अपना पहला लिनक्स कर्नेल 2002 के आसपास बनाया था। उस समय, मैं अपना स्वयं का कोड नहीं लिख रहा था, केवल विभिन्न पैच के साथ प्रयोग कर रहा था और प्रदर्शन को बढ़ावा देने के लिए विकल्प बना रहा था। मैं कंप्यूटर बनाने, ओवरक्लॉकिंग करने और आमतौर पर हार्डवेयर से ऐसे काम कराने की कोशिश कर रहा था जो उसे नहीं करना चाहिए था।
क्या एंड्रॉइड ऐप डेवलपमेंट और कर्नेल डेवलपमेंट के अलावा किसी अन्य डेवलपमेंट में आपकी रुचि है?
वास्तव में नहीं, मुझे कंप्यूटर पर करने के लिए आवश्यक लगभग हर चीज़ के लिए अच्छे उपकरण उपलब्ध हैं। मैंने एंड्रॉइड के लिए कर्नेल और ऐप्स पर काम करना शुरू कर दिया क्योंकि मुझे लगा कि मौजूदा टूल में सुधार के लिए कुछ सुविधाओं और गुंजाइश की आवश्यकता है। उदाहरण के लिए, मैंने बटन मैपर बनाया क्योंकि मैं चाहता था कि सैमसंग फोन पर होम कुंजी अधिक काम करे, और मुझे उलटी हुई बैक और रीसेंट कुंजी पसंद नहीं थी। मैंने डेवचेक बनाया क्योंकि अन्य सिस्टम जानकारी ऐप्स वह जानकारी नहीं दिखाते थे जो मैं स्पष्ट और संक्षिप्त तरीके से देखना चाहता था। एलिमेंटलएक्स कर्नेल नई हार्डवेयर सुविधाएँ जोड़ता है और EX कर्नेल प्रबंधक उन सुविधाओं को नियंत्रित करता है और कुछ उपकरण जोड़ता है जिनका उपयोग मैं विकास को आसान बनाने के लिए करता हूँ। मुझे समस्याएं हल करना पसंद है और चीजों को रिवर्स इंजीनियर करना या फोन में नई हार्डवेयर सुविधाएं जोड़ना एक मजेदार चुनौती है।
आप एंड्रॉइड विकास, विशेष रूप से कर्नेल विकास के संपर्क में कैसे आए?
मैं हमेशा सेल फोन से नफरत करता था और लंबे समय तक इसका विरोध करता रहा। मैं और मेरी पत्नी न्यूनतम योजना के साथ एक बुनियादी फ्लिप फोन साझा करते थे जिसका उपयोग मुख्य रूप से आपात स्थिति के लिए किया जाता था। 2012 में, हमारे घर में आग लग गई और हम लगभग तीन महीने तक बाहर रहे। हमारी सभी उपयोगिताएँ काट दी गईं, और हमने अपनी लैंडलाइन को फिर से कनेक्ट नहीं करने का निर्णय लिया, इसलिए हमें एक स्मार्टफोन मिला, जो मुझे लगता है कि एलजी पी-कुछ था। मुझे एहसास हुआ कि यह एक मिनी-कंप्यूटर जैसा था और मैंने फैसला किया कि मुझे अपने खुद के मिनी-कंप्यूटर की ज़रूरत है, इसलिए मैंने एक एचटीसी वन वी खरीदा।
चूँकि मैं लगभग हर चीज़ में छेड़छाड़ और संशोधन करता हूँ, मैंने तुरंत XDA की खोज की और पाया कि एंड्रॉइड फोन न केवल लिनक्स चलाते हैं, बल्कि उन्हें ओवरक्लॉक भी किया जा सकता है। मैं लंबे समय से लिनक्स उपयोगकर्ता रहा हूं, इसलिए मैंने एक कर्नेल को फोर्क किया और आदी हो गया। मुझे जल्द ही एक सस्ता एसर टैबलेट मिल गया और मैंने उस हार्डवेयर और कर्नेल के साथ खिलवाड़ करना शुरू कर दिया क्योंकि मैं चाहता था कि इसमें यूएसबी ओटीजी हो। पता चला कि हार्डवेयर सक्षम नहीं था, लेकिन इस तरह मैंने मोबाइल हार्डवेयर के बारे में और अधिक सीखना शुरू किया। मैंने एलजी, एसर टैबलेट या वन वी के लिए कभी भी सार्वजनिक रूप से कर्नेल जारी नहीं किया, लेकिन प्रत्येक के लिए अपने स्वयं के कर्नेल बनाए और कस्टम रोम स्थापित किए, जो उन दिनों आवश्यक थे, क्योंकि एंड्रॉइड अभी परिपक्व नहीं था।
मैंने जल्द ही वन वी को पछाड़ दिया और एचटीसी वन एक्सएल के लिए व्यापार किया और तभी एलिमेंटलएक्स का जन्म हुआ।
एलिमेंटलएक्स का प्रारंभ में लक्ष्य क्या था और हाल के वर्षों में यह कैसे बदल गया है?
एलिमेंटलएक्स का लक्ष्य हमेशा स्थिरता या प्रदर्शन से समझौता किए बिना उपयोगी हार्डवेयर सुविधाओं को जोड़ना और कुछ ऐसा जारी करना रहा है जिस पर लोग काम करने के लिए निर्भर रह सकें। मैं हमेशा स्थिरता को पहले स्थान पर रखता हूं क्योंकि मैं चाहता हूं कि मेरा फोन भरोसेमंद हो। कोई यादृच्छिक रीबूट या कैमरा काम न करने जैसी चीज़ें नहीं। वर्षों से दर्शन वही रहा है। मैं चीजों को सरल रखता हूं और हार्डवेयर सुविधाएं जोड़ता हूं जो मुझे उपयोगी लगती हैं। वेक जेस्चर, हाई ब्राइटनेस मोड, वाइब्रेशन एडजस्टमेंट, ध्वनि नियंत्रण, अधिक फाइल सिस्टम के लिए समर्थन, जॉयस्टिक आदि जैसी चीजें।
मैं अपने कर्नेल को अद्यतित रखने, स्थापित करने में आसान और यथासंभव व्यापक रूप से संगत रखने के लिए कड़ी मेहनत करता हूं। कुछ उपयोगकर्ता निराश हैं कि मैं सीएएफ या अपस्ट्रीम लिनक्स से बहुत सारे पैच नहीं जोड़ता, लेकिन मेरा मुख्य लक्ष्य बिना किसी अजीब समस्या के एक बहुत ही स्थिर उत्पाद वितरित करना है। मेरे कई उपयोगकर्ता वे लोग नहीं हैं जो XDA पर बहुत कुछ पोस्ट करते हैं, वे पावर उपयोगकर्ता हैं जिनकी एक विशिष्ट आवश्यकता पूरी होती है एक कस्टम कर्नेल द्वारा, या ऐसे लोग जो कभी-कभी अपने हार्डवेयर के साथ छेड़छाड़ करना पसंद करते हैं लेकिन कट्टर नहीं हैं flashaholics. मैं चाहता हूं कि जो लोग सभी नवीनतम Android विकासों का अनुसरण नहीं करते हैं वे बिना किसी समस्या के ElementalX का उपयोग कर सकें।
ऐसे बहुत से अन्य कर्नेल हैं जो अपस्ट्रीम पैच के साथ प्रयोग करते हैं। एलिमेंटलएक्स में, मैं पैच और अनुकूलन के सावधानीपूर्वक चयनित सेट का उपयोग करता हूं। एंड्रॉइड के बाहर अपने करियर में, मैं उन चीजों को मापता हूं जिन्हें मापना मुश्किल है और नीति बनाने और सलाह देने के लिए साक्ष्य का उपयोग करता हूं। मैं कर्नेल विकास के लिए समान सिद्धांतों को लागू करता हूं और आम तौर पर पैच का उपयोग नहीं करता हूं जब तक कि कोई मापने योग्य लाभ न हो। EX कर्नेल मैनेजर में बैटरी मॉनिटर इसका एक उदाहरण है। यह बैटरी में बदलाव और कर्नेल परिवर्तनों के प्रभाव को निष्पक्ष रूप से मापने का एक तरीका प्रदान करता है। डेवचेक में फ्लोटिंग मॉनिटर एक अन्य उपकरण है जिसका उपयोग मैं विकास के लिए करता हूं, ज्यादातर सीपीयू की निगरानी के लिए गेमिंग या वीडियो या वेब देखने जैसे विभिन्न उपयोग के मामलों के दौरान आवृत्तियों और तापमान ब्राउज़िंग
पिछले कुछ वर्षों में एंड्रॉइड में हुए बदलावों ने आपके काम को कैसे प्रभावित किया है?
कभी-कभी कई सुरक्षा परिवर्तनों से निपटना कठिन होता है, लेकिन मैं उन्हें समझता हूं। यदि मैं गलत नहीं हूं, तो एंड्रॉइड अब विंडोज़ की तुलना में अधिक व्यापक रूप से उपयोग किया जाता है, जो इसे एक लक्ष्य बनाता है। बुरे लोग एंड्रॉइड उपयोगकर्ताओं का शोषण करने के लिए किसी भी कोण का उपयोग कर सकते हैं।
सिस्टम विभाजन में संशोधन को रोकना स्पष्ट रूप से किसी डिवाइस की अखंडता की सुरक्षा के लिए महत्वपूर्ण है। मुझे याद है जब एचटीसी ने 2012 या 2013 में ऐसा करना शुरू किया था और ऐसा लग रहा था कि दुनिया का अंत हो गया है। उस समय, रूट के लिए /system को लिखना, बिल्ड.प्रॉप को संपादित करना, विशेषाधिकार प्राप्त ऐप्स इंस्टॉल करना, ब्लोटवेयर हटाना और व्यावहारिक रूप से हर लोकप्रिय मॉड की आवश्यकता थी। उस समय के कई अनुकूलन में डीओडेक्सिंग और फ्रेमवर्क को संशोधित करने जैसी चीजें शामिल थीं। लंबे समय तक, एचटीसी से कोई कर्नेल स्रोत उपलब्ध नहीं था, इसलिए मैंने स्टॉक कर्नेल में सिस्टम राइट प्रोटेक्शन को अक्षम करने के लिए एक कर्नेल मॉड्यूल बनाया, जिसके लिए मैं पहली बार एक डेवलपर के रूप में प्रसिद्ध हुआ। लेकिन समय के साथ, जैसे-जैसे वेरिटी जैसी सुरक्षाएं एंड्रॉइड का एक मानक हिस्सा बन गईं, इसने नवाचार और बेहतरी को मजबूर किया चेनफायर के सिस्टमलेस रूट जैसे समाधान और अब मैजिक है जो सभी प्रकार की चीजें करता है व्यवस्थाहीन-ly.
दूसरा बड़ा SELinux है, जिसके कारण बहुत सारे ऐप्स ने काम करना बंद कर दिया। कई उपयोगकर्ताओं ने इसे नापसंद किया और आज भी ऐसे लोग हैं जो SELinux को परमिशन मोड में चलाते हैं, जो एक बहुत बुरा विचार है। मैं कहूंगा कि SELinux एंड्रॉइड की सबसे महत्वपूर्ण सुरक्षा सुविधा है। SELinux के महत्व का एक उदाहरण देने के लिए, जब मुझे पहली बार Pixel XL मिला, तो कोई रूट उपलब्ध नहीं था, लेकिन डर्टी काउ का शोषण समाचार बना रहा था। मैं कर्नेल विकास शुरू करने के लिए उत्सुक था, जिसका अर्थ है sysfs फ़ाइलों को खोजना या संशोधित करना, जिसके लिए रूट की आवश्यकता होती है। मैंने डर्टी काउ प्रूफ-ऑफ-कॉन्सेप्ट में से एक को संकलित किया और कमांड को रूट के रूप में चलाने में सक्षम था, लेकिन SELinux ने मुझे कुछ भी दिलचस्प करने से रोक दिया। SELinux को अनुमेय बनाने के लिए मुझे Boot.img को संशोधित करना पड़ा। मैंने कर्नेल को संशोधित किए बिना पूर्ण पहुंच प्राप्त कर ली होगी, लेकिन इसमें कई घंटे लग गए होंगे। यह सब कहने के लिए, SELinux को लागू करना छोड़ दें, यह मैलवेयर के खिलाफ रक्षा की मुख्य पंक्ति है। आवश्यकतानुसार विशिष्ट नीतियों को बदलने के लिए सेपॉलिसी-इंजेक्ट का उपयोग करना सीखें।
जब नूगाट आया, तो शुरू में लगभग सभी /sys और /proc उपयोगकर्ता ऐप्स के लिए अदृश्य हो गए। परिवर्तन करने के लिए रूट हमेशा आवश्यक रहा है, लेकिन अचानक /sys और /proc को पढ़ने के लिए रूट आवश्यक हो गया। उन फ़ाइल सिस्टमों में निश्चित रूप से ऐसी जानकारी होती है जिसका उपयोग किसी डिवाइस का शोषण करने के लिए किया जा सकता है, इसलिए प्रतिबंध जोड़ना आवश्यक था। लेकिन ऐसी भी बहुत सी जानकारी है जिसे उपयोगकर्ताओं को देखने में सक्षम होना चाहिए। वर्तमान i/o अनुसूचक, या GPU आवृत्ति, या पैनल हार्डवेयर के प्रकार को देखने के लिए रूट की आवश्यकता क्यों होनी चाहिए? इससे निपटने के लिए मुझे DevCheck में बहुत सारे बदलाव करने पड़े, और बहुत से उपयोगकर्ता इस बात को लेकर भ्रमित थे कि Nougat पर अपडेट करने के बाद जानकारी उपलब्ध क्यों नहीं थी। अंततः, sysfs पथों पर से कुछ प्रतिबंध हटा दिए गए।
इसके अलावा, ऐप डेवलपमेंट के नजरिए से, मुझे एंड्रॉइड में अधिकांश एपीआई परिवर्तन पसंद हैं, भले ही वे मुझे अपने ऐप्स में बहुत सारे बदलाव करने के लिए मजबूर करते हैं। ये बदलाव आमतौर पर बेहतरी के लिए होते हैं।
इस साक्षात्कार का भाग 2 देखें!