Home | History | Annotate | Download | only in src
      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 
     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
    184 Android ecosystem, including Google Play; devices that don't meet the
    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 
    242 ### What is the role of Google Play in compatibility? ###
    243 
    244 Devices that are Android compatible may seek to license the Google Play
    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
    266 augment Google Play to allow developers to retain control over where
    267 their apps are available. To continue the telephony example, an app that
    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
    270 devices.
    271 
    272 ### If my device is compatible, does it automatically have access to Google Play and branding? ###
    273 
    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.
    278 
    279 ### If I am not a manufacturer, how can I get Google Play? ###
    280 
    281 Google Play is only licensed to handset manufacturers shipping devices.
    282 For questions about specific cases, contact android-partnerships (a] 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 (a] 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
    296 access to Google Play, they must first demonstrate that the device is
    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
    322 Google Play client software for use on versions that are considered
    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,
    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
    351 software.
    352 
    353 ### What happens if a device that claims compatibility is later found to have compatibility problems? ###
    354 
    355 Typically, Google's relationships with Google Play licensees allow us to
    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 
    401