1# Supported Projects 2 3The `//net` stack is used on a variety of platforms and in a variety of open 4source projects. These different platforms and projects have differing 5degrees of support from `//net` OWNERS as well as differing requirements for 6designs and technical requirements. 7 8Note that this is a rough high-level overview of the major projects; as more 9of `//net` is broken into consumable services/components as part of the Mojo 10servicificaiton 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 15The Google Chrome browser, which lives in `//chrome`, is the most important 16`//net` consumer and shapes many of the core design decisions. In general, 17features that are not intended with or not compatible with the needs of 18the Google Chrome browser will have a very high bar for acceptance in `//net`. 19 20The 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 35The Chromium browser refers to the practice of certain Linux distributions to 36bundle the open-source components of Chrome Browser in `//chrome`, branded 37as Chromium. This version is not distributed by Google, but by individual 38Linux distributions (primarily). Other distributions based on building Chromium 39for 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 57Distinct from the Chromium browser, the Android WebView is itself based on 58the Chromium browser. On official Android devices running Android N or later, 59WebView is automatically updated when Google Chrome is updated on the 60device. For earlier devices, Android WebView is updated by the System WebView 61component. 62 63Android WebView may also be used on non-official Android devices, such as 64those based on the Android Open Source Project but do not go through the 65Android [Compatability Test Suite](https://source.android.com/compatibility/cts/). 66Such releases have limited to no interaction with the Chromium projects, and 67so their capabilities cannot be conclusively documented. 68 69For 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 for production devices, [yes for userdebug 77 devices](https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/commandline-flags.md) 78 * **Field Trials (Finch)**: Yes, [with 79 caveats](https://g3doc.corp.google.com/analysis/uma/g3doc/finch/platforms.md?cl=head) 80 * **Enterprise Policy**: Yes, with caveats (TODO(rsleevi): document caveats) 81 * **User Metrics (UMA)**: Yes, [with caveats](http://go/clank-webview/uma) 82 * **Component Updater**: No 83 84## `//content` Embedders 85 86In addition to Chromium, there are a number of other of embedders of 87`//content`, such as projects like [Chromium Embedded Framework](https://bitbucket.org/chromiumembedded/cef), 88[Electron](http://electron.atom.io/) or Fuchsia's [WebEngine](https://chromium.googlesource.com/chromium/src/+/HEAD/fuchsia_web/webengine/). 89While `//net` does not directly support these consumers, it does support the 90`//content` embedding API that these projects use. Note that this excludes the 91[content_shell](../../content/shell) test framework. 92 93 * **Supported Platforms**: Windows, macOS, Linux, Chromium OS, iOS, Android, 94 Fuchsia 95 * **Release Frequency**: Varies by consumer; Officially ~6 weeks 96 * **Command-line Flags**: Varies by consumer 97 * **Field Trials (Finch)**: No 98 * **Enterprise Policy**: No 99 * **User Metrics (UMA)**: No 100 * **Component Updater**: No 101 102## Cronet 103 104[Cronet](../../components/cronet/README.md) is a version of the `//net` 105network stack for use in mobile applications on iOS and Android. While 106primarily targetting first-party Google applications, Cronet's status as an 107open-source project, similar to the Chromium browser, means that it may 108find itself embedded in a variety of other projects. 109 110Unlike some of the other `//net` consumers, Cronet does not necessarily 111implement "The Web Platform" (as the holistic set of user agent-focused 112features), and instead is more akin to an HTTP(s) client networking library. 113 114 * **Supported Platforms**: iOS, Android 115 * **Release Frequency**: Varies. While "releases" are made following the 116 same frequency as Google Chrome, because it is treated similar to 117 a "third-party" library, different products and projects will ship 118 different versions of Cronet for differing periods of time. 119 * **Command-line Flags**: No 120 * **Field Trials (Finch)**: No 121 * **Enterprise Policy**: No 122 * **User Metrics (UMA)**: 123 * __Yes__: First-party (Google) projects, although they will be 124 reported in project-specific buckets (e.g. no overarching set of 125 metrics for all Cronet consumers). 126 * __No__: In general 127 * **Component Updater**: No 128