rsleevi | 7390e55 | 2017-02-21 18:06:43 | [diff] [blame] | 1 | # Supported Projects |
| 2 | |
| 3 | The `//net` stack is used on a variety of platforms and in a variety of open |
| 4 | source projects. These different platforms and projects have differing |
| 5 | degrees of support from `//net` OWNERS as well as differing requirements for |
| 6 | designs and technical requirements. |
| 7 | |
| 8 | Note that this is a rough high-level overview of the major projects; as more |
| 9 | of `//net` is broken into consumable services/components as part of the Mojo |
| 10 | servicificaiton efforts, it's likely that there will be a larger number of |
| 11 | 'variants' of these projects with different constraints and features. |
| 12 | |
| 13 | ## Google Chrome Browser |
| 14 | |
| 15 | The Google Chrome browser, which lives in `//chrome`, is the most important |
| 16 | `//net` consumer and shapes many of the core design decisions. In general, |
| 17 | features that are not intended with or not compatible with the needs of |
| 18 | the Google Chrome browser will have a very high bar for acceptance in `//net`. |
| 19 | |
| 20 | The feature matrix |
| 21 | |
| 22 | * **Supported Platforms**: Windows, macOS, Linux, Chromium OS, iOS, Android |
| 23 | * **Release Frequency**: ~6 weeks between releases |
| 24 | * **Automatic Updates**: Yes |
| 25 | * **Command-line Flags**: |
| 26 | * __Yes__: Windows, macOS, Linux, Chromium OS (Dev image), Android (rooted) |
| 27 | * __No__: Chromium OS (Release image), iOS, Android (Release) |
| 28 | * **Field Trials (Finch)**: Yes |
| 29 | * **Enterprise Policy**: Yes |
| 30 | * **User Metrics (UMA)**: Yes |
| 31 | * **Component Updater**: Yes |
| 32 | |
| 33 | ## Chromium Browser |
| 34 | |
| 35 | The Chromium browser refers to the practice of certain Linux distributions to |
| 36 | bundle the open-source components of Chrome Browser in `//chrome`, branded |
| 37 | as Chromium. This version is not distributed by Google, but by individual |
| 38 | Linux distributions (primarily). Other distributions based on building Chromium |
| 39 | for other platforms exist, although do not see as wide of usage. |
| 40 | |
| 41 | * **Supported Platforms**: Windows, macOS, Linux, Chromium OS, iOS, Android |
| 42 | * **Release Frequency**: Varies by distributor; some Linux distributions |
| 43 | treat versions of Chromium as "Long Term Stable" and support a single |
| 44 | version for a longer time than the Chromium projects do, others track |
| 45 | the Google Chrome release frequency. |
| 46 | * **Automatic Updates**: Varies by distributor |
| 47 | * **Command-line Flags**: |
| 48 | * __Yes__: Windows, macOS, Linux, Chromium OS (dev image), Android (rooted) |
| 49 | * __No__: Chromium OS (Release image), iOS, Android (Release) |
| 50 | * **Field Trials (Finch)**: No |
| 51 | * **Enterprise Policy**: Yes |
| 52 | * **User Metrics (UMA)**: Varies by distributor |
| 53 | * **Component Updater**: Varies by distributor |
| 54 | |
| 55 | ## Android WebView |
| 56 | |
| 57 | Distinct from the Chromium browser, the Android WebView is itself based on |
| 58 | the Chromium browser. On official Android devices running Android N or later, |
| 59 | WebView is automatically updated when Google Chrome is updated on the |
| 60 | device. For earlier devices, Android WebView is updated by the System WebView |
| 61 | component. |
| 62 | |
| 63 | Android WebView may also be used on non-official Android devices, such as |
| 64 | those based on the Android Open Source Project but do not go through the |
| 65 | Android [Compatability Test Suite](https://source.android.com/compatibility/cts/). |
| 66 | Such releases have limited to no interaction with the Chromium projects, and |
| 67 | so their capabilities cannot be conclusively documented. |
| 68 | |
| 69 | For official Android devices, WebView has the following capabilities. |
| 70 | |
| 71 | * **Supported Platforms**: Android |
| 72 | * **Release Frequency**: ~6 weeks between releases |
| 73 | * **Automatic Updates**: Varies. Updates are made available on the Android |
| 74 | App Store, but users must explicitly choose to update. As such, the |
| 75 | rate of update varies much more than for the Chromium browser. |
| 76 | * **Command-line Flags**: No |
| 77 | * **Field Trials (Finch)**: No |
| 78 | * **Enterprise Policy**: No |
| 79 | * **User Metrics (UMA)**: No |
| 80 | * **Component Updater**: No |
| 81 | |
| 82 | ## `//content` Embedders |
| 83 | |
| 84 | In addition to Chromium, there are a number of other of embedders of |
| 85 | `//content`, such as projects like [Chromium Embedded Framework](https://bitbucket.org/chromiumembedded/cef) |
| 86 | or [Electron](http://electron.atom.io/). While `//net` does not directly |
| 87 | support these consumers, it does support the `//content` embedding API that |
| 88 | these projects use. Note that this excludes the |
| 89 | [content_shell](../../content/shell) test framework. |
| 90 | |
| 91 | * **Supported Platforms**: Windows, macOS, Linux, Chromium OS, iOS, Android |
| 92 | * **Release Frequency**: Varies by consumer; Officially ~6 weeks |
| 93 | * **Command-line Flags**: Varies by consumer |
| 94 | * **Field Trials (Finch)**: No |
| 95 | * **Enterprise Policy**: No |
| 96 | * **User Metrics (UMA)**: No |
| 97 | * **Component Updater**: No |
| 98 | |
| 99 | ## Cronet |
| 100 | |
| 101 | [Cronet](../../components/cronet/README.md) is a version of the `//net` |
| 102 | network stack for use in mobile applications on iOS and Android. While |
| 103 | primarily targetting first-party Google applications, Cronet's status as an |
| 104 | open-source project, similar to the Chromium browser, means that it may |
| 105 | find itself embedded in a variety of other projects. |
| 106 | |
| 107 | Unlike some of the other `//net` consumers, Cronet does not necessarily |
| 108 | implement "The Web Platform" (as the holistic set of user agent-focused |
| 109 | features), and instead is more akin to an HTTP(s) client networking library. |
| 110 | |
| 111 | * **Supported Platforms**: iOS, Android |
| 112 | * **Release Frequency**: Varies. While "releases" are made following the |
| 113 | same frequency as Google Chrome, because it is treated similar to |
| 114 | a "third-party" library, different products and projects will ship |
| 115 | different versions of Cronet for differing periods of time. |
| 116 | * **Command-line Flags**: No |
| 117 | * **Field Trials (Finch)**: No |
| 118 | * **Enterprise Policy**: No |
| 119 | * **User Metrics (UMA)**: |
| 120 | * __Yes__: First-party (Google) projects, although they will be |
| 121 | reported in project-specific buckets (e.g. no overarching set of |
| 122 | metrics for all Cronet consumers). |
| 123 | * __No__: In general |
| 124 | * **Component Updater**: No |