<!--
  Copyright 2021 The Go Authors. All rights reserved.
  Use of this source code is governed by a BSD-style
  license that can be found in the LICENSE file.
-->

{{define "title"}}<title>License Policy · pkg.go.dev</title>{{end}}

{{define "main"}}
  <style>
    .LicenseTypes-list {
      line-height: 1.25rem;
      list-style: initial;
      padding-left: 2.25rem;
    }
  </style>
  <main class="go-Container">
    <div class="go-Content">
      <h1 data-test-id="license-policy-heading">License Disclaimer</h1>
      <p>
        The Go website displays license information in order to help users evaluate
        packages for their intended use. Licenses are detected using heuristics
        based on their file name and contents. We hope this information is helpful,
        but this is not legal advice and we do not make any guarantees regarding
        the accuracy of our license detection.
      </p>
      <p>
        If we are not able to detect one of the licenses below, only
        limited package and module information will be made available. If you are
        a package author seeking to make your content available on the Go
        website, please be aware that our detection algorithms can be affected by
        any modifications of the license text, or by the use of an uncommon
        license file name.
      </p>
      <p>
        We currently use
        <a href="https://pkg.go.dev/github.com/google/licensecheck">github.com/google/licensecheck</a>
        for license detection, and look for licenses in files with the following names:
        {{commaseparate .LicenseFileNames}}. The match is case-insensitive.
      </p>
      <p>
        We currently detect and recognize the following licenses:
        <ul class="LicenseTypes-list">
          {{range .LicenseTypes -}}
            <li>
              {{if .URL -}}
                <a href="{{.URL}}" target="_blank" rel="noopener">{{.Name}}</a>
              {{else}}
                {{.Name}}
              {{- end}}
            </li>
          {{- end}}
        </ul>
      </p>
      <p>
        If you use a package whose license is not detected, please inform the package author.
        If you are a package author who believes a license for one of your packages
        should have been detected and was not, please check for discrepancies between your license
        and the official text. If you still believe there is an error, please
        <a href="https://golang.org/s/pkgsite-feedback">file an issue</a>.
      </p>
    </div>
  </main>
{{end}}
