<!--
  Copyright 2019 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 "main_content"}}
<div class="Container">
  <div class="Content">
    <h1 class="Content-header">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>
        {{range .LicenseTypes -}}
          <li>
	    {{if .URL -}}
              <a href="{{.URL}}" target="_blank">{{.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 email
      <a href="mailto:go-discovery-feedback@google.com">go-discovery-feedback@google.com</a>.
    </p>
  </div>
</div>
{{end}}
