Unknown Nuget license for packages pointing to MICROSOFT .NET LIBRARY

Problem statement

For a variety of nuget packages we get an unknown license while they are using Microsoft Software License Terms.

Zendesk Ticket - internal only

Examples

Root cause

License-interfacer is responsible for finding the license of a nuget package. It does that by reaching the nuget repo. For example getting package information for System.threading.Tasks , a call is done on https://api.nuget.org/v3/registration5-gz-semver2/system.threading.tasks/index.json . The correct version is identified and in case the field licenseExpression is not set we try to follow the licenseUrl to identify the license. For this example "licenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" which is pointing to Microsoft Software License Terms. License-interfacer is using a classifier. The classifier attempts to match the license from the url to a known asset (license) from the asset directory which is pulled by this script. The problem is that Microsoft Software License Terms is not part of the assets.

More information

This license (also referred to as a EULA by Microsoft) is used sometimes for compiled binaries for .NET although we can also find it in source code repos.

Interesting links

Implementation Plan

  • Update interfacer so that it caches the new license
  • Update schema so that the new license is in the database
  • Deploy interfacer and schema on Dev
  • Deploy interfacer and schema on prod
  • Run nuget feeder with SKIP_CUROSR in order to update the database

/cc @cmutua

Edited by Nick Ilieskou