[net] Add documentation for feature process & supported platforms
As //net is used in a variety of "Not Chrome (the Browser)"
cases, add documentation to //net/docs to help enumerate the
various supported projects using //net and their capabilities
as it relates to feature design/support.
In addition, document a bit more about how to a //net feature
lives, including common design patterns that tend to trip up
folks proposing features for //net. This is just an initial
draft to be iterated and refined on.
BUG=none
TEST=none
Review-Url: https://codereview.chromium.org/2700673002
Cr-Commit-Position: refs/heads/master@{#451795}
diff --git a/net/docs/supported-projects.md b/net/docs/supported-projects.md
new file mode 100644
index 0000000..1403dc3
--- /dev/null
+++ b/net/docs/supported-projects.md
@@ -0,0 +1,124 @@
+# Supported Projects
+
+The `//net` stack is used on a variety of platforms and in a variety of open
+source projects. These different platforms and projects have differing
+degrees of support from `//net` OWNERS as well as differing requirements for
+designs and technical requirements.
+
+Note that this is a rough high-level overview of the major projects; as more
+of `//net` is broken into consumable services/components as part of the Mojo
+servicificaiton efforts, it's likely that there will be a larger number of
+'variants' of these projects with different constraints and features.
+
+## Google Chrome Browser
+
+The Google Chrome browser, which lives in `//chrome`, is the most important
+`//net` consumer and shapes many of the core design decisions. In general,
+features that are not intended with or not compatible with the needs of
+the Google Chrome browser will have a very high bar for acceptance in `//net`.
+
+The feature matrix
+
+ * **Supported Platforms**: Windows, macOS, Linux, Chromium OS, iOS, Android
+ * **Release Frequency**: ~6 weeks between releases
+ * **Automatic Updates**: Yes
+ * **Command-line Flags**:
+ * __Yes__: Windows, macOS, Linux, Chromium OS (Dev image), Android (rooted)
+ * __No__: Chromium OS (Release image), iOS, Android (Release)
+ * **Field Trials (Finch)**: Yes
+ * **Enterprise Policy**: Yes
+ * **User Metrics (UMA)**: Yes
+ * **Component Updater**: Yes
+
+## Chromium Browser
+
+The Chromium browser refers to the practice of certain Linux distributions to
+bundle the open-source components of Chrome Browser in `//chrome`, branded
+as Chromium. This version is not distributed by Google, but by individual
+Linux distributions (primarily). Other distributions based on building Chromium
+for other platforms exist, although do not see as wide of usage.
+
+ * **Supported Platforms**: Windows, macOS, Linux, Chromium OS, iOS, Android
+ * **Release Frequency**: Varies by distributor; some Linux distributions
+ treat versions of Chromium as "Long Term Stable" and support a single
+ version for a longer time than the Chromium projects do, others track
+ the Google Chrome release frequency.
+ * **Automatic Updates**: Varies by distributor
+ * **Command-line Flags**:
+ * __Yes__: Windows, macOS, Linux, Chromium OS (dev image), Android (rooted)
+ * __No__: Chromium OS (Release image), iOS, Android (Release)
+ * **Field Trials (Finch)**: No
+ * **Enterprise Policy**: Yes
+ * **User Metrics (UMA)**: Varies by distributor
+ * **Component Updater**: Varies by distributor
+
+## Android WebView
+
+Distinct from the Chromium browser, the Android WebView is itself based on
+the Chromium browser. On official Android devices running Android N or later,
+WebView is automatically updated when Google Chrome is updated on the
+device. For earlier devices, Android WebView is updated by the System WebView
+component.
+
+Android WebView may also be used on non-official Android devices, such as
+those based on the Android Open Source Project but do not go through the
+Android [Compatability Test Suite](https://source.android.com/compatibility/cts/).
+Such releases have limited to no interaction with the Chromium projects, and
+so their capabilities cannot be conclusively documented.
+
+For official Android devices, WebView has the following capabilities.
+
+ * **Supported Platforms**: Android
+ * **Release Frequency**: ~6 weeks between releases
+ * **Automatic Updates**: Varies. Updates are made available on the Android
+ App Store, but users must explicitly choose to update. As such, the
+ rate of update varies much more than for the Chromium browser.
+ * **Command-line Flags**: No
+ * **Field Trials (Finch)**: No
+ * **Enterprise Policy**: No
+ * **User Metrics (UMA)**: No
+ * **Component Updater**: No
+
+## `//content` Embedders
+
+In addition to Chromium, there are a number of other of embedders of
+`//content`, such as projects like [Chromium Embedded Framework](https://bitbucket.org/chromiumembedded/cef)
+or [Electron](http://electron.atom.io/). While `//net` does not directly
+support these consumers, it does support the `//content` embedding API that
+these projects use. Note that this excludes the
+[content_shell](../../content/shell) test framework.
+
+ * **Supported Platforms**: Windows, macOS, Linux, Chromium OS, iOS, Android
+ * **Release Frequency**: Varies by consumer; Officially ~6 weeks
+ * **Command-line Flags**: Varies by consumer
+ * **Field Trials (Finch)**: No
+ * **Enterprise Policy**: No
+ * **User Metrics (UMA)**: No
+ * **Component Updater**: No
+
+## Cronet
+
+[Cronet](../../components/cronet/README.md) is a version of the `//net`
+network stack for use in mobile applications on iOS and Android. While
+primarily targetting first-party Google applications, Cronet's status as an
+open-source project, similar to the Chromium browser, means that it may
+find itself embedded in a variety of other projects.
+
+Unlike some of the other `//net` consumers, Cronet does not necessarily
+implement "The Web Platform" (as the holistic set of user agent-focused
+features), and instead is more akin to an HTTP(s) client networking library.
+
+ * **Supported Platforms**: iOS, Android
+ * **Release Frequency**: Varies. While "releases" are made following the
+ same frequency as Google Chrome, because it is treated similar to
+ a "third-party" library, different products and projects will ship
+ different versions of Cronet for differing periods of time.
+ * **Command-line Flags**: No
+ * **Field Trials (Finch)**: No
+ * **Enterprise Policy**: No
+ * **User Metrics (UMA)**:
+ * __Yes__: First-party (Google) projects, although they will be
+ reported in project-specific buckets (e.g. no overarching set of
+ metrics for all Cronet consumers).
+ * __No__: In general
+ * **Component Updater**: No