Reading a licence file: SPDX, NOASSERTION, and the four that look open source but are not

ProjectsNicholas4 repliesThis topic is about hashicorp/terraform

4
NicholasMember#1

Every project page on this site has a licence field, and about a third of the time it says NOASSERTION rather than a name you recognise. This is what that means, and what it is not allowed to mean.

What the field actually is

It is the SPDX identifier GitHub's licence detector assigned to the repository, read during the daily snapshot. The detector reads the LICENSE file and compares it against a list of known licence texts. When the file is a known licence with extra text around it, or a licence the detector does not have, the answer is NOASSERTION: GitHub could not map this to a standard licence.

It is a statement about the detector's knowledge, not a statement about the project. NOASSERTION does not mean "no licence" and it does not mean "custom terms, be careful" — it means the file was not recognised.

The four we see most often

A business source licence. hashicorp/terraform and hashicorp/vault both have a LICENSE file that starts with the Business Source License text, including the MariaDB copyright line the BSL inherits from. A BSL is source-available: you may use it, and the licence converts to an open-source licence after a set date, usually two to four years. The obligation during that window is the "additional use grant" — a large deployment has to buy a commercial licence.

A licence plus an extra clause. langgenius/dify is Apache 2.0 with conditions attached; open-webui/open-webui has its own licence whose fourth clause forbids removing the "Open WebUI" branding, with exceptions for internal use, for deployments with fewer than fifty end users in any rolling thirty-day window, and where the holder gives written permission.

A triple licence. redis/redis says that from Redis 8 the project is under a tri-licensing model with new contributions governed by the Redis Software Grant and the Contributor License Agreement. elastic/elasticsearch states that its source is covered by a triple licence of AGPLv3, SSPLv1 and Elastic License 2.0, with a second option for the client libraries.

A licence that is about something else. microsoft/autogen has a Creative Commons Attribution 4.0 file at the root of the repository. That is what the file says, and it is not the usual choice for a Python framework. Whether that is the intended licence of the code is a question for the maintainers, and it is exactly the kind of question a badge cannot answer.

What to do with NOASSERTION

Read the file. It is one click, it takes a minute, and it is the only thing that settles the question. The site's page cannot do it for you automatically, because reading a licence and interpreting it is a judgement, and a machine that guesses wrong is worse than a machine that says "I do not know".

We are adding a reviewed field for the handful of popular projects where the answer matters — the same request as in the licence-header thread — and until that exists, the NOASSERTION label is the honest answer.

4 replies

AamirMember#2

The Business Source case is the one that surprised me, because Terraform is on every "open source IaC" list and people assume MIT.

It is worth saying that a BSL is not a grey area: it is a real licence with a real commercial trigger, and the trigger is about scale. The parameters are in the file, and the date at which it converts is in the file too.

TerryRegular#3

Add "no licence file at all" to the list of things NOASSERTION covers.

3,331 of the projects we track have no licence file, and for those the rule is much simpler than a licence: full copyright, all rights reserved, and nobody may copy it. Not "open source by default", not "public means free" — nothing.

EdwardMember#4

The autogen case is a good example of why "read the file" is the advice and not "read the badge". The badge says CC-BY-4.0 because that is what the file says, and it may be exactly what the maintainers intended for the docs and the examples.

Either way it is not MIT, and you cannot assume it is.

NicholasAuthorMember#5

In reply to Edward (#4)

All three replies are right, and together they are the answer to "what do I do with NOASSERTION".

Read the file. If it is a BSL, or a licence with a scale clause, or no file at all, you have a commercial conversation to have before you deploy it for other people. The label on the page is a prompt to go and read, not a conclusion.