Domande frequenti su AOSP

Questo documento contiene risposte alle domande generali sulla piattaforma open source Android (AOSP).

Domande open source

Perché Google ha reso pubblico il codice sorgente di Android?

Google ha avviato AOSP in risposta alle nostre esperienze di lancio di app mobile. Volevamo assicurarci che fosse sempre disponibile una piattaforma aperta che potesse essere utilizzata da operatori, OEM e sviluppatori per realizzare le loro idee innovative. Volevamo anche evitare un punto di fallimento centrale, in modo che nessun singolo attore del settore potesse limitare o controllare le innovazioni di un altro. Il nostro singolo obiettivo più importante con AOSP è assicurarci che il software Android open source venga implementato nel modo più ampio e compatibile possibile, a vantaggio di tutti.

Che tipo di progetto open source è Android?

Google supervisiona lo sviluppo del codice sorgente di AOSP e si impegna a creare solide community di sviluppatori e utenti. Per la maggior parte, il codice sorgente di Android è concesso in licenza ai sensi della permissiva Licenza Apache 2.0, anziché di una licenza copyleft. Abbiamo scelto la licenza Apache 2.0 perché riteniamo che incoraggi l'adozione diffusa del software Android. Per maggiori dettagli, consulta Licenze.

Perché Google è responsabile di Android?

Il lancio di una piattaforma software è complesso. L'apertura è fondamentale per il successo a lungo termine di una piattaforma, perché attira gli investimenti degli sviluppatori e garantisce un'esperienza equa per tutti. La piattaforma deve anche essere un prodotto interessante per gli utenti.

Google ha impegnato le risorse di ingegneria professionale necessarie per garantire che Android sia una piattaforma software completamente competitiva. Google tratta il progetto Android come un'operazione di sviluppo completo del prodotto e stipula i contratti commerciali necessari per garantire che sul mercato vengano commercializzati dispositivi Android di alta qualità.

Garantendo che Android sia un successo per gli utenti, contribuiamo a garantire la vitalità di Android come piattaforma e progetto open source. Dopo tutto, chi vuole il codice sorgente di un prodotto non riuscito?

Il nostro obiettivo è garantire un ecosistema di successo basato su Android. Abbiamo reso pubblico il codice sorgente di Android in modo che chiunque possa modificare e distribuire il software in base alle proprie esigenze.

Qual è la strategia complessiva di Google per lo sviluppo di prodotti Android?

Rilasciamo grandi dispositivi in un mercato competitivo. Poi, le innovazioni e i miglioramenti apportati vengono incorporati nella piattaforma di base come versione successiva.

In pratica, questo significa che il team di ingegneria di Android si concentra su un numero ridotto di dispositivi "flagship" e sviluppa la versione successiva del software Android per supportare i lanci di questi prodotti. Questi dispositivi di punta assorbono gran parte del rischio del prodotto e aprono la strada alla vasta community di OEM, che li segue con altri dispositivi che sfruttano le nuove funzionalità. In questo modo, ci assicuriamo che la piattaforma Android si evolva in base alle esigenze dei dispositivi reali.

Come viene sviluppato il software Android?

Ogni versione della piattaforma di Android (ad esempio 1.5 o 8.1) ha un ramo corrispondente nell'albero open source. Il ramo più recente è considerato la versione del ramo stabile corrente. È il ramo che i produttori portano ai loro dispositivi. Questo ramo viene mantenuto idoneo per il rilascio in qualsiasi momento.

Contemporaneamente, esiste un ramo sperimentale attuale, dove vengono sviluppati contributi speculativi, come funzionalità di nuova generazione di grandi dimensioni. Correzioni di bug e altri contributi possono essere inclusi nel ramo stabile attuale del ramo sperimentale, a seconda dei casi.

Infine, Google lavora alla prossima versione della piattaforma Android in tandem con lo sviluppo di un dispositivo di punta. Questo ramo importa le modifiche dai rami sperimentale e stabile, a seconda dei casi.

Per informazioni dettagliate su branch e release, consulta Ciclo di vita delle release.

Perché alcune parti di Android vengono sviluppate in privato?

In genere, sono necessari più di un anno per lanciare un dispositivo sul mercato. Naturalmente, i produttori di dispositivi vogliono fornire il software più recente possibile. Al contempo, gli sviluppatori non vogliono monitorare costantemente le nuove versioni della piattaforma quando scrivono app. Entrambi i gruppi devono fare i conti con la necessità di spedire i prodotti e di non rimanere indietro.

Per risolvere il problema, alcune parti della prossima versione di Android, tra cui le API di piattaforma di base, vengono sviluppate in un ramo privato. Queste API costituiscono la prossima versione di Android. Il nostro obiettivo è attirare l'attenzione sull'attuale versione stabile del codice sorgente di Android mentre creiamo la versione successiva della piattaforma. Ciò consente a sviluppatori e OEM di utilizzare un'unica versione senza monitorare i lavori futuri non completati, solo per stare al passo. Altre parti del sistema Android non correlate alla compatibilità delle app vengono sviluppate in modo aperto. Abbiamo intenzione di sviluppare più parti nello sviluppo aperto nel corso del tempo.

Quando vengono rilasciate le release del codice sorgente?

Quando sarà tutto pronto. Il rilascio del codice sorgente è un processo piuttosto complesso. Alcune parti di Android vengono sviluppate in modo aperto e il codice sorgente è sempre disponibile. Altre parti vengono sviluppate innanzitutto in una struttura ad albero privata e il codice fonte viene rilasciato quando è pronta la versione successiva della piattaforma.

In alcune release, le API di base della piattaforma sono pronte con largo anticipo, così da poter effettuare il push del codice sorgente per un'anteprima prima del rilascio del dispositivo. In altre release, questa operazione non è possibile. In ogni caso, rilasciamo il codice sorgente della piattaforma quando riteniamo che la versione sia stabile e quando il processo di sviluppo lo consente.

Cosa comporta il rilascio del codice sorgente per una nuova versione di Android?

Il rilascio del codice sorgente di una nuova versione della piattaforma Android è un processo importante. Innanzitutto, il software viene integrato in un'immagine di sistema per un dispositivo e sottoposto a varie forme di certificazione, inclusa la certificazione normativa governativa per le regioni in cui verranno implementati gli smartphone. Il codice viene sottoposto anche a test degli operatori. Si tratta di una fase importante del processo, in quanto aiuta a rilevare i bug del software.

Una volta approvata la release dagli enti regolatori e dagli operatori, il produttore inizia a produrre dispositivi in serie e noi iniziamo a rilasciare il codice sorgente.

Contemporaneamente alla produzione di massa, il team di Google avvia diversi progetti per preparare la release open source. Queste attività includono l'applicazione di modifiche finali alle API, l'aggiornamento della documentazione (ad esempio per riflettere eventuali modifiche apportate durante i test di qualificazione), la preparazione di un SDK per la nuova versione e il lancio delle informazioni sulla compatibilità della piattaforma.

Il nostro team legale dà l'approvazione finale per il rilascio del codice in open source. Così come i collaboratori open source sono tenuti a firmare un Contratto di licenza per i collaboratori che attesta la loro proprietà intellettuale del contributo, Google deve verificare che la fonte sia autorizzata a fornire contributi.

Dal momento dell'inizio della produzione di massa, la procedura di rilascio del software richiede solitamente circa un mese, pertanto le release del codice sorgente avvengono spesso nello stesso periodo in cui i dispositivi raggiungono gli utenti.

Che relazione c'è tra AOSP e il Programma di compatibilità Android?

AOSP gestisce il software Android e sviluppa nuove versioni. Poiché è open source, questo software può essere utilizzato per qualsiasi scopo, incluso lo sviluppo di dispositivi non compatibili con altri dispositivi basati sulla stessa origine.

La funzione del Programma di compatibilità Android è definire un'implementazione di riferimento di Android compatibile con le app di terze parti scritte dagli sviluppatori. I dispositivi compatibili con Android sono idonei a partecipare all'ecosistema Android, incluso Google Play; i dispositivi che non soddisfano i requisiti di compatibilità sono disponibili al di fuori di questo ecosistema.

In altre parole, il Programma di compatibilità Android ci consente di distinguere i dispositivi compatibili con Android da quelli che eseguono semplicemente derivati del codice sorgente. Accogliamo con favore tutti gli utilizzi del codice sorgente di Android, ma per partecipare all'ecosistema Android, un dispositivo deve essere identificato come compatibile con Android dal programma.

Come posso contribuire ad Android?

Puoi segnalare bug, scrivere app per Android o contribuire con il codice sorgente all'AOSP.

I tipi di contributi basati sul codice che accettiamo sono soggetti a limiti. Ad esempio, qualcuno potrebbe voler contribuire con un'API di app alternativa, come un ambiente completo basato su C++. declineremmo questo contributo, perché Android incoraggia l'esecuzione delle app nel runtime ART. Analogamente, non accetteremo contributi, quali le librerie LGPL o GPL, incompatibili con i nostri obiettivi di licenza.

Invitiamo coloro che sono interessati a fornire il proprio codice sorgente a contattarci tramite i canali elencati nella community Android prima di iniziare qualsiasi lavoro. Per maggiori dettagli, consulta Contributi.

Come faccio a diventare un committer di Android?

AOSP non ha un concetto di committer. Tutti i contributi (inclusi quelli scritti dai dipendenti di Google) vengono esaminati da un sistema basato su web noto come Gerrit, che fa parte del processo di ingegneria di Android. Questo sistema lavora in tandem con il sistema di gestione del codice sorgente Git per gestire in modo pulito i contributi al codice sorgente.

Un approvatore designato deve accettare tutte le modifiche inviate. Gli approvatori sono in genere dipendenti di Google, ma sono responsabili di tutti i contenuti inviati, indipendentemente dalla loro origine.

Per maggiori dettagli, vedi Invio di patch.