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