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