Entrevistamos a flar2, el desarrollador del kernel ElementalX y profundizamos en temas como su vida personal, trabajo de desarrollo y más.
Recientemente entrevisté a flar2, el hombre detrás del famoso kernel ElementalX y su aún más popular aplicación ElementalX Kernel Manager. Ha lanzado una versión de su kernel para una amplia gama de dispositivos, incluidos OnePlus y dispositivos Nexus.
En esta parte, le preguntamos qué piensa flar2 sobre los cuellos de botella en el rendimiento de Android y más sobre su vida personal. Puedes consultar parte 2 de esta entrevista aquí.
¡Hola! Preséntese primero que nada antes de pasar a las preguntas.
Mi nombre es Aaron Segaert, también conocido como flar2. La mayoría de la gente me conoce como el desarrollador del kernel ElementalX. También tengo algunas aplicaciones.
¿Tenías alguna experiencia previa con computadoras y desarrollo? ¿Como un título en informática o algo así?
Empecé con las computadoras cuando era muy joven. Mi primera computadora fue una Texas Instruments TI-99/4A. Aprendí a codificar en BASIC y guardé mis programas en una cinta de casete (sí, soy mayor). Luego nuestra familia compró un clon de IBM 286 y en ese momento dejé de codificar porque esto era antes. Internet era ampliamente conocido y no tenía ningún recurso ni conocía a nadie más que tuviera una computadora. Empecé en informática en la universidad, pero reprobé en el primer año. Realmente nunca fui a clase porque estaba demasiado ocupado divirtiéndome y tocando con mi banda. Posteriormente regresé a la escuela y obtuve un doctorado en sociología. Durante mi época de estudiante, me interesé en Linux y el código abierto, pero nunca me dediqué mucho a la programación seria. Contribuí con pequeñas cosas aquí y allá, pero sobre todo solo hice scripts y pequeños programas para mis propios fines. Probablemente construí mi primer kernel de Linux alrededor de 2002. En ese momento, no estaba escribiendo mi propio código, solo experimentaba con diferentes parches y opciones de compilación para mejorar el rendimiento. Me gustaba más construir computadoras, hacer overclocking y, en general, tratar de hacer que el hardware hiciera cosas que no debía hacer.
¿Le interesa algún otro desarrollo además del desarrollo de aplicaciones para Android y el desarrollo del kernel?
Realmente no, encontré buenas herramientas disponibles para casi todo lo que necesitaba hacer en las computadoras. La razón por la que comencé a trabajar en kernels y aplicaciones para Android es porque sentí que había una necesidad de ciertas características y margen de mejora en las herramientas existentes. Por ejemplo, creé Button Mapper porque quería que la tecla de inicio de los teléfonos Samsung hiciera más, y no me gustaban las teclas recientes y atrás invertidas. Hice DevCheck porque otras aplicaciones de información del sistema no mostraban la información que quería ver de forma clara y concisa. El kernel ElementalX agrega nuevas funciones de hardware y EX Kernel Manager controla esas funciones y agrega algunas herramientas que uso para facilitar el desarrollo. Me gusta resolver problemas y es un desafío divertido realizar ingeniería inversa o agregar nuevas funciones de hardware a un teléfono.
¿Cómo entraste en contacto con el desarrollo de Android, específicamente el desarrollo del kernel?
Siempre odié los teléfonos móviles y me resistí a ellos durante mucho tiempo. Mi esposa y yo compartíamos un teléfono plegable básico con un plan mínimo que se usaba principalmente para emergencias. En 2012, tuvimos un incendio en nuestra casa y estuvimos fuera de servicio durante casi tres meses. Nos cortaron todos los servicios públicos y decidimos no volver a conectar nuestro teléfono fijo, así que conseguimos un teléfono inteligente, que era un LG P, algo así, creo. Me di cuenta de que era como una minicomputadora y decidí que necesitaba mi propia minicomputadora, así que compré un HTC One V.
Como modifico y modifico casi todo, descubrí inmediatamente XDA y descubrí que los teléfonos Android no solo ejecutaban Linux, sino que también podían ser overclockeados. He sido usuario de Linux durante mucho tiempo, así que bifurqué uno de los núcleos y quedé enganchado. Pronto compré una tableta Acer barata y comencé a jugar con ese hardware y kernel porque quería que tuviera USB OTG. Resulta que el hardware no era capaz, pero así fue como comencé a aprender más sobre hardware móvil. Nunca lancé públicamente un kernel para LG, Acer tablet o One V, pero construí mis propios kernels para cada uno e instalé ROM personalizadas, que eran necesarias en aquellos días, ya que Android aún no estaba maduro.
Pronto se me quedó pequeño el One V y lo cambié por un HTC One XL y fue entonces cuando nació ElementalX.
¿Cuál era el objetivo inicial de ElementalX y cómo ha cambiado en los últimos años?
El objetivo de ElementalX siempre ha sido agregar funciones de hardware útiles, sin comprometer la estabilidad o el rendimiento, y lanzar algo en lo que la gente pueda confiar para simplemente trabajar. Siempre pongo la estabilidad en primer lugar porque necesito que mi teléfono sea confiable. No hay reinicios aleatorios ni cosas como que la cámara no funcione. La filosofía se ha mantenido igual a lo largo de los años. Mantengo las cosas simples y agrego funciones de hardware que encuentro útiles. Cosas como gestos de activación, modo de alto brillo, ajuste de vibración, control de sonido, soporte para más sistemas de archivos, joysticks, etc.
Trabajo duro para mantener mis kernels actualizados, fáciles de instalar y lo más compatibles posible. Algunos usuarios están decepcionados porque no agrego muchos parches de CAF o Linux, pero mi principal objetivo es ofrecer un producto muy estable sin problemas extraños. Muchos de mis usuarios no son personas que publican mucho en XDA, son usuarios avanzados que tienen una necesidad específica satisfecha. por un kernel personalizado, o personas a las que ocasionalmente les gusta jugar con su hardware pero no son incondicionales adictos al flash. Quiero que las personas que no siguen los últimos desarrollos de Android puedan usar ElementalX sin problemas.
Hay muchos otros núcleos que experimentan con parches ascendentes. En ElementalX, utilizo un conjunto de parches y optimizaciones cuidadosamente seleccionados. En mi carrera fuera de Android, mido cosas que son difíciles de medir y utilizo evidencia para formular políticas y brindar asesoramiento. Aplico los mismos principios al desarrollo del kernel y generalmente no uso parches a menos que exista un beneficio mensurable. El monitor de batería en EX Kernel Manager es un ejemplo de esto. Ofrece una forma de medir objetivamente el efecto de los ajustes de la batería y los cambios del kernel. Los monitores flotantes en DevCheck son otra herramienta que uso para el desarrollo, principalmente para monitorear la CPU. frecuencias y temperaturas durante diferentes casos de uso, como juegos o mirar videos o navegar por Internet hojeada.
¿Cómo han afectado a tu trabajo los cambios de los últimos años en Android?
A veces es difícil lidiar con los numerosos cambios de seguridad, pero los entiendo. Si no me equivoco, Android se utiliza ahora más que Windows, lo que lo convierte en un objetivo. Las personas malas utilizarán cualquier ángulo que puedan para explotar a los usuarios de Android.
Obviamente, evitar la modificación de la partición del sistema es clave para proteger la integridad de un dispositivo. Recuerdo cuando HTC empezó a hacer esto en 2012 o 2013 y parecía el fin del mundo. En ese momento, era necesario escribir en /system para root, editar build.prop, instalar aplicaciones privilegiadas, eliminar bloatware y prácticamente todos los mods populares. Muchas de las personalizaciones en ese momento involucraron cosas como deodexar y modificar el marco. Durante mucho tiempo, no hubo ninguna fuente de kernel disponible en HTC, por lo que creé un módulo de kernel para deshabilitar la protección contra escritura del sistema en el kernel original, por lo que me hice conocido por primera vez como desarrollador. Pero con el tiempo, a medida que protecciones como Verity se convirtieron en una parte estándar de Android, obligaron a innovar y mejorar. soluciones como la raíz sin sistema de Chainfire y ahora está Magisk que hace todo tipo de cosas sin sistema.
Otro gran problema es SELinux, que provocó que un montón de aplicaciones dejaran de funcionar. Muchos usuarios lo odiaron y todavía hasta el día de hoy hay personas que ejecutan SELinux en modo permisivo, lo cual es una muy mala idea. Yo diría que SELinux es la característica de seguridad más importante de Android. Para dar un ejemplo de la importancia de SELinux, cuando obtuve el Pixel XL por primera vez, no había root disponible, pero el exploit Dirty Cow estaba siendo noticia. Estaba ansioso por comenzar el desarrollo del kernel, lo que significa buscar o modificar archivos sysfs, lo que requiere root. Compilé una de las pruebas de concepto de Dirty Cow y pude ejecutar comandos como root, pero SELinux me impidió hacer algo interesante. Tuve que modificar boot.img para que SELinux fuera permisivo. Podría haber logrado acceso completo sin modificar el kernel, pero me habría llevado muchas, muchas horas. Todo esto para decir, deje que SELinux se aplique, es la principal línea de defensa contra el malware. Aprenda a utilizar sepolicy-inject para cambiar políticas específicas según sea necesario.
Cuando apareció Nougat, inicialmente casi todos /sys y /proc se volvieron invisibles para las aplicaciones de los usuarios. Root siempre ha sido necesario para realizar cambios, pero de repente era necesario root simplemente para leer /sys y /proc. Definitivamente hay información en esos sistemas de archivos que se puede usar para explotar un dispositivo, por lo que fue necesario agregar restricciones. Pero también hay mucha información que los usuarios deberían poder ver. ¿Por qué debería ser necesario root para ver el programador de E/S actual, la frecuencia de la GPU o el tipo de hardware del panel? Tuve que hacer muchos cambios en DevCheck para solucionar esto y muchos usuarios estaban confundidos acerca de por qué la información ya no estaba disponible después de actualizar a Nougat. Finalmente, se eliminaron algunas de las restricciones sobre las rutas sysfs.
Aparte de eso, desde la perspectiva del desarrollo de aplicaciones, me gustan la mayoría de los cambios de API en Android, aunque me obligan a realizar muchos cambios en mis aplicaciones. Estos cambios suelen ser para mejor.
¡Mira la Parte 2 de esta entrevista!