Entrevista com Flar2, desenvolvedor do ElementalX Kernel Parte 1

Entrevistamos flar2, o desenvolvedor do kernel ElementalX, e nos aprofundamos em tópicos como sua vida pessoal, trabalho de desenvolvimento e muito mais.

Recentemente entrevistei flar2, o homem por trás do famoso kernel ElementalX, e seu aplicativo ElementalX Kernel Manager ainda mais popular. Ele lançou uma versão de seu kernel para uma vasta gama de dispositivos, incluindo OnePlus e dispositivos Nexus.

Nesta parte, perguntamos sobre a opinião de flar2 sobre os gargalos de desempenho do Android e mais sobre sua vida pessoal! Você pode conferir parte 2 desta entrevista aqui.


Ei! Apresente-se antes de tudo, antes de passarmos às perguntas.

Meu nome é Aaron Segaert, também conhecido como flar2. A maioria das pessoas me conhece como o desenvolvedor do kernel ElementalX. Eu também tenho alguns aplicativos.

Você já tinha alguma experiência com computadores e desenvolvimento? Como um diploma de ciência da computação ou algo assim?

Comecei com computadores quando era muito jovem. Meu primeiro computador foi um Texas Instruments TI-99/4A. Aprendi a programar em BASIC e salvei meus programas em fita cassete (sim, sou velho). Então nossa família comprou um clone 286 da IBM, e eu parei de programar naquele ponto porque isso foi antes a Internet era amplamente conhecida e eu não tinha recursos nem conhecia ninguém que tivesse um computador. Comecei a ciência da computação na universidade, mas fui reprovado no primeiro ano. Eu nunca fui às aulas porque estava muito ocupado me divertindo e fazendo shows com minha banda. Mais tarde voltei à escola e obtive o doutorado em sociologia. Durante meu tempo como estudante, me interessei por Linux e código aberto, mas nunca me interessei por programação muito séria. Contribuí com pequenas partes aqui e ali, mas principalmente apenas criei scripts e pequenos programas para meus próprios propósitos. Provavelmente construí meu primeiro kernel Linux por volta de 2002. Na época, eu não estava escrevendo meu próprio código, apenas experimentando diferentes patches e opções de construção para aumentar o desempenho. Eu gostava mais de construir computadores, fazer overclock e geralmente tentar fazer o hardware fazer coisas que não deveriam.

Algum desenvolvimento além do desenvolvimento de aplicativos Android e desenvolvimento de kernel lhe interessou?

Na verdade não, encontrei boas ferramentas disponíveis para quase tudo que precisei fazer em computadores. A razão pela qual comecei a trabalhar em kernels e aplicativos para Android é porque senti que havia necessidade de certos recursos e espaço para melhorias nas ferramentas existentes. Por exemplo, criei o Button Mapper porque queria que a tecla home dos telefones Samsung fizesse mais e não gostei das teclas invertidas e recentes. Fiz o DevCheck porque outros aplicativos de informações do sistema não mostravam as informações que eu queria ver de forma clara e concisa. O kernel ElementalX adiciona novos recursos de hardware e o EX Kernel Manager controla esses recursos e adiciona algumas ferramentas que uso para facilitar o desenvolvimento. Gosto de resolver problemas e é um desafio divertido fazer engenharia reversa ou adicionar novos recursos de hardware a um telefone.

Como você entrou em contato com o desenvolvimento do Android, especificamente o desenvolvimento do kernel?

Sempre odiei celulares e resisti por muito tempo. Minha esposa e eu compartilhamos um telefone flip básico com um plano mínimo que era usado principalmente para emergências. Em 2012, tivemos um incêndio em nossa casa e ficamos apagados por quase três meses. Todos os nossos serviços públicos foram cortados e decidimos não reconectar nosso telefone fixo, então compramos um smartphone, que era um LG P, eu acho. Percebi que era como um minicomputador e decidi que precisava do meu próprio minicomputador, então comprei um HTC One V.

Como eu mexo e modifico quase tudo, descobri imediatamente o XDA e descobri que os telefones Android não apenas rodavam Linux, mas também podiam ter overclock. Sou usuário de Linux há muito tempo, então bifurquei um dos kernels e fiquei viciado. Logo comprei um tablet Acer barato e comecei a mexer no hardware e no kernel porque queria que ele tivesse USB OTG. Acontece que o hardware não era capaz, mas foi assim que comecei a aprender mais sobre hardware móvel. Nunca lancei publicamente um kernel para LG, tablet Acer ou One V, mas construí meus próprios kernels para cada um e instalei ROMs customizados, que eram necessários naquela época, já que o Android ainda não estava maduro.

Logo superei o One V e troquei por um HTC One XL e foi aí que o ElementalX nasceu.

Qual era o objetivo inicial do ElementalX e como isso mudou nos últimos anos?

O objetivo do ElementalX sempre foi adicionar recursos de hardware úteis, sem comprometer a estabilidade ou o desempenho, e lançar algo em que as pessoas possam confiar apenas para trabalhar. Sempre coloco a estabilidade em primeiro lugar porque preciso que meu telefone seja confiável. Nenhuma reinicialização aleatória ou coisas como a câmera não funcionar. A filosofia permaneceu a mesma ao longo dos anos. Mantenho as coisas simples e adiciono recursos de hardware que considero úteis. Coisas como gestos de ativação, modo de alto brilho, ajuste de vibração, controle de som, suporte para mais sistemas de arquivos, joysticks, etc.

Eu trabalho duro para manter meus kernels atualizados, fáceis de instalar e tão amplamente compatíveis quanto possível. Alguns usuários ficam desapontados por eu não adicionar muitos patches do CAF ou do Linux upstream, mas meu principal objetivo é entregar um produto muito estável, sem problemas estranhos. Muitos dos meus usuários não são pessoas que postam muito no XDA, são usuários avançados que têm uma necessidade específica satisfeita por um kernel personalizado ou por pessoas que ocasionalmente gostam de mexer em seu hardware, mas não são hardcore viciados em flash. Quero que as pessoas que não seguem todos os desenvolvimentos mais recentes do Android possam usar o ElementalX sem problemas.

Existem muitos outros kernels que fazem experiências com patches upstream. No ElementalX, eu uso um conjunto cuidadosamente selecionado de patches e otimizações. Na minha carreira fora do Android, meço coisas que são difíceis de medir e uso evidências para criar políticas e fornecer conselhos. Eu aplico os mesmos princípios ao desenvolvimento do kernel e geralmente não uso patches a menos que haja um benefício mensurável. O monitor de bateria no EX Kernel Manager é um exemplo disso. Ele oferece uma maneira de medir objetivamente o efeito de ajustes na bateria e alterações no kernel. Os monitores flutuantes no DevCheck são outra ferramenta que uso para desenvolvimento, principalmente para monitorar CPU frequências e temperaturas durante diferentes casos de uso, como jogos, exibição de vídeos ou web navegando.

Como as mudanças no Android nos últimos anos afetaram seu trabalho?

Às vezes é difícil lidar com as muitas mudanças de segurança, mas eu as entendo. Se não me engano, o Android é agora mais utilizado que o Windows, o que o torna um alvo. Pessoas más usarão qualquer ângulo que puderem para explorar os usuários do Android.

Impedir a modificação da partição do sistema é obviamente fundamental para proteger a integridade de um dispositivo. Lembro-me de quando a HTC começou a fazer isso em 2012 ou 2013 e parecia o fim do mundo. Na época, era necessário gravar em /system para fazer root, editar build.prop, instalar aplicativos privilegiados, remover bloatware e praticamente todos os mods populares. Muitas das personalizações da época envolviam coisas como desodexação e modificação da estrutura. Por muito tempo, nenhuma fonte de kernel estava disponível na HTC, então criei um módulo de kernel para desabilitar a proteção contra gravação do sistema no kernel padrão, pelo qual me tornei conhecido como desenvolvedor. Mas com o tempo, à medida que proteções como a verity se tornaram parte padrão do Android, isso forçou a inovação e melhores soluções como a raiz sem sistema do Chainfire e agora existe o Magisk que faz todo tipo de coisa sem sistema.

Outro grande problema é o SELinux, que fez com que vários aplicativos parassem de funcionar. Muitos usuários odiaram e ainda hoje existem pessoas que rodam com o SELinux em modo permissivo, o que é uma péssima ideia. Eu diria que o SELinux é o recurso de segurança mais importante do Android. Para dar um exemplo da importância do SELinux, quando comprei o Pixel XL, não havia root disponível, mas o exploit Dirty Cow estava virando notícia. Eu estava ansioso para iniciar o desenvolvimento do kernel, o que significa pesquisar ou modificar arquivos sysfs, o que requer root. Compilei uma das provas de conceito do Dirty Cow e consegui executar comandos como root, mas o SELinux me impediu de fazer algo interessante. Tive que modificar o boot.img para tornar o SELinux permissivo. Eu poderia ter conseguido acesso total sem modificar o kernel, mas isso levaria muitas, muitas horas. Tudo isso para dizer, deixe o SELinux em vigor, é a principal linha de defesa contra malware. Aprenda a usar o sepolicy-inject para alterar políticas específicas conforme necessário.

Quando o Nougat apareceu, inicialmente quase todo /sys e /proc tornaram-se invisíveis para os aplicativos do usuário. O root sempre foi necessário para fazer alterações, mas de repente o root era necessário simplesmente para ler /sys e /proc. Definitivamente há informações nesses sistemas de arquivos que podem ser usadas para explorar um dispositivo, por isso foi necessário adicionar restrições. Mas também há muitas informações que os usuários devem poder ver. Por que o root deve ser necessário para ver o agendador de E/S atual, a frequência da GPU ou o tipo de hardware do painel? Tive que fazer muitas alterações no DevCheck para lidar com isso, e muitos usuários ficaram confusos sobre por que as informações não estavam mais disponíveis após a atualização para o Nougat. Eventualmente, algumas das restrições nos caminhos do sysfs foram suspensas.

Fora isso, do ponto de vista do desenvolvimento de aplicativos, gosto da maioria das alterações de API no Android, embora elas me obriguem a fazer muitas alterações em meus aplicativos. Essas mudanças geralmente são para melhor.


Confira a Parte 2 desta Entrevista!