¿Qué tan experto tendría que ser un programador para recrear el sistema operativo Android sin ayuda utilizando herramientas de desarrollo comunes?

Nunca me he codificado contra AndroidOS en serio, o realmente lo he investigado, pero …

Recrearlo exactamente no es posible. Ciertamente, hay correcciones de errores que son el resultado de miles, si no millones, de usuarios que realizan la misma acción una y otra vez para producir un error. Si trató de hacer esto usted mismo, simplemente no tendrá los recursos. Requeriría leer y eliminar MILLONES de informes de errores, sospecho que hay errores únicos que fueron el resultado de cientos, si no miles de horas de trabajo para replicar, documentar y corregir, tal vez más horas de las que tendrá en su vida.

Para obtener solo el sistema operativo con sus características principales de alta prioridad, probablemente podría hacerlo en 6 meses, si fuera un experto en diseño de sistemas operativos. Es mi opinión bastante ingenua de que la mayoría de los sistemas operativos son relativamente simples y directos. Si lo que diseñas no es simple y directo, probablemente hayas diseñado un SO malo. Pero el sistema operativo no es realmente la parte difícil.

Por lo que recuerdo (que no es mucho), un sistema operativo real es solo un cargador de aplicaciones, un administrador de memoria y algo de código especializado de enhebrado / aislamiento de procesos. El resto es ecosistema de aplicaciones. Y esa es la parte difícil.

Para que los desarrolladores (sin mencionar a los usuarios) utilicen el sistema operativo, necesita compiladores y una GUI, y una forma de implementar, tal vez un IDE, toneladas de documentación con sus API expuestas públicamente. Probablemente necesitará controladores para admitir una multitud de dispositivos.

Para entender por qué esto es difícil, debe leer “El mes del hombre mítico”

Es imposible. No porque no puedas tener la experiencia o las herramientas, sino porque es demasiado trabajo.

Los buenos desarrolladores escriben no más de un par de cientos de líneas de código por día. Android tiene varias decenas de millones de líneas, o unos 20 años de trabajo … excepto que nunca solo escribes código y nunca lo revisas, por lo que en realidad es más de cinco veces eso.

El gran software moderno requiere equipos de personas e infraestructura seria.

¿Depende de lo que quieres decir con “recrear”? Sin embargo, creo que, sea lo que sea que quieras decir, creo que se requieren niveles de habilidad “expertos”.

Digamos que quería hacer un sistema operativo como Android, ¿puedo usar las tecnologías existentes? ¿Como lo hizo Android? ¿Puedo usar un kernel existente como Linux? ¿Puedo obtener un sistema operativo completo como QNX (que es lo que hizo Blackberry)?

¿Puedo simplemente usar Java o necesito hacer mis propias herramientas de desarrollo?

Si estás hablando de escribir todo desde cero, entonces eso está más allá de las habilidades de casi cualquier persona.

Si está hablando de una propuesta más realista de que puedo usar cualquier herramienta / biblioteca / kernel / OS que me guste, entonces se convierte en una propuesta mucho más viable.

Con una sola mano, no puedes ni en 100 vidas. El núcleo de Linux en sí consta de más de 15 millones de líneas de código valoradas en más de $ 5 mil millones.

Para darle un sentido de escala, construir la presa Hoover hoy requeriría solo $ 750 millones.

https://www.linuxfoundation.org/

https://www.google.com/amp/s/www

La mayoría de la programación de microcontroladores es efectivamente la programación del sistema operativo: puede crear código para manejar eventos de hardware de bajo nivel. Convertir el esfuerzo minimalista habitual en Android es solo cuestión de agregar funciones.

Una persona no puede hacerlo. Un equipo central de alrededor de 5-10 buenos programadores puede.

Sin embargo, no es Android como lo es hoy. Estará más cerca de Linux para teléfonos. Lo cual no es necesariamente algo malo.

Hay otro problema. Puede obtener el 90% de Android en menos de 2 años (el Android original antes de que Google lo comprara hizo exactamente eso). Pero refinar el último 10% te llevará los mismos 10 años que Android tuvo que refinarse. Y tomará miles de millones de clientes y miles de desarrolladores de hardware que usan su sistema operativo.

Lo curioso es que Android no es 100% desde cero, se basa en Linux Kernal. Y Linux es muy grande, ya que ha existido por mucho tiempo. ¡Por lo tanto, no es realmente posible crearlo sin marcos como el kernel mismo!