Skip to content

Edit pass from the product team #33533

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jan 13, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions styleguide/3rdPartyDependencies.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
# Third-party dependencies

When code samples take dependencies, our goal is that readers can use the material without additional research. This requires restricting dependencies to licenses that are well established and understood for both open-source and commercial offerings. We categorize dependencies according to the licensing schemes here:
When code samples take dependencies, readers should be able to use the material without significant license burden or research on terms. This goal requires restricting dependencies to certain types of open source or commercial licenses.

- **Open-source** : Rely on the [Open Source Initiative (OSI)](https://opensource.org/) to provide definitions for us. Offerings must meet the [definition](https://opensource.org/osd) provided by OSI, including using an [OSI approved license](https://opensource.org/licenses). Any component whose license is not an OSI approved license is considered a commercial offering. Prefer OSS projects that are members of any of the [OSS foundations that Microsoft is part of](https://opensource.microsoft.com/ecosystem/). Prefer permissive licenses for libraries. GPL or similar licenses are allowed for tools, OSs, and similar components.
- **Commercial**: Samples may take dependencies on commercial offerings if readers can learn from our content without unnecessary additional costs. Typically, this means a community edition or free trial sufficient for its use in content is available. A commercial license scheme may be a form of dual license or tiered license.
- **Dual licensed**: Readers choose either of two licenses based on their needs. For example, if the offering has an OSS and commercial license, readers can choose between them.
- **Tiered licensed**: Readers are expected to use the license tier that corresponds to their characteristics. For example, tiers may be available for students, hobbyists, or companies with defined revenue thresholds. For offerings with tiered licenses, we strive to limit our use in tutorials to the features available in the lowest tier. This enables the widest audience for the article. [Visual Studio](https://visualstudio.com) and [IdentityServer](https://www.identityserver.com/) are examples of this license type used in dotnet docs.
Samples may take the following categories of dependencies:

- **Open-source** : Open source offerings that use an [Open Source Initiative (OSI) approved license](https://opensource.org/licenses). Any component whose license isn't an OSI-approved is considered a commercial offering. Prefer OSS projects that are members of any of the [OSS foundations that Microsoft is part of](https://opensource.microsoft.com/ecosystem/). Prefer permissive licenses for libraries, like [MIT](https://opensource.org/licenses/MIT) and [Apache 2](https://opensource.org/licenses/Apache-2.0). Copy-left licenses like [GPL](https://opensource.org/licenses/gpl-license) are acceptable for tools, and OSs. [Kubernetes](https://github.com/kubernetes/kubernetes), [Linux](https://github.com/torvalds/linux), and [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) are examples of this license type.
- **Commercial**: Commercial offerings that enable readers to learn from our content without unnecessary extra costs. Typically, the offering has some form of a community edition, or a free trial sufficient for its use in content. A commercial license may be a form of dual-license, or tiered license.
- **Dual licensed**: Commercial offerings that enable readers to choose either license based on their needs. For example, if the offering has an OSS and commercial license, readers can choose between them. [MySql](https://github.com/mysql/mysql-server) is an example of this license type.
- **Tiered licensed**: Offerings that enable readers to use the license tier that corresponds to their characteristics. For example, tiers may be available for students, hobbyists, or companies with defined revenue thresholds. For offerings with tiered licenses, strive to limit our use in tutorials to the features available in the lowest tier. This policy enables the widest audience for the article. [Docker](https://www.docker.com/), [IdentityServer](https://www.identityserver.com/), [ImageSharp](https://sixlabors.com/products/imagesharp/), and [Visual Studio](https://visualstudio.com) are examples of this license type.

In general, we prefer taking dependencies on licensed components in the order of the listed categories. In cases where the category may not be well known, we'll document the category so that readers understand the choice that they're making by using that dependency.