En este documento, se incluyen preguntas generales sobre la plataforma del Proyecto de código abierto de Android (AOSP).
Preguntas sobre el código abierto
¿Por qué, desde Google, se abrió el código fuente de Android?
En Google, comenzamos el proyecto de AOSP en respuesta a nuestras propias experiencias en el lanzamiento de apps para dispositivos móviles. Queríamos asegurarnos de que siempre hubiera una plataforma abierta disponible para que los operadores, OEM y desarrolladores pudieran llevar a cabo sus ideas innovadoras. Además, queríamos evitar todo punto central de falla, para que ningún actor de la industria pudiera restringir o controlar las innovaciones de otro. Nuestro objetivo más importante con AOSP es asegurarnos de que el software de código abierto de Android se implemente de la manera más amplia y compatible posible, para beneficio de todos.
¿Qué tipo de proyecto de código abierto es Android?
Google supervisa el desarrollo de AOSP principal y trabaja para crear comunidades eficaces de desarrolladores y de usuarios. En gran parte, el código fuente de Android está bajo la protección de la licencia permisiva Apache 2.0, en lugar de una licencia copyleft. Elegimos la licencia Apache 2.0 porque creemos que fomenta la adopción generalizada del software de Android. Para obtener más información, consulta Licencias.
¿Por qué Google está a cargo de Android?
El lanzamiento de una plataforma de software es algo complejo. La apertura es vital para el éxito a largo plazo de una plataforma, ya que atrae la inversión de los desarrolladores y garantiza la igualdad de condiciones. Además, debe ser un producto atractivo para los usuarios.
Google destina los recursos de ingeniería profesionales necesarios para garantizar que Android sea una plataforma de software plenamente competitiva. Asimismo, considera que el proyecto de Android es una operación de desarrollo de productos a gran escala y llega a los acuerdos comerciales necesarios para asegurarse de que se lancen al mercado dispositivos de calidad que ejecuten Android.
Al asegurarnos de que Android sea un éxito para los usuarios, ayudamos a garantizar la vitalidad de este sistema operativo como plataforma y como proyecto de código abierto. Después de todo, ¿quién quiere el código fuente de un producto que no tiene éxito?
Nuestro objetivo es garantizar un ecosistema eficaz en torno a Android. Abrimos su código fuente para que cualquiera pueda modificar y distribuir el software según sus propias necesidades.
¿Cuál es la estrategia general de Google para el desarrollo de productos de Android?
Lanzamos dispositivos de calidad en un mercado competitivo. Luego, incorporamos las innovaciones y mejoras que le realizamos a la plataforma principal en la siguiente versión.
En la práctica, esto significa que el equipo de Ingeniería de Android se centra en una pequeña cantidad de dispositivos "insignia" y desarrolla la próxima versión del software de Android para admitir los lanzamientos de esos productos. Estos dispositivos insignia absorben gran parte del riesgo del producto y abren el camino para la amplia comunidad de OEM, que realiza el seguimiento con más dispositivos que aprovechan las nuevas funciones. De esta manera, nos aseguramos de que la plataforma de Android evolucione en función de las necesidades de los dispositivos del mundo real.
¿Cómo se desarrolla el software de Android?
Cada versión de la plataforma de Android (como la 1.5 o la 8.1) tiene su respectiva rama en el árbol de código abierto. La más reciente se considera la versión estable actual de la rama y es la que los fabricantes transfieren a sus dispositivos. Esta rama se mantiene apta para el lanzamiento en todo momento.
A la vez, hay una rama experimental actual, que es donde se desarrollan las contribuciones especulativas, como las grandes funciones de la nueva generación. Las correcciones de errores y otras contribuciones se pueden incluir en la rama estable actual desde la rama experimental según corresponda.
Por último, Google trabaja en la próxima versión de la plataforma Android, junto con el desarrollo de un dispositivo insignia. Esta rama recopila los cambios de las ramas experimentales y estables según corresponda.
Para obtener detalles sobre las líneas de código, las ramas y las versiones, consulta Administración del software de Android.
¿Por qué hay partes de Android que se desarrollan en privado?
Por lo general, lleva más de un año lanzar un dispositivo al mercado. Y, por supuesto, los fabricantes de dispositivos quieren entregar el software lo más actualizado posible. A la vez, los desarrolladores no quieren realizar el seguimiento constante de nuevas versiones de la plataforma cuando escriben el código de las apps. Se genera tensión en ambos grupos entre el envío de productos y el no querer quedar rezagado.
Para solucionar este problema, algunas partes de la próxima versión de Android, incluidas las APIs de la plataforma principal, se desarrollan en una rama privada. Estas APIs constituyen la próxima versión de Android. Nuestro objetivo es centrar la atención en la versión estable actual del código fuente de Android mientras creamos la próxima versión de la plataforma. Esto permite a los desarrolladores y OEM utilizar una única versión sin realizar el seguimiento de trabajo futuro sin terminar solo para mantenerse al día. Otras partes del sistema Android no relacionadas con la compatibilidad de las apps se desarrollan de forma abierta. Nuestra intención es, con el paso del tiempo, mover más de estas partes a desarrollo abierto.
¿Cuándo se lanzan las versiones de código fuente?
Cuando están listas. El lanzamiento de código fuente es un proceso bastante complejo. Algunas partes de Android se desarrollan de forma abierta, por lo que ese código fuente siempre está disponible. Otras se desarrollan primero en un árbol privado, y ese código fuente se lanza cuando está lista la siguiente versión de la plataforma.
En algunos lanzamientos, las APIs de la plataforma principal están listas con suficiente anticipación como para que podamos lanzar el código fuente y que se conozca primero, antes del lanzamiento del dispositivo. En otros lanzamientos, esto no es posible. En todos los casos, lanzamos la fuente de la plataforma cuando consideramos que la versión es estable y el proceso de desarrollo lo permite.
¿Qué implica actualizar el código fuente para una nueva versión de Android?
El lanzamiento de código fuente de una nueva versión de la plataforma de Android es un proceso importante. En primer lugar, el software está integrado dentro de una imagen del sistema de un dispositivo y se somete a varias formas de certificación, incluida la certificación reglamentaria oficial correspondiente a las regiones donde se implementarán los teléfonos. El código también pasa por pruebas de operadores. Esta fase del proceso es muy importante porque ayuda a detectar errores de software.
Cuando los entes reguladores y los operadores aprueban el lanzamiento, el fabricante comienza a producir dispositivos en masa y comenzamos a lanzar el código fuente.
Al mismo tiempo que se realiza la producción en masa, el equipo de Google inicia varios esfuerzos para preparar el lanzamiento del código abierto. Estos esfuerzos incluyen realizar cambios definitivos en las APIs, actualizar documentación (para reflejar las modificaciones hechas durante las pruebas de cualificación, por ejemplo), preparar un SDK para la nueva versión y lanzar la información de compatibilidad de la plataforma.
Nuestro equipo legal da el visto bueno final para el lanzamiento del código abierto como fuente. Así como los colaboradores de código abierto deben firmar un Acuerdo de Licencia para Colaboradores que certifique la titularidad de la propiedad intelectual de su contribución, Google debe verificar que la fuente esté autorizada para realizar contribuciones.
El proceso de lanzamiento de software suele demorar alrededor de un mes a partir del momento en que comienza la producción masiva, por lo que los lanzamientos de código fuente suelen producirse casi al mismo tiempo que los dispositivos llegan a los usuarios.
¿Cómo se relaciona AOSP con el Programa de compatibilidad de Android?
AOSP mantiene el software de Android y desarrolla nuevas versiones. Como es de código abierto, este software se puede usar con cualquier fin, incluso para el desarrollo de dispositivos que no son compatibles con otros dispositivos basados en la misma fuente.
La función del Programa de compatibilidad de Android es definir la implementación de un modelo de referencia de Android que sea compatible con apps de terceros escritas por desarrolladores. Los dispositivos que son compatibles con Android pueden participar en el ecosistema de Android, incluso en Google Play, mientras que los que no cumplen con los requisitos de compatibilidad existen fuera de ese ecosistema.
En otras palabras, el Programa de compatibilidad de Android se usa para separar los dispositivos compatibles con Android de los que simplemente ejecutan versiones derivadas del código fuente. Aceptamos todos los usos del código fuente de Android, pero, para participar en el ecosistema, el programa tiene que identificar al dispositivo como compatible con Android.
¿Cómo puedo colaborar con Android?
Puedes informar errores, escribir apps para Android o contribuir con código fuente al AOSP.
Existen límites para los tipos de contribuciones de código que aceptamos. Por ejemplo, alguien podría querer contribuir con una API para apps alternativas como, por ejemplo, un entorno completo basado en C++. Esa contribución se rechazaría porque Android recomienda que las apps se ejecuten en el entorno de ejecución de ART. Tampoco aceptaremos contribuciones como, por ejemplo, bibliotecas GPL o LGPL incompatibles con nuestros objetivos de otorgamiento de licencias.
Recomendamos a quienes tengan interés en contribuir con código fuente que se comuniquen con nosotros a través de los canales que se indican en la página Comunidad de Android antes de comenzar cualquier trabajo. Para obtener más información, consulta Cómo colaborar.
¿Cómo me convierto en confirmador de Android?
AOSP no incluye la noción de confirmador. Todas las contribuciones (incluidas las creadas por los empleados de Google) pasan por un sistema basado en la Web, conocido como Gerrit, que forma parte del proceso de ingeniería de Android. Este sistema funciona en conjunto con el sistema de administración de código fuente de Git para administrar de forma limpia las contribuciones de código fuente.
Un responsable de aprobación designado debe aceptar todos los cambios que se envían. Los responsables de aprobación suelen ser empleados de Google, pero son responsables de todos los envíos, independientemente de su origen.
Para obtener más información, consulta Cómo enviar parches.