Este documento contém respostas para perguntas gerais sobre a plataforma de código aberto do Android (AOSP).
Perguntas sobre o código aberto
Por que o Google abriu o código-fonte do Android?
O Google criou o AOSP como resposta às nossas próprias experiências ao lançar apps para dispositivos móveis. Queríamos ter certeza de que sempre haveria uma plataforma aberta disponível para operadoras, OEMs e desenvolvedores usarem para transformar as ideias inovadoras deles em realidade. Também queríamos evitar que houvesse um ponto central de falha, para que ninguém do setor pudesse restringir ou controlar as inovações dos outros. Nosso objetivo mais importante com o AOSP é garantir que o software Android de código aberto seja implementado da maneira mais ampla e compatível possível, para o benefício de todos.
Que tipo de projeto de código aberto o Android é?
O Google supervisiona o desenvolvimento do AOSP principal e trabalha para criar comunidades robustas de desenvolvedores e usuários. A maior parte do código-fonte do Android é licenciada sob uma licença permissiva, a Apache 2.0, em vez de uma licença copyleft (em inglês). Escolhemos a licença Apache 2.0 porque acreditamos que ela incentiva a adoção generalizada do software do Android. Para mais detalhes, consulte Licenças.
Por que o Google é responsável pelo Android?
O lançamento de uma plataforma de software é algo complexo. A transparência é vital para o sucesso a longo prazo de uma plataforma, uma vez que essa característica atrai investimentos de desenvolvedores e garante condições iguais para todos. A plataforma também precisa ser um produto atraente para os usuários.
O Google dedicou os recursos de engenharia profissional necessários para garantir que o Android seja uma plataforma de software totalmente competitiva. Tratamos o projeto Android como uma operação de desenvolvimento de produtos em grande escala e firmamos as parcerias de negócios necessárias para garantir que dispositivos de boa qualidade que executam o Android cheguem ao mercado.
Ao garantir que o Android seja um sucesso para os usuários, ajudamos a assegurar a longevidade dele como uma plataforma e como um projeto de código aberto. Afinal, quem iria querer o código-fonte de um produto malsucedido?
Nosso objetivo é garantir um ecossistema bem-sucedido em torno do Android. Abrimos o código-fonte do Android para que qualquer pessoa possa modificar e distribuir o software para atender às próprias necessidades.
Qual é a estratégia geral do Google para o desenvolvimento de produtos Android?
Lançamos ótimos dispositivos em um mercado competitivo. Em seguida, incorporamos as inovações e melhorias que fizemos na plataforma principal para criar a próxima versão.
Na prática, isso significa que a equipe de engenharia do Android se concentra em alguns poucos dispositivos "principais" e desenvolve a próxima versão do software Android para oferecer suporte para os lançamentos desses produtos. Esses dispositivos absorvem grande parte do risco do produto e abrem caminho para a ampla comunidade de OEMs, que lança outros dispositivos que aproveitam os novos recursos. Dessa forma, garantimos que a plataforma Android evolua de acordo com as necessidades dos dispositivos do mundo real.
Como o software Android é desenvolvido?
Cada versão de plataforma do Android (como 1.5 ou 8.1) tem uma ramificação correspondente na árvore de código aberto. A ramificação mais recente é considerada a versão estável atual dela. É a ramificação que os fabricantes transferem para os dispositivos. Esse branch sempre é mantido de forma a estar adequado para lançamento.
Simultaneamente, há uma ramificação experimental atual, que é onde as contribuições especulativas, como grandes recursos da próxima geração, são desenvolvidas. Correções de bugs e outras contribuições podem ser incluídas na ramificação estável atual da ramificação experimental, conforme apropriado.
Por fim, o Google trabalha na próxima versão da plataforma Android em conjunto com o desenvolvimento de um dispositivo principal. Essa ramificação contém mudanças das ramificações experimentais e estáveis, conforme apropriado.
Para saber mais sobre ramificações e lançamentos, consulte Ciclo de vida de lançamento.
Por que partes do Android são desenvolvidas de forma particular?
Geralmente, leva mais de um ano para levar um dispositivo para o mercado. E, claro, os fabricantes de dispositivos querem fornecer o software mais recente possível. Por sua vez, os desenvolvedores não querem acompanhar constantemente novas versões da plataforma ao criar apps. Ambos os grupos enfrentam a tensão entre despachar produtos e não querer ficar para trás.
Para resolver isso, algumas partes da próxima versão do Android, incluindo as APIs da plataforma principal, são desenvolvidas em uma ramificação privada. Essas APIs constituem a próxima versão do Android. Nosso objetivo é focar a atenção na versão estável atual do código-fonte do Android enquanto criamos a próxima versão da plataforma. Isso permite que desenvolvedores e OEMs usem uma única versão sem rastrear trabalhos futuros inacabados apenas para se manterem atualizados. Outras partes do sistema Android que não estão relacionadas à compatibilidade de apps são desenvolvidas de forma transparente. Nossa intenção é passar cada vez mais dessas partes para o desenvolvimento aberto com o passar do tempo.
Quando ocorre a liberação das versões do código-fonte?
Quando elas estão prontas. Liberar a versão do código-fonte é um processo bastante complexo. Algumas partes do Android são desenvolvidas abertamente, e o código-fonte está sempre disponível. Outras são desenvolvidas primeiro em uma árvore particular, e esse código-fonte é liberado quando a próxima versão da plataforma está pronta.
Em algumas versões, as APIs da plataforma principal estão prontas com antecedência suficiente para que possamos enviar o código-fonte para uma verificação prévia antes do lançamento do dispositivo. Em outras versões, isso não é possível. Em todos os casos, liberamos o código-fonte da plataforma quando sentimos que a versão se estabilizou e quando o processo de desenvolvimento permite.
O que está envolvido na liberação do código-fonte para uma nova versão do Android?
Liberar o código-fonte para uma nova versão da plataforma Android é um processo importante. Primeiro, o software é integrado em uma imagem do sistema para um dispositivo e passa por várias formas de certificação, incluindo certificação regulatória governamental para as regiões onde os smartphones serão implantados. O código também passa pelo teste de operador. Essa é uma fase importante do processo, porque ajuda a detectar muitos bugs de software.
Quando a versão é aprovada pelos reguladores e operadores, o fabricante inicia a produção em massa dos dispositivos, e começamos a liberar o código-fonte.
Simultaneamente à produção em massa, a equipe do Google inicia vários esforços para preparar a versão do código-fonte. Esses esforços incluem fazer alterações finais na API, atualizar a documentação (para refletir quaisquer alterações feitas durante o teste de qualificação, por exemplo), preparar um SDK para a nova versão e lançar as informações de compatibilidade da plataforma.
Nossa equipe jurídica elabora uma aprovação final para liberar o código aberto. Assim como os colaboradores de código aberto são obrigados a assinar um Contrato de Licença de Colaborador atestando a posse da propriedade intelectual da contribuição deles, o Google precisa confirmar que não há problemas em fazer contribuições.
A partir do momento em que a produção em massa começa, o processo de liberação do software geralmente leva cerca de um mês. As liberações de código-fonte costumam acontecer ao mesmo tempo em que os dispositivos chegam aos usuários.
Como o AOSP se relaciona com o Programa de compatibilidade do Android?
O AOSP mantém o software Android e desenvolve novas versões. Por ser de código aberto, esse software pode ser usado para qualquer finalidade, inclusive para desenvolver dispositivos que não são compatíveis com outros dispositivos baseados no mesmo código.
A função do Programa de compatibilidade do Android é definir uma implementação de referência do Android que seja compatível com apps de terceiros criados por desenvolvedores. Dispositivos que são compatíveis com o Android estão qualificados para participar do ecossistema do Android, incluindo o Google Play. Dispositivos que não atendem aos requisitos de compatibilidade existem fora desse ecossistema.
Em outras palavras, o Programa de compatibilidade do Android é como separamos dispositivos compatíveis com Android de dispositivos que simplesmente executam derivações do código-fonte. Aceitamos todos os usos do código-fonte, mas, para participar do ecossistema do Android, o dispositivo precisa ser identificado como compatível com Android pelo programa.
Como posso contribuir com o Android?
Você pode informar bugs, escrever apps para o Android ou contribuir com código-fonte para o AOSP.
Existem limites para os tipos de contribuições de código que aceitamos. Por exemplo, alguém pode querer contribuir com uma API de app alternativa, como um ambiente completo baseado em C++. Essa contribuição seria recusada, já que o Android incentiva que os apps sejam executados no Android Runtime. Da mesma forma, não poderíamos aceitar contribuições como bibliotecas GPL ou LGPL incompatíveis com nossas metas de licenciamento.
Encorajamos os interessados em contribuir com código-fonte a entrar em contato conosco pelos canais listados na página da Comunidade Android antes de iniciar qualquer trabalho. Para mais detalhes, consulte Contribuições.
Como faço para me tornar um autor de commit do Android?
O AOSP não tem uma noção de autor do commit. Todas as contribuições (incluindo aquelas de autoria dos funcionários do Google) passam por um sistema baseado na Web conhecido como Gerrit, que faz parte do processo de engenharia do Android. Esse sistema trabalha em conjunto com o sistema de gerenciamento de código-fonte git para gerenciar de forma limpa as contribuições do código-fonte.
Um aprovador designado precisa aceitar todas as mudanças apresentadas. Os aprovadores geralmente são funcionários do Google, mas os mesmos aprovadores são responsáveis por todos os envios, independente da origem.
Para mais detalhes, consulte Como enviar patches.