• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!--
2   Copyright 2010 The Android Open Source Project
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15-->
16
17# Frequently Asked Questions #
18
19[TOC]
20
21## Open Source ##
22
23### What is the Android Open Source Project? ###
24
25We use the phrase "Android Open Source Project" or "AOSP" to refer to the
26people, the processes, and the source code that make up Android.
27
28The people oversee the project and develop the actual source code. The
29processes refer to the tools and procedures we use to manage the development
30of the software. The net result is the source code that you can use to build
31cell phone and other devices.
32
33### Why did we open the Android source code? ###
34
35Google started the Android project in response to our own experiences
36launching mobile apps. We wanted to make sure that there would always be an
37open platform available for carriers, OEMs, and developers to use to make
38their innovative ideas a reality. We also wanted to make sure that there was no
39central point of failure, so that no single industry player could restrict or control
40the innovations of any other.  The single most important goal of the Android
41Open-Source Project (AOSP) is to make sure that the open-source Android
42software is implemented as widely and compatibly as possible, to everyone's
43benefit.
44
45You can find more information on this topic at our Project Philosophy page.
46
47### What kind of open-source project is Android? ###
48
49Google oversees the development of the core Android open-source platform,
50and works to create robust developer and user communities. For the most part
51the Android source code is licensed under the permissive Apache Software
52License 2.0, rather than a "copyleft" license. The main reason for this is
53because our most important goal is widespread adoption of the software, and
54we believe that the ASL2.0 license best achieves that goal.
55
56You can find more information on this topic at our Project Philosophy and
57Licensing pages.
58
59### Why is Google in charge of Android? ###
60
61Launching a software platform is complex. Openness is vital to the
62long-term success of a platform, since openness is required to attract
63investment from developers and ensure a level playing field. However, the
64platform itself must also be a compelling product to end users.
65
66That's why Google has committed the professional engineering resources
67necessary to ensure that Android is a fully competitive software platform.
68Google treats the Android project as a full-scale product development
69operation, and strikes the business deals necessary to make sure that great
70devices running Android actually make it to market.
71
72By making sure that Android is a success with end users, we help ensure the
73vitality of Android as a platform, and as an open-source project. After all,
74who wants the source code to an unsuccessful product?
75
76Google's goal is to ensure a successful ecosystem around Android, but no
77one is required to participate, of course. We opened the Android source code
78so anyone can modify and distribute the software to meet their own needs.
79
80### What is Google's overall strategy for Android product development? ###
81
82We focus on releasing great devices into a competitive marketplace, and
83then incorporate the innovations and enhancements we made into the core
84platform, as the next version.
85
86In practice, this means that the Android engineering team typically focuses
87on a small number of "flagship" devices, and develops the next version of
88the Android software to support those product launches. These flagship
89devices absorb much of the product risk and blaze a trail for the broad OEM
90community, who follow up with many more devices that take advantage of the
91new features. In this way, we make sure that the Android platform evolves
92according to the actual needs of real-world devices.
93
94### How is the Android software developed? ###
95
96Each platform version of Android (such as 1.5, 1.6, and so on) has a
97corresponding branch in the open-source tree. At any given moment, the most
98recent such branch will be considered the "current stable" branch version.
99This current stable branch is the one that manufacturers port to their
100devices. This branch is kept suitable for release at all times.
101
102Simultaneously, there is also a "current experimental" branch, which is
103where speculative contributions, such as large next-generation features, are
104developed. Bug fixes and other contributions can be included in the current
105stable branch from the experimental branch as appropriate.
106
107Finally, Google works on the next version of the Android platform in tandem
108with developing a flagship device. This branch pulls in changes from the
109experimental and stable branches as appropriate.
110
111You can find more information on this topic at our [Branches and Releases](source/code-lines.html).
112
113### Why are parts of Android developed in private? ###
114
115It typically takes over a year to bring a device to market, but of course
116device manufacturers want to ship the latest software they can. Developers,
117meanwhile, don't want to have to constantly track new versions of the
118platform when writing apps. Both groups experience a tension between
119shipping products, and not wanting to fall behind.
120
121To address this, some parts of the next version of Android including the
122core platform APIs are developed in a private branch. These APIs constitute
123the next version of Android. Our aim is to focus attention on the current
124stable version of the Android source code, while we create the next version
125of the platform as driven by flagship Android devices. This allows developers
126and OEMs to focus on a single version without having to track unfinished
127future work just to keep up. Other parts of the Android system that aren't
128related to application compatibility are developed in the open, however.
129It's our intention to move more of these parts to open development over
130time.
131
132### When are source code releases made? ###
133
134When they are ready. Some parts of Android are developed in the open,
135so that source code is always available. Other parts are developed first in
136a private tree, and that source code is released when the next platform
137version is ready.
138
139In some releases, core platform APIs will be ready far enough in advance
140that we can push the source code out for an early look in advance of the
141device's release; however in others, this isn't possible. In all cases, we
142release the platform source when we feel the version has stabilized enough,
143and when the development process permits. Releasing the source code is a
144fairly complex process.
145
146### What is involved in releasing the source code for a new Android version? ###
147
148Releasing the source code for a new version of the Android platform is a
149significant process. First, the software gets built into a system image for
150a device, and put through various forms of certification, including
151government regulatory certification for the regions the phones will be
152deployed. It also goes through operator testing. This is an important phase
153of the process, since it helps shake out a lot of software bugs.</p>
154
155Once the release is approved by the regulators and operators, the
156manufacturer begins mass producing devices, and we turn to releasing the
157source code.
158
159Simultaneous to mass production the Google team kicks off several efforts
160to prepare the open source release. These efforts include final API changes
161and documentation (to reflect any changes that were made during
162qualification testing, for example), preparing an SDK for the new version,
163and launching the platform compatibility information.
164
165Also included is a final legal sign-off to release the code into open
166source. Just as open source contributors are required to sign a Contributors
167License Agreement attesting to their IP ownership of their contribution,
168Google too must verify that it is clear to make contributions.
169
170Starting at the time mass production begins, the software release process
171usually takes around a month, which often roughly places source code
172releases around the same time that the devices reach users.
173
174### How does the AOSP relate to the Android Compatibility Program? ###
175
176The Android Open-Source Project maintains the Android software, and
177develops new versions. Since it's open-source, this software can be used for
178any purpose, including to ship devices that are not compatible with other
179devices based on the same source.
180
181The function of the Android Compatibility Program is to define a baseline
182implementation of Android that is compatible with third-party apps written
183by developers. Devices that are "Android compatible" may participate in the
184Android ecosystem, including Google Play; devices that don't meet the
185compatibility requirements exist outside that ecosystem.
186
187In other words, the Android Compatibility Program is how we separate
188"Android compatible devices" from devices that merely run derivatives of the
189source code. We welcome all uses of the Android source code, but only
190Android compatible devices -- as defined and tested by the Android
191Compatibility Program -- may participate in the Android ecosystem.
192
193### How can I contribute to Android? ###
194
195There are a number of ways you can contribute to Android. You can report
196bugs, write apps for Android, or contribute source code to the Android
197Open-Source Project.
198
199There are some limits on the kinds of code contributions we are willing or
200able to accept. For instance, someone might want to contribute an
201alternative application API, such as a full C++-based environment. We would
202decline that contribution, since Android is focused on applications that run
203in the Dalvik VM. Alternatively, we won't accept contributions such as GPL
204or LGPL libraries that are incompatible with our licensing goals.
205
206We encourage those interested in contributing source code to contact us via
207the AOSP Community page prior to beginning any work. You can find more
208information on this topic at the Getting Involved page.
209
210### How do I become an Android committer? ###
211
212The Android Open Source Project doesn't really have a notion of a
213"committer". All contributions -- including those authored by Google
214employees -- go through a web-based system known as "gerrit" that's part of
215the Android engineering process. This system works in tandem with the git
216source code management system to cleanly manage source code
217contributions.
218
219Once submitted, changes need to be accepted by a designated Approver.
220Approvers are typically Google employees, but the same approvers are
221responsible for all submissions, regardless of origin.
222
223You can find more information on this topic at the [Submitting Patches](source/submit-patches.html) page.
224
225## Compatibility ##
226
227### What does "compatibility" mean? ###
228
229We define an "Android compatible" device as one that can run any
230application written by third-party developers using the Android SDK and NDK.
231We use this as a filter to separate devices that can participate in the
232Android app ecosystem, and those that cannot. Devices that are properly
233compatible can seek approval to use the Android trademark. Devices that are
234not compatible are merely derived from the Android source code and may not
235use the Android trademark.
236
237In other words, compatibility is a prerequisite to participate in the
238Android apps ecosystem. Anyone is welcome to use the Android source code,
239but if the device isn't compatible, it's not considered part of the Android
240ecosystem.
241
242### What is the role of Google Play in compatibility? ###
243
244Devices that are Android compatible may seek to license the Google Play
245client software. This allows them to become part of the Android app
246ecosystem, by allowing users to download developers' apps from a catalog
247shared by all compatible devices. This option isn't available to devices
248that aren't compatible.
249
250### What kinds of devices can be Android compatible? ###
251
252The Android software can be ported to a lot of different kinds of devices,
253including some on which third-party apps won't run properly. The Android
254Compatibility Definition Document (CDD) spells out the specific device
255configurations that will be considered compatible.
256
257For example, though the Android source code could be ported to run on a
258phone that doesn't have a camera, the CDD requires that in order to be
259compatible, all phones must have a camera. This allows developers to rely
260on a consistent set of capabilities when writing their apps.
261
262The CDD will evolve over time to reflect market realities. For instance,
263the 1.6 CDD only allows cell phones, but the 2.1 CDD allows devices to omit
264telephony hardware, allowing for non-phone devices such as tablet-style
265music players to be compatible. As we make these changes, we will also
266augment Google Play to allow developers to retain control over where
267their apps are available. To continue the telephony example, an app that
268manages SMS text messages would not be useful on a media player, so Google
269Play allows the developer to restrict that app exclusively to phone
270devices.
271
272### If my device is compatible, does it automatically have access to Google Play and branding? ###
273
274Google Play is a service operated by Google. Achieving compatibility is
275a prerequisite for obtaining access to the Google Play software and branding.
276Device manufacturers should contact Google to obtain access to Google
277Play.
278
279### If I am not a manufacturer, how can I get Google Play? ###
280
281Google Play is only licensed to handset manufacturers shipping devices.
282For questions about specific cases, contact android-partnerships@google.com.
283
284### How can I get access to the Google apps for Android, such as Maps? ###
285
286The Google apps for Android, such as YouTube, Google Maps and Navigation,
287Gmail, and so on are Google properties that are not part of Android, and
288are licensed separately.  Contact android-partnerships@google.com for
289inquiries related to those apps.
290
291### Is compatibility mandatory? ###
292
293No. The Android Compatibility Program is optional. Since the Android source
294code is open, anyone can use it to build any kind of device. However, if a
295manufacturer wishes to use the Android name with their product, or wants
296access to Google Play, they must first demonstrate that the device is
297compatible.
298
299### How much does compatibility certification cost? ###
300
301There is no cost to obtain Android compatibility for a device. The
302Compatibility Test Suite is open-source and available to anyone to use to
303test a device.
304
305### How long does compatibility take? ###
306
307The process is automated. The Compatibility Test Suite generates a report
308that can be provided to Google to verify compatibility. Eventually we intend
309to provide self-service tools to upload these reports to a public database.
310
311### Who determines what will be part of the compatibility definition? ###
312
313Since Google is responsible for the overall direction of Android as a
314platform and product, Google maintains the Compatibility Definition Document
315for each release. We draft the CDD for a new Android version in consultation
316with a number of OEMs, who provide input on its contents.
317
318### How long will each Android version be supported for new devices? ###
319
320Since Android's code is open-source, we can't prevent someone from using an
321old version to launch a device. Instead, Google chooses not to license the
322Google Play client software for use on versions that are considered
323obsolete. This allows anyone to continue to ship old versions of Android,
324but those devices won't use the Android name and will exist outside the
325Android apps ecosystem, just as if they were non-compatible.
326
327### Can a device have a different user interface and still be compatible? ###
328
329The Android Compatibility Program focuses on whether a device can run
330third-party applications. The user interface components shipped with a
331device (such as home screen, dialer, color scheme, and so on) does not
332generally have much effect on third-party apps. As such, device builders are
333free to customize the user interface as much as they like. The Compatibility
334Definition Document does restrict the degree to which OEMs may alter the
335system user interface for areas that do impact third-party apps.
336
337### When are compatibility definitions released for new Android versions? ###
338
339Our goal is to release new versions of Android Compatibility Definition
340Documents (CDDs) once the corresponding Android platform version has
341converged enough to permit it. While we can't release a final draft of a CDD
342for an Android software version before the first flagship device ships with
343that software, final CDDs will always be released after the first device.
344However, wherever practical we will make draft versions of CDDs available.
345
346### How are device manufacturers' compatibility claims validated? ###
347
348There is no validation process for Android device compatibility. However,
349if the device is to include Google Play, Google will typically validate
350the device for compatibility before agreeing to license the Google Play client
351software.
352
353### What happens if a device that claims compatibility is later found to have compatibility problems? ###
354
355Typically, Google's relationships with Google Play licensees allow us to
356ask them to release updated system images that fix the problems.
357
358## Compatibility Test Suite ##
359
360### What is the purpose of the CTS? ###
361
362The Compatibility Test Suite is a tool used by device manufacturers to help
363ensure their devices are compatible, and to report test results for
364validations. The CTS is intended to be run frequently by OEMs throughout the
365engineering process to catch compatibility issues early.
366
367### What kinds of things does the CTS test? ###
368
369The CTS currently tests that all of the supported Android strong-typed APIs
370are present and behave correctly. It also tests other non-API system
371behaviors such as application lifecycle and performance. We plan to add
372support in future CTS versions to test "soft" APIs such as Intents as
373well.
374
375### Will the CTS reports be made public? ###
376
377Yes. While not currently implemented, Google intends to provide web-based
378self-service tools for OEMs to publish CTS reports so that they can be
379viewed by anyone. CTS reports can be shared as widely as manufacturers
380prefer.
381
382### How is the CTS licensed? ###
383
384The CTS is licensed under the same Apache Software License 2.0 that the
385bulk of Android uses.
386
387### Does the CTS accept contributions? ###
388
389Yes please! The Android Open-Source Project accepts contributions to
390improve the CTS in the same way as for any other component. In fact,
391improving the coverage and quality of the CTS test cases is one of the best
392ways to help out Android.
393
394### Can anyone use the CTS on existing devices? ###
395
396The Compatibility Definition Document requires that compatible devices
397implement the 'adb' debugging utility. This means that any compatible device
398-- including ones available at retail -- must be able to run the CTS
399tests.
400
401