From 8b6616486727483724435c044b0806ab9a3af77c Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 4 Apr 2025 16:21:20 -0400 Subject: [PATCH 01/80] Devendorize: Replace DANDI specific identifier with more generic regexes to accomodate LINC and EMBER. We are yet to workout proper vendorization where a particular model, ideally not entire run time as we could do via env var, could be parametrized with a specific vendor information. I think that relaxing those regular expressions altogether would help to adopt dandi for custom deployments meanwhile --- dandischema/models.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/dandischema/models.py b/dandischema/models.py index c07594a7..feb552bb 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -58,8 +58,14 @@ ) ASSET_UUID_PATTERN = r"^dandiasset:" + UUID_PATTERN VERSION_PATTERN = r"\d{6}/\d+\.\d+\.\d+" -DANDI_DOI_PATTERN = rf"^10.(48324|80507)/dandi\.{VERSION_PATTERN}" -DANDI_PUBID_PATTERN = rf"^DANDI:{VERSION_PATTERN}" +# Vendored +# DANDI_DOI_PATTERN = rf"^10.(48324|80507)/dandi\.{VERSION_PATTERN}" +# Unvendored, only with 10. prefix, as likely all would have for datacite +DANDI_DOI_PATTERN = rf"^10.\d+/[a-z]\.{VERSION_PATTERN}" +# Vendored: +# DANDI_PUBID_PATTERN = rf"^DANDI:{VERSION_PATTERN}" +# Unvendored: +DANDI_PUBID_PATTERN = rf"^[A-Z]+:{VERSION_PATTERN}" PUBLISHED_VERSION_URL_PATTERN = ( rf"^{DANDI_INSTANCE_URL_PATTERN}/dandiset/{VERSION_PATTERN}$" ) @@ -1605,14 +1611,20 @@ def contributor_musthave_contact( id: str = Field( description="Uniform resource identifier", - pattern=r"^(dandi|DANDI):\d{6}(/(draft|\d+\.\d+\.\d+))$", + # Vendored: + # pattern=r"^(dandi|DANDI):\d{6}(/(draft|\d+\.\d+\.\d+))$", + # Unvendored: + pattern=r"^([a-z]+|[A-Z]+):\d{6}(/(draft|\d+\.\d+\.\d+))$", json_schema_extra={"readOnly": True}, ) identifier: DANDI = Field( title="Dandiset identifier", description="A Dandiset identifier that can be resolved by identifiers.org.", - pattern=r"^DANDI:\d{6}$", + # Vendored: + # pattern=r"^DANDI:\d{6}$", + # Unvendored: + pattern=r"^[A-Z]+:\d{6}$", json_schema_extra={"readOnly": True, "nskey": "schema"}, ) name: str = Field( From 2388b151e71bf063ef8b06791026a1338212f7c0 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Tue, 22 Apr 2025 12:26:46 -0400 Subject: [PATCH 02/80] Allow for vendorization of the "dandi:" namespace --- dandischema/metadata.py | 6 +- dandischema/models.py | 181 ++++++++++++++++++++++------------------ 2 files changed, 101 insertions(+), 86 deletions(-) diff --git a/dandischema/metadata.py b/dandischema/metadata.py index 5be9294b..e63b44e3 100644 --- a/dandischema/metadata.py +++ b/dandischema/metadata.py @@ -91,7 +91,7 @@ def generate_context() -> dict: "@id": cast(str, field.json_schema_extra["nskey"]) + ":" + name } else: - fields[name] = {"@id": "dandi:" + name} + fields[name] = {"@id": f"{models.DANDI_NSKEY}:" + name} # The annotation without the top-level optional stripped_annotation = strip_top_level_optional(field.annotation) @@ -123,8 +123,8 @@ def generate_context() -> dict: for item in models.DigestType: fields[item.value] = {"@id": item.value, "@nest": "digest"} - fields["Dandiset"] = "dandi:Dandiset" - fields["Asset"] = "dandi:Asset" + fields["Dandiset"] = f"{models.DANDI_NSKEY}:Dandiset" + fields["Asset"] = f"{models.DANDI_NSKEY}:Asset" fields = {k: fields[k] for k in sorted(fields)} field_preamble.update(**fields) return {"@context": field_preamble} diff --git a/dandischema/models.py b/dandischema/models.py index feb552bb..12101c50 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -66,6 +66,11 @@ # DANDI_PUBID_PATTERN = rf"^DANDI:{VERSION_PATTERN}" # Unvendored: DANDI_PUBID_PATTERN = rf"^[A-Z]+:{VERSION_PATTERN}" +# Vendored: +# potentially could be set to alternative namespace +# Unvendored: use "dandi" by default +DANDI_NSKEY = "dandi" + PUBLISHED_VERSION_URL_PATTERN = ( rf"^{DANDI_INSTANCE_URL_PATTERN}/dandiset/{VERSION_PATTERN}$" ) @@ -86,15 +91,15 @@ class AccessType(Enum): """An enumeration of access status options""" #: The dandiset is openly accessible - OpenAccess = "dandi:OpenAccess" + OpenAccess = f"{DANDI_NSKEY}:OpenAccess" #: The dandiset is embargoed - EmbargoedAccess = "dandi:EmbargoedAccess" + EmbargoedAccess = f"{DANDI_NSKEY}:EmbargoedAccess" """ Uncomment when restricted access is implemented: #: The dandiset is restricted - RestrictedAccess = "dandi:RestrictedAccess" + RestrictedAccess = f"{DANDI_NSKEY}:RestrictedAccess" """ @@ -102,38 +107,38 @@ class DigestType(Enum): """An enumeration of checksum types""" #: MD5 checksum - md5 = "dandi:md5" + md5 = f"{DANDI_NSKEY}:md5" #: SHA1 checksum - sha1 = "dandi:sha1" + sha1 = f"{DANDI_NSKEY}:sha1" #: SHA2-256 checksum - sha2_256 = "dandi:sha2-256" + sha2_256 = f"{DANDI_NSKEY}:sha2-256" #: SHA3-256 checksum - sha3_256 = "dandi:sha3-256" + sha3_256 = f"{DANDI_NSKEY}:sha3-256" #: BLAKE2B-256 checksum - blake2b_256 = "dandi:blake2b-256" + blake2b_256 = f"{DANDI_NSKEY}:blake2b-256" #: BLAKE3-256 checksum - blake3 = "dandi:blake3" + blake3 = f"{DANDI_NSKEY}:blake3" #: S3-style ETag - dandi_etag = "dandi:dandi-etag" + dandi_etag = f"{DANDI_NSKEY}:dandi-etag" #: DANDI Zarr checksum - dandi_zarr_checksum = "dandi:dandi-zarr-checksum" + dandi_zarr_checksum = f"{DANDI_NSKEY}:dandi-zarr-checksum" class IdentifierType(Enum): """An enumeration of identifiers""" - doi = "dandi:doi" - orcid = "dandi:orcid" - ror = "dandi:ror" - dandi = "dandi:dandi" - rrid = "dandi:rrid" + doi = f"{DANDI_NSKEY}:doi" + orcid = f"{DANDI_NSKEY}:orcid" + ror = f"{DANDI_NSKEY}:ror" + dandi = f"{DANDI_NSKEY}:dandi" + rrid = f"{DANDI_NSKEY}:rrid" class LicenseType(Enum): @@ -253,19 +258,19 @@ class ParticipantRelationType(Enum): """An enumeration of participant relations""" #: Indicates that A is a child of B - isChildOf = "dandi:isChildOf" + isChildOf = f"{DANDI_NSKEY}:isChildOf" #: Indicates that A is a parent of B - isParentOf = "dandi:isParentOf" + isParentOf = f"{DANDI_NSKEY}:isParentOf" #: Indicates that A is a sibling of B - isSiblingOf = "dandi:isSiblingOf" + isSiblingOf = f"{DANDI_NSKEY}:isSiblingOf" #: Indicates that A is a monozygotic twin of B - isMonozygoticTwinOf = "dandi:isMonozygoticTwinOf" + isMonozygoticTwinOf = f"{DANDI_NSKEY}:isMonozygoticTwinOf" #: Indicates that A is a dizygotic twin of B - isDizygoticTwinOf = "dandi:isDizygoticTwinOf" + isDizygoticTwinOf = f"{DANDI_NSKEY}:isDizygoticTwinOf" class RoleType(Enum): @@ -484,10 +489,10 @@ class AgeReferenceType(Enum): """An enumeration of age reference""" #: Age since Birth - BirthReference = "dandi:BirthReference" + BirthReference = f"{DANDI_NSKEY}:BirthReference" #: Age of a pregnancy (https://en.wikipedia.org/wiki/Gestational_age) - GestationalReference = "dandi:GestationalReference" + GestationalReference = f"{DANDI_NSKEY}:GestationalReference" class DandiBaseModel(BaseModel): @@ -693,7 +698,7 @@ class BaseType(DandiBaseModel): schemaKey: str = Field( "BaseType", validate_default=True, json_schema_extra={"readOnly": True} ) - _ldmeta = {"rdfs:subClassOf": ["prov:Entity", "schema:Thing"], "nskey": "dandi"} + _ldmeta = {"rdfs:subClassOf": ["prov:Entity", "schema:Thing"], "nskey": DANDI_NSKEY} @classmethod def __get_pydantic_json_schema__( @@ -771,7 +776,7 @@ class Disorder(BaseType): None, title="Dates of diagnosis", description="Dates of diagnosis", - json_schema_extra={"nskey": "dandi", "rangeIncludes": "schema:Date"}, + json_schema_extra={"nskey": DANDI_NSKEY, "rangeIncludes": "schema:Date"}, ) schemaKey: Literal["Disorder"] = Field( "Disorder", validate_default=True, json_schema_extra={"readOnly": True} @@ -868,13 +873,13 @@ class Contributor(DandiBaseModel): title="Include contributor in citation", description="A flag to indicate whether a contributor should be included " "when generating a citation for the item.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) awardNumber: Optional[Identifier] = Field( None, title="Identifier for an award", description="Identifier associated with a sponsored or gift award.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) schemaKey: Literal["Contributor", "Organization", "Person"] = Field( "Contributor", validate_default=True, json_schema_extra={"readOnly": True} @@ -905,7 +910,7 @@ class Organization(Contributor): title="Include contributor in citation", description="A flag to indicate whether a contributor should be included " "when generating a citation for the item", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) contactPoint: Optional[List[ContactPoint]] = Field( None, @@ -918,7 +923,7 @@ class Organization(Contributor): ) _ldmeta = { "rdfs:subClassOf": ["schema:Organization", "prov:Organization"], - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -939,7 +944,7 @@ class Affiliation(DandiBaseModel): _ldmeta = { "rdfs:subClassOf": ["schema:Organization", "prov:Organization"], - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -966,7 +971,10 @@ class Person(Contributor): "Person", validate_default=True, json_schema_extra={"readOnly": True} ) - _ldmeta = {"rdfs:subClassOf": ["schema:Person", "prov:Person"], "nskey": "dandi"} + _ldmeta = { + "rdfs:subClassOf": ["schema:Person", "prov:Person"], + "nskey": DANDI_NSKEY, + } class Software(DandiBaseModel): @@ -990,7 +998,7 @@ class Software(DandiBaseModel): _ldmeta = { "rdfs:subClassOf": ["schema:SoftwareApplication", "prov:Software"], - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1011,7 +1019,7 @@ class Agent(DandiBaseModel): _ldmeta = { "rdfs:subClassOf": ["prov:Agent"], - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1032,7 +1040,7 @@ class EthicsApproval(DandiBaseModel): "EthicsApproval", validate_default=True, json_schema_extra={"readOnly": True} ) - _ldmeta = {"rdfs:subClassOf": ["schema:Thing", "prov:Entity"], "nskey": "dandi"} + _ldmeta = {"rdfs:subClassOf": ["schema:Thing", "prov:Entity"], "nskey": DANDI_NSKEY} class Resource(DandiBaseModel): @@ -1049,19 +1057,19 @@ class Resource(DandiBaseModel): None, title="Name of the repository", description="Name of the repository in which the resource is housed.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) relation: RelationType = Field( title="Resource relation", description="Indicates how the resource is related to the dataset. " "This relation should satisfy: dandiset resource.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) resourceType: Optional[ResourceType] = Field( default=None, title="Resource type", description="The type of resource.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) schemaKey: Literal["Resource"] = Field( @@ -1072,7 +1080,7 @@ class Resource(DandiBaseModel): "rdfs:subClassOf": ["schema:CreativeWork", "prov:Entity"], "rdfs:comment": "A resource related to the project (e.g., another " "dataset, publication, Webpage)", - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @model_validator(mode="after") @@ -1089,7 +1097,7 @@ class AccessRequirements(DandiBaseModel): status: AccessType = Field( title="Access status", description="The access status of the item.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) contactPoint: Optional[ContactPoint] = Field( None, @@ -1107,7 +1115,7 @@ class AccessRequirements(DandiBaseModel): description="Date on which embargo ends.", json_schema_extra={ "readOnly": True, - "nskey": "dandi", + "nskey": DANDI_NSKEY, "rangeIncludes": "schema:Date", }, ) @@ -1117,7 +1125,7 @@ class AccessRequirements(DandiBaseModel): json_schema_extra={"readOnly": True}, ) - _ldmeta = {"rdfs:subClassOf": ["schema:Thing", "prov:Entity"], "nskey": "dandi"} + _ldmeta = {"rdfs:subClassOf": ["schema:Thing", "prov:Entity"], "nskey": DANDI_NSKEY} @model_validator(mode="after") def open_or_embargoed(self) -> "AccessRequirements": @@ -1170,7 +1178,7 @@ class AssetsSummary(DandiBaseModel): _ldmeta = { "rdfs:subClassOf": ["schema:CreativeWork", "prov:Entity"], - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1195,7 +1203,7 @@ class Equipment(DandiBaseModel): _ldmeta = { "rdfs:subClassOf": ["schema:CreativeWork", "prov:Entity"], - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1238,7 +1246,10 @@ class Activity(DandiBaseModel): "Activity", validate_default=True, json_schema_extra={"readOnly": True} ) - _ldmeta = {"rdfs:subClassOf": ["prov:Activity", "schema:Thing"], "nskey": "dandi"} + _ldmeta = { + "rdfs:subClassOf": ["prov:Activity", "schema:Thing"], + "nskey": DANDI_NSKEY, + } class Project(Activity): @@ -1290,7 +1301,7 @@ class Locus(DandiBaseModel): schemaKey: Literal["Locus"] = Field( "Locus", validate_default=True, json_schema_extra={"readOnly": True} ) - _ldmeta = {"nskey": "dandi"} + _ldmeta = {"nskey": DANDI_NSKEY} class Allele(DandiBaseModel): @@ -1303,7 +1314,7 @@ class Allele(DandiBaseModel): schemaKey: Literal["Allele"] = Field( "Allele", validate_default=True, json_schema_extra={"readOnly": True} ) - _ldmeta = {"nskey": "dandi"} + _ldmeta = {"nskey": DANDI_NSKEY} class GenotypeInfo(DandiBaseModel): @@ -1317,7 +1328,7 @@ class GenotypeInfo(DandiBaseModel): schemaKey: Literal["GenotypeInfo"] = Field( "GenotypeInfo", validate_default=True, json_schema_extra={"readOnly": True} ) - _ldmeta = {"nskey": "dandi"} + _ldmeta = {"nskey": DANDI_NSKEY} class RelatedParticipant(DandiBaseModel): @@ -1339,7 +1350,7 @@ class RelatedParticipant(DandiBaseModel): description="Indicates how the current participant or subject is related " "to the other participant or subject. This relation should " "satisfy: Participant/Subject relatedParticipant/Subject.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) schemaKey: Literal["RelatedParticipant"] = Field( "RelatedParticipant", @@ -1351,7 +1362,7 @@ class RelatedParticipant(DandiBaseModel): "rdfs:subClassOf": ["schema:CreativeWork", "prov:Entity"], "rdfs:comment": "Another participant or subject related to the current " "participant or subject (e.g., another parent, sibling, child).", - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1365,57 +1376,59 @@ class Participant(DandiBaseModel): identifier: Identifier = Field(json_schema_extra={"nskey": "schema"}) altName: Optional[List[Identifier]] = Field( - None, json_schema_extra={"nskey": "dandi"} + None, json_schema_extra={"nskey": DANDI_NSKEY} ) strain: Optional[StrainType] = Field( None, description="Identifier for the strain of the participant or subject.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) cellLine: Optional[Identifier] = Field( None, description="Cell line associated with the participant or subject.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, + ) + vendor: Optional[Organization] = Field( + None, json_schema_extra={"nskey": DANDI_NSKEY} ) - vendor: Optional[Organization] = Field(None, json_schema_extra={"nskey": "dandi"}) age: Optional[PropertyValue] = Field( None, description="A representation of age using ISO 8601 duration. This " "should include a valueReference if anything other than " "date of birth is used.", - json_schema_extra={"nskey": "dandi", "rangeIncludes": "schema:Duration"}, + json_schema_extra={"nskey": DANDI_NSKEY, "rangeIncludes": "schema:Duration"}, ) sex: Optional[SexType] = Field( None, description="Identifier for sex of the participant or subject if " "available. (e.g. from OBI)", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) genotype: Optional[Union[List[GenotypeInfo], Identifier]] = Field( None, description="Genotype descriptor of participant or subject if available", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) species: Optional[SpeciesType] = Field( None, description="An identifier indicating the taxonomic classification of " "the participant or subject.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) disorder: Optional[List[Disorder]] = Field( None, description="Any current diagnosed disease or disorder associated with " "the participant or subject.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) relatedParticipant: Optional[List[RelatedParticipant]] = Field( None, description="Information about related participants or subjects in a " "study or across studies.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) sameAs: Optional[List[Identifier]] = Field( None, @@ -1429,7 +1442,7 @@ class Participant(DandiBaseModel): _ldmeta = { "rdfs:subClassOf": ["prov:Agent"], "rdfs:label": "Information about the participant or subject.", - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1439,18 +1452,18 @@ class BioSample(DandiBaseModel): identifier: Identifier = Field(json_schema_extra={"nskey": "schema"}) sampleType: SampleType = Field( description="Identifier for the sample characteristics (e.g., from OBI, Encode).", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) assayType: Optional[List[AssayType]] = Field( None, description="Identifier for the assay(s) used (e.g., OBI).", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) anatomy: Optional[List[Anatomy]] = Field( None, description="Identifier for what organ the sample belongs " "to. Use the most specific descriptor from sources such as UBERON.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) wasDerivedFrom: Optional[List["BioSample"]] = Field( @@ -1476,7 +1489,7 @@ class BioSample(DandiBaseModel): _ldmeta = { "rdfs:subClassOf": ["schema:Thing", "prov:Entity"], "rdfs:label": "Information about the biosample.", - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1528,7 +1541,7 @@ class CommonModel(DandiBaseModel): studyTarget: Optional[List[str]] = Field( None, description="Objectives or specific questions of the study.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) license: Optional[List[LicenseType]] = Field( None, @@ -1541,10 +1554,10 @@ class CommonModel(DandiBaseModel): None, description="A list of persistent URLs describing the protocol (e.g. " "protocols.io, or other DOIs).", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) ethicsApproval: Optional[List[EthicsApproval]] = Field( - None, title="Ethics approvals", json_schema_extra={"nskey": "dandi"} + None, title="Ethics approvals", json_schema_extra={"nskey": DANDI_NSKEY} ) keywords: Optional[List[str]] = Field( None, @@ -1554,14 +1567,14 @@ class CommonModel(DandiBaseModel): acknowledgement: Optional[str] = Field( None, description="Any acknowledgments not covered by contributors or external resources.", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) # Linking to this dandiset or the larger thing access: List[AccessRequirements] = Field( title="Access information", default_factory=lambda: [AccessRequirements(status=AccessType.OpenAccess)], - json_schema_extra={"nskey": "dandi", "readOnly": True}, + json_schema_extra={"nskey": DANDI_NSKEY, "readOnly": True}, ) url: Optional[AnyHttpUrl] = Field( None, @@ -1577,10 +1590,10 @@ class CommonModel(DandiBaseModel): else None ), description="location of the item", - json_schema_extra={"nskey": "dandi", "readOnly": True}, + json_schema_extra={"nskey": DANDI_NSKEY, "readOnly": True}, ) relatedResource: Optional[List[Resource]] = Field( - None, json_schema_extra={"nskey": "dandi"} + None, json_schema_extra={"nskey": DANDI_NSKEY} ) wasGeneratedBy: Optional[Sequence[Activity]] = Field( @@ -1669,12 +1682,12 @@ def contributor_musthave_contact( # From assets assetsSummary: AssetsSummary = Field( - json_schema_extra={"nskey": "dandi", "readOnly": True} + json_schema_extra={"nskey": DANDI_NSKEY, "readOnly": True} ) # From server (requested by users even for drafts) manifestLocation: List[AnyHttpUrl] = Field( - min_length=1, json_schema_extra={"nskey": "dandi", "readOnly": True} + min_length=1, json_schema_extra={"nskey": DANDI_NSKEY, "readOnly": True} ) version: str = Field(json_schema_extra={"nskey": "schema", "readOnly": True}) @@ -1693,7 +1706,7 @@ def contributor_musthave_contact( _ldmeta = { "rdfs:subClassOf": ["schema:Dataset", "prov:Entity"], "rdfs:label": "Information about the dataset", - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @@ -1709,9 +1722,9 @@ class BareAsset(CommonModel): ) digest: Dict[DigestType, str] = Field( title="A map of dandi digests to their values", - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, ) - path: str = Field(json_schema_extra={"nskey": "dandi"}) + path: str = Field(json_schema_extra={"nskey": DANDI_NSKEY}) dateModified: Optional[datetime] = Field( None, @@ -1720,21 +1733,23 @@ class BareAsset(CommonModel): ) blobDateModified: Optional[datetime] = Field( None, - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, title="Asset file modification date and time.", ) # overload to restrict with max_items=1 access: List[AccessRequirements] = Field( title="Access information", default_factory=lambda: [AccessRequirements(status=AccessType.OpenAccess)], - json_schema_extra={"nskey": "dandi"}, + json_schema_extra={"nskey": DANDI_NSKEY}, max_length=1, ) # this is from C2M2 level 1 - using EDAM vocabularies - in our case we would # need to come up with things for neurophys # TODO: waiting on input - dataType: Optional[AnyHttpUrl] = Field(None, json_schema_extra={"nskey": "dandi"}) + dataType: Optional[AnyHttpUrl] = Field( + None, json_schema_extra={"nskey": DANDI_NSKEY} + ) sameAs: Optional[List[AnyHttpUrl]] = Field( None, json_schema_extra={"nskey": "schema"} @@ -1742,7 +1757,7 @@ class BareAsset(CommonModel): # TODO approach: Optional[List[ApproachType]] = Field( - None, json_schema_extra={"readOnly": True, "nskey": "dandi"} + None, json_schema_extra={"readOnly": True, "nskey": DANDI_NSKEY} ) measurementTechnique: Optional[List[MeasurementTechniqueType]] = Field( None, json_schema_extra={"readOnly": True, "nskey": "schema"} @@ -1774,7 +1789,7 @@ class BareAsset(CommonModel): _ldmeta = { "rdfs:subClassOf": ["schema:CreativeWork", "prov:Entity"], "rdfs:label": "Information about the asset", - "nskey": "dandi", + "nskey": DANDI_NSKEY, } @field_validator("digest") @@ -1832,7 +1847,7 @@ class Asset(BareAsset): class Publishable(DandiBaseModel): publishedBy: Union[AnyHttpUrl, PublishActivity] = Field( description="The URL should contain the provenance of the publishing process.", - json_schema_extra={"readOnly": True, "nskey": "dandi"}, + json_schema_extra={"readOnly": True, "nskey": DANDI_NSKEY}, ) datePublished: datetime = Field( json_schema_extra={"readOnly": True, "nskey": "schema"} @@ -1852,7 +1867,7 @@ class PublishedDandiset(Dandiset, Publishable): doi: str = Field( title="DOI", pattern=DANDI_DOI_PATTERN, - json_schema_extra={"readOnly": True, "nskey": "dandi"}, + json_schema_extra={"readOnly": True, "nskey": DANDI_NSKEY}, ) url: AnyHttpUrl = Field( description="Permalink to the Dandiset.", From 697731ac1cc9a351c5f170ce28f6e1bb8afe76a6 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 25 Apr 2025 14:13:31 -0400 Subject: [PATCH 03/80] Fix regex for DOI Co-authored-by: Isaac To --- dandischema/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dandischema/models.py b/dandischema/models.py index 12101c50..c3b5868e 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -61,7 +61,7 @@ # Vendored # DANDI_DOI_PATTERN = rf"^10.(48324|80507)/dandi\.{VERSION_PATTERN}" # Unvendored, only with 10. prefix, as likely all would have for datacite -DANDI_DOI_PATTERN = rf"^10.\d+/[a-z]\.{VERSION_PATTERN}" +DANDI_DOI_PATTERN = rf"^10.\d+/[a-z]+\.{VERSION_PATTERN}" # Vendored: # DANDI_PUBID_PATTERN = rf"^DANDI:{VERSION_PATTERN}" # Unvendored: From 704ba4a5a45d45ee8c250fb7c902e36d59cf382d Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 29 Apr 2025 12:01:41 -0700 Subject: [PATCH 04/80] feat: support vendorization through config This commit uses `pydantic-settings` to establish a configuration mechanism, and through this mechanism, it adds support for "vendorization". --- dandischema/conf.py | 62 +++++++++++++++++++++++++++++++++++++++++++ dandischema/models.py | 35 +++++++++++------------- setup.cfg | 1 + 3 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 dandischema/conf.py diff --git a/dandischema/conf.py b/dandischema/conf.py new file mode 100644 index 00000000..6ebc19ae --- /dev/null +++ b/dandischema/conf.py @@ -0,0 +1,62 @@ +# This file defines the configuration for the DANDI schema + +from __future__ import annotations + +from typing import Annotated, Optional + +from pydantic import StringConstraints +from pydantic_settings import BaseSettings, SettingsConfigDict + +_UNVENDORED_ID_PATTERN = r"[A-Z][-A-Z]*" +_UNVENDORED_DATACITE_DOI_ID_PATTERN = r"\d{4,}" + + +class Config(BaseSettings): + """ + Configuration for the DANDI schema + + Note + ---- + Since this class is subclass of `pydantic.BaseSettings`, each field of an + instance of this class can be populated from an environment variable of the + same name prefixed with the prefix defined in `model_config` with the name + of the environment variable interpreted **case-insensitively**. + For details, see https://docs.pydantic.dev/latest/concepts/pydantic_settings/ + """ + + model_config = SettingsConfigDict(env_prefix="dandi_") + + instance_name: Annotated[ + str, StringConstraints(pattern=rf"^{_UNVENDORED_ID_PATTERN}$") + ] = "DANDI-ADHOC" + """Name of the DANDI instance""" + + datacite_doi_id: Optional[ + Annotated[ + str, StringConstraints(pattern=rf"^{_UNVENDORED_DATACITE_DOI_ID_PATTERN}$") + ] + ] = None + """ + The registrant code of the DOI prefix at DataCite + + The number sequence that follows "10." within the DOI prefix as documented + at https://support.datacite.org/docs/prefixes. + """ + + @property + def id_pattern(self) -> str: + """Regex pattern for the prefix of identifiers""" + if "instance_name" in self.model_fields_set: + return self.instance_name + + # If the instance name is not set, + # we use a pattern for unvendored DANDI instances + return _UNVENDORED_ID_PATTERN + + @property + def datacite_doi_id_pattern(self) -> Optional[str]: + """The registrant code pattern of the DOI prefix at DataCite""" + return self.datacite_doi_id + + +CONFIG = Config() diff --git a/dandischema/models.py b/dandischema/models.py index c3b5868e..19d01a73 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -36,11 +36,17 @@ from pydantic_core import CoreSchema from zarr_checksum.checksum import InvalidZarrChecksum, ZarrDirectoryDigest +from dandischema.conf import CONFIG + from .consts import DANDI_SCHEMA_VERSION from .digests.dandietag import DandiETag from .types import ByteSizeJsonSchema from .utils import name2title +# Load needed configurations into constants +ID_PATTERN = CONFIG.id_pattern +DATACITE_DOI_ID_PATTERN = CONFIG.datacite_doi_id_pattern + # Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. DANDI_INSTANCE_URL: Optional[str] try: @@ -58,18 +64,11 @@ ) ASSET_UUID_PATTERN = r"^dandiasset:" + UUID_PATTERN VERSION_PATTERN = r"\d{6}/\d+\.\d+\.\d+" -# Vendored -# DANDI_DOI_PATTERN = rf"^10.(48324|80507)/dandi\.{VERSION_PATTERN}" -# Unvendored, only with 10. prefix, as likely all would have for datacite -DANDI_DOI_PATTERN = rf"^10.\d+/[a-z]+\.{VERSION_PATTERN}" -# Vendored: -# DANDI_PUBID_PATTERN = rf"^DANDI:{VERSION_PATTERN}" -# Unvendored: -DANDI_PUBID_PATTERN = rf"^[A-Z]+:{VERSION_PATTERN}" -# Vendored: -# potentially could be set to alternative namespace -# Unvendored: use "dandi" by default -DANDI_NSKEY = "dandi" +DANDI_DOI_PATTERN = ( + rf"^10\.{DATACITE_DOI_ID_PATTERN}/{ID_PATTERN.lower()}\.{VERSION_PATTERN}" +) +DANDI_PUBID_PATTERN = rf"^{ID_PATTERN}:{VERSION_PATTERN}" +DANDI_NSKEY = "dandi" # Namespace for DANDI ontology PUBLISHED_VERSION_URL_PATTERN = ( rf"^{DANDI_INSTANCE_URL_PATTERN}/dandiset/{VERSION_PATTERN}$" @@ -1624,20 +1623,16 @@ def contributor_musthave_contact( id: str = Field( description="Uniform resource identifier", - # Vendored: - # pattern=r"^(dandi|DANDI):\d{6}(/(draft|\d+\.\d+\.\d+))$", - # Unvendored: - pattern=r"^([a-z]+|[A-Z]+):\d{6}(/(draft|\d+\.\d+\.\d+))$", + pattern=( + rf"^({ID_PATTERN}|{ID_PATTERN.lower()}):\d{{6}}(/(draft|\d+\.\d+\.\d+))$" + ), json_schema_extra={"readOnly": True}, ) identifier: DANDI = Field( title="Dandiset identifier", description="A Dandiset identifier that can be resolved by identifiers.org.", - # Vendored: - # pattern=r"^DANDI:\d{6}$", - # Unvendored: - pattern=r"^[A-Z]+:\d{6}$", + pattern=rf"^{ID_PATTERN}:\d{{6}}$", json_schema_extra={"readOnly": True, "nskey": "schema"}, ) name: str = Field( diff --git a/setup.cfg b/setup.cfg index dcaab7bf..d3697dba 100644 --- a/setup.cfg +++ b/setup.cfg @@ -29,6 +29,7 @@ project_urls = python_requires = >=3.9 install_requires = jsonschema[format] + pydantic-settings pydantic[email] ~= 2.4 requests zarr_checksum From 75f146f747733d137bb2c5adfdaee1900e71a15c Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 13 May 2025 12:27:16 -0700 Subject: [PATCH 05/80] test: update tests for changes in support of vendorization This is done by manipulating `sys.modules` with a pytest fixture, and having different combination of environment variables in the test GH workflow --- .github/workflows/test.yml | 36 +- dandischema/datacite/tests/test_datacite.py | 43 +- dandischema/tests/conftest.py | 107 +++- .../metadata/DANDI-ADHOC/meta_000004.json | 429 ++++++++++++++++ .../metadata/DANDI-ADHOC/meta_000004old.json | 474 ++++++++++++++++++ .../metadata/DANDI-ADHOC/meta_000008.json | 216 ++++++++ .../metadata/{ => DANDI}/meta_000004.json | 0 .../metadata/{ => DANDI}/meta_000004old.json | 0 .../metadata/{ => DANDI}/meta_000008.json | 0 .../metadata/EMBER-DANDI/meta_000004.json | 429 ++++++++++++++++ .../metadata/EMBER-DANDI/meta_000004old.json | 474 ++++++++++++++++++ .../metadata/EMBER-DANDI/meta_000008.json | 216 ++++++++ dandischema/tests/test_metadata.py | 71 ++- dandischema/tests/test_models.py | 199 +++++++- dandischema/tests/utils.py | 26 +- tox.ini | 2 +- 16 files changed, 2661 insertions(+), 61 deletions(-) create mode 100644 dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004.json create mode 100644 dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004old.json create mode 100644 dandischema/tests/data/metadata/DANDI-ADHOC/meta_000008.json rename dandischema/tests/data/metadata/{ => DANDI}/meta_000004.json (100%) rename dandischema/tests/data/metadata/{ => DANDI}/meta_000004old.json (100%) rename dandischema/tests/data/metadata/{ => DANDI}/meta_000008.json (100%) create mode 100644 dandischema/tests/data/metadata/EMBER-DANDI/meta_000004.json create mode 100644 dandischema/tests/data/metadata/EMBER-DANDI/meta_000004old.json create mode 100644 dandischema/tests/data/metadata/EMBER-DANDI/meta_000008.json diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9cf6001b..0d5afe0c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,21 +9,23 @@ on: jobs: test: runs-on: ${{ matrix.os }} - env: - NO_ET: 1 - DATACITE_DEV_PASSWORD: ${{ secrets.DATACITE_DEV_PASSWORD }} strategy: fail-fast: false matrix: - os: - - windows-latest - - ubuntu-latest - - macos-latest - python: - - 3.9 - - '3.10' - - '3.11' - - '3.12' + os: [windows-latest, ubuntu-latest, macos-latest] + python: ['3.9', '3.10', '3.11', '3.12'] + vendored_env: [unvendored] + include: + - os: ubuntu-latest + python: '3.9' + vendored_env: dandi + instance_name: DANDI + datacite_doi_id: '80507' + - os: ubuntu-latest + python: '3.9' + vendored_env: ember-dandi + instance_name: EMBER-DANDI + datacite_doi_id: '60533' steps: - name: Set up environment uses: actions/checkout@v4 @@ -42,7 +44,17 @@ jobs: python -m pip install --upgrade pip wheel python -m pip install --upgrade tox + - name: Set vendor environment + if: ${{ matrix.vendored_env != 'unvendored' }} + shell: bash + run: | + echo "DANDI_INSTANCE_NAME=${{ matrix.instance_name }}" >> "$GITHUB_ENV" + echo "DANDI_DATACITE_DOI_ID=${{ matrix.datacite_doi_id }}" >> "$GITHUB_ENV" + - name: Run all tests + env: + DATACITE_DEV_PASSWORD: ${{ secrets.DATACITE_DEV_PASSWORD }} + NO_ET: 1 run: tox -e py -- -s --cov-report=xml - name: Upload coverage to Codecov diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index c9e0d729..5265fccf 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -1,6 +1,5 @@ import json import os -from pathlib import Path import random from typing import Any, Dict, Tuple @@ -15,8 +14,13 @@ ResourceType, RoleType, ) -import dandischema.tests -from dandischema.tests.utils import _basic_publishmeta, skipif_no_network +from dandischema.tests.utils import ( + DANDISET_METADATA_DIR, + DOI_PREFIX, + INSTANCE_NAME, + _basic_publishmeta, + skipif_no_network, +) from .. import _get_datacite_schema, to_datacite @@ -60,7 +64,7 @@ def schema() -> Any: @pytest.fixture(scope="function") def metadata_basic() -> Dict[str, Any]: dandi_id_noprefix = f"000{random.randrange(100, 999)}" - dandi_id = f"DANDI:{dandi_id_noprefix}" + dandi_id = f"{INSTANCE_NAME}:{dandi_id_noprefix}" version = "0.0.0" # meta data without doi, datePublished and publishedBy meta_dict = { @@ -111,11 +115,7 @@ def test_datacite(dandi_id: str, schema: Any) -> None: """checking to_datacite for a specific datasets""" # reading metadata taken from exemplary dandisets and saved in json files - with ( - Path(dandischema.tests.__file__).with_name("data") - / "metadata" - / f"meta_{dandi_id}.json" - ).open() as f: + with (DANDISET_METADATA_DIR / f"meta_{dandi_id}.json").open() as f: meta_js = json.load(f) version = "0.0.0" @@ -125,7 +125,11 @@ def test_datacite(dandi_id: str, schema: Any) -> None: # updating with basic fields required for PublishDandiset meta_js.update( - _basic_publishmeta(dandi_id.replace("000", str(random.randrange(100, 999)))) + _basic_publishmeta( + INSTANCE_NAME, + dandi_id.replace("000", str(random.randrange(100, 999))), + prefix=DOI_PREFIX, + ) ) meta = PublishedDandiset(**meta_js) @@ -378,7 +382,9 @@ def test_dandimeta_datacite( dandi_id = metadata_basic["identifier"] dandi_id_noprefix = dandi_id.split(":")[1] - metadata_basic.update(_basic_publishmeta(dandi_id=dandi_id_noprefix)) + metadata_basic.update( + _basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) + ) metadata_basic.update(additional_meta) # creating and validating datacite objects @@ -411,7 +417,9 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: dandi_id = metadata_basic["identifier"] dandi_id_noprefix = dandi_id.split(":")[1] version = metadata_basic["version"] - metadata_basic.update(_basic_publishmeta(dandi_id=dandi_id_noprefix)) + metadata_basic.update( + _basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) + ) # creating and validating datacite objects datacite = to_datacite(metadata_basic, publish=True, validate=True) @@ -419,7 +427,7 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: assert datacite == { # 'data': {} "data": { - "id": f"10.80507/dandi.{dandi_id_noprefix}/{version}", + "id": f"{DOI_PREFIX}/{INSTANCE_NAME.lower()}.{dandi_id_noprefix}/{version}", "type": "dois", "attributes": { "event": "publish", @@ -449,7 +457,10 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: "descriptions": [ {"description": "testing", "descriptionType": "Abstract"} ], - "doi": f"10.80507/dandi.{dandi_id_noprefix}/{version}", + "doi": ( + f"{DOI_PREFIX}/" + f"{INSTANCE_NAME.lower()}.{dandi_id_noprefix}/{version}" + ), "alternateIdentifiers": [ { "alternateIdentifier": f"https://identifiers.org/{dandi_id}/{version}", @@ -541,7 +552,9 @@ def test_datacite_related_res_url( dandi_id = metadata_basic["identifier"] dandi_id_noprefix = dandi_id.split(":")[1] - metadata_basic.update(_basic_publishmeta(dandi_id=dandi_id_noprefix)) + metadata_basic.update( + _basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) + ) metadata_basic["relatedResource"] = [related_res_url] # creating and validating datacite objects diff --git a/dandischema/tests/conftest.py b/dandischema/tests/conftest.py index d507def0..fcd8aac0 100644 --- a/dandischema/tests/conftest.py +++ b/dandischema/tests/conftest.py @@ -1,7 +1,12 @@ import os -from typing import Iterator +import sys +from typing import Generator, Iterator +from pydantic import ConfigDict, TypeAdapter, ValidationError import pytest +from typing_extensions import TypedDict + +from dandischema.conf import Config @pytest.fixture(scope="session", autouse=True) @@ -13,3 +18,103 @@ def disable_http() -> Iterator[None]: yield else: yield + + +_CONFIG_PARAMS = list(Config.model_fields) +"""Configuration parameters of the `dandischema` package""" +# noinspection PyTypedDict +_ENV_DICT = TypedDict( # type: ignore[misc] + "_ENV_DICT", {fname: str for fname in _CONFIG_PARAMS}, total=False +) +_ENV_DICT.__pydantic_config__ = ConfigDict( # type: ignore[attr-defined] + # Values have to be strictly of type `str` + strict=True, + # Keys not listed are not allowed + extra="forbid", +) +_ENV_DICT_ADAPTER = TypeAdapter(_ENV_DICT) + + +@pytest.fixture +def clear_dandischema_modules_and_set_env_vars( + request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch +) -> Generator[None, None, None]: + """ + This fixture clears all `dandischema` modules from `sys.modules` and sets + environment variables that configure the `dandischema` package. + + With this fixture, tests can import `dandischema` modules cleanly in an environment + defined by the provided values for the environment variables. + + This fixture expects values for the environment variables to be passed indirectly + from the calling test function using `request.param`. `request.param` should be a + `dict[str, str]` consisting of keys that are a subset of the fields of + `dandischema.conf.Config`. Each value in the dictionary will be used to set an + environment variable with a name that is the same as its key but in upper case and + prefixed with "DANDI_". + + Example usage: + ```python + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", + [ + {}, + { + "instance_name": "DANDI", + "datacite_doi_id": "48324", + }, + { + "instance_name": "EMBER-DANDI", + "datacite_doi_id": "60533", + } + ], + indirect=True, + ) + def test_foo(clear_dandischema_modules_and_set_env_vars): + # Your test code here + ... + ``` + + Note + ---- + When this fixture is torn down, it restores the original `sys.modules` and undo + the environment variable changes made. + + The user of this fixture needs to ensure that no other threads besides a calling + thread of this fixture are modifying `sys.modules` during the execution of this + fixture, which should be a common situation. + """ + # Check if the calling test has passed valid `indirect` arguments + ev = ValueError( + "The calling test must use the `indirect` parameter to pass " + "a `dict[str, str]` for setting environment variables." + ) + if not hasattr(request, "param"): + raise ev + try: + _ENV_DICT_ADAPTER.validate_python(request.param) + except ValidationError as e: + raise ev from e + + modules = sys.modules + modules_original = modules.copy() + + # Remove all dandischema modules from sys.modules + for name in list(modules): + if name.startswith("dandischema.") or name == "dandischema": + del modules[name] + + # Monkey patch environment variables with arguments from the calling test + for p in _CONFIG_PARAMS: + if p in request.param: + monkeypatch.setenv(f"DANDI_{p.upper()}", request.param[p]) + else: + monkeypatch.delenv(f"DANDI_{p.upper()}", raising=False) + + yield + + # Restore the original modules + for name in list(modules): + if name not in modules_original: + del modules[name] + modules.update(modules_original) diff --git a/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004.json b/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004.json new file mode 100644 index 00000000..20f554fc --- /dev/null +++ b/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004.json @@ -0,0 +1,429 @@ +{ + "id": "DANDI-ADHOC:000004/draft", + "schemaKey": "Dandiset", + "schemaVersion": "0.4.4", + "name": "A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task", + "description": "A challenge for data sharing in systems neuroscience is the multitude of different data formats used. Neurodata Without Borders: Neurophysiology 2.0 (NWB:N) has emerged as a standardized data format for the storage of cellular-level data together with meta-data, stimulus information, and behavior. A key next step to facilitate NWB:N adoption is to provide easy to use processing pipelines to import/export data from/to NWB:N. Here, we present a NWB-formatted dataset of 1863 single neurons recorded from the medial temporal lobes of 59 human subjects undergoing intracranial monitoring while they performed a recognition memory task. We provide code to analyze and export/import stimuli, behavior, and electrophysiological recordings to/from NWB in both MATLAB and Python. The data files are NWB:N compliant, which affords interoperability between programming languages and operating systems. This combined data and code release is a case study for how to utilize NWB:N for human single-neuron recordings and enables easy reuse of this hard-to-obtain data for both teaching and research on the mechanisms of human memory.", + "contributor": [ + { + "schemaKey": "Person", + "identifier": "0000-0003-0161-4007", + "name": "Chandravadia, Nand", + "email": "nandc10@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:ContactPerson", + "dcite:DataCurator", + "dcite:DataManager", + "dcite:FormalAnalysis", + "dcite:Investigation", + "dcite:Maintainer", + "dcite:Methodology", + "dcite:ProjectLeader", + "dcite:ProjectManager", + "dcite:ProjectMember", + "dcite:Researcher", + "dcite:Software", + "dcite:Validation", + "dcite:Visualization" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Liang, Dehua", + "email": "liang134@mail.chapman.edu", + "roleName": [ + "dcite:Author", + "dcite:Methodology", + "dcite:ProjectMember", + "dcite:Software", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-4319-7689", + "name": "Schjetnan, Andrea Gomez Palacio", + "email": "Andrea.Schjetan@uhnresearch.ca", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada" + } + ] + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "name": "Carlson, April", + "email": "april.carlson@tufts.edu", + "roleName": [ + "dcite:Author", + "dcite:DataCurator", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Faraut, Mailys", + "email": "mailyscm.faraut@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Chung, Jeffrey M.", + "email": "Jeffrey.Chung@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Reed, Chrystal M.", + "email": "Chrystal.Reed@csmc.edu", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Dichter, Ben", + "email": "ben.dichter@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Software", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Biological Systems & Engineering Division, Lawrence Berkeley National Laboratory, Berkeley, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Stanford University, Stanford, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Maoz, Uri", + "email": "maoz.uri@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Kalia, Suneil K.", + "email": "suneil.kalia@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada" + }, + { + "schemaKey": "Affiliation", + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada" + } + ] + }, + { + "schemaKey": "Person", + "name": "Valiante, Taufik A.", + "email": "Taufik.Valiante@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada" + }, + { + "schemaKey": "Affiliation", + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada" + } + ] + }, + { + "schemaKey": "Person", + "name": "Mamelak, Adam N.", + "email": "Adam.Mamelak@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "name": "Rutishauser, Ueli", + "email": "Ueli.Rutishauser@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:FundingAcquisition", + "dcite:ProjectMember", + "dcite:Resources", + "dcite:Software", + "dcite:Supervision", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Computational and Neural Systems Program, California Institute of Technology, Pasadena, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Center for Neural Science and Medicine, Department of Biomedical Science, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Organization", + "name": "Stroke, National Institute of Neurological Disorders and", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "U01NS103792" + }, + { + "schemaKey": "Organization", + "name": "Foundation, National Science", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "1554105" + }, + { + "schemaKey": "Organization", + "name": "Health, National Institute of Mental", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "R01MH110831" + }, + { + "schemaKey": "Organization", + "name": "Neuroscience, McKnight Endowment for", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false + }, + { + "schemaKey": "Organization", + "name": "Foundation, NARSAD Young Investigator grant from the Brain & Behavior Research", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false + }, + { + "schemaKey": "Organization", + "name": "Foundation, Kavli", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false + }, + { + "schemaKey": "Organization", + "name": "initiative, BRAIN", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "U19NS104590" + } + ], + "about": [ + { + "schemaKey": "GenericType", + "name": "Medial Temporal Lobe" + } + ], + "license": [ + "spdx:CC-BY-4.0" + ], + "keywords": [ + "cognitive neuroscience", + "data standardization", + "decision making", + "declarative memory", + "neurophysiology", + "neurosurgery", + "NWB", + "open source", + "single-neurons" + ], + "access": [ + { + "schemaKey": "AccessRequirements", + "status": "dandi:OpenAccess" + } + ], + "url": "https://dandiarchive.org/dandiset/000004/draft", + "repository": "https://dandiarchive.org/", + "relatedResource": [ + { + "schemaKey": "Resource", + "identifier": "DOI:10.17605/OSF.IO/HV7JA", + "name": "A NWB-based Dataset and Processing Pipeline of Human Single-Neuron Activity During a Declarative Memory Task", + "url": "https://osf.io/hv7ja/", + "repository": "Open Science Framework", + "relation": "dcite:IsDerivedFrom" + }, + { + "schemaKey": "Resource", + "identifier": "DOI:10.1038/s41597-020-0415-9", + "url": "https://www.nature.com/articles/s41597-020-0415-9", + "relation": "dcite:IsDescribedBy" + } + ], + "identifier": "DANDI-ADHOC:000004", + "citation": "Chandravadia, Nand; Liang, Dehua; Schjetnan, Andrea Gomez Palacio; Carlson, April; Faraut, Mailys; Chung, Jeffrey M.; Reed, Chrystal M.; Dichter, Ben; Maoz, Uri; Kalia, Suneil K.; Valiante, Taufik A.; Mamelak, Adam N.; Rutishauser, Ueli (2021) A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task. Online: https://dandiarchive.org/000004/draft", + "assetsSummary": { + "schemaKey": "AssetsSummary", + "numberOfBytes": 10, + "numberOfFiles": 1, + "dataStandard": [ + { + "schemaKey": "StandardsType", + "name": "NWB" + } + ], + "approach": [ + { + "schemaKey": "ApproachType", + "name": "electrophysiology" + } + ], + "measurementTechnique": [ + { + "schemaKey": "MeasurementTechniqueType", + "name": "two-photon microscopy technique" + } + ], + "species": [ + { + "schemaKey": "SpeciesType", + "name": "Human" + } + ] + }, + "manifestLocation": [ + "https://api.dandiarchive.org/api/dandisets/000004/versions/draft/assets/" + ], + "version": "draft" +} diff --git a/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004old.json b/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004old.json new file mode 100644 index 00000000..c4ad1ee7 --- /dev/null +++ b/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000004old.json @@ -0,0 +1,474 @@ +{ + "id": "DANDI-ADHOC:000004/draft", + "url": "https://dandiarchive.org/dandiset/000004/draft", + "name": "A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task", + "about": [ + { + "name": "Right Temporal Lobe", + "identifier": "http://purl.obolibrary.org/obo/UBERON_0002809" + }, + { + "name": "Medial Temporal Lobe" + } + ], + "access": [ + { + "status": "dandi:OpenAccess", + "contactPoint": { + "schemaKey": "ContactPoint" + } + } + ], + "license": [ + "spdx:CC-BY-4.0" + ], + "version": "draft", + "@context": "https://raw.githubusercontent.com/dandi/schema/master/releases/0.4.4/context.json", + "citation": "Chandravadia, Nand; Liang, Dehua; Schjetnan, Andrea Gomez Palacio; Carlson, April; Faraut, Mailys; Chung, Jeffrey M.; Reed, Chrystal M.; Dichter, Ben; Maoz, Uri; Kalia, Suneil K.; Valiante, Taufik A.; Mamelak, Adam N.; Rutishauser, Ueli (2021) A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task (Version draft) [Data set]. DANDI archive. https://dandiarchive.org/dandiset/000004/draft", + "keywords": [ + "cognitive neuroscience", + "data standardization", + "decision making", + "declarative memory", + "neurophysiology", + "neurosurgery", + "NWB", + "open source", + "single-neurons" + ], + "protocol": [], + "identifier": "DANDI-ADHOC:000004", + "repository": "https://dandiarchive.org/", + "contributor": [ + { + "name": "Chandravadia, Nand", + "email": "nandc10@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:ContactPerson", + "dcite:DataCurator", + "dcite:DataManager", + "dcite:FormalAnalysis", + "dcite:Investigation", + "dcite:Maintainer", + "dcite:Methodology", + "dcite:ProjectLeader", + "dcite:ProjectManager", + "dcite:ProjectMember", + "dcite:Researcher", + "dcite:Software", + "dcite:Validation", + "dcite:Visualization" + ], + "schemaKey": "Person", + "identifier": "0000-0003-0161-4007", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Liang, Dehua", + "email": "liang134@mail.chapman.edu", + "roleName": [ + "dcite:Author", + "dcite:Methodology", + "dcite:ProjectMember", + "dcite:Software", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Schjetnan, Andrea Gomez Palacio", + "email": "Andrea.Schjetan@uhnresearch.ca", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "identifier": "0000-0002-4319-7689", + "affiliation": [ + { + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Carlson, April", + "email": "april.carlson@tufts.edu", + "roleName": [ + "dcite:Author", + "dcite:DataCurator", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Faraut, Mailys", + "email": "mailyscm.faraut@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Chung, Jeffrey M.", + "email": "Jeffrey.Chung@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Reed, Chrystal M.", + "email": "Chrystal.Reed@csmc.edu", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Dichter, Ben", + "email": "ben.dichter@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Software", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Biological Systems & Engineering Division, Lawrence Berkeley National Laboratory, Berkeley, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Department of Neurosurgery, Stanford University, Stanford, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Maoz, Uri", + "email": "maoz.uri@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Kalia, Suneil K.", + "email": "suneil.kalia@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Valiante, Taufik A.", + "email": "Taufik.Valiante@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Mamelak, Adam N.", + "email": "Adam.Mamelak@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Rutishauser, Ueli", + "email": "Ueli.Rutishauser@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:FundingAcquisition", + "dcite:ProjectMember", + "dcite:Resources", + "dcite:Software", + "dcite:Supervision", + "dcite:Validation" + ], + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Computational and Neural Systems Program, California Institute of Technology, Pasadena, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Center for Neural Science and Medicine, Department of Biomedical Science, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "National Institute of Neurological Disorders and Stroke", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "U01NS103792", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "National Science Foundation", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "1554105", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "National Institute of Mental Health", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "R01MH110831", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "McKnight Endowment for Neuroscience", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "NARSAD Young Investigator grant from the Brain & Behavior Research Foundation", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "Kavli Foundation", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "BRAIN initiative", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "U19NS104590", + "contactPoint": [], + "includeInCitation": false + } + ], + "description": "A challenge for data sharing in systems neuroscience is the multitude of different data formats used. Neurodata Without Borders: Neurophysiology 2.0 (NWB:N) has emerged as a standardized data format for the storage of cellular-level data together with meta-data, stimulus information, and behavior. A key next step to facilitate NWB:N adoption is to provide easy to use processing pipelines to import/export data from/to NWB:N. Here, we present a NWB-formatted dataset of 1863 single neurons recorded from the medial temporal lobes of 59 human subjects undergoing intracranial monitoring while they performed a recognition memory task. We provide code to analyze and export/import stimuli, behavior, and electrophysiological recordings to/from NWB in both MATLAB and Python. The data files are NWB:N compliant, which affords interoperability between programming languages and operating systems. This combined data and code release is a case study for how to utilize NWB:N for human single-neuron recordings and enables easy reuse of this hard-to-obtain data for both teaching and research on the mechanisms of human memory.", + "studyTarget": [], + "assetsSummary": { + "species": [ + { + "name": "Human", + "schemaKey": "SpeciesType", + "identifier": "http://purl.obolibrary.org/obo/NCBITaxon_9606" + } + ], + "approach": [ + { + "name": "electrophysiological approach", + "schemaKey": "ApproachType" + } + ], + "dataStandard": [ + { + "name": "Neurodata Without Borders (NWB)", + "schemaKey": "StandardsType", + "identifier": "RRID:SCR_015242" + } + ], + "numberOfBytes": 6197474020, + "numberOfFiles": 87, + "numberOfSubjects": 59, + "variableMeasured": [ + "Units", + "ElectrodeGroup" + ], + "measurementTechnique": [ + { + "name": "spike sorting technique", + "schemaKey": "MeasurementTechniqueType" + }, + { + "name": "surgical technique", + "schemaKey": "MeasurementTechniqueType" + } + ] + }, + "schemaVersion": "0.4.4", + "ethicsApproval": [], + "wasGeneratedBy": [], + "relatedResource": [ + { + "url": "https://osf.io/hv7ja/", + "name": "A NWB-based Dataset and Processing Pipeline of Human Single-Neuron Activity During a Declarative Memory Task", + "relation": "dcite:IsDerivedFrom", + "identifier": "DOI:10.17605/OSF.IO/HV7JA", + "repository": "Open Science Framework" + }, + { + "url": "https://www.nature.com/articles/s41597-020-0415-9", + "relation": "dcite:IsDescribedBy", + "identifier": "DOI:10.1038/s41597-020-0415-9" + } + ], + "manifestLocation": [ + "https://api.dandiarchive.org/api/dandisets/000004/versions/draft/assets/" + ] +} diff --git a/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000008.json b/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000008.json new file mode 100644 index 00000000..75715701 --- /dev/null +++ b/dandischema/tests/data/metadata/DANDI-ADHOC/meta_000008.json @@ -0,0 +1,216 @@ +{ + "id": "DANDI-ADHOC:000008/draft", + "schemaKey": "Dandiset", + "schemaVersion": "0.4.0", + "name": "Phenotypic variation within and across transcriptomic cell types in mouse motor cortex", + "description": "Data from the Tolias Lab shared in the BICCN project", + "contributor": [ + { + "schemaKey": "Person", + "name": "Scala, Federico", + "email": "fscala@example.com", + "roleName": [ + "dcite:DataCollector", + "dcite:Author", + "dcite:ContactPerson" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-5639-7209", + "name": "Kobak, Dmitry", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0003-4458-117X", + "name": "Bernabucci, Matteo", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Bernaerts, Yves", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0003-1963-8285", + "name": "Cadwell, Cathryn Rene", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Castro, Jesus Ramon", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-4922-8781", + "name": "Hartmanis, Leonard", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-8066-1383", + "name": "Jiang, Xiaolong", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-9532-788X", + "name": "Laturnus, Sophie", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Miranda, Elanine", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-8736-527X", + "name": "Mulherkar, Shalaka", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Tan, Zheng Huan", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-9361-5607", + "name": "Yao, Zizhen", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-0326-5878", + "name": "Zeng, Hongkui", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-6473-1740", + "name": "Sandberg, Rickard", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-0199-4727", + "name": "Berens, Philipp", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-4305-6376", + "name": "Tolias, Andreas Savas", + "email": "atolias@example.com", + "roleName": [ + "dcite:Author", + "dcite:ContactPerson" + ], + "includeInCitation": true + } + ], + "license": [ + "spdx:CC-BY-4.0" + ], + "access": [ + { + "schemaKey": "AccessRequirements", + "status": "dandi:OpenAccess" + } + ], + "url": "https://dandiarchive.org/dandiset/000008/draft", + "repository": "https://dandiarchive.org/", + "relatedResource": [ + { + "schemaKey": "Resource", + "identifier": "doi:10.1101/2020.02.03.929158", + "url": "https://www.biorxiv.org/content/10.1101/2020.02.03.929158v1.full", + "relation": "dcite:IsDescribedBy" + } + ], + "identifier": "DANDI-ADHOC:000008", + "citation": "Scala, Federico; Kobak, Dmitry; Bernabucci, Matteo; Bernaerts, Yves; Cadwell, Cathryn Rene; Castro, Jesus Ramon; Hartmanis, Leonard; Jiang, Xiaolong; Laturnus, Sophie; Miranda, Elanine; Mulherkar, Shalaka; Tan, Zheng Huan; Yao, Zizhen; Zeng, Hongkui; Sandberg, Rickard; Berens, Philipp; Tolias, Andreas Savas (2021) Phenotypic variation within and across transcriptomic cell types in mouse motor cortex. Online: https://dandiarchive.org/000008/draft", + "assetsSummary": { + "schemaKey": "AssetsSummary", + "numberOfBytes": 10, + "numberOfFiles": 1, + "dataStandard": [ + { + "schemaKey": "StandardsType", + "name": "NWB" + } + ], + "approach": [ + { + "schemaKey": "ApproachType", + "name": "electrophysiology" + } + ], + "measurementTechnique": [ + { + "schemaKey": "MeasurementTechniqueType", + "name": "two-photon microscopy technique" + } + ], + "species": [ + { + "schemaKey": "SpeciesType", + "name": "Human" + } + ] + }, + "manifestLocation": [ + "https://api.dandiarchive.org/api/dandisets/000008/versions/draft/assets/" + ], + "version": "draft" +} diff --git a/dandischema/tests/data/metadata/meta_000004.json b/dandischema/tests/data/metadata/DANDI/meta_000004.json similarity index 100% rename from dandischema/tests/data/metadata/meta_000004.json rename to dandischema/tests/data/metadata/DANDI/meta_000004.json diff --git a/dandischema/tests/data/metadata/meta_000004old.json b/dandischema/tests/data/metadata/DANDI/meta_000004old.json similarity index 100% rename from dandischema/tests/data/metadata/meta_000004old.json rename to dandischema/tests/data/metadata/DANDI/meta_000004old.json diff --git a/dandischema/tests/data/metadata/meta_000008.json b/dandischema/tests/data/metadata/DANDI/meta_000008.json similarity index 100% rename from dandischema/tests/data/metadata/meta_000008.json rename to dandischema/tests/data/metadata/DANDI/meta_000008.json diff --git a/dandischema/tests/data/metadata/EMBER-DANDI/meta_000004.json b/dandischema/tests/data/metadata/EMBER-DANDI/meta_000004.json new file mode 100644 index 00000000..7691e2ef --- /dev/null +++ b/dandischema/tests/data/metadata/EMBER-DANDI/meta_000004.json @@ -0,0 +1,429 @@ +{ + "id": "EMBER-DANDI:000004/draft", + "schemaKey": "Dandiset", + "schemaVersion": "0.4.4", + "name": "A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task", + "description": "A challenge for data sharing in systems neuroscience is the multitude of different data formats used. Neurodata Without Borders: Neurophysiology 2.0 (NWB:N) has emerged as a standardized data format for the storage of cellular-level data together with meta-data, stimulus information, and behavior. A key next step to facilitate NWB:N adoption is to provide easy to use processing pipelines to import/export data from/to NWB:N. Here, we present a NWB-formatted dataset of 1863 single neurons recorded from the medial temporal lobes of 59 human subjects undergoing intracranial monitoring while they performed a recognition memory task. We provide code to analyze and export/import stimuli, behavior, and electrophysiological recordings to/from NWB in both MATLAB and Python. The data files are NWB:N compliant, which affords interoperability between programming languages and operating systems. This combined data and code release is a case study for how to utilize NWB:N for human single-neuron recordings and enables easy reuse of this hard-to-obtain data for both teaching and research on the mechanisms of human memory.", + "contributor": [ + { + "schemaKey": "Person", + "identifier": "0000-0003-0161-4007", + "name": "Chandravadia, Nand", + "email": "nandc10@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:ContactPerson", + "dcite:DataCurator", + "dcite:DataManager", + "dcite:FormalAnalysis", + "dcite:Investigation", + "dcite:Maintainer", + "dcite:Methodology", + "dcite:ProjectLeader", + "dcite:ProjectManager", + "dcite:ProjectMember", + "dcite:Researcher", + "dcite:Software", + "dcite:Validation", + "dcite:Visualization" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Liang, Dehua", + "email": "liang134@mail.chapman.edu", + "roleName": [ + "dcite:Author", + "dcite:Methodology", + "dcite:ProjectMember", + "dcite:Software", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-4319-7689", + "name": "Schjetnan, Andrea Gomez Palacio", + "email": "Andrea.Schjetan@uhnresearch.ca", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada" + } + ] + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "name": "Carlson, April", + "email": "april.carlson@tufts.edu", + "roleName": [ + "dcite:Author", + "dcite:DataCurator", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Faraut, Mailys", + "email": "mailyscm.faraut@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Chung, Jeffrey M.", + "email": "Jeffrey.Chung@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Reed, Chrystal M.", + "email": "Chrystal.Reed@csmc.edu", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Dichter, Ben", + "email": "ben.dichter@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Software", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Biological Systems & Engineering Division, Lawrence Berkeley National Laboratory, Berkeley, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Stanford University, Stanford, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Maoz, Uri", + "email": "maoz.uri@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "name": "Kalia, Suneil K.", + "email": "suneil.kalia@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada" + }, + { + "schemaKey": "Affiliation", + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada" + } + ] + }, + { + "schemaKey": "Person", + "name": "Valiante, Taufik A.", + "email": "Taufik.Valiante@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada" + }, + { + "schemaKey": "Affiliation", + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada" + } + ] + }, + { + "schemaKey": "Person", + "name": "Mamelak, Adam N.", + "email": "Adam.Mamelak@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "name": "Rutishauser, Ueli", + "email": "Ueli.Rutishauser@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:FundingAcquisition", + "dcite:ProjectMember", + "dcite:Resources", + "dcite:Software", + "dcite:Supervision", + "dcite:Validation" + ], + "includeInCitation": true, + "affiliation": [ + { + "schemaKey": "Affiliation", + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Computational and Neural Systems Program, California Institute of Technology, Pasadena, CA, USA" + }, + { + "schemaKey": "Affiliation", + "name": "Center for Neural Science and Medicine, Department of Biomedical Science, Cedars-Sinai Medical Center, Los Angeles, CA, USA" + } + ] + }, + { + "schemaKey": "Organization", + "name": "Stroke, National Institute of Neurological Disorders and", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "U01NS103792" + }, + { + "schemaKey": "Organization", + "name": "Foundation, National Science", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "1554105" + }, + { + "schemaKey": "Organization", + "name": "Health, National Institute of Mental", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "R01MH110831" + }, + { + "schemaKey": "Organization", + "name": "Neuroscience, McKnight Endowment for", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false + }, + { + "schemaKey": "Organization", + "name": "Foundation, NARSAD Young Investigator grant from the Brain & Behavior Research", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false + }, + { + "schemaKey": "Organization", + "name": "Foundation, Kavli", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false + }, + { + "schemaKey": "Organization", + "name": "initiative, BRAIN", + "roleName": [ + "dcite:Sponsor" + ], + "includeInCitation": false, + "awardNumber": "U19NS104590" + } + ], + "about": [ + { + "schemaKey": "GenericType", + "name": "Medial Temporal Lobe" + } + ], + "license": [ + "spdx:CC-BY-4.0" + ], + "keywords": [ + "cognitive neuroscience", + "data standardization", + "decision making", + "declarative memory", + "neurophysiology", + "neurosurgery", + "NWB", + "open source", + "single-neurons" + ], + "access": [ + { + "schemaKey": "AccessRequirements", + "status": "dandi:OpenAccess" + } + ], + "url": "https://dandiarchive.org/dandiset/000004/draft", + "repository": "https://dandiarchive.org/", + "relatedResource": [ + { + "schemaKey": "Resource", + "identifier": "DOI:10.17605/OSF.IO/HV7JA", + "name": "A NWB-based Dataset and Processing Pipeline of Human Single-Neuron Activity During a Declarative Memory Task", + "url": "https://osf.io/hv7ja/", + "repository": "Open Science Framework", + "relation": "dcite:IsDerivedFrom" + }, + { + "schemaKey": "Resource", + "identifier": "DOI:10.1038/s41597-020-0415-9", + "url": "https://www.nature.com/articles/s41597-020-0415-9", + "relation": "dcite:IsDescribedBy" + } + ], + "identifier": "EMBER-DANDI:000004", + "citation": "Chandravadia, Nand; Liang, Dehua; Schjetnan, Andrea Gomez Palacio; Carlson, April; Faraut, Mailys; Chung, Jeffrey M.; Reed, Chrystal M.; Dichter, Ben; Maoz, Uri; Kalia, Suneil K.; Valiante, Taufik A.; Mamelak, Adam N.; Rutishauser, Ueli (2021) A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task. Online: https://dandiarchive.org/000004/draft", + "assetsSummary": { + "schemaKey": "AssetsSummary", + "numberOfBytes": 10, + "numberOfFiles": 1, + "dataStandard": [ + { + "schemaKey": "StandardsType", + "name": "NWB" + } + ], + "approach": [ + { + "schemaKey": "ApproachType", + "name": "electrophysiology" + } + ], + "measurementTechnique": [ + { + "schemaKey": "MeasurementTechniqueType", + "name": "two-photon microscopy technique" + } + ], + "species": [ + { + "schemaKey": "SpeciesType", + "name": "Human" + } + ] + }, + "manifestLocation": [ + "https://api.dandiarchive.org/api/dandisets/000004/versions/draft/assets/" + ], + "version": "draft" +} diff --git a/dandischema/tests/data/metadata/EMBER-DANDI/meta_000004old.json b/dandischema/tests/data/metadata/EMBER-DANDI/meta_000004old.json new file mode 100644 index 00000000..302ee8ef --- /dev/null +++ b/dandischema/tests/data/metadata/EMBER-DANDI/meta_000004old.json @@ -0,0 +1,474 @@ +{ + "id": "EMBER-DANDI:000004/draft", + "url": "https://dandiarchive.org/dandiset/000004/draft", + "name": "A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task", + "about": [ + { + "name": "Right Temporal Lobe", + "identifier": "http://purl.obolibrary.org/obo/UBERON_0002809" + }, + { + "name": "Medial Temporal Lobe" + } + ], + "access": [ + { + "status": "dandi:OpenAccess", + "contactPoint": { + "schemaKey": "ContactPoint" + } + } + ], + "license": [ + "spdx:CC-BY-4.0" + ], + "version": "draft", + "@context": "https://raw.githubusercontent.com/dandi/schema/master/releases/0.4.4/context.json", + "citation": "Chandravadia, Nand; Liang, Dehua; Schjetnan, Andrea Gomez Palacio; Carlson, April; Faraut, Mailys; Chung, Jeffrey M.; Reed, Chrystal M.; Dichter, Ben; Maoz, Uri; Kalia, Suneil K.; Valiante, Taufik A.; Mamelak, Adam N.; Rutishauser, Ueli (2021) A NWB-based dataset and processing pipeline of human single-neuron activity during a declarative memory task (Version draft) [Data set]. DANDI archive. https://dandiarchive.org/dandiset/000004/draft", + "keywords": [ + "cognitive neuroscience", + "data standardization", + "decision making", + "declarative memory", + "neurophysiology", + "neurosurgery", + "NWB", + "open source", + "single-neurons" + ], + "protocol": [], + "identifier": "EMBER-DANDI:000004", + "repository": "https://dandiarchive.org/", + "contributor": [ + { + "name": "Chandravadia, Nand", + "email": "nandc10@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:ContactPerson", + "dcite:DataCurator", + "dcite:DataManager", + "dcite:FormalAnalysis", + "dcite:Investigation", + "dcite:Maintainer", + "dcite:Methodology", + "dcite:ProjectLeader", + "dcite:ProjectManager", + "dcite:ProjectMember", + "dcite:Researcher", + "dcite:Software", + "dcite:Validation", + "dcite:Visualization" + ], + "schemaKey": "Person", + "identifier": "0000-0003-0161-4007", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Liang, Dehua", + "email": "liang134@mail.chapman.edu", + "roleName": [ + "dcite:Author", + "dcite:Methodology", + "dcite:ProjectMember", + "dcite:Software", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Schjetnan, Andrea Gomez Palacio", + "email": "Andrea.Schjetan@uhnresearch.ca", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "identifier": "0000-0002-4319-7689", + "affiliation": [ + { + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Carlson, April", + "email": "april.carlson@tufts.edu", + "roleName": [ + "dcite:Author", + "dcite:DataCurator", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Faraut, Mailys", + "email": "mailyscm.faraut@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:DataCollector", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Chung, Jeffrey M.", + "email": "Jeffrey.Chung@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Reed, Chrystal M.", + "email": "Chrystal.Reed@csmc.edu", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Dichter, Ben", + "email": "ben.dichter@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Software", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Biological Systems & Engineering Division, Lawrence Berkeley National Laboratory, Berkeley, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Department of Neurosurgery, Stanford University, Stanford, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Maoz, Uri", + "email": "maoz.uri@gmail.com", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Institute for Interdisciplinary Brain and Behavioral Sciences, Crean College of Health and Behavioral Sciences, Schmid College of Science and Technology, Chapman University, Orange, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Kalia, Suneil K.", + "email": "suneil.kalia@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Valiante, Taufik A.", + "email": "Taufik.Valiante@uhn.ca", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Krembil Brain Institute, Toronto Western Hospital, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Division of Neurosurgery, Department of Surgery, University of Toronto, Toronto, Canada", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Mamelak, Adam N.", + "email": "Adam.Mamelak@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:ProjectMember", + "dcite:Validation" + ], + "schemaKey": "Person", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "Rutishauser, Ueli", + "email": "Ueli.Rutishauser@cshs.org", + "roleName": [ + "dcite:Author", + "dcite:Conceptualization", + "dcite:FundingAcquisition", + "dcite:ProjectMember", + "dcite:Resources", + "dcite:Software", + "dcite:Supervision", + "dcite:Validation" + ], + "schemaKey": "Person", + "identifier": "0000-0002-9207-7069", + "affiliation": [ + { + "name": "Department of Neurosurgery, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Department of Neurology, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Division of Biology and Biological Engineering, California Institute of Technology, Pasadena, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Computational and Neural Systems Program, California Institute of Technology, Pasadena, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + }, + { + "name": "Center for Neural Science and Medicine, Department of Biomedical Science, Cedars-Sinai Medical Center, Los Angeles, CA, USA", + "schemaKey": "Affiliation", + "includeInCitation": false + } + ], + "includeInCitation": true + }, + { + "name": "National Institute of Neurological Disorders and Stroke", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "U01NS103792", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "National Science Foundation", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "1554105", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "National Institute of Mental Health", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "R01MH110831", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "McKnight Endowment for Neuroscience", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "NARSAD Young Investigator grant from the Brain & Behavior Research Foundation", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "Kavli Foundation", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "contactPoint": [], + "includeInCitation": false + }, + { + "name": "BRAIN initiative", + "roleName": [ + "dcite:Sponsor" + ], + "schemaKey": "Organization", + "awardNumber": "U19NS104590", + "contactPoint": [], + "includeInCitation": false + } + ], + "description": "A challenge for data sharing in systems neuroscience is the multitude of different data formats used. Neurodata Without Borders: Neurophysiology 2.0 (NWB:N) has emerged as a standardized data format for the storage of cellular-level data together with meta-data, stimulus information, and behavior. A key next step to facilitate NWB:N adoption is to provide easy to use processing pipelines to import/export data from/to NWB:N. Here, we present a NWB-formatted dataset of 1863 single neurons recorded from the medial temporal lobes of 59 human subjects undergoing intracranial monitoring while they performed a recognition memory task. We provide code to analyze and export/import stimuli, behavior, and electrophysiological recordings to/from NWB in both MATLAB and Python. The data files are NWB:N compliant, which affords interoperability between programming languages and operating systems. This combined data and code release is a case study for how to utilize NWB:N for human single-neuron recordings and enables easy reuse of this hard-to-obtain data for both teaching and research on the mechanisms of human memory.", + "studyTarget": [], + "assetsSummary": { + "species": [ + { + "name": "Human", + "schemaKey": "SpeciesType", + "identifier": "http://purl.obolibrary.org/obo/NCBITaxon_9606" + } + ], + "approach": [ + { + "name": "electrophysiological approach", + "schemaKey": "ApproachType" + } + ], + "dataStandard": [ + { + "name": "Neurodata Without Borders (NWB)", + "schemaKey": "StandardsType", + "identifier": "RRID:SCR_015242" + } + ], + "numberOfBytes": 6197474020, + "numberOfFiles": 87, + "numberOfSubjects": 59, + "variableMeasured": [ + "Units", + "ElectrodeGroup" + ], + "measurementTechnique": [ + { + "name": "spike sorting technique", + "schemaKey": "MeasurementTechniqueType" + }, + { + "name": "surgical technique", + "schemaKey": "MeasurementTechniqueType" + } + ] + }, + "schemaVersion": "0.4.4", + "ethicsApproval": [], + "wasGeneratedBy": [], + "relatedResource": [ + { + "url": "https://osf.io/hv7ja/", + "name": "A NWB-based Dataset and Processing Pipeline of Human Single-Neuron Activity During a Declarative Memory Task", + "relation": "dcite:IsDerivedFrom", + "identifier": "DOI:10.17605/OSF.IO/HV7JA", + "repository": "Open Science Framework" + }, + { + "url": "https://www.nature.com/articles/s41597-020-0415-9", + "relation": "dcite:IsDescribedBy", + "identifier": "DOI:10.1038/s41597-020-0415-9" + } + ], + "manifestLocation": [ + "https://api.dandiarchive.org/api/dandisets/000004/versions/draft/assets/" + ] +} diff --git a/dandischema/tests/data/metadata/EMBER-DANDI/meta_000008.json b/dandischema/tests/data/metadata/EMBER-DANDI/meta_000008.json new file mode 100644 index 00000000..84f49a44 --- /dev/null +++ b/dandischema/tests/data/metadata/EMBER-DANDI/meta_000008.json @@ -0,0 +1,216 @@ +{ + "id": "EMBER-DANDI:000008/draft", + "schemaKey": "Dandiset", + "schemaVersion": "0.4.0", + "name": "Phenotypic variation within and across transcriptomic cell types in mouse motor cortex", + "description": "Data from the Tolias Lab shared in the BICCN project", + "contributor": [ + { + "schemaKey": "Person", + "name": "Scala, Federico", + "email": "fscala@example.com", + "roleName": [ + "dcite:DataCollector", + "dcite:Author", + "dcite:ContactPerson" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-5639-7209", + "name": "Kobak, Dmitry", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0003-4458-117X", + "name": "Bernabucci, Matteo", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Bernaerts, Yves", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0003-1963-8285", + "name": "Cadwell, Cathryn Rene", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Castro, Jesus Ramon", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-4922-8781", + "name": "Hartmanis, Leonard", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-8066-1383", + "name": "Jiang, Xiaolong", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-9532-788X", + "name": "Laturnus, Sophie", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Miranda, Elanine", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-8736-527X", + "name": "Mulherkar, Shalaka", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "name": "Tan, Zheng Huan", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-9361-5607", + "name": "Yao, Zizhen", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-0326-5878", + "name": "Zeng, Hongkui", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0001-6473-1740", + "name": "Sandberg, Rickard", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-0199-4727", + "name": "Berens, Philipp", + "roleName": [ + "dcite:Author" + ], + "includeInCitation": true + }, + { + "schemaKey": "Person", + "identifier": "0000-0002-4305-6376", + "name": "Tolias, Andreas Savas", + "email": "atolias@example.com", + "roleName": [ + "dcite:Author", + "dcite:ContactPerson" + ], + "includeInCitation": true + } + ], + "license": [ + "spdx:CC-BY-4.0" + ], + "access": [ + { + "schemaKey": "AccessRequirements", + "status": "dandi:OpenAccess" + } + ], + "url": "https://dandiarchive.org/dandiset/000008/draft", + "repository": "https://dandiarchive.org/", + "relatedResource": [ + { + "schemaKey": "Resource", + "identifier": "doi:10.1101/2020.02.03.929158", + "url": "https://www.biorxiv.org/content/10.1101/2020.02.03.929158v1.full", + "relation": "dcite:IsDescribedBy" + } + ], + "identifier": "EMBER-DANDI:000008", + "citation": "Scala, Federico; Kobak, Dmitry; Bernabucci, Matteo; Bernaerts, Yves; Cadwell, Cathryn Rene; Castro, Jesus Ramon; Hartmanis, Leonard; Jiang, Xiaolong; Laturnus, Sophie; Miranda, Elanine; Mulherkar, Shalaka; Tan, Zheng Huan; Yao, Zizhen; Zeng, Hongkui; Sandberg, Rickard; Berens, Philipp; Tolias, Andreas Savas (2021) Phenotypic variation within and across transcriptomic cell types in mouse motor cortex. Online: https://dandiarchive.org/000008/draft", + "assetsSummary": { + "schemaKey": "AssetsSummary", + "numberOfBytes": 10, + "numberOfFiles": 1, + "dataStandard": [ + { + "schemaKey": "StandardsType", + "name": "NWB" + } + ], + "approach": [ + { + "schemaKey": "ApproachType", + "name": "electrophysiology" + } + ], + "measurementTechnique": [ + { + "schemaKey": "MeasurementTechniqueType", + "name": "two-photon microscopy technique" + } + ], + "species": [ + { + "schemaKey": "SpeciesType", + "name": "Human" + } + ] + }, + "manifestLocation": [ + "https://api.dandiarchive.org/api/dandisets/000008/versions/draft/assets/" + ], + "version": "draft" +} diff --git a/dandischema/tests/test_metadata.py b/dandischema/tests/test_metadata.py index ce10b104..a74a5145 100644 --- a/dandischema/tests/test_metadata.py +++ b/dandischema/tests/test_metadata.py @@ -12,7 +12,13 @@ from dandischema.models import Asset, Dandiset, PublishedAsset, PublishedDandiset from dandischema.utils import TransitionalGenerateJsonSchema, jsonschema_validator -from .utils import skipif_no_network +from .utils import ( + DANDISET_METADATA_DIR, + INSTANCE_NAME, + METADATA_DIR, + skipif_instance_name_not_dandi, + skipif_no_network, +) from ..consts import DANDI_SCHEMA_VERSION from ..exceptions import JsonschemaValidationError, PydanticValidationError from ..metadata import ( @@ -27,8 +33,6 @@ validate, ) -METADATA_DIR = Path(__file__).with_name("data") / "metadata" - @pytest.fixture(scope="module") def schema_dir(tmp_path_factory: pytest.TempPathFactory) -> Path: @@ -46,7 +50,7 @@ def test_asset(schema_dir: Path) -> None: def test_dandiset(schema_dir: Path) -> None: - with (METADATA_DIR / "meta_000004.json").open() as fp: + with (DANDISET_METADATA_DIR / "meta_000004.json").open() as fp: data_as_dict = json.load(fp) data_as_dict["schemaVersion"] = DANDI_SCHEMA_VERSION _validate_dandiset_json(data_as_dict, schema_dir) @@ -60,10 +64,14 @@ def test_id(schema_dir: Path) -> None: @skipif_no_network def test_pydantic_validation(schema_dir: Path) -> None: - with (METADATA_DIR / "meta_000004.json").open() as fp: + with (DANDISET_METADATA_DIR / "meta_000004.json").open() as fp: data_as_dict = json.load(fp) data_as_dict["schemaVersion"] = "0.4.4" - validate(data_as_dict, schema_key="Dandiset", json_validation=True) + if INSTANCE_NAME == "DANDI": + # This is run only when the DANDI instance is `"DANDI"` + # since the JSON schema at `0.4.4` is hardcoded to only + # for an instance named `DANDI` + validate(data_as_dict, schema_key="Dandiset", json_validation=True) data_as_dict["schemaVersion"] = DANDI_SCHEMA_VERSION validate(data_as_dict, schema_key="Dandiset", json_validation=True) validate(data_as_dict["about"][0]) @@ -72,6 +80,9 @@ def test_pydantic_validation(schema_dir: Path) -> None: @skipif_no_network +# Skip for when the instance being tested is not `DANDI` since the JSON schema +# version at `0.4.4` and `0.6.0` is hardcoded to only for an instance named `DANDI` +@skipif_instance_name_not_dandi def test_json_schemakey_validation() -> None: with pytest.raises(JsonschemaValidationError) as exc: validate( @@ -304,7 +315,7 @@ def test_requirements( ( { "schemaKey": "Dandiset", - "identifier": "DANDI:000000", + "identifier": f"{INSTANCE_NAME}:000000", "schemaVersion": "0.4.4", }, None, @@ -328,16 +339,19 @@ def test_missing_ok( @skipif_no_network def test_missing_ok_error() -> None: - with pytest.raises(JsonschemaValidationError): - validate( - { - "schemaKey": "Dandiset", - "identifier": "000000", - "schemaVersion": "0.4.4", - }, - json_validation=True, - missing_ok=True, - ) + if INSTANCE_NAME == "DANDI": + # Skip for when the instance being tested is not `DANDI` since the JSON schema + # version at `0.4.4` is hardcoded to only for an instance named `DANDI` + with pytest.raises(JsonschemaValidationError): + validate( + { + "schemaKey": "Dandiset", + "identifier": "000000", + "schemaVersion": "0.4.4", + }, + json_validation=True, + missing_ok=True, + ) with pytest.raises(PydanticValidationError): validate( { @@ -409,8 +423,12 @@ def test_migrate_value_errors_lesser_target(monkeypatch: pytest.MonkeyPatch) -> @skipif_no_network +# Skip for instance name not being DANDI because JSON schema version at `0.4.4`, the +# schema version of the metadata in `meta_000004old.json`, is hardcoded to only for +# an DANDI instance named `DANDI` +@skipif_instance_name_not_dandi def test_migrate_044(schema_dir: Path) -> None: - with (METADATA_DIR / "meta_000004old.json").open() as fp: + with (DANDISET_METADATA_DIR / "meta_000004old.json").open() as fp: data_as_dict = json.load(fp) with pytest.raises(ValueError): validate(data_as_dict) @@ -586,12 +604,17 @@ def test_aggregate_nonsupported(version: str) -> None: @skipif_no_network def test_validate_older() -> None: - with pytest.raises(ValueError): - validate( - {"schemaVersion": "0.5.2", "schemaKey": "Anykey"}, json_validation=True - ) - with pytest.raises(JsonschemaValidationError): - validate({"schemaVersion": "0.5.2", "schemaKey": "Asset"}, json_validation=True) + if INSTANCE_NAME == "DANDI": + # Skip for when the instance being tested is not `DANDI` since the JSON schema + # version at `0.5.2` is hardcoded to only for an instance named `DANDI` + with pytest.raises(ValueError): + validate( + {"schemaVersion": "0.5.2", "schemaKey": "Anykey"}, json_validation=True + ) + with pytest.raises(JsonschemaValidationError): + validate( + {"schemaVersion": "0.5.2", "schemaKey": "Asset"}, json_validation=True + ) with pytest.raises(JsonschemaValidationError): validate( {"schemaVersion": DANDI_SCHEMA_VERSION, "schemaKey": "Asset"}, diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 9b0e5101..c6a600d8 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -4,10 +4,10 @@ from typing import Any, Dict, List, Literal, Optional, Tuple, Type, Union, cast import pydantic -from pydantic import Field, ValidationError +from pydantic import BaseModel, ConfigDict, Field, ValidationError import pytest -from .utils import _basic_publishmeta +from .utils import DOI_PREFIX, INSTANCE_NAME, _basic_publishmeta from .. import models from ..models import ( DANDI_INSTANCE_URL_PATTERN, @@ -371,8 +371,8 @@ def test_dantimeta_1() -> None: """checking basic metadata for publishing""" # meta data without doi, datePublished and publishedBy meta_dict: Dict[str, Any] = { - "identifier": "DANDI:999999", - "id": "DANDI:999999/draft", + "identifier": f"{INSTANCE_NAME}:999999", + "id": f"{INSTANCE_NAME}:999999/draft", "version": "1.0.0", "name": "testing dataset", "description": "testing", @@ -449,9 +449,11 @@ def test_dantimeta_1() -> None: # after adding basic meta required to publish: doi, datePublished, publishedBy, assetsSummary, # so PublishedDandiset should work meta_dict["url"] = "https://dandiarchive.org/dandiset/999999/0.0.0" - meta_dict["id"] = "DANDI:999999/0.0.0" + meta_dict["id"] = f"{INSTANCE_NAME}:999999/0.0.0" meta_dict["version"] = "0.0.0" - meta_dict.update(_basic_publishmeta(dandi_id="999999")) + meta_dict.update( + _basic_publishmeta(INSTANCE_NAME, dandi_id="999999", prefix=DOI_PREFIX) + ) meta_dict["assetsSummary"].update(**{"numberOfBytes": 1, "numberOfFiles": 1}) PublishedDandiset(**meta_dict) @@ -733,3 +735,188 @@ def test_with_email(self, roles: List[RoleType]) -> None: Test creating a `Contributor` instance with an email """ Contributor(email="nemo@dandiarchive.org", roleName=roles) + + +def _get_field_pattern( + field_name: str, + model: Type[BaseModel], +) -> str: + """ + Get the regex pattern for a field in a Pydantic model. + + Parameters + ---------- + field_name : str + The name of the field to get the pattern for. + model : Type[BaseModel] + The Pydantic model class. + + Returns + ------- + str + The regex pattern for the field. + """ + if field_name not in model.model_fields: + raise ValueError(f"Field '{field_name}' not found in model '{model.__name__}'") + + field = model.model_fields[field_name] + for data in field.metadata: + if hasattr(data, "pattern"): + assert isinstance(data.pattern, str) + return data.pattern + else: + raise ValueError( + f"field `{field_name}` in model `{model.__name__}` has no pattern " + f"constraint" + ) + + +@pytest.mark.parametrize( + ( + "clear_dandischema_modules_and_set_env_vars", + # "exp" means "expected" in the following names + "exp_id_pattern", + "exp_datacite_doi_id_pattern", + "valid_vendored_fields", + "invalid_vendored_fields", + ), + [ + # === DANDI DANDI instance test cases === + # Without any environment variables set. dandischema is unvendorized. + ( + {}, + r"[A-Z][-A-Z]*", + None, + { + "dandiset_id": "DANDI:001350/draft", + "dandiset_identifier": "DANDI:001350", + "published_dandiset_id": "DANDI:001350/0.250511.1527", + }, + { + "dandiset_id": "45:001350/draft", # Invalid id prefix + "dandiset_identifier": "DANDI:001350", + "published_dandiset_id": "DANDI:001350/0.250511.1527", + }, + ), + ( + { + "instance_name": "DANDI", + "datacite_doi_id": "48324", + }, + "DANDI", + "48324", + { + "dandiset_id": "DANDI:001425/draft", + "dandiset_identifier": "DANDI:001425", + "published_dandiset_id": "DANDI:001425/0.250514.0602", + "published_dandiset_doi": "10.48324/dandi.001425/0.250514.0602", + }, + { + "dandiset_id": "DANDI:001425/draft", + "dandiset_identifier": "DANDI:001425", + "published_dandiset_id": "DANDI:001425/0.250514.0602", + # Invalid registrant code in the DOI prefix + "published_dandiset_doi": "10.1234/dandi.001425/0.250514.0602", + }, + ), + ( + { + "instance_name": "DANDI", + }, + "DANDI", + None, + { + "dandiset_id": "DANDI:001425/draft", + "dandiset_identifier": "DANDI:001425", + "published_dandiset_id": "DANDI:001425/0.250514.0602", + }, + { + "dandiset_id": "DANDI:001425/draft", + "dandiset_identifier": "DANDI:001425", + # Not matching the `ID_PATTERN` regex + "published_dandiset_id": "DANDI3:001425/0.250514.0602", + }, + ), + # === EMBER DANDI instance test cases === + # Without any environment variables set. dandischema is unvendorized. + ( + {}, + r"[A-Z][-A-Z]*", + None, + { + "dandiset_id": "EMBER-DANDI:000005/draft", + "dandiset_identifier": "EMBER-DANDI:000005", + "published_dandiset_id": "EMBER-DANDI:000005/0.250404.1839", + }, + { + "dandiset_id": "EMBER-DANDI:000005/draft", + "dandiset_identifier": "-EMBER-DANDI:000005", # Invalid id prefix + "published_dandiset_id": "EMBER-DANDI:000005/0.250404.1839", + }, + ), + ( + { + "instance_name": "EMBER-DANDI", + "datacite_doi_id": "60533", + }, + "EMBER-DANDI", + "60533", + { + "dandiset_id": "EMBER-DANDI:000005/draft", + "dandiset_identifier": "EMBER-DANDI:000005", + "published_dandiset_id": "EMBER-DANDI:000005/0.250404.1839", + "published_dandiset_doi": "10.60533/ember-dandi.000005/0.250404.1839", + }, + { + "dandiset_id": "EMBER-DANDI:000005/draft", + "dandiset_identifier": "EMBER-DANDI:000005", + # Invalid id prefix + "published_dandiset_id": "EM:000005/0.250404.1839", + "published_dandiset_doi": "10.60533/ember-dandi.000005/0.250404.1839", + }, + ), + ], + indirect=["clear_dandischema_modules_and_set_env_vars"], +) +def test_vendorization( + clear_dandischema_modules_and_set_env_vars: None, + exp_id_pattern: str, + exp_datacite_doi_id_pattern: Optional[str], + # Fields that are valid for the vendorization + valid_vendored_fields: dict[str, str], + # Fields that are invalid for the vendorization + invalid_vendored_fields: dict[str, str], +) -> None: + """ + Test the vendorization of the DANDI schema + """ + import dandischema.models as models_ + + assert models_.ID_PATTERN == exp_id_pattern + assert models_.DATACITE_DOI_ID_PATTERN == exp_datacite_doi_id_pattern + + class VendoredFieldModel(BaseModel): + """ + A model consisting of fields with vendorized patterns in `dandischema.models` + """ + + dandiset_id: str = Field(pattern=_get_field_pattern("id", models_.Dandiset)) + dandiset_identifier: str = Field( + pattern=_get_field_pattern("identifier", models_.Dandiset) + ) + published_dandiset_id: str = Field( + pattern=_get_field_pattern("id", models_.PublishedDandiset) + ) + if exp_datacite_doi_id_pattern is not None: + published_dandiset_doi: str = Field( + pattern=_get_field_pattern("doi", models_.PublishedDandiset) + ) + + model_config = ConfigDict(strict=True, extra="forbid") + + # Validate the valid vendored fields against the vendored patterns + VendoredFieldModel.model_validate(valid_vendored_fields) + + # Validate the invalid vendored fields against the vendored patterns + with pytest.raises(ValidationError): + VendoredFieldModel.model_validate(invalid_vendored_fields) diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index 5e76d5da..72fd2401 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -1,16 +1,38 @@ from datetime import datetime import os +from pathlib import Path from typing import Any, Dict import pytest +from dandischema.conf import CONFIG + +if CONFIG.instance_name not in ["DANDI", "DANDI-ADHOC", "EMBER-DANDI"]: + # This should never happen + raise NotImplementedError( + f"There is no testing `Dandiset` metadata for a DANDI" + f"instance named {CONFIG.instance_name}" + ) + +INSTANCE_NAME = CONFIG.instance_name +METADATA_DIR = Path(__file__).with_name("data") / "metadata" +DANDISET_METADATA_DIR = METADATA_DIR / INSTANCE_NAME + +DOI_PREFIX = f"10.{DATACITE_DOI_ID}" if DATACITE_DOI_ID is not None else None + + skipif_no_network = pytest.mark.skipif( bool(os.environ.get("DANDI_TESTS_NONETWORK")), reason="no network settings" ) +skipif_instance_name_not_dandi = pytest.mark.skipif( + INSTANCE_NAME != "DANDI", reason='The DANDI instance\'s name is not "DANDI"' +) + + def _basic_publishmeta( - dandi_id: str, version: str = "0.0.0", prefix: str = "10.80507" + instance_name: str, dandi_id: str, version: str = "0.0.0", prefix: str = "10.80507" ) -> Dict[str, Any]: """Return extra metadata required by PublishedDandiset @@ -35,6 +57,6 @@ def _basic_publishmeta( "schemaKey": "PublishActivity", }, "version": version, - "doi": f"{prefix}/dandi.{dandi_id}/{version}", + "doi": f"{prefix}/{instance_name.lower()}.{dandi_id}/{version}", } return publish_meta diff --git a/tox.ini b/tox.ini index c32f3b96..6e86fd36 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,7 @@ isolated_build = True [testenv] extras = test passenv = - DANDI_TESTS_NONETWORK + DANDI_* DATACITE_DEV_PASSWORD NO_ET commands = From 266254ce44858a2918f5e26a37b7db993c0ad501 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 20 May 2025 10:46:48 -0700 Subject: [PATCH 06/80] rf: rename `test_dantimeta_1()` to `test_dandimeta_1()` The original name must be a typo --- dandischema/tests/test_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index c6a600d8..ff9c0733 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -367,7 +367,7 @@ def test_autogenerated_titles() -> None: assert schema["$defs"]["PropertyValue"]["title"] == "Property Value" -def test_dantimeta_1() -> None: +def test_dandimeta_1() -> None: """checking basic metadata for publishing""" # meta data without doi, datePublished and publishedBy meta_dict: Dict[str, Any] = { From 8c3a3e72490de72bee182768086585ce9899be9d Mon Sep 17 00:00:00 2001 From: Isaac To Date: Fri, 23 May 2025 11:03:13 -0700 Subject: [PATCH 07/80] fix: add end of string anchor to `DANDI_DOI_PATTERN` It must be an oversight that the string anchor is missing --- dandischema/models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dandischema/models.py b/dandischema/models.py index 19d01a73..6668a1d1 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -65,7 +65,9 @@ ASSET_UUID_PATTERN = r"^dandiasset:" + UUID_PATTERN VERSION_PATTERN = r"\d{6}/\d+\.\d+\.\d+" DANDI_DOI_PATTERN = ( - rf"^10\.{DATACITE_DOI_ID_PATTERN}/{ID_PATTERN.lower()}\.{VERSION_PATTERN}" + (rf"^10\.{DATACITE_DOI_ID_PATTERN}/{ID_PATTERN.lower()}\.{VERSION_PATTERN}$") + if DATACITE_DOI_ID_PATTERN is not None + else None ) DANDI_PUBID_PATTERN = rf"^{ID_PATTERN}:{VERSION_PATTERN}" DANDI_NSKEY = "dandi" # Namespace for DANDI ontology From 8ceed31c8d29e7bcb4a33e1f76c3a58fee7f38e6 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sat, 24 May 2025 23:01:30 -0700 Subject: [PATCH 08/80] feat: define `PublishedDandiset.doi` on condition If `DANDI_DOI_PATTERN` is not None define `PublishedDandiset.doi` with its previous definition. Otherwise, restrict `PublishedDandiset.doi` to be an empty string and default it to the empty string. With this definition, `PublishedDandiset.doi` always exits regardless of the value of `DANDI_DOI_PATTERN`. Yet, when `DANDI_DOI_PATTERN` is `None`, `PublishedDandiset.doi` is always the empty string indicating that the DOI doesn't exist. --- dandischema/models.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/dandischema/models.py b/dandischema/models.py index 6668a1d1..63e9f103 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -1854,18 +1854,32 @@ class Publishable(DandiBaseModel): ) +_doi_field_kwargs: dict[str, Any] = { + "title": "DOI", + "json_schema_extra": {"readOnly": True, "nskey": DANDI_NSKEY}, +} +if DANDI_DOI_PATTERN is not None: + _doi_field_kwargs["pattern"] = DANDI_DOI_PATTERN +else: + _doi_field_kwargs["default"] = "" + # restricting the value to empty string to indicate that there is no DOI + _doi_field_kwargs["pattern"] = r"^$" + + class PublishedDandiset(Dandiset, Publishable): id: str = Field( description="Uniform resource identifier.", pattern=DANDI_PUBID_PATTERN, json_schema_extra={"readOnly": True}, ) + doi: str = Field(**_doi_field_kwargs) + """ + The DOI of the published Dandiset + + The value of the empty string indicates that there is no DOI for the published + Dandiset. + """ - doi: str = Field( - title="DOI", - pattern=DANDI_DOI_PATTERN, - json_schema_extra={"readOnly": True, "nskey": DANDI_NSKEY}, - ) url: AnyHttpUrl = Field( description="Permalink to the Dandiset.", json_schema_extra={"readOnly": True, "nskey": "schema"}, From 2cd01161eb12ac386f1500b2ae069e15326d551d Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 26 May 2025 21:15:39 -0700 Subject: [PATCH 09/80] test: adjust tests for conditional definition of `PublishedDandiset.doi` To handle that `PublishedDandiset` requires the `doi` field contingent on the value of `Config.datacite_doi_id` --- .github/workflows/test.yml | 19 ++++-- dandischema/tests/test_metadata.py | 95 +++++++++++++++++------------- dandischema/tests/test_models.py | 28 ++++++--- dandischema/tests/utils.py | 2 + 4 files changed, 89 insertions(+), 55 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0d5afe0c..0f419c95 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,6 +26,10 @@ jobs: vendored_env: ember-dandi instance_name: EMBER-DANDI datacite_doi_id: '60533' + - os: ubuntu-latest + python: '3.9' + vendored_env: ember-dandi-no-doi + instance_name: EMBER-DANDI steps: - name: Set up environment uses: actions/checkout@v4 @@ -44,12 +48,17 @@ jobs: python -m pip install --upgrade pip wheel python -m pip install --upgrade tox - - name: Set vendor environment - if: ${{ matrix.vendored_env != 'unvendored' }} + # Set only if matrix.instance_name is defined + - name: Set DANDI_INSTANCE_NAME + if: ${{ matrix.instance_name }} shell: bash - run: | - echo "DANDI_INSTANCE_NAME=${{ matrix.instance_name }}" >> "$GITHUB_ENV" - echo "DANDI_DATACITE_DOI_ID=${{ matrix.datacite_doi_id }}" >> "$GITHUB_ENV" + run: echo "DANDI_INSTANCE_NAME=${{ matrix.instance_name }}" >> "$GITHUB_ENV" + + # Set only if matrix.datacite_doi_id is defined + - name: Set DANDI_DATACITE_DOI_ID + if: ${{ matrix.datacite_doi_id }} + shell: bash + run: echo "DANDI_DATACITE_DOI_ID=${{ matrix.datacite_doi_id }}" >> "$GITHUB_ENV" - name: Run all tests env: diff --git a/dandischema/tests/test_metadata.py b/dandischema/tests/test_metadata.py index a74a5145..310978c6 100644 --- a/dandischema/tests/test_metadata.py +++ b/dandischema/tests/test_metadata.py @@ -14,6 +14,7 @@ from .utils import ( DANDISET_METADATA_DIR, + DATACITE_DOI_ID, INSTANCE_NAME, METADATA_DIR, skipif_instance_name_not_dandi, @@ -131,20 +132,24 @@ def test_mismatch_key(schema_version: str, schema_key: str) -> None: {"schemaKey": "Dandiset"}, "PublishedDandiset", { - "assetsSummary", - "citation", - "contributor", - "datePublished", - "description", - "doi", - "id", - "identifier", - "license", - "manifestLocation", - "name", - "publishedBy", - "url", - "version", + e + for e in [ + "assetsSummary", + "citation", + "contributor", + "datePublished", + "description", + "doi", + "id", + "identifier", + "license", + "manifestLocation", + "name", + "publishedBy", + "url", + "version", + ] + if DATACITE_DOI_ID is not None or e != "doi" }, ), ( @@ -154,20 +159,24 @@ def test_mismatch_key(schema_version: str, schema_key: str) -> None: }, "PublishedDandiset", { - "assetsSummary", - "citation", - "contributor", - "datePublished", - "description", - "doi", - "id", - "identifier", - "license", - "manifestLocation", - "name", - "publishedBy", - "url", - "version", + e + for e in [ + "assetsSummary", + "citation", + "contributor", + "datePublished", + "description", + "doi", + "id", + "identifier", + "license", + "manifestLocation", + "name", + "publishedBy", + "url", + "version", + ] + if DATACITE_DOI_ID is not None or e != "doi" }, ), ( @@ -184,19 +193,23 @@ def test_mismatch_key(schema_version: str, schema_key: str) -> None: }, "PublishedDandiset", { - "assetsSummary", - "citation", - "datePublished", - "description", - "doi", - "id", - "identifier", - "license", - "manifestLocation", - "name", - "publishedBy", - "url", - "version", + e + for e in [ + "assetsSummary", + "citation", + "datePublished", + "description", + "doi", + "id", + "identifier", + "license", + "manifestLocation", + "name", + "publishedBy", + "url", + "version", + ] + if DATACITE_DOI_ID is not None or e != "doi" }, ), ( diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index ff9c0733..99433850 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -7,7 +7,7 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError import pytest -from .utils import DOI_PREFIX, INSTANCE_NAME, _basic_publishmeta +from .utils import DATACITE_DOI_ID, DOI_PREFIX, INSTANCE_NAME, _basic_publishmeta from .. import models from ..models import ( DANDI_INSTANCE_URL_PATTERN, @@ -425,10 +425,16 @@ def test_dandimeta_1() -> None: msg="Value error, " "A Dandiset containing no files or zero bytes is not publishable", ), - ("doi",): ErrDetail(type="missing", msg=None), } - assert len(exc.value.errors()) == 6 + # Handle the case where `PublishedDandiset` requires the `doi` field + if DATACITE_DOI_ID is not None: + expected_errors[("doi",)] = ErrDetail( + type="missing", + msg=None, + ) + + assert len(exc.value.errors()) == len(expected_errors) for err in exc.value.errors(): err_loc = err["loc"] assert err_loc in expected_errors @@ -438,12 +444,16 @@ def test_dandimeta_1() -> None: assert err["msg"] == expected_errors[err_loc].msg assert set([el["loc"][0] for el in exc.value.errors()]) == { - "assetsSummary", - "datePublished", - "publishedBy", - "doi", - "url", - "id", + e + for e in [ + "assetsSummary", + "datePublished", + "publishedBy", + "doi", + "url", + "id", + ] + if DATACITE_DOI_ID is not None or e != "doi" } # after adding basic meta required to publish: doi, datePublished, publishedBy, assetsSummary, diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index 72fd2401..a8cd1816 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -15,6 +15,8 @@ ) INSTANCE_NAME = CONFIG.instance_name +DATACITE_DOI_ID = CONFIG.datacite_doi_id + METADATA_DIR = Path(__file__).with_name("data") / "metadata" DANDISET_METADATA_DIR = METADATA_DIR / INSTANCE_NAME From 1f9ab2f7381986f658cc2ba80f991ac6d7cec1cc Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 27 May 2025 23:26:15 -0700 Subject: [PATCH 10/80] test: provide DANDI and EMBER datacite login accordingly --- .github/workflows/test.yml | 17 +++++++++++++++-- dandischema/datacite/tests/test_datacite.py | 4 ++-- tox.ini | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0f419c95..4734ae74 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: python: '3.9' vendored_env: ember-dandi instance_name: EMBER-DANDI - datacite_doi_id: '60533' + datacite_doi_id: '82754' - os: ubuntu-latest python: '3.9' vendored_env: ember-dandi-no-doi @@ -60,9 +60,22 @@ jobs: shell: bash run: echo "DANDI_DATACITE_DOI_ID=${{ matrix.datacite_doi_id }}" >> "$GITHUB_ENV" + - name: Set DANDI DataCite credentials + if: ${{ matrix.vendored_env == 'dandi' }} + shell: bash + run: | + echo "DATACITE_DEV_LOGIN=${{ secrets.DATACITE_DEV_DANDI_LOGIN }}" >> "$GITHUB_ENV" + echo "DATACITE_DEV_PASSWORD=${{ secrets.DATACITE_DEV_DANDI_PASSWORD }}" >> "$GITHUB_ENV" + + - name: Set EMBER DataCite credentials + if: ${{ matrix.vendored_env == 'ember-dandi' }} + shell: bash + run: | + echo "DATACITE_DEV_LOGIN=${{ secrets.DATACITE_DEV_EMBER_LOGIN }}" >> "$GITHUB_ENV" + echo "DATACITE_DEV_PASSWORD=${{ secrets.DATACITE_DEV_EMBER_PASSWORD }}" >> "$GITHUB_ENV" + - name: Run all tests env: - DATACITE_DEV_PASSWORD: ${{ secrets.DATACITE_DEV_PASSWORD }} NO_ET: 1 run: tox -e py -- -s --cov-report=xml diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index 5265fccf..80b5aad3 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -36,7 +36,7 @@ def datacite_post(datacite: dict, doi: str) -> None: "https://api.test.datacite.org/dois", json=datacite, headers={"Content-Type": "application/vnd.api+json"}, - auth=("DARTLIB.DANDI", os.environ["DATACITE_DEV_PASSWORD"]), + auth=(os.environ["DATACITE_DEV_LOGIN"], os.environ["DATACITE_DEV_PASSWORD"]), ) rp.raise_for_status() @@ -52,7 +52,7 @@ def _clean_doi(doi: str) -> None: """Remove doi. Status code is ignored""" requests.delete( f"https://api.test.datacite.org/dois/{doi}", - auth=("DARTLIB.DANDI", os.environ["DATACITE_DEV_PASSWORD"]), + auth=(os.environ["DATACITE_DEV_LOGIN"], os.environ["DATACITE_DEV_PASSWORD"]), ) diff --git a/tox.ini b/tox.ini index 6e86fd36..af9e7536 100644 --- a/tox.ini +++ b/tox.ini @@ -6,6 +6,7 @@ isolated_build = True extras = test passenv = DANDI_* + DATACITE_DEV_LOGIN DATACITE_DEV_PASSWORD NO_ET commands = From 9ee60bda73fdb77427f93d5b20fe5eb772a2684c Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 27 May 2025 23:37:48 -0700 Subject: [PATCH 11/80] rf: set default shell to bash in `test.yml` --- .github/workflows/test.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4734ae74..3d8ae633 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,6 +9,9 @@ on: jobs: test: runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash strategy: fail-fast: false matrix: @@ -51,25 +54,21 @@ jobs: # Set only if matrix.instance_name is defined - name: Set DANDI_INSTANCE_NAME if: ${{ matrix.instance_name }} - shell: bash run: echo "DANDI_INSTANCE_NAME=${{ matrix.instance_name }}" >> "$GITHUB_ENV" # Set only if matrix.datacite_doi_id is defined - name: Set DANDI_DATACITE_DOI_ID if: ${{ matrix.datacite_doi_id }} - shell: bash run: echo "DANDI_DATACITE_DOI_ID=${{ matrix.datacite_doi_id }}" >> "$GITHUB_ENV" - name: Set DANDI DataCite credentials if: ${{ matrix.vendored_env == 'dandi' }} - shell: bash run: | echo "DATACITE_DEV_LOGIN=${{ secrets.DATACITE_DEV_DANDI_LOGIN }}" >> "$GITHUB_ENV" echo "DATACITE_DEV_PASSWORD=${{ secrets.DATACITE_DEV_DANDI_PASSWORD }}" >> "$GITHUB_ENV" - name: Set EMBER DataCite credentials if: ${{ matrix.vendored_env == 'ember-dandi' }} - shell: bash run: | echo "DATACITE_DEV_LOGIN=${{ secrets.DATACITE_DEV_EMBER_LOGIN }}" >> "$GITHUB_ENV" echo "DATACITE_DEV_PASSWORD=${{ secrets.DATACITE_DEV_EMBER_PASSWORD }}" >> "$GITHUB_ENV" From 01293969a7b98310c3f8a375a4456dc7644801e0 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 28 May 2025 00:46:00 -0700 Subject: [PATCH 12/80] test: skip tests that depends on the setting of `DOI_PREFIX` conditionally --- dandischema/datacite/tests/test_datacite.py | 12 ++++++++++++ dandischema/tests/test_models.py | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index 80b5aad3..dda9d455 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -110,10 +110,13 @@ def metadata_basic() -> Dict[str, Any]: @pytest.mark.skipif( not os.getenv("DATACITE_DEV_PASSWORD"), reason="no datacite password available" ) +@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") @pytest.mark.parametrize("dandi_id", ["000004", "000008"]) def test_datacite(dandi_id: str, schema: Any) -> None: """checking to_datacite for a specific datasets""" + assert DOI_PREFIX is not None + # reading metadata taken from exemplary dandisets and saved in json files with (DANDISET_METADATA_DIR / f"meta_{dandi_id}.json").open() as f: meta_js = json.load(f) @@ -368,6 +371,7 @@ def test_datacite(dandi_id: str, schema: Any) -> None: @pytest.mark.skipif( not os.getenv("DATACITE_DEV_PASSWORD"), reason="no datacite password available" ) +@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") def test_dandimeta_datacite( schema: Any, metadata_basic: Dict[str, Any], @@ -379,6 +383,8 @@ def test_dandimeta_datacite( posting datacite object and checking the status code """ + assert DOI_PREFIX is not None + dandi_id = metadata_basic["identifier"] dandi_id_noprefix = dandi_id.split(":")[1] @@ -413,7 +419,10 @@ def test_dandimeta_datacite( datacite_post(datacite, metadata_basic["doi"]) +@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: + assert DOI_PREFIX is not None + dandi_id = metadata_basic["identifier"] dandi_id_noprefix = dandi_id.split(":")[1] version = metadata_basic["version"] @@ -540,6 +549,7 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: @pytest.mark.skipif( not os.getenv("DATACITE_DEV_PASSWORD"), reason="no datacite password available" ) +@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") def test_datacite_related_res_url( metadata_basic: Dict[str, Any], related_res_url: Dict[str, Any], @@ -549,6 +559,8 @@ def test_datacite_related_res_url( checking if urls provided in the relatedResource.identifier could be translated to DOI for some websites: e.g. bioarxiv.org, doi.org """ + assert DOI_PREFIX is not None + dandi_id = metadata_basic["identifier"] dandi_id_noprefix = dandi_id.split(":")[1] diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 99433850..412b760c 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -367,8 +367,12 @@ def test_autogenerated_titles() -> None: assert schema["$defs"]["PropertyValue"]["title"] == "Property Value" +@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") def test_dandimeta_1() -> None: """checking basic metadata for publishing""" + + assert DOI_PREFIX is not None + # meta data without doi, datePublished and publishedBy meta_dict: Dict[str, Any] = { "identifier": f"{INSTANCE_NAME}:999999", From 312d45dceb5c46c0893c8f740035b4ced0331ae9 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 29 May 2025 17:54:26 -0700 Subject: [PATCH 13/80] fix: add end of string anchor to `DANDI_PUBID_PATTERN ` It must be an oversight that the end of string is missing Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- dandischema/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dandischema/models.py b/dandischema/models.py index 63e9f103..af4b9e3d 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -69,7 +69,7 @@ if DATACITE_DOI_ID_PATTERN is not None else None ) -DANDI_PUBID_PATTERN = rf"^{ID_PATTERN}:{VERSION_PATTERN}" +DANDI_PUBID_PATTERN = rf"^{ID_PATTERN}:{VERSION_PATTERN}$" DANDI_NSKEY = "dandi" # Namespace for DANDI ontology PUBLISHED_VERSION_URL_PATTERN = ( From 917da9d70b4ed6686a5c44638600236fad8b9171 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 29 May 2025 18:44:50 -0700 Subject: [PATCH 14/80] test: update skip condition on datacite related tests Make those tests skip if datacite login is not provided in an environment var either --- dandischema/datacite/tests/test_datacite.py | 9 +++------ dandischema/tests/utils.py | 6 ++++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index dda9d455..e65badcb 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -19,6 +19,7 @@ DOI_PREFIX, INSTANCE_NAME, _basic_publishmeta, + skipif_no_datacite_auth, skipif_no_network, ) @@ -107,9 +108,7 @@ def metadata_basic() -> Dict[str, Any]: @skipif_no_network -@pytest.mark.skipif( - not os.getenv("DATACITE_DEV_PASSWORD"), reason="no datacite password available" -) +@skipif_no_datacite_auth @pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") @pytest.mark.parametrize("dandi_id", ["000004", "000008"]) def test_datacite(dandi_id: str, schema: Any) -> None: @@ -368,9 +367,7 @@ def test_datacite(dandi_id: str, schema: Any) -> None: ), ], ) -@pytest.mark.skipif( - not os.getenv("DATACITE_DEV_PASSWORD"), reason="no datacite password available" -) +@skipif_no_datacite_auth @pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") def test_dandimeta_datacite( schema: Any, diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index a8cd1816..a1d4218e 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -23,6 +23,12 @@ DOI_PREFIX = f"10.{DATACITE_DOI_ID}" if DATACITE_DOI_ID is not None else None +skipif_no_datacite_auth = pytest.mark.skipif( + os.getenv("DATACITE_DEV_LOGIN") is None + or os.getenv("DATACITE_DEV_PASSWORD") is None, + reason="no datacite login or password set in environment variables", +) + skipif_no_network = pytest.mark.skipif( bool(os.environ.get("DANDI_TESTS_NONETWORK")), reason="no network settings" ) From 0a0d94d676d8b11b29471adbce77573f50e6fc6f Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 29 May 2025 18:49:40 -0700 Subject: [PATCH 15/80] test: remove datacite auth info requirement for `test_datacite_related_res_url()` This test function actually doesn't need to access the datacite service --- dandischema/datacite/tests/test_datacite.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index e65badcb..548731ee 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -543,9 +543,6 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: ), ], ) -@pytest.mark.skipif( - not os.getenv("DATACITE_DEV_PASSWORD"), reason="no datacite password available" -) @pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") def test_datacite_related_res_url( metadata_basic: Dict[str, Any], From 794d9eb279da6464b336bccda485c4131065ef77 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 29 May 2025 19:01:46 -0700 Subject: [PATCH 16/80] rf: define and use `skipif_no_doi_prefix` decorator This helps reduce code duplication --- dandischema/datacite/tests/test_datacite.py | 9 +++++---- dandischema/tests/test_models.py | 10 ++++++++-- dandischema/tests/utils.py | 4 ++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index 548731ee..ef69492c 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -20,6 +20,7 @@ INSTANCE_NAME, _basic_publishmeta, skipif_no_datacite_auth, + skipif_no_doi_prefix, skipif_no_network, ) @@ -109,7 +110,7 @@ def metadata_basic() -> Dict[str, Any]: @skipif_no_network @skipif_no_datacite_auth -@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") +@skipif_no_doi_prefix @pytest.mark.parametrize("dandi_id", ["000004", "000008"]) def test_datacite(dandi_id: str, schema: Any) -> None: """checking to_datacite for a specific datasets""" @@ -368,7 +369,7 @@ def test_datacite(dandi_id: str, schema: Any) -> None: ], ) @skipif_no_datacite_auth -@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") +@skipif_no_doi_prefix def test_dandimeta_datacite( schema: Any, metadata_basic: Dict[str, Any], @@ -416,7 +417,7 @@ def test_dandimeta_datacite( datacite_post(datacite, metadata_basic["doi"]) -@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") +@skipif_no_doi_prefix def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: assert DOI_PREFIX is not None @@ -543,7 +544,7 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: ), ], ) -@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") +@skipif_no_doi_prefix def test_datacite_related_res_url( metadata_basic: Dict[str, Any], related_res_url: Dict[str, Any], diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 412b760c..9a48aade 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -7,7 +7,13 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError import pytest -from .utils import DATACITE_DOI_ID, DOI_PREFIX, INSTANCE_NAME, _basic_publishmeta +from .utils import ( + DATACITE_DOI_ID, + DOI_PREFIX, + INSTANCE_NAME, + _basic_publishmeta, + skipif_no_doi_prefix, +) from .. import models from ..models import ( DANDI_INSTANCE_URL_PATTERN, @@ -367,7 +373,7 @@ def test_autogenerated_titles() -> None: assert schema["$defs"]["PropertyValue"]["title"] == "Property Value" -@pytest.mark.skipif(DOI_PREFIX is None, reason="DOI_PREFIX is not set") +@skipif_no_doi_prefix def test_dandimeta_1() -> None: """checking basic metadata for publishing""" diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index a1d4218e..fbbc8393 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -29,6 +29,10 @@ reason="no datacite login or password set in environment variables", ) +skipif_no_doi_prefix = pytest.mark.skipif( + DOI_PREFIX is None, reason="DOI_PREFIX is not set" +) + skipif_no_network = pytest.mark.skipif( bool(os.environ.get("DANDI_TESTS_NONETWORK")), reason="no network settings" ) From 69a21f9c0d2705b60d8f983d8b3d5231d6918aaa Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 29 May 2025 19:27:53 -0700 Subject: [PATCH 17/80] rf: rename support function for test `_basic_publishmeta()` in `tests/utils.py` is used across different modules and shouldn't be considered a private function. This commit renames `_basic_publishmeta()` in `tests/utils.py` to `basic_publishmeta()` --- dandischema/datacite/tests/test_datacite.py | 10 +++++----- dandischema/tests/test_models.py | 4 ++-- dandischema/tests/utils.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index ef69492c..0800845f 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -18,7 +18,7 @@ DANDISET_METADATA_DIR, DOI_PREFIX, INSTANCE_NAME, - _basic_publishmeta, + basic_publishmeta, skipif_no_datacite_auth, skipif_no_doi_prefix, skipif_no_network, @@ -128,7 +128,7 @@ def test_datacite(dandi_id: str, schema: Any) -> None: # updating with basic fields required for PublishDandiset meta_js.update( - _basic_publishmeta( + basic_publishmeta( INSTANCE_NAME, dandi_id.replace("000", str(random.randrange(100, 999))), prefix=DOI_PREFIX, @@ -387,7 +387,7 @@ def test_dandimeta_datacite( dandi_id_noprefix = dandi_id.split(":")[1] metadata_basic.update( - _basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) + basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) ) metadata_basic.update(additional_meta) @@ -425,7 +425,7 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: dandi_id_noprefix = dandi_id.split(":")[1] version = metadata_basic["version"] metadata_basic.update( - _basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) + basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) ) # creating and validating datacite objects @@ -560,7 +560,7 @@ def test_datacite_related_res_url( dandi_id_noprefix = dandi_id.split(":")[1] metadata_basic.update( - _basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) + basic_publishmeta(INSTANCE_NAME, dandi_id=dandi_id_noprefix, prefix=DOI_PREFIX) ) metadata_basic["relatedResource"] = [related_res_url] diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 9a48aade..c743f62b 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -11,7 +11,7 @@ DATACITE_DOI_ID, DOI_PREFIX, INSTANCE_NAME, - _basic_publishmeta, + basic_publishmeta, skipif_no_doi_prefix, ) from .. import models @@ -472,7 +472,7 @@ def test_dandimeta_1() -> None: meta_dict["id"] = f"{INSTANCE_NAME}:999999/0.0.0" meta_dict["version"] = "0.0.0" meta_dict.update( - _basic_publishmeta(INSTANCE_NAME, dandi_id="999999", prefix=DOI_PREFIX) + basic_publishmeta(INSTANCE_NAME, dandi_id="999999", prefix=DOI_PREFIX) ) meta_dict["assetsSummary"].update(**{"numberOfBytes": 1, "numberOfFiles": 1}) PublishedDandiset(**meta_dict) diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index fbbc8393..b69040d2 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -43,7 +43,7 @@ ) -def _basic_publishmeta( +def basic_publishmeta( instance_name: str, dandi_id: str, version: str = "0.0.0", prefix: str = "10.80507" ) -> Dict[str, Any]: """Return extra metadata required by PublishedDandiset From fe5aae170319576fab9bdbc6c7168c74331c4474 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 29 May 2025 23:28:32 -0700 Subject: [PATCH 18/80] test: condition some tests on existence of test metadata Instead of limiting all tests to be run only with a limited set of instance name, make some tests only run on existence of test dandiset metadata with a particular instance name --- dandischema/datacite/tests/test_datacite.py | 2 ++ dandischema/tests/test_metadata.py | 4 ++++ dandischema/tests/utils.py | 13 ++++++------- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index 0800845f..00ead807 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -22,6 +22,7 @@ skipif_no_datacite_auth, skipif_no_doi_prefix, skipif_no_network, + skipif_no_test_dandiset_metadata_dir, ) from .. import _get_datacite_schema, to_datacite @@ -111,6 +112,7 @@ def metadata_basic() -> Dict[str, Any]: @skipif_no_network @skipif_no_datacite_auth @skipif_no_doi_prefix +@skipif_no_test_dandiset_metadata_dir @pytest.mark.parametrize("dandi_id", ["000004", "000008"]) def test_datacite(dandi_id: str, schema: Any) -> None: """checking to_datacite for a specific datasets""" diff --git a/dandischema/tests/test_metadata.py b/dandischema/tests/test_metadata.py index 310978c6..f5673a89 100644 --- a/dandischema/tests/test_metadata.py +++ b/dandischema/tests/test_metadata.py @@ -19,6 +19,7 @@ METADATA_DIR, skipif_instance_name_not_dandi, skipif_no_network, + skipif_no_test_dandiset_metadata_dir, ) from ..consts import DANDI_SCHEMA_VERSION from ..exceptions import JsonschemaValidationError, PydanticValidationError @@ -50,6 +51,7 @@ def test_asset(schema_dir: Path) -> None: validate(data_as_dict) +@skipif_no_test_dandiset_metadata_dir def test_dandiset(schema_dir: Path) -> None: with (DANDISET_METADATA_DIR / "meta_000004.json").open() as fp: data_as_dict = json.load(fp) @@ -64,6 +66,7 @@ def test_id(schema_dir: Path) -> None: @skipif_no_network +@skipif_no_test_dandiset_metadata_dir def test_pydantic_validation(schema_dir: Path) -> None: with (DANDISET_METADATA_DIR / "meta_000004.json").open() as fp: data_as_dict = json.load(fp) @@ -436,6 +439,7 @@ def test_migrate_value_errors_lesser_target(monkeypatch: pytest.MonkeyPatch) -> @skipif_no_network +@skipif_no_test_dandiset_metadata_dir # Skip for instance name not being DANDI because JSON schema version at `0.4.4`, the # schema version of the metadata in `meta_000004old.json`, is hardcoded to only for # an DANDI instance named `DANDI` diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index b69040d2..b5efb7ff 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -7,13 +7,6 @@ from dandischema.conf import CONFIG -if CONFIG.instance_name not in ["DANDI", "DANDI-ADHOC", "EMBER-DANDI"]: - # This should never happen - raise NotImplementedError( - f"There is no testing `Dandiset` metadata for a DANDI" - f"instance named {CONFIG.instance_name}" - ) - INSTANCE_NAME = CONFIG.instance_name DATACITE_DOI_ID = CONFIG.datacite_doi_id @@ -37,6 +30,12 @@ bool(os.environ.get("DANDI_TESTS_NONETWORK")), reason="no network settings" ) +skipif_no_test_dandiset_metadata_dir = pytest.mark.skipif( + not DANDISET_METADATA_DIR.is_dir(), + reason=f"No test Dandiset metadata directory for a DANDI instance named " + f"{INSTANCE_NAME} exists", +) + skipif_instance_name_not_dandi = pytest.mark.skipif( INSTANCE_NAME != "DANDI", reason='The DANDI instance\'s name is not "DANDI"' From 27a5b8f20c2c5646c79f9b91ffafc86540f984b3 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 1 Jun 2025 19:56:01 -0700 Subject: [PATCH 19/80] style: simplify string expression Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- dandischema/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dandischema/metadata.py b/dandischema/metadata.py index e63b44e3..ebf68e41 100644 --- a/dandischema/metadata.py +++ b/dandischema/metadata.py @@ -91,7 +91,7 @@ def generate_context() -> dict: "@id": cast(str, field.json_schema_extra["nskey"]) + ":" + name } else: - fields[name] = {"@id": f"{models.DANDI_NSKEY}:" + name} + fields[name] = {"@id": f"{models.DANDI_NSKEY}:{name}"} # The annotation without the top-level optional stripped_annotation = strip_top_level_optional(field.annotation) From ea54db7b6219fd87f0b704a6c425abacc6b86efc Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 1 Jun 2025 21:02:45 -0700 Subject: [PATCH 20/80] test: vendorize CI environment for dandi-cli tests Vendorize the CI environment for testing integration with dandi-cli to only the "DANDI" vendor. This solution may be temporary since the dandi-cli and its tests can only handle the "DANDI" vendor. --- .github/workflows/test-dandi-cli.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test-dandi-cli.yml b/.github/workflows/test-dandi-cli.yml index a667ddb5..301221cd 100644 --- a/.github/workflows/test-dandi-cli.yml +++ b/.github/workflows/test-dandi-cli.yml @@ -99,5 +99,11 @@ jobs: . working-directory: dandischema + - name: Set DANDI_INSTANCE_NAME + run: echo "DANDI_INSTANCE_NAME=DANDI" >> "$GITHUB_ENV" + + - name: Set DANDI_DATACITE_DOI_ID + run: echo "DANDI_DATACITE_DOI_ID=80507" >> "$GITHUB_ENV" + - name: Run dandi-cli tests run: python -m pytest -s -v --pyargs dandi From 01d86aa7d7f13bb4667db06270cf04eba8ea53c9 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 2 Jun 2025 18:28:28 -0700 Subject: [PATCH 21/80] rf: rename `conf.CONFIG` to `conf.INSTANCE_CONFIG` The new name is more informative about variable's nature --- dandischema/conf.py | 8 +++++++- dandischema/models.py | 6 +++--- dandischema/tests/utils.py | 6 +++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index 6ebc19ae..cf9332d7 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -59,4 +59,10 @@ def datacite_doi_id_pattern(self) -> Optional[str]: return self.datacite_doi_id -CONFIG = Config() +INSTANCE_CONFIG = Config() +""" +Configuration of the DANDI instance + +This configuration holds the information used to customize the DANDI schema to a +specific vendor +""" diff --git a/dandischema/models.py b/dandischema/models.py index af4b9e3d..c0d92463 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -36,7 +36,7 @@ from pydantic_core import CoreSchema from zarr_checksum.checksum import InvalidZarrChecksum, ZarrDirectoryDigest -from dandischema.conf import CONFIG +from dandischema.conf import INSTANCE_CONFIG from .consts import DANDI_SCHEMA_VERSION from .digests.dandietag import DandiETag @@ -44,8 +44,8 @@ from .utils import name2title # Load needed configurations into constants -ID_PATTERN = CONFIG.id_pattern -DATACITE_DOI_ID_PATTERN = CONFIG.datacite_doi_id_pattern +ID_PATTERN = INSTANCE_CONFIG.id_pattern +DATACITE_DOI_ID_PATTERN = INSTANCE_CONFIG.datacite_doi_id_pattern # Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. DANDI_INSTANCE_URL: Optional[str] diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index b5efb7ff..aea77c73 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -5,10 +5,10 @@ import pytest -from dandischema.conf import CONFIG +from dandischema.conf import INSTANCE_CONFIG -INSTANCE_NAME = CONFIG.instance_name -DATACITE_DOI_ID = CONFIG.datacite_doi_id +INSTANCE_NAME = INSTANCE_CONFIG.instance_name +DATACITE_DOI_ID = INSTANCE_CONFIG.datacite_doi_id METADATA_DIR = Path(__file__).with_name("data") / "metadata" DANDISET_METADATA_DIR = METADATA_DIR / INSTANCE_NAME From b2cb8ad90d0c8aa758c0c2f40ba0a513db6d3acb Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 9 Jun 2025 13:54:00 -0700 Subject: [PATCH 22/80] feat: let `Config` have `doi_prefix` field instead of `datacite_doi_id` field A DOI prefix a widely known entity --- .github/workflows/test-dandi-cli.yml | 4 ++-- .github/workflows/test.yml | 12 +++++----- dandischema/conf.py | 18 +++++++-------- dandischema/models.py | 6 ++--- dandischema/tests/conftest.py | 4 ++-- dandischema/tests/test_metadata.py | 8 +++---- dandischema/tests/test_models.py | 33 +++++++++------------------- dandischema/tests/utils.py | 4 +--- 8 files changed, 36 insertions(+), 53 deletions(-) diff --git a/.github/workflows/test-dandi-cli.yml b/.github/workflows/test-dandi-cli.yml index 301221cd..a720fe67 100644 --- a/.github/workflows/test-dandi-cli.yml +++ b/.github/workflows/test-dandi-cli.yml @@ -102,8 +102,8 @@ jobs: - name: Set DANDI_INSTANCE_NAME run: echo "DANDI_INSTANCE_NAME=DANDI" >> "$GITHUB_ENV" - - name: Set DANDI_DATACITE_DOI_ID - run: echo "DANDI_DATACITE_DOI_ID=80507" >> "$GITHUB_ENV" + - name: Set DANDI_DOI_PREFIX + run: echo "DANDI_DOI_PREFIX=10.80507" >> "$GITHUB_ENV" - name: Run dandi-cli tests run: python -m pytest -s -v --pyargs dandi diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3d8ae633..31c07d1a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,12 +23,12 @@ jobs: python: '3.9' vendored_env: dandi instance_name: DANDI - datacite_doi_id: '80507' + doi_prefix: '10.80507' - os: ubuntu-latest python: '3.9' vendored_env: ember-dandi instance_name: EMBER-DANDI - datacite_doi_id: '82754' + doi_prefix: '10.82754' - os: ubuntu-latest python: '3.9' vendored_env: ember-dandi-no-doi @@ -56,10 +56,10 @@ jobs: if: ${{ matrix.instance_name }} run: echo "DANDI_INSTANCE_NAME=${{ matrix.instance_name }}" >> "$GITHUB_ENV" - # Set only if matrix.datacite_doi_id is defined - - name: Set DANDI_DATACITE_DOI_ID - if: ${{ matrix.datacite_doi_id }} - run: echo "DANDI_DATACITE_DOI_ID=${{ matrix.datacite_doi_id }}" >> "$GITHUB_ENV" + # Set only if matrix.doi_prefix is defined + - name: Set DANDI_DOI_PREFIX + if: ${{ matrix.doi_prefix }} + run: echo "DANDI_DOI_PREFIX=${{ matrix.doi_prefix }}" >> "$GITHUB_ENV" - name: Set DANDI DataCite credentials if: ${{ matrix.vendored_env == 'dandi' }} diff --git a/dandischema/conf.py b/dandischema/conf.py index cf9332d7..13167a68 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -2,13 +2,14 @@ from __future__ import annotations +import re from typing import Annotated, Optional from pydantic import StringConstraints from pydantic_settings import BaseSettings, SettingsConfigDict _UNVENDORED_ID_PATTERN = r"[A-Z][-A-Z]*" -_UNVENDORED_DATACITE_DOI_ID_PATTERN = r"\d{4,}" +_UNVENDORED_DOI_PREFIX_PATTERN = r"10\.\d{4,}" class Config(BaseSettings): @@ -31,16 +32,13 @@ class Config(BaseSettings): ] = "DANDI-ADHOC" """Name of the DANDI instance""" - datacite_doi_id: Optional[ + doi_prefix: Optional[ Annotated[ - str, StringConstraints(pattern=rf"^{_UNVENDORED_DATACITE_DOI_ID_PATTERN}$") + str, StringConstraints(pattern=rf"^{_UNVENDORED_DOI_PREFIX_PATTERN}$") ] ] = None """ - The registrant code of the DOI prefix at DataCite - - The number sequence that follows "10." within the DOI prefix as documented - at https://support.datacite.org/docs/prefixes. + The DOI prefix at DataCite """ @property @@ -54,9 +52,9 @@ def id_pattern(self) -> str: return _UNVENDORED_ID_PATTERN @property - def datacite_doi_id_pattern(self) -> Optional[str]: - """The registrant code pattern of the DOI prefix at DataCite""" - return self.datacite_doi_id + def doi_prefix_pattern(self) -> Optional[str]: + """The pattern that a DOI prefix of a dandiset must conform to""" + return re.escape(self.doi_prefix) if self.doi_prefix is not None else None INSTANCE_CONFIG = Config() diff --git a/dandischema/models.py b/dandischema/models.py index c0d92463..4e38dd6e 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -45,7 +45,7 @@ # Load needed configurations into constants ID_PATTERN = INSTANCE_CONFIG.id_pattern -DATACITE_DOI_ID_PATTERN = INSTANCE_CONFIG.datacite_doi_id_pattern +DOI_PREFIX_PATTERN = INSTANCE_CONFIG.doi_prefix_pattern # Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. DANDI_INSTANCE_URL: Optional[str] @@ -65,8 +65,8 @@ ASSET_UUID_PATTERN = r"^dandiasset:" + UUID_PATTERN VERSION_PATTERN = r"\d{6}/\d+\.\d+\.\d+" DANDI_DOI_PATTERN = ( - (rf"^10\.{DATACITE_DOI_ID_PATTERN}/{ID_PATTERN.lower()}\.{VERSION_PATTERN}$") - if DATACITE_DOI_ID_PATTERN is not None + rf"^{DOI_PREFIX_PATTERN}/{ID_PATTERN.lower()}\.{VERSION_PATTERN}$" + if DOI_PREFIX_PATTERN is not None else None ) DANDI_PUBID_PATTERN = rf"^{ID_PATTERN}:{VERSION_PATTERN}$" diff --git a/dandischema/tests/conftest.py b/dandischema/tests/conftest.py index fcd8aac0..3449cd63 100644 --- a/dandischema/tests/conftest.py +++ b/dandischema/tests/conftest.py @@ -61,11 +61,11 @@ def clear_dandischema_modules_and_set_env_vars( {}, { "instance_name": "DANDI", - "datacite_doi_id": "48324", + "doi_prefix": "10.48324", }, { "instance_name": "EMBER-DANDI", - "datacite_doi_id": "60533", + "doi_prefix": "10.60533", } ], indirect=True, diff --git a/dandischema/tests/test_metadata.py b/dandischema/tests/test_metadata.py index f5673a89..8aca6abe 100644 --- a/dandischema/tests/test_metadata.py +++ b/dandischema/tests/test_metadata.py @@ -14,7 +14,7 @@ from .utils import ( DANDISET_METADATA_DIR, - DATACITE_DOI_ID, + DOI_PREFIX, INSTANCE_NAME, METADATA_DIR, skipif_instance_name_not_dandi, @@ -152,7 +152,7 @@ def test_mismatch_key(schema_version: str, schema_key: str) -> None: "url", "version", ] - if DATACITE_DOI_ID is not None or e != "doi" + if DOI_PREFIX is not None or e != "doi" }, ), ( @@ -179,7 +179,7 @@ def test_mismatch_key(schema_version: str, schema_key: str) -> None: "url", "version", ] - if DATACITE_DOI_ID is not None or e != "doi" + if DOI_PREFIX is not None or e != "doi" }, ), ( @@ -212,7 +212,7 @@ def test_mismatch_key(schema_version: str, schema_key: str) -> None: "url", "version", ] - if DATACITE_DOI_ID is not None or e != "doi" + if DOI_PREFIX is not None or e != "doi" }, ), ( diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index c743f62b..197d10c9 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -7,13 +7,7 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError import pytest -from .utils import ( - DATACITE_DOI_ID, - DOI_PREFIX, - INSTANCE_NAME, - basic_publishmeta, - skipif_no_doi_prefix, -) +from .utils import DOI_PREFIX, INSTANCE_NAME, basic_publishmeta, skipif_no_doi_prefix from .. import models from ..models import ( DANDI_INSTANCE_URL_PATTERN, @@ -435,15 +429,9 @@ def test_dandimeta_1() -> None: msg="Value error, " "A Dandiset containing no files or zero bytes is not publishable", ), + ("doi",): ErrDetail(type="missing", msg=None), } - # Handle the case where `PublishedDandiset` requires the `doi` field - if DATACITE_DOI_ID is not None: - expected_errors[("doi",)] = ErrDetail( - type="missing", - msg=None, - ) - assert len(exc.value.errors()) == len(expected_errors) for err in exc.value.errors(): err_loc = err["loc"] @@ -463,7 +451,6 @@ def test_dandimeta_1() -> None: "url", "id", ] - if DATACITE_DOI_ID is not None or e != "doi" } # after adding basic meta required to publish: doi, datePublished, publishedBy, assetsSummary, @@ -796,7 +783,7 @@ def _get_field_pattern( "clear_dandischema_modules_and_set_env_vars", # "exp" means "expected" in the following names "exp_id_pattern", - "exp_datacite_doi_id_pattern", + "exp_doi_prefix_pattern", "valid_vendored_fields", "invalid_vendored_fields", ), @@ -821,10 +808,10 @@ def _get_field_pattern( ( { "instance_name": "DANDI", - "datacite_doi_id": "48324", + "doi_prefix": "10.48324", }, "DANDI", - "48324", + r"10\.48324", { "dandiset_id": "DANDI:001425/draft", "dandiset_identifier": "DANDI:001425", @@ -877,10 +864,10 @@ def _get_field_pattern( ( { "instance_name": "EMBER-DANDI", - "datacite_doi_id": "60533", + "doi_prefix": "10.60533", }, "EMBER-DANDI", - "60533", + r"10\.60533", { "dandiset_id": "EMBER-DANDI:000005/draft", "dandiset_identifier": "EMBER-DANDI:000005", @@ -901,7 +888,7 @@ def _get_field_pattern( def test_vendorization( clear_dandischema_modules_and_set_env_vars: None, exp_id_pattern: str, - exp_datacite_doi_id_pattern: Optional[str], + exp_doi_prefix_pattern: Optional[str], # Fields that are valid for the vendorization valid_vendored_fields: dict[str, str], # Fields that are invalid for the vendorization @@ -913,7 +900,7 @@ def test_vendorization( import dandischema.models as models_ assert models_.ID_PATTERN == exp_id_pattern - assert models_.DATACITE_DOI_ID_PATTERN == exp_datacite_doi_id_pattern + assert models_.DOI_PREFIX_PATTERN == exp_doi_prefix_pattern class VendoredFieldModel(BaseModel): """ @@ -927,7 +914,7 @@ class VendoredFieldModel(BaseModel): published_dandiset_id: str = Field( pattern=_get_field_pattern("id", models_.PublishedDandiset) ) - if exp_datacite_doi_id_pattern is not None: + if exp_doi_prefix_pattern is not None: published_dandiset_doi: str = Field( pattern=_get_field_pattern("doi", models_.PublishedDandiset) ) diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index aea77c73..66501cf2 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -8,13 +8,11 @@ from dandischema.conf import INSTANCE_CONFIG INSTANCE_NAME = INSTANCE_CONFIG.instance_name -DATACITE_DOI_ID = INSTANCE_CONFIG.datacite_doi_id +DOI_PREFIX = INSTANCE_CONFIG.doi_prefix METADATA_DIR = Path(__file__).with_name("data") / "metadata" DANDISET_METADATA_DIR = METADATA_DIR / INSTANCE_NAME -DOI_PREFIX = f"10.{DATACITE_DOI_ID}" if DATACITE_DOI_ID is not None else None - skipif_no_datacite_auth = pytest.mark.skipif( os.getenv("DATACITE_DEV_LOGIN") is None From 98aee1d75642276d69d4b6a4aa3f44f564a9d9b4 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 2 Jun 2025 23:18:27 -0700 Subject: [PATCH 23/80] feat: define mechanism to reset instance config In particular, the resetting is done through func arguments, not env vars. --- dandischema/conf.py | 79 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index 13167a68..f562748b 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -2,15 +2,21 @@ from __future__ import annotations +import logging import re -from typing import Annotated, Optional +from typing import Annotated, Any, Optional from pydantic import StringConstraints from pydantic_settings import BaseSettings, SettingsConfigDict +_MODELS_MODULE_NAME = "dandischema.models" +"""The full import name of the module containing the DANDI Pydantic models""" + _UNVENDORED_ID_PATTERN = r"[A-Z][-A-Z]*" _UNVENDORED_DOI_PREFIX_PATTERN = r"10\.\d{4,}" +logger = logging.getLogger(__name__) + class Config(BaseSettings): """ @@ -64,3 +70,74 @@ def doi_prefix_pattern(self) -> Optional[str]: This configuration holds the information used to customize the DANDI schema to a specific vendor """ + + +_instance_config = Config() # Initial value is set by env vars alone +""" +Configuration of the DANDI instance + +This configuration holds the information used to customize the DANDI schema to a +specific vendor, but it should not be accessed directly. Use `get_instance_config()` +to obtain its value and `set_instance_config()` to set its value. +""" + + +def get_instance_config() -> Config: + """ + Get the configuration of the DANDI instance + + This configuration holds the information used to customize the DANDI schema to a + specific vendor. + + Returns + ------- + Config + The configuration of the DANDI instance + """ + return _instance_config.model_copy(deep=True) + + +def set_instance_config(**kwargs: Any) -> None: + """ + Set the DANDI instance configuration returned by `get_instance_config()` + + This setting is done by creating a new instance of `Config` with the keyword + arguments passed to this function and overwriting the existing one. + + Parameters + ---------- + **kwargs + Keyword arguments to pass to the `Config` constructor + + Note + ---- + Use this function to override the initial configuration set by the environment + variables. + + This function should be called before importing `dandischema.models` or the + new configuration will not have any affect in the models defined in + `dandischema.models`. + + """ + import sys + + global _instance_config + + new_config = Config(**kwargs) + + if _MODELS_MODULE_NAME in sys.modules: + if new_config != _instance_config: + logger.warning( + f"`{_MODELS_MODULE_NAME}` is already imported. Resetting the DANDI " + f"instance configuration to a different value will not have any affect " + f"in the models defined in `{_MODELS_MODULE_NAME}`." + ) + else: + logger.debug( + f"`{_MODELS_MODULE_NAME}` is already imported. Attempt to " + f"reset the DANDI instance configuration to the same value by " + f"keyword argument has been ignored." + ) + return + + _instance_config = new_config From c9b53e6e83b8fc227e9db6e34e9c349aac6ea769 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 3 Jun 2025 11:47:43 -0700 Subject: [PATCH 24/80] feat: remove the importing of `dandischema.metadata` in `dandischema` This will change the API a bit but allow `dandischema.models` to be imported later, particular after potential runs of `reset_instance_config()`. --- dandischema/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dandischema/__init__.py b/dandischema/__init__.py index f2cce782..c2eb4e56 100644 --- a/dandischema/__init__.py +++ b/dandischema/__init__.py @@ -1,4 +1,3 @@ -__all__ = ["__version__", "migrate", "validate"] +__all__ = ["__version__"] from ._version import __version__ -from .metadata import migrate, validate From 36c88bebe41a0f43f3f5dc2ccc67d17492a6e9f3 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 3 Jun 2025 12:37:11 -0700 Subject: [PATCH 25/80] feat: replace use of `conf.INSTANCE_CONFIG` with `get_instance_config()` --- dandischema/conf.py | 9 --------- dandischema/models.py | 7 ++++--- dandischema/tests/utils.py | 7 ++++--- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index f562748b..af148bd8 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -63,15 +63,6 @@ def doi_prefix_pattern(self) -> Optional[str]: return re.escape(self.doi_prefix) if self.doi_prefix is not None else None -INSTANCE_CONFIG = Config() -""" -Configuration of the DANDI instance - -This configuration holds the information used to customize the DANDI schema to a -specific vendor -""" - - _instance_config = Config() # Initial value is set by env vars alone """ Configuration of the DANDI instance diff --git a/dandischema/models.py b/dandischema/models.py index 4e38dd6e..7a85b21a 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -36,7 +36,7 @@ from pydantic_core import CoreSchema from zarr_checksum.checksum import InvalidZarrChecksum, ZarrDirectoryDigest -from dandischema.conf import INSTANCE_CONFIG +from dandischema.conf import get_instance_config from .consts import DANDI_SCHEMA_VERSION from .digests.dandietag import DandiETag @@ -44,8 +44,9 @@ from .utils import name2title # Load needed configurations into constants -ID_PATTERN = INSTANCE_CONFIG.id_pattern -DOI_PREFIX_PATTERN = INSTANCE_CONFIG.doi_prefix_pattern +_INSTANCE_CONFIG = get_instance_config() +ID_PATTERN = _INSTANCE_CONFIG.id_pattern +DOI_PREFIX_PATTERN = _INSTANCE_CONFIG.doi_prefix_pattern # Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. DANDI_INSTANCE_URL: Optional[str] diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index 66501cf2..22a6dd96 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -5,10 +5,11 @@ import pytest -from dandischema.conf import INSTANCE_CONFIG +from dandischema.conf import get_instance_config -INSTANCE_NAME = INSTANCE_CONFIG.instance_name -DOI_PREFIX = INSTANCE_CONFIG.doi_prefix +_INSTANCE_CONFIG = get_instance_config() +INSTANCE_NAME = _INSTANCE_CONFIG.instance_name +DOI_PREFIX = _INSTANCE_CONFIG.doi_prefix METADATA_DIR = Path(__file__).with_name("data") / "metadata" DANDISET_METADATA_DIR = METADATA_DIR / INSTANCE_NAME From 169449a9c624e20d5c36e3d612e7390f431c67dd Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 2 Jul 2025 23:13:26 -0700 Subject: [PATCH 26/80] test: adjust `skipif_no_datacite_auth` This commit adjusts `skipif_no_datacite_auth` so that tests that depend on `DATACITE_DEV_LOGIN` or `DATACITE_DEV_PASSWORD` will be skipped when a PR is sent from a fork. --- dandischema/tests/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index 66501cf2..6675d703 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -15,9 +15,9 @@ skipif_no_datacite_auth = pytest.mark.skipif( - os.getenv("DATACITE_DEV_LOGIN") is None - or os.getenv("DATACITE_DEV_PASSWORD") is None, - reason="no datacite login or password set in environment variables", + not os.getenv("DATACITE_DEV_LOGIN") + or not os.getenv("DATACITE_DEV_PASSWORD"), + reason="no non-empty datacite login and password provided", ) skipif_no_doi_prefix = pytest.mark.skipif( From 3b3ff1028e41e69e340af99d5f36c444250f61b0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 06:13:44 +0000 Subject: [PATCH 27/80] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dandischema/tests/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dandischema/tests/utils.py b/dandischema/tests/utils.py index 6675d703..4285010e 100644 --- a/dandischema/tests/utils.py +++ b/dandischema/tests/utils.py @@ -15,8 +15,7 @@ skipif_no_datacite_auth = pytest.mark.skipif( - not os.getenv("DATACITE_DEV_LOGIN") - or not os.getenv("DATACITE_DEV_PASSWORD"), + not os.getenv("DATACITE_DEV_LOGIN") or not os.getenv("DATACITE_DEV_PASSWORD"), reason="no non-empty datacite login and password provided", ) From a125b74d4e5922d58b909b1b7677a881c598363a Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 2 Jul 2025 23:55:10 -0700 Subject: [PATCH 28/80] test: add test for `get_instance_config` --- dandischema/tests/test_conf.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 dandischema/tests/test_conf.py diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py new file mode 100644 index 00000000..a1177493 --- /dev/null +++ b/dandischema/tests/test_conf.py @@ -0,0 +1,9 @@ +def test_get_instance_config() -> None: + from dandischema.conf import _instance_config, get_instance_config + + obtained_config = get_instance_config() + + assert obtained_config == _instance_config + assert ( + obtained_config is not _instance_config + ), "`get_instance_config` should return a copy of the instance config" From 11cf3dbc7f433ed2bf00627032c9c45e79e0fece Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 3 Jul 2025 22:04:50 -0700 Subject: [PATCH 29/80] test: add tests for `set_instance_config` --- dandischema/tests/test_conf.py | 117 +++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index a1177493..ef176438 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,3 +1,9 @@ +import logging +from unittest.mock import ANY + +import pytest + + def test_get_instance_config() -> None: from dandischema.conf import _instance_config, get_instance_config @@ -7,3 +13,114 @@ def test_get_instance_config() -> None: assert ( obtained_config is not _instance_config ), "`get_instance_config` should return a copy of the instance config" + + +FOO_CONFIG_DICT = { + "instance_name": "FOO", + "doi_prefix": "10.1234", +} + + +class TestSetInstanceConfig: + + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", + [{}], + indirect=True, + ) + def test_before_models_import( + self, clear_dandischema_modules_and_set_env_vars: None + ) -> None: + """ + Test setting the instance configuration before importing `dandischema.models`. + """ + + # Import entities in `dandischema.conf` after clearing dandischema modules + from dandischema.conf import Config, get_instance_config, set_instance_config + + set_instance_config(**FOO_CONFIG_DICT) + assert get_instance_config() == Config.model_validate( + FOO_CONFIG_DICT + ), "Configuration values are not set to the expected values" + + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", + [FOO_CONFIG_DICT], + indirect=True, + ) + def test_after_models_import_same_config( + self, + clear_dandischema_modules_and_set_env_vars: None, + caplog: pytest.LogCaptureFixture, + ) -> None: + """ + Test setting the instance configuration after importing `dandischema.models` + with the same configuration. + """ + # Make sure the `dandischema.models` module is imported before calling + # `set_instance_config` + from dandischema.conf import Config, get_instance_config, set_instance_config + import dandischema.models # noqa: F401 + + initial_config = get_instance_config() + + caplog.clear() + caplog.set_level(logging.DEBUG, logger="dandischema.conf") + set_instance_config(**FOO_CONFIG_DICT) + + assert ( + len(caplog.records) == 1 + ), "There should be only one log record from logger `dandischema.conf`" + + record_tuple = caplog.record_tuples[0] + assert record_tuple == ("dandischema.conf", logging.DEBUG, ANY) + assert ( + "reset the DANDI instance configuration to the same value" + in record_tuple[2] + ) + + assert ( + get_instance_config() + == initial_config + == Config.model_validate(FOO_CONFIG_DICT) + ), "Configuration values should remain the same" + + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", + [FOO_CONFIG_DICT], + indirect=True, + ) + def test_after_models_import_different_config( + self, + clear_dandischema_modules_and_set_env_vars: None, + caplog: pytest.LogCaptureFixture, + ) -> None: + """ + Test setting the instance configuration after importing `dandischema.models` + with a different configuration. + """ + # Make sure the `dandischema.models` module is imported before calling + # `set_instance_config` + from dandischema.conf import Config, get_instance_config, set_instance_config + import dandischema.models # noqa: F401 + + new_config_dict = { + "instance_name": "BAR", + "doi_prefix": "10.5678", + } + + # noinspection DuplicatedCode + caplog.clear() + caplog.set_level(logging.DEBUG, logger="dandischema.conf") + set_instance_config(**new_config_dict) + + assert ( + len(caplog.records) == 1 + ), "There should be only one log record from logger `dandischema.conf`" + record_tuple = caplog.record_tuples[0] + assert record_tuple == ("dandischema.conf", logging.WARNING, ANY) + assert "different value will not have any affect" in record_tuple[2] + + assert get_instance_config() == Config.model_validate( + new_config_dict + ), "Configuration values should be set to the new values" From f2ecf9d9b5cb6cff8ef0a3a1de427044cfb3e59d Mon Sep 17 00:00:00 2001 From: Isaac To Date: Fri, 11 Jul 2025 15:34:11 -0700 Subject: [PATCH 30/80] feat: allow `Config` or `dict` as input to `set_instance_config()` --- dandischema/conf.py | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index af148bd8..123df4a0 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -4,7 +4,7 @@ import logging import re -from typing import Annotated, Any, Optional +from typing import Annotated, Any, Optional, Union from pydantic import StringConstraints from pydantic_settings import BaseSettings, SettingsConfigDict @@ -88,17 +88,32 @@ def get_instance_config() -> Config: return _instance_config.model_copy(deep=True) -def set_instance_config(**kwargs: Any) -> None: +def set_instance_config( + config: Optional[Union[Config, dict]] = None, /, **kwargs: Any +) -> None: """ Set the DANDI instance configuration returned by `get_instance_config()` - This setting is done by creating a new instance of `Config` with the keyword + This setting is done by creating a new instance of `Config` with the positional + argument of type of `Config` or `dict` or the keyword arguments passed to this function and overwriting the existing one. Parameters ---------- + config : Optional[Union[Config, dict]], optional + An instance of `Config` or a dictionary with the configuration. If an instance + of `Config` is provided, a copy will be made to use to set the DANDI instance + configuration. If a dictionary is provided, it will be validated and converted + to an instance of `Config`. If this argument is provided, no keyword arguments + should be provided. Defaults to `None`. **kwargs - Keyword arguments to pass to the `Config` constructor + Keyword arguments to pass to `Config.model_validate()` to create a new + instance of `Config` to set the DANDI instance configuration. + + Raises + ------ + ValueError + If both a non-none positional argument and keyword arguments are provided Note ---- @@ -110,11 +125,23 @@ def set_instance_config(**kwargs: Any) -> None: `dandischema.models`. """ + if config is not None and kwargs: + raise ValueError( + "Either a positional argument or a set of keyword arguments should be " + "provided, but not both." + ) + import sys global _instance_config - new_config = Config(**kwargs) + if config is not None: + if isinstance(config, Config): + new_config = config.model_copy(deep=True) + else: + new_config = Config.model_validate(config) + else: + new_config = Config.model_validate(kwargs) if _MODELS_MODULE_NAME in sys.modules: if new_config != _instance_config: From 13a919f651f914a6c8e533829c2ae146192fe4b8 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 14 Jul 2025 15:55:28 -0700 Subject: [PATCH 31/80] test: update testing of `set_instance_config` --- dandischema/tests/test_conf.py | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index ef176438..74418256 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,11 +1,18 @@ import logging +from typing import Union from unittest.mock import ANY import pytest +from dandischema.conf import ( + Config, + _instance_config, + get_instance_config, + set_instance_config, +) + def test_get_instance_config() -> None: - from dandischema.conf import _instance_config, get_instance_config obtained_config = get_instance_config() @@ -22,6 +29,24 @@ def test_get_instance_config() -> None: class TestSetInstanceConfig: + @pytest.mark.parametrize( + ("arg", "kwargs"), + [ + (FOO_CONFIG_DICT, {"instance_name": "BAR"}), + ( + Config.model_validate(FOO_CONFIG_DICT), + {"instance_name": "Baz", "key": "value"}, + ), + ], + ) + def test_invalid_args(self, arg: Union[Config, dict], kwargs: dict) -> None: + """ + Test that `set_instance_config` raises a `ValueError` when called with both + a non-none positional argument and one or more keyword arguments. + """ + + with pytest.raises(ValueError, match="not both"): + set_instance_config(arg, **kwargs) @pytest.mark.parametrize( "clear_dandischema_modules_and_set_env_vars", @@ -36,7 +61,6 @@ def test_before_models_import( """ # Import entities in `dandischema.conf` after clearing dandischema modules - from dandischema.conf import Config, get_instance_config, set_instance_config set_instance_config(**FOO_CONFIG_DICT) assert get_instance_config() == Config.model_validate( @@ -59,7 +83,6 @@ def test_after_models_import_same_config( """ # Make sure the `dandischema.models` module is imported before calling # `set_instance_config` - from dandischema.conf import Config, get_instance_config, set_instance_config import dandischema.models # noqa: F401 initial_config = get_instance_config() @@ -101,7 +124,6 @@ def test_after_models_import_different_config( """ # Make sure the `dandischema.models` module is imported before calling # `set_instance_config` - from dandischema.conf import Config, get_instance_config, set_instance_config import dandischema.models # noqa: F401 new_config_dict = { From 3576941efd46b7b824fff74db20d306f4418e85b Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 14 Jul 2025 16:09:33 -0700 Subject: [PATCH 32/80] test: update testing of `set_instance_config` --- dandischema/tests/test_conf.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 74418256..e4585a22 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,5 +1,5 @@ import logging -from typing import Union +from typing import Optional, Union from unittest.mock import ANY import pytest @@ -49,12 +49,19 @@ def test_invalid_args(self, arg: Union[Config, dict], kwargs: dict) -> None: set_instance_config(arg, **kwargs) @pytest.mark.parametrize( - "clear_dandischema_modules_and_set_env_vars", - [{}], - indirect=True, + ("clear_dandischema_modules_and_set_env_vars", "arg", "kwargs"), + [ + ({}, FOO_CONFIG_DICT, {}), + ({}, Config.model_validate(FOO_CONFIG_DICT), {}), + ({}, None, FOO_CONFIG_DICT), + ], + indirect=["clear_dandischema_modules_and_set_env_vars"], ) def test_before_models_import( - self, clear_dandischema_modules_and_set_env_vars: None + self, + clear_dandischema_modules_and_set_env_vars: None, + arg: Optional[Union[Config, dict]], + kwargs: dict, ) -> None: """ Test setting the instance configuration before importing `dandischema.models`. @@ -62,7 +69,7 @@ def test_before_models_import( # Import entities in `dandischema.conf` after clearing dandischema modules - set_instance_config(**FOO_CONFIG_DICT) + set_instance_config(arg, **kwargs) assert get_instance_config() == Config.model_validate( FOO_CONFIG_DICT ), "Configuration values are not set to the expected values" From c7bb614a24b1516f7467757a427af97fc884f165 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 23 Jul 2025 22:24:15 -0700 Subject: [PATCH 33/80] feat: remove `id_pattern` property from `dandischema.conf.Config` Per @yarikoptic recommendation, let the ID pattern be defined in `dandischema.models` along with other patterns --- dandischema/conf.py | 10 ---------- dandischema/models.py | 4 +++- dandischema/tests/test_models.py | 26 +++++++++++++------------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index 123df4a0..df768634 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -47,16 +47,6 @@ class Config(BaseSettings): The DOI prefix at DataCite """ - @property - def id_pattern(self) -> str: - """Regex pattern for the prefix of identifiers""" - if "instance_name" in self.model_fields_set: - return self.instance_name - - # If the instance name is not set, - # we use a pattern for unvendored DANDI instances - return _UNVENDORED_ID_PATTERN - @property def doi_prefix_pattern(self) -> Optional[str]: """The pattern that a DOI prefix of a dandiset must conform to""" diff --git a/dandischema/models.py b/dandischema/models.py index 7a85b21a..29a9f3df 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -45,7 +45,9 @@ # Load needed configurations into constants _INSTANCE_CONFIG = get_instance_config() -ID_PATTERN = _INSTANCE_CONFIG.id_pattern + +# Regex pattern for the prefix of identifiers +ID_PATTERN = _INSTANCE_CONFIG.instance_name DOI_PREFIX_PATTERN = _INSTANCE_CONFIG.doi_prefix_pattern # Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 197d10c9..3a678e94 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -792,17 +792,17 @@ def _get_field_pattern( # Without any environment variables set. dandischema is unvendorized. ( {}, - r"[A-Z][-A-Z]*", + "DANDI-ADHOC", None, { - "dandiset_id": "DANDI:001350/draft", - "dandiset_identifier": "DANDI:001350", - "published_dandiset_id": "DANDI:001350/0.250511.1527", + "dandiset_id": "DANDI-ADHOC:001350/draft", + "dandiset_identifier": "DANDI-ADHOC:001350", + "published_dandiset_id": "DANDI-ADHOC:001350/0.250511.1527", }, { "dandiset_id": "45:001350/draft", # Invalid id prefix - "dandiset_identifier": "DANDI:001350", - "published_dandiset_id": "DANDI:001350/0.250511.1527", + "dandiset_identifier": "DANDI-ADHOC:001350", + "published_dandiset_id": "DANDI-ADHOC:001350/0.250511.1527", }, ), ( @@ -848,17 +848,17 @@ def _get_field_pattern( # Without any environment variables set. dandischema is unvendorized. ( {}, - r"[A-Z][-A-Z]*", + "DANDI-ADHOC", None, { - "dandiset_id": "EMBER-DANDI:000005/draft", - "dandiset_identifier": "EMBER-DANDI:000005", - "published_dandiset_id": "EMBER-DANDI:000005/0.250404.1839", + "dandiset_id": "DANDI-ADHOC:000005/draft", + "dandiset_identifier": "DANDI-ADHOC:000005", + "published_dandiset_id": "DANDI-ADHOC:000005/0.250404.1839", }, { - "dandiset_id": "EMBER-DANDI:000005/draft", - "dandiset_identifier": "-EMBER-DANDI:000005", # Invalid id prefix - "published_dandiset_id": "EMBER-DANDI:000005/0.250404.1839", + "dandiset_id": "DANDI-ADHOC:000005/draft", + "dandiset_identifier": "-DANDI-ADHOC:000005", # Invalid id prefix + "published_dandiset_id": "DANDI-ADHOC:000005/0.250404.1839", }, ), ( From e712e4d0995ef7483773a5e69d0ac2193f980565 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 24 Jul 2025 09:26:09 -0700 Subject: [PATCH 34/80] feat: remove `doi_prefix_pattern` property from `dandischema.conf.Config` Per @yarikoptic recommendation, let the pattern be defined in `dandischema.models` along with other patterns --- dandischema/conf.py | 6 ------ dandischema/models.py | 8 +++++++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index df768634..c066d786 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -3,7 +3,6 @@ from __future__ import annotations import logging -import re from typing import Annotated, Any, Optional, Union from pydantic import StringConstraints @@ -47,11 +46,6 @@ class Config(BaseSettings): The DOI prefix at DataCite """ - @property - def doi_prefix_pattern(self) -> Optional[str]: - """The pattern that a DOI prefix of a dandiset must conform to""" - return re.escape(self.doi_prefix) if self.doi_prefix is not None else None - _instance_config = Config() # Initial value is set by env vars alone """ diff --git a/dandischema/models.py b/dandischema/models.py index 29a9f3df..94c7ad87 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -48,7 +48,13 @@ # Regex pattern for the prefix of identifiers ID_PATTERN = _INSTANCE_CONFIG.instance_name -DOI_PREFIX_PATTERN = _INSTANCE_CONFIG.doi_prefix_pattern + +# The pattern that a DOI prefix of a dandiset must conform to +DOI_PREFIX_PATTERN = ( + re.escape(_INSTANCE_CONFIG.doi_prefix) + if _INSTANCE_CONFIG.doi_prefix is not None + else None +) # Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. DANDI_INSTANCE_URL: Optional[str] From 276844b3b19f3bc27825bbb46b3d56fd406566b4 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 27 Jul 2025 14:44:35 -0700 Subject: [PATCH 35/80] test: delay import of `dandischema.conf` in `test_conf.py` Without this delay, the `dandischema.conf` and its contained definitions initialized after the execution of the `clear_dandischema_modules_and_set_env_vars` fixture is not accessed in the tests. --- dandischema/tests/test_conf.py | 40 +++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index e4585a22..60746833 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,18 +1,12 @@ import logging -from typing import Optional, Union +from typing import Optional from unittest.mock import ANY import pytest -from dandischema.conf import ( - Config, - _instance_config, - get_instance_config, - set_instance_config, -) - def test_get_instance_config() -> None: + from dandischema.conf import _instance_config, get_instance_config obtained_config = get_instance_config() @@ -34,25 +28,28 @@ class TestSetInstanceConfig: [ (FOO_CONFIG_DICT, {"instance_name": "BAR"}), ( - Config.model_validate(FOO_CONFIG_DICT), + FOO_CONFIG_DICT, {"instance_name": "Baz", "key": "value"}, ), ], ) - def test_invalid_args(self, arg: Union[Config, dict], kwargs: dict) -> None: + def test_invalid_args(self, arg: dict, kwargs: dict) -> None: """ Test that `set_instance_config` raises a `ValueError` when called with both a non-none positional argument and one or more keyword arguments. """ + from dandischema.conf import Config, set_instance_config - with pytest.raises(ValueError, match="not both"): - set_instance_config(arg, **kwargs) + # Loop over arg in different types/forms + for arg_ in (arg, Config.model_validate(arg)): + with pytest.raises(ValueError, match="not both"): + set_instance_config(arg_, **kwargs) @pytest.mark.parametrize( ("clear_dandischema_modules_and_set_env_vars", "arg", "kwargs"), [ ({}, FOO_CONFIG_DICT, {}), - ({}, Config.model_validate(FOO_CONFIG_DICT), {}), + ({}, FOO_CONFIG_DICT, {}), ({}, None, FOO_CONFIG_DICT), ], indirect=["clear_dandischema_modules_and_set_env_vars"], @@ -60,7 +57,7 @@ def test_invalid_args(self, arg: Union[Config, dict], kwargs: dict) -> None: def test_before_models_import( self, clear_dandischema_modules_and_set_env_vars: None, - arg: Optional[Union[Config, dict]], + arg: Optional[dict], kwargs: dict, ) -> None: """ @@ -68,11 +65,14 @@ def test_before_models_import( """ # Import entities in `dandischema.conf` after clearing dandischema modules + from dandischema.conf import Config, get_instance_config, set_instance_config - set_instance_config(arg, **kwargs) - assert get_instance_config() == Config.model_validate( - FOO_CONFIG_DICT - ), "Configuration values are not set to the expected values" + # Loop over arg in different types/forms + for arg_ in (arg, Config.model_validate(arg)) if arg is not None else (arg,): + set_instance_config(arg_, **kwargs) + assert get_instance_config() == Config.model_validate( + FOO_CONFIG_DICT + ), "Configuration values are not set to the expected values" @pytest.mark.parametrize( "clear_dandischema_modules_and_set_env_vars", @@ -88,6 +88,8 @@ def test_after_models_import_same_config( Test setting the instance configuration after importing `dandischema.models` with the same configuration. """ + from dandischema.conf import Config, get_instance_config, set_instance_config + # Make sure the `dandischema.models` module is imported before calling # `set_instance_config` import dandischema.models # noqa: F401 @@ -129,6 +131,8 @@ def test_after_models_import_different_config( Test setting the instance configuration after importing `dandischema.models` with a different configuration. """ + from dandischema.conf import Config, get_instance_config, set_instance_config + # Make sure the `dandischema.models` module is imported before calling # `set_instance_config` import dandischema.models # noqa: F401 From c5f63271edc56de99e8f6f47bd3d2848b5d9e09c Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 27 Jul 2025 21:41:55 -0700 Subject: [PATCH 36/80] test: add `TestConfig` Add tests for instantiation of the instance config class, `dandischema.conf.Config` --- dandischema/tests/test_conf.py | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 60746833..8742da92 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -2,6 +2,7 @@ from typing import Optional from unittest.mock import ANY +from pydantic import ValidationError import pytest @@ -22,6 +23,57 @@ def test_get_instance_config() -> None: } +class TestConfig: + @pytest.mark.parametrize( + "instance_name", + ["DANDI-ADHOC", "DANDI-TEST", "DANDI", "DANDI--TEST", "DANDI-TE-ST"], + ) + def test_valid_instance_name(self, instance_name: str) -> None: + """ + Test instantiating `dandischema.conf.Config` with a valid instance name + """ + from dandischema.conf import Config + + Config(instance_name=instance_name) + + @pytest.mark.parametrize("instance_name", ["-DANDI", "dandi", "DANDI0", "DANDI*"]) + def test_invalid_instance_name(self, instance_name: str) -> None: + """ + Test instantiating `dandischema.conf.Config` with an invalid instance name + """ + from dandischema.conf import Config + + with pytest.raises(ValidationError) as exc_info: + Config(instance_name=instance_name) + + assert len(exc_info.value.errors()) == 1 + assert exc_info.value.errors()[0]["loc"] == ("instance_name",) + + @pytest.mark.parametrize( + "doi_prefix", ["10.1234", "10.5678", "10.12345678", "10.987654321"] + ) + def test_valid_doi_prefix(self, doi_prefix: str) -> None: + """ + Test instantiating `dandischema.conf.Config` with a valid DOI prefix + """ + from dandischema.conf import Config + + Config(doi_prefix=doi_prefix) + + @pytest.mark.parametrize("doi_prefix", ["1234", ".1234", "1.1234", "10.123"]) + def test_invalid_doi_prefix(self, doi_prefix: str) -> None: + """ + Test instantiating `dandischema.conf.Config` with an invalid DOI prefix + """ + from dandischema.conf import Config + + with pytest.raises(ValidationError) as exc_info: + Config(doi_prefix=doi_prefix) + + assert len(exc_info.value.errors()) == 1 + assert exc_info.value.errors()[0]["loc"] == ("doi_prefix",) + + class TestSetInstanceConfig: @pytest.mark.parametrize( ("arg", "kwargs"), From cf0293efd86ed534bf064046d471760c73586115 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Fri, 25 Jul 2025 23:11:41 -0700 Subject: [PATCH 37/80] feat: add `licenses` field to `dandischema.conf.Config` The value of the field defines the list of licenses to be supported by the DANDI instance. Each item in the list must be a license listed in https://spdx.org/licenses/ at the moment. The `licenses.json` file included in this commit is a machine-readable version of the list at https://spdx.org/licenses/ at version 3.27.0. --- dandischema/_resources/licenses.json | 8771 ++++++++++++++++++++++++++ dandischema/conf.py | 76 +- 2 files changed, 8845 insertions(+), 2 deletions(-) create mode 100644 dandischema/_resources/licenses.json diff --git a/dandischema/_resources/licenses.json b/dandischema/_resources/licenses.json new file mode 100644 index 00000000..6701328a --- /dev/null +++ b/dandischema/_resources/licenses.json @@ -0,0 +1,8771 @@ +{ + "licenseListVersion": "3.27.0", + "licenses": [ + { + "reference": "https://spdx.org/licenses/0BSD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/0BSD.json", + "referenceNumber": 316, + "name": "BSD Zero Clause License", + "licenseId": "0BSD", + "seeAlso": [ + "http://landley.net/toybox/license.html", + "https://opensource.org/licenses/0BSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/3D-Slicer-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/3D-Slicer-1.0.json", + "referenceNumber": 61, + "name": "3D Slicer License v1.0", + "licenseId": "3D-Slicer-1.0", + "seeAlso": [ + "https://slicer.org/LICENSE", + "https://github.com/Slicer/Slicer/blob/main/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AAL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AAL.json", + "referenceNumber": 424, + "name": "Attribution Assurance License", + "licenseId": "AAL", + "seeAlso": [ + "https://opensource.org/licenses/attribution" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Abstyles.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Abstyles.json", + "referenceNumber": 252, + "name": "Abstyles License", + "licenseId": "Abstyles", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Abstyles" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AdaCore-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AdaCore-doc.json", + "referenceNumber": 315, + "name": "AdaCore Doc License", + "licenseId": "AdaCore-doc", + "seeAlso": [ + "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-2006.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", + "referenceNumber": 658, + "name": "Adobe Systems Incorporated Source Code License Agreement", + "licenseId": "Adobe-2006", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobeLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Display-PostScript.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Display-PostScript.json", + "referenceNumber": 499, + "name": "Adobe Display PostScript License", + "licenseId": "Adobe-Display-PostScript", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L752" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Glyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", + "referenceNumber": 492, + "name": "Adobe Glyph List License", + "licenseId": "Adobe-Glyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Utopia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Utopia.json", + "referenceNumber": 554, + "name": "Adobe Utopia Font License", + "licenseId": "Adobe-Utopia", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ADSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ADSL.json", + "referenceNumber": 76, + "name": "Amazon Digital Services License", + "licenseId": "ADSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", + "referenceNumber": 7, + "name": "Academic Free License v1.1", + "licenseId": "AFL-1.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json", + "referenceNumber": 480, + "name": "Academic Free License v1.2", + "licenseId": "AFL-1.2", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", + "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", + "referenceNumber": 41, + "name": "Academic Free License v2.0", + "licenseId": "AFL-2.0", + "seeAlso": [ + "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", + "referenceNumber": 682, + "name": "Academic Free License v2.1", + "licenseId": "AFL-2.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", + "referenceNumber": 343, + "name": "Academic Free License v3.0", + "licenseId": "AFL-3.0", + "seeAlso": [ + "http://www.rosenlaw.com/AFL3.0.htm", + "https://opensource.org/licenses/afl-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Afmparse.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Afmparse.json", + "referenceNumber": 84, + "name": "Afmparse License", + "licenseId": "Afmparse", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Afmparse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json", + "referenceNumber": 38, + "name": "Affero General Public License v1.0", + "licenseId": "AGPL-1.0", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", + "referenceNumber": 415, + "name": "Affero General Public License v1.0 only", + "licenseId": "AGPL-1.0-only", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", + "referenceNumber": 24, + "name": "Affero General Public License v1.0 or later", + "licenseId": "AGPL-1.0-or-later", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", + "referenceNumber": 427, + "name": "GNU Affero General Public License v3.0", + "licenseId": "AGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", + "referenceNumber": 191, + "name": "GNU Affero General Public License v3.0 only", + "licenseId": "AGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", + "referenceNumber": 469, + "name": "GNU Affero General Public License v3.0 or later", + "licenseId": "AGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Aladdin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Aladdin.json", + "referenceNumber": 495, + "name": "Aladdin Free Public License", + "licenseId": "Aladdin", + "seeAlso": [ + "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/AMD-newlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMD-newlib.json", + "referenceNumber": 437, + "name": "AMD newlib License", + "licenseId": "AMD-newlib", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/sys/a29khif/_close.S;h\u003d04f52ae00de1dafbd9055ad8d73c5c697a3aae7f;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMDPLPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", + "referenceNumber": 194, + "name": "AMD\u0027s plpa_map.c License", + "licenseId": "AMDPLPA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AML.json", + "referenceNumber": 644, + "name": "Apple MIT License", + "licenseId": "AML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AML-glslang.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AML-glslang.json", + "referenceNumber": 439, + "name": "AML glslang variant License", + "licenseId": "AML-glslang", + "seeAlso": [ + "https://github.com/KhronosGroup/glslang/blob/main/LICENSE.txt#L949", + "https://docs.omniverse.nvidia.com/install-guide/latest/common/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMPAS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMPAS.json", + "referenceNumber": 15, + "name": "Academy of Motion Picture Arts and Sciences BSD", + "licenseId": "AMPAS", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", + "referenceNumber": 25, + "name": "ANTLR Software Rights Notice", + "licenseId": "ANTLR-PD", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", + "referenceNumber": 218, + "name": "ANTLR Software Rights Notice with license fallback", + "licenseId": "ANTLR-PD-fallback", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/any-OSI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/any-OSI.json", + "referenceNumber": 74, + "name": "Any OSI License", + "licenseId": "any-OSI", + "seeAlso": [ + "https://metacpan.org/pod/Exporter::Tidy#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/any-OSI-perl-modules.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/any-OSI-perl-modules.json", + "referenceNumber": 230, + "name": "Any OSI License - Perl Modules", + "licenseId": "any-OSI-perl-modules", + "seeAlso": [ + "https://metacpan.org/release/JUERD/Exporter-Tidy-0.09/view/Tidy.pm#LICENSE", + "https://metacpan.org/pod/Qmail::Deliverable::Client#LICENSE", + "https://metacpan.org/pod/Net::MQTT::Simple#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", + "referenceNumber": 379, + "name": "Apache License 1.0", + "licenseId": "Apache-1.0", + "seeAlso": [ + "http://www.apache.org/licenses/LICENSE-1.0" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Apache-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", + "referenceNumber": 111, + "name": "Apache License 1.1", + "licenseId": "Apache-1.1", + "seeAlso": [ + "http://apache.org/licenses/LICENSE-1.1", + "https://opensource.org/licenses/Apache-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Apache-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", + "referenceNumber": 162, + "name": "Apache License 2.0", + "licenseId": "Apache-2.0", + "seeAlso": [ + "https://www.apache.org/licenses/LICENSE-2.0", + "https://opensource.org/licenses/Apache-2.0", + "https://opensource.org/license/apache-2-0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/APAFML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APAFML.json", + "referenceNumber": 474, + "name": "Adobe Postscript AFM License", + "licenseId": "APAFML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", + "referenceNumber": 127, + "name": "Adaptive Public License 1.0", + "licenseId": "APL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/APL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/App-s2p.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/App-s2p.json", + "referenceNumber": 155, + "name": "App::s2p License", + "licenseId": "App-s2p", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/App-s2p" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", + "referenceNumber": 86, + "name": "Apple Public Source License 1.0", + "licenseId": "APSL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", + "referenceNumber": 23, + "name": "Apple Public Source License 1.1", + "licenseId": "APSL-1.1", + "seeAlso": [ + "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/APSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", + "referenceNumber": 265, + "name": "Apple Public Source License 1.2", + "licenseId": "APSL-1.2", + "seeAlso": [ + "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/APSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", + "referenceNumber": 568, + "name": "Apple Public Source License 2.0", + "licenseId": "APSL-2.0", + "seeAlso": [ + "http://www.opensource.apple.com/license/apsl/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Arphic-1999.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", + "referenceNumber": 649, + "name": "Arphic Public License", + "licenseId": "Arphic-1999", + "seeAlso": [ + "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", + "referenceNumber": 388, + "name": "Artistic License 1.0", + "licenseId": "Artistic-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", + "referenceNumber": 291, + "name": "Artistic License 1.0 w/clause 8", + "licenseId": "Artistic-1.0-cl8", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json", + "referenceNumber": 20, + "name": "Artistic License 1.0 (Perl)", + "licenseId": "Artistic-1.0-Perl", + "seeAlso": [ + "http://dev.perl.org/licenses/artistic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", + "referenceNumber": 217, + "name": "Artistic License 2.0", + "licenseId": "Artistic-2.0", + "seeAlso": [ + "http://www.perlfoundation.org/artistic_license_2_0", + "https://www.perlfoundation.org/artistic-license-20.html", + "https://opensource.org/licenses/artistic-license-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-dist.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-dist.json", + "referenceNumber": 511, + "name": "Artistic License 1.0 (dist)", + "licenseId": "Artistic-dist", + "seeAlso": [ + "https://github.com/pexip/os-perl/blob/833cf4c86cc465ccfc627ff16db67e783156a248/debian/copyright#L2720-L2845" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Aspell-RU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Aspell-RU.json", + "referenceNumber": 231, + "name": "Aspell Russian License", + "licenseId": "Aspell-RU", + "seeAlso": [ + "https://ftp.gnu.org/gnu/aspell/dict/ru/aspell6-ru-0.99f7-1.tar.bz2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json", + "referenceNumber": 340, + "name": "ASWF Digital Assets License version 1.0", + "licenseId": "ASWF-Digital-Assets-1.0", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json", + "referenceNumber": 153, + "name": "ASWF Digital Assets License 1.1", + "licenseId": "ASWF-Digital-Assets-1.1", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Baekmuk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", + "referenceNumber": 311, + "name": "Baekmuk License", + "licenseId": "Baekmuk", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\u003dLicensing/Baekmuk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bahyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bahyph.json", + "referenceNumber": 505, + "name": "Bahyph License", + "licenseId": "Bahyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Bahyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Barr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Barr.json", + "referenceNumber": 420, + "name": "Barr License", + "licenseId": "Barr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Barr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bcrypt-Solar-Designer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bcrypt-Solar-Designer.json", + "referenceNumber": 167, + "name": "bcrypt Solar Designer License", + "licenseId": "bcrypt-Solar-Designer", + "seeAlso": [ + "https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/ext/mri/crypt_blowfish.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Beerware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Beerware.json", + "referenceNumber": 556, + "name": "Beerware License", + "licenseId": "Beerware", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Beerware", + "https://people.freebsd.org/~phk/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Charter.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Charter.json", + "referenceNumber": 47, + "name": "Bitstream Charter Font License", + "licenseId": "Bitstream-Charter", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Charter#License_Text", + "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Vera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", + "referenceNumber": 208, + "name": "Bitstream Vera Font License", + "licenseId": "Bitstream-Vera", + "seeAlso": [ + "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", + "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", + "referenceNumber": 156, + "name": "BitTorrent Open Source License v1.0", + "licenseId": "BitTorrent-1.0", + "seeAlso": [ + "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", + "referenceNumber": 325, + "name": "BitTorrent Open Source License v1.1", + "licenseId": "BitTorrent-1.1", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/blessing.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/blessing.json", + "referenceNumber": 680, + "name": "SQLite Blessing", + "licenseId": "blessing", + "seeAlso": [ + "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9", + "https://sqlite.org/src/artifact/df5091916dbb40e6" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", + "referenceNumber": 51, + "name": "Blue Oak Model License 1.0.0", + "licenseId": "BlueOak-1.0.0", + "seeAlso": [ + "https://blueoakcouncil.org/license/1.0.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Boehm-GC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Boehm-GC.json", + "referenceNumber": 92, + "name": "Boehm-Demers-Weiser GC License", + "licenseId": "Boehm-GC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)", + "https://github.com/uim/libgcroots/blob/master/COPYING", + "https://github.com/ivmai/libatomic_ops/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Boehm-GC-without-fee.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Boehm-GC-without-fee.json", + "referenceNumber": 466, + "name": "Boehm-Demers-Weiser GC License (without fee)", + "licenseId": "Boehm-GC-without-fee", + "seeAlso": [ + "https://github.com/MariaDB/server/blob/11.6/libmysqld/lib_sql.cc" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Borceux.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Borceux.json", + "referenceNumber": 335, + "name": "Borceux license", + "licenseId": "Borceux", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Borceux" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-2-Clause.json", + "referenceNumber": 198, + "name": "Brian Gladman 2-Clause License", + "licenseId": "Brian-Gladman-2-Clause", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L140-L156", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-3-Clause.json", + "referenceNumber": 675, + "name": "Brian Gladman 3-Clause License", + "licenseId": "Brian-Gladman-3-Clause", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-1-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", + "referenceNumber": 286, + "name": "BSD 1-Clause License", + "licenseId": "BSD-1-Clause", + "seeAlso": [ + "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", + "referenceNumber": 430, + "name": "BSD 2-Clause \"Simplified\" License", + "licenseId": "BSD-2-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-2-Clause" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Darwin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Darwin.json", + "referenceNumber": 477, + "name": "BSD 2-Clause - Ian Darwin variant", + "licenseId": "BSD-2-Clause-Darwin", + "seeAlso": [ + "https://github.com/file/file/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-first-lines.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-first-lines.json", + "referenceNumber": 543, + "name": "BSD 2-Clause - first lines requirement", + "licenseId": "BSD-2-Clause-first-lines", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L664-L690", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", + "referenceNumber": 622, + "name": "BSD 2-Clause FreeBSD License", + "licenseId": "BSD-2-Clause-FreeBSD", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", + "referenceNumber": 531, + "name": "BSD 2-Clause NetBSD License", + "licenseId": "BSD-2-Clause-NetBSD", + "seeAlso": [ + "http://www.netbsd.org/about/redistribution.html#default" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", + "referenceNumber": 584, + "name": "BSD-2-Clause Plus Patent License", + "licenseId": "BSD-2-Clause-Patent", + "seeAlso": [ + "https://opensource.org/licenses/BSDplusPatent" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-pkgconf-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-pkgconf-disclaimer.json", + "referenceNumber": 624, + "name": "BSD 2-Clause pkgconf disclaimer variant", + "licenseId": "BSD-2-Clause-pkgconf-disclaimer", + "seeAlso": [ + "https://github.com/audacious-media-player/audacious/blob/master/src/audacious/main.cc", + "https://github.com/audacious-media-player/audacious/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", + "referenceNumber": 536, + "name": "BSD 2-Clause with views sentence", + "licenseId": "BSD-2-Clause-Views", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html", + "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", + "https://github.com/protegeproject/protege/blob/master/license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", + "referenceNumber": 567, + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "licenseId": "BSD-3-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-3-Clause", + "https://www.eclipse.org/org/documents/edl-v10.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-acpica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-acpica.json", + "referenceNumber": 277, + "name": "BSD 3-Clause acpica variant", + "licenseId": "BSD-3-Clause-acpica", + "seeAlso": [ + "https://github.com/acpica/acpica/blob/master/source/common/acfileio.c#L119" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", + "referenceNumber": 159, + "name": "BSD with attribution", + "licenseId": "BSD-3-Clause-Attribution", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", + "referenceNumber": 259, + "name": "BSD 3-Clause Clear License", + "licenseId": "BSD-3-Clause-Clear", + "seeAlso": [ + "http://labs.metacarta.com/license-explanation.html#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-flex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-flex.json", + "referenceNumber": 205, + "name": "BSD 3-Clause Flex variant", + "licenseId": "BSD-3-Clause-flex", + "seeAlso": [ + "https://github.com/westes/flex/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-HP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-HP.json", + "referenceNumber": 643, + "name": "Hewlett-Packard BSD variant license", + "licenseId": "BSD-3-Clause-HP", + "seeAlso": [ + "https://github.com/zdohnal/hplip/blob/master/COPYING#L939" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", + "referenceNumber": 6, + "name": "Lawrence Berkeley National Labs BSD variant license", + "licenseId": "BSD-3-Clause-LBNL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", + "referenceNumber": 497, + "name": "BSD 3-Clause Modification", + "licenseId": "BSD-3-Clause-Modification", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", + "referenceNumber": 498, + "name": "BSD 3-Clause No Military License", + "licenseId": "BSD-3-Clause-No-Military-License", + "seeAlso": [ + "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", + "https://github.com/greymass/swift-eosio/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", + "referenceNumber": 108, + "name": "BSD 3-Clause No Nuclear License", + "licenseId": "BSD-3-Clause-No-Nuclear-License", + "seeAlso": [ + "http://download.oracle.com/otn-pub/java/licenses/bsd.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", + "referenceNumber": 239, + "name": "BSD 3-Clause No Nuclear License 2014", + "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", + "seeAlso": [ + "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", + "referenceNumber": 606, + "name": "BSD 3-Clause No Nuclear Warranty", + "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "seeAlso": [ + "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", + "referenceNumber": 637, + "name": "BSD 3-Clause Open MPI variant", + "licenseId": "BSD-3-Clause-Open-MPI", + "seeAlso": [ + "https://www.open-mpi.org/community/license.php", + "http://www.netlib.org/lapack/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Sun.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Sun.json", + "referenceNumber": 240, + "name": "BSD 3-Clause Sun Microsystems", + "licenseId": "BSD-3-Clause-Sun", + "seeAlso": [ + "https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json", + "referenceNumber": 227, + "name": "BSD 4-Clause \"Original\" or \"Old\" License", + "licenseId": "BSD-4-Clause", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BSD_4Clause" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", + "referenceNumber": 269, + "name": "BSD 4 Clause Shortened", + "licenseId": "BSD-4-Clause-Shortened", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", + "referenceNumber": 21, + "name": "BSD-4-Clause (University of California-Specific)", + "licenseId": "BSD-4-Clause-UC", + "seeAlso": [ + "http://www.freebsd.org/copyright/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4.3RENO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4.3RENO.json", + "referenceNumber": 434, + "name": "BSD 4.3 RENO License", + "licenseId": "BSD-4.3RENO", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dlibiberty/strcasecmp.c;h\u003d131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb\u003dHEAD", + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4.3TAHOE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4.3TAHOE.json", + "referenceNumber": 685, + "name": "BSD 4.3 TAHOE License", + "licenseId": "BSD-4.3TAHOE", + "seeAlso": [ + "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15", + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n1788" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json", + "referenceNumber": 345, + "name": "BSD Advertising Acknowledgement License", + "licenseId": "BSD-Advertising-Acknowledgement", + "seeAlso": [ + "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json", + "referenceNumber": 506, + "name": "BSD with Attribution and HPND disclaimer", + "licenseId": "BSD-Attribution-HPND-disclaimer", + "seeAlso": [ + "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Inferno-Nettverk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Inferno-Nettverk.json", + "referenceNumber": 535, + "name": "BSD-Inferno-Nettverk", + "licenseId": "BSD-Inferno-Nettverk", + "seeAlso": [ + "https://www.inet.no/dante/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Protection.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", + "referenceNumber": 163, + "name": "BSD Protection License", + "licenseId": "BSD-Protection", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Source-beginning-file.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Source-beginning-file.json", + "referenceNumber": 383, + "name": "BSD Source Code Attribution - beginning of file variant", + "licenseId": "BSD-Source-beginning-file", + "seeAlso": [ + "https://github.com/lattera/freebsd/blob/master/sys/cam/cam.c#L4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Source-Code.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", + "referenceNumber": 450, + "name": "BSD Source Code Attribution", + "licenseId": "BSD-Source-Code", + "seeAlso": [ + "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Systemics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics.json", + "referenceNumber": 602, + "name": "Systemics BSD variant license", + "licenseId": "BSD-Systemics", + "seeAlso": [ + "https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Systemics-W3Works.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics-W3Works.json", + "referenceNumber": 422, + "name": "Systemics W3Works BSD variant license", + "licenseId": "BSD-Systemics-W3Works", + "seeAlso": [ + "https://metacpan.org/release/DPARIS/Crypt-Blowfish-2.14/source/COPYRIGHT#L7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", + "referenceNumber": 130, + "name": "Boost Software License 1.0", + "licenseId": "BSL-1.0", + "seeAlso": [ + "http://www.boost.org/LICENSE_1_0.txt", + "https://opensource.org/licenses/BSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BUSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", + "referenceNumber": 234, + "name": "Business Source License 1.1", + "licenseId": "BUSL-1.1", + "seeAlso": [ + "https://mariadb.com/bsl11/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", + "referenceNumber": 412, + "name": "bzip2 and libbzip2 License v1.0.5", + "licenseId": "bzip2-1.0.5", + "seeAlso": [ + "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", + "referenceNumber": 243, + "name": "bzip2 and libbzip2 License v1.0.6", + "licenseId": "bzip2-1.0.6", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", + "https://sourceware.org/cgit/valgrind/tree/mpi/libmpiwrap.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/C-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", + "referenceNumber": 660, + "name": "Computational Use of Data Agreement v1.0", + "licenseId": "C-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", + "https://cdla.dev/computational-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", + "referenceNumber": 305, + "name": "Cryptographic Autonomy License 1.0", + "licenseId": "CAL-1.0", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", + "referenceNumber": 569, + "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", + "licenseId": "CAL-1.0-Combined-Work-Exception", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Caldera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera.json", + "referenceNumber": 483, + "name": "Caldera License", + "licenseId": "Caldera", + "seeAlso": [ + "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Caldera-no-preamble.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera-no-preamble.json", + "referenceNumber": 401, + "name": "Caldera License (without preamble)", + "licenseId": "Caldera-no-preamble", + "seeAlso": [ + "https://github.com/apache/apr/blob/trunk/LICENSE#L298C6-L298C29" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Catharon.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Catharon.json", + "referenceNumber": 581, + "name": "Catharon License", + "licenseId": "Catharon", + "seeAlso": [ + "https://github.com/scummvm/scummvm/blob/v2.8.0/LICENSES/CatharonLicense.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CATOSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", + "referenceNumber": 97, + "name": "Computer Associates Trusted Open Source License 1.1", + "licenseId": "CATOSL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/CATOSL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", + "referenceNumber": 559, + "name": "Creative Commons Attribution 1.0 Generic", + "licenseId": "CC-BY-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", + "referenceNumber": 441, + "name": "Creative Commons Attribution 2.0 Generic", + "licenseId": "CC-BY-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", + "referenceNumber": 292, + "name": "Creative Commons Attribution 2.5 Generic", + "licenseId": "CC-BY-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", + "referenceNumber": 126, + "name": "Creative Commons Attribution 2.5 Australia", + "licenseId": "CC-BY-2.5-AU", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/au/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", + "referenceNumber": 576, + "name": "Creative Commons Attribution 3.0 Unported", + "licenseId": "CC-BY-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", + "referenceNumber": 107, + "name": "Creative Commons Attribution 3.0 Austria", + "licenseId": "CC-BY-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AU.json", + "referenceNumber": 648, + "name": "Creative Commons Attribution 3.0 Australia", + "licenseId": "CC-BY-3.0-AU", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/au/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", + "referenceNumber": 458, + "name": "Creative Commons Attribution 3.0 Germany", + "licenseId": "CC-BY-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json", + "referenceNumber": 410, + "name": "Creative Commons Attribution 3.0 IGO", + "licenseId": "CC-BY-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", + "referenceNumber": 436, + "name": "Creative Commons Attribution 3.0 Netherlands", + "licenseId": "CC-BY-3.0-NL", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/nl/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", + "referenceNumber": 366, + "name": "Creative Commons Attribution 3.0 United States", + "licenseId": "CC-BY-3.0-US", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/us/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", + "referenceNumber": 66, + "name": "Creative Commons Attribution 4.0 International", + "licenseId": "CC-BY-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", + "referenceNumber": 428, + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "licenseId": "CC-BY-NC-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json", + "referenceNumber": 553, + "name": "Creative Commons Attribution Non Commercial 2.0 Generic", + "licenseId": "CC-BY-NC-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", + "referenceNumber": 49, + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "licenseId": "CC-BY-NC-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json", + "referenceNumber": 686, + "name": "Creative Commons Attribution Non Commercial 3.0 Unported", + "licenseId": "CC-BY-NC-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", + "referenceNumber": 324, + "name": "Creative Commons Attribution Non Commercial 3.0 Germany", + "licenseId": "CC-BY-NC-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", + "referenceNumber": 560, + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "licenseId": "CC-BY-NC-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", + "referenceNumber": 442, + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "licenseId": "CC-BY-NC-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", + "referenceNumber": 334, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "licenseId": "CC-BY-NC-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", + "referenceNumber": 215, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "licenseId": "CC-BY-NC-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", + "referenceNumber": 94, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "licenseId": "CC-BY-NC-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", + "referenceNumber": 185, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", + "licenseId": "CC-BY-NC-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", + "referenceNumber": 577, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", + "licenseId": "CC-BY-NC-ND-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", + "referenceNumber": 53, + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "licenseId": "CC-BY-NC-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", + "referenceNumber": 510, + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "licenseId": "CC-BY-NC-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", + "referenceNumber": 199, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "licenseId": "CC-BY-NC-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json", + "referenceNumber": 356, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany", + "licenseId": "CC-BY-NC-SA-2.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", + "referenceNumber": 301, + "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", + "licenseId": "CC-BY-NC-SA-2.0-FR", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", + "referenceNumber": 671, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-NC-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", + "referenceNumber": 659, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "licenseId": "CC-BY-NC-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", + "referenceNumber": 359, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "licenseId": "CC-BY-NC-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", + "referenceNumber": 279, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", + "licenseId": "CC-BY-NC-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", + "referenceNumber": 636, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", + "licenseId": "CC-BY-NC-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", + "referenceNumber": 89, + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "licenseId": "CC-BY-NC-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json", + "referenceNumber": 118, + "name": "Creative Commons Attribution No Derivatives 1.0 Generic", + "licenseId": "CC-BY-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", + "referenceNumber": 587, + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "licenseId": "CC-BY-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", + "referenceNumber": 394, + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "licenseId": "CC-BY-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", + "referenceNumber": 457, + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "licenseId": "CC-BY-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", + "referenceNumber": 610, + "name": "Creative Commons Attribution No Derivatives 3.0 Germany", + "licenseId": "CC-BY-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", + "referenceNumber": 11, + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "licenseId": "CC-BY-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", + "referenceNumber": 384, + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "licenseId": "CC-BY-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", + "referenceNumber": 260, + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "licenseId": "CC-BY-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", + "referenceNumber": 197, + "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", + "referenceNumber": 149, + "name": "Creative Commons Attribution Share Alike 2.1 Japan", + "licenseId": "CC-BY-SA-2.1-JP", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", + "referenceNumber": 631, + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "licenseId": "CC-BY-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", + "referenceNumber": 79, + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "licenseId": "CC-BY-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", + "referenceNumber": 493, + "name": "Creative Commons Attribution Share Alike 3.0 Austria", + "licenseId": "CC-BY-SA-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", + "referenceNumber": 683, + "name": "Creative Commons Attribution Share Alike 3.0 Germany", + "licenseId": "CC-BY-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.json", + "referenceNumber": 571, + "name": "Creative Commons Attribution-ShareAlike 3.0 IGO", + "licenseId": "CC-BY-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", + "referenceNumber": 256, + "name": "Creative Commons Attribution Share Alike 4.0 International", + "licenseId": "CC-BY-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-PDDC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", + "referenceNumber": 273, + "name": "Creative Commons Public Domain Dedication and Certification", + "licenseId": "CC-PDDC", + "seeAlso": [ + "https://creativecommons.org/licenses/publicdomain/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-PDM-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-PDM-1.0.json", + "referenceNumber": 547, + "name": "Creative Commons Public Domain Mark 1.0 Universal", + "licenseId": "CC-PDM-1.0", + "seeAlso": [ + "https://creativecommons.org/publicdomain/mark/1.0/", + "https://creativecommons.org/share-your-work/cclicenses/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-SA-1.0.json", + "referenceNumber": 85, + "name": "Creative Commons Share Alike 1.0 Generic", + "licenseId": "CC-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC0-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", + "referenceNumber": 369, + "name": "Creative Commons Zero v1.0 Universal", + "licenseId": "CC0-1.0", + "seeAlso": [ + "https://creativecommons.org/publicdomain/zero/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", + "referenceNumber": 407, + "name": "Common Development and Distribution License 1.0", + "licenseId": "CDDL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/cddl1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", + "referenceNumber": 124, + "name": "Common Development and Distribution License 1.1", + "licenseId": "CDDL-1.1", + "seeAlso": [ + "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "https://javaee.github.io/glassfish/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", + "referenceNumber": 385, + "name": "Common Documentation License 1.0", + "licenseId": "CDL-1.0", + "seeAlso": [ + "http://www.opensource.apple.com/cdl/", + "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", + "https://www.gnu.org/licenses/license-list.html#ACDL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", + "referenceNumber": 454, + "name": "Community Data License Agreement Permissive 1.0", + "licenseId": "CDLA-Permissive-1.0", + "seeAlso": [ + "https://cdla.io/permissive-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", + "referenceNumber": 520, + "name": "Community Data License Agreement Permissive 2.0", + "licenseId": "CDLA-Permissive-2.0", + "seeAlso": [ + "https://cdla.dev/permissive-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", + "referenceNumber": 548, + "name": "Community Data License Agreement Sharing 1.0", + "licenseId": "CDLA-Sharing-1.0", + "seeAlso": [ + "https://cdla.io/sharing-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", + "referenceNumber": 468, + "name": "CeCILL Free Software License Agreement v1.0", + "licenseId": "CECILL-1.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", + "referenceNumber": 100, + "name": "CeCILL Free Software License Agreement v1.1", + "licenseId": "CECILL-1.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", + "referenceNumber": 370, + "name": "CeCILL Free Software License Agreement v2.0", + "licenseId": "CECILL-2.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", + "referenceNumber": 95, + "name": "CeCILL Free Software License Agreement v2.1", + "licenseId": "CECILL-2.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-B.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", + "referenceNumber": 425, + "name": "CeCILL-B Free Software License Agreement", + "licenseId": "CECILL-B", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", + "referenceNumber": 45, + "name": "CeCILL-C Free Software License Agreement", + "licenseId": "CECILL-C", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json", + "referenceNumber": 398, + "name": "CERN Open Hardware Licence v1.1", + "licenseId": "CERN-OHL-1.1", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", + "referenceNumber": 318, + "name": "CERN Open Hardware Licence v1.2", + "licenseId": "CERN-OHL-1.2", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", + "referenceNumber": 200, + "name": "CERN Open Hardware Licence Version 2 - Permissive", + "licenseId": "CERN-OHL-P-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", + "referenceNumber": 175, + "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", + "licenseId": "CERN-OHL-S-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", + "referenceNumber": 219, + "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", + "licenseId": "CERN-OHL-W-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CFITSIO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CFITSIO.json", + "referenceNumber": 207, + "name": "CFITSIO License", + "licenseId": "CFITSIO", + "seeAlso": [ + "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html", + "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/check-cvs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/check-cvs.json", + "referenceNumber": 377, + "name": "check-cvs License", + "licenseId": "check-cvs", + "seeAlso": [ + "http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision\u003d1.1.4.3\u0026view\u003dmarkup\u0026pathrev\u003dcvs1-11-23#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/checkmk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/checkmk.json", + "referenceNumber": 389, + "name": "Checkmk License", + "licenseId": "checkmk", + "seeAlso": [ + "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ClArtistic.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ClArtistic.json", + "referenceNumber": 690, + "name": "Clarified Artistic License", + "licenseId": "ClArtistic", + "seeAlso": [ + "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", + "http://www.ncftp.com/ncftp/doc/LICENSE.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Clips.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Clips.json", + "referenceNumber": 65, + "name": "Clips License", + "licenseId": "Clips", + "seeAlso": [ + "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach.json", + "referenceNumber": 178, + "name": "CMU Mach License", + "licenseId": "CMU-Mach", + "seeAlso": [ + "https://www.cs.cmu.edu/~410/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach-nodoc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach-nodoc.json", + "referenceNumber": 391, + "name": "CMU Mach - no notices-in-documentation variant", + "licenseId": "CMU-Mach-nodoc", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L718-L728", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Jython.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", + "referenceNumber": 138, + "name": "CNRI Jython License", + "licenseId": "CNRI-Jython", + "seeAlso": [ + "http://www.jython.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json", + "referenceNumber": 352, + "name": "CNRI Python License", + "licenseId": "CNRI-Python", + "seeAlso": [ + "https://opensource.org/licenses/CNRI-Python" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", + "referenceNumber": 673, + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "licenseId": "CNRI-Python-GPL-Compatible", + "seeAlso": [ + "http://www.python.org/download/releases/1.6.1/download_win/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/COIL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", + "referenceNumber": 526, + "name": "Copyfree Open Innovation License", + "licenseId": "COIL-1.0", + "seeAlso": [ + "https://coil.apotheon.org/plaintext/01.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", + "referenceNumber": 695, + "name": "Community Specification License 1.0", + "licenseId": "Community-Spec-1.0", + "seeAlso": [ + "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Condor-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", + "referenceNumber": 114, + "name": "Condor Public License v1.1", + "licenseId": "Condor-1.1", + "seeAlso": [ + "http://research.cs.wisc.edu/condor/license.html#condor", + "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", + "referenceNumber": 122, + "name": "copyleft-next 0.3.0", + "licenseId": "copyleft-next-0.3.0", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", + "referenceNumber": 583, + "name": "copyleft-next 0.3.1", + "licenseId": "copyleft-next-0.3.1", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Cornell-Lossless-JPEG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cornell-Lossless-JPEG.json", + "referenceNumber": 331, + "name": "Cornell Lossless JPEG License", + "licenseId": "Cornell-Lossless-JPEG", + "seeAlso": [ + "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16", + "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h", + "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", + "referenceNumber": 147, + "name": "Common Public Attribution License 1.0", + "licenseId": "CPAL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPAL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", + "referenceNumber": 367, + "name": "Common Public License 1.0", + "licenseId": "CPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CPOL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", + "referenceNumber": 250, + "name": "Code Project Open License 1.02", + "licenseId": "CPOL-1.02", + "seeAlso": [ + "http://www.codeproject.com/info/cpol10.aspx" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Cronyx.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cronyx.json", + "referenceNumber": 32, + "name": "Cronyx License", + "licenseId": "Cronyx", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Crossword.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Crossword.json", + "referenceNumber": 347, + "name": "Crossword License", + "licenseId": "Crossword", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Crossword" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CryptoSwift.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CryptoSwift.json", + "referenceNumber": 323, + "name": "CryptoSwift License", + "licenseId": "CryptoSwift", + "seeAlso": [ + "https://github.com/krzyzanowskim/CryptoSwift/blob/main/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CrystalStacker.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", + "referenceNumber": 449, + "name": "CrystalStacker License", + "licenseId": "CrystalStacker", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", + "referenceNumber": 298, + "name": "CUA Office Public License v1.0", + "licenseId": "CUA-OPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CUA-OPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Cube.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cube.json", + "referenceNumber": 140, + "name": "Cube License", + "licenseId": "Cube", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Cube" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/curl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/curl.json", + "referenceNumber": 160, + "name": "curl License", + "licenseId": "curl", + "seeAlso": [ + "https://github.com/bagder/curl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/cve-tou.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/cve-tou.json", + "referenceNumber": 216, + "name": "Common Vulnerability Enumeration ToU License", + "licenseId": "cve-tou", + "seeAlso": [ + "https://www.cve.org/Legal/TermsOfUse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/D-FSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json", + "referenceNumber": 545, + "name": "Deutsche Freie Software Lizenz", + "licenseId": "D-FSL-1.0", + "seeAlso": [ + "http://www.dipp.nrw.de/d-fsl/lizenzen/", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DEC-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DEC-3-Clause.json", + "referenceNumber": 164, + "name": "DEC 3-Clause License", + "licenseId": "DEC-3-Clause", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L239" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/diffmark.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/diffmark.json", + "referenceNumber": 50, + "name": "diffmark license", + "licenseId": "diffmark", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/diffmark" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", + "referenceNumber": 530, + "name": "Data licence Germany – attribution – version 2.0", + "licenseId": "DL-DE-BY-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/by-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-ZERO-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-ZERO-2.0.json", + "referenceNumber": 139, + "name": "Data licence Germany – zero – version 2.0", + "licenseId": "DL-DE-ZERO-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/zero-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DOC.json", + "referenceNumber": 31, + "name": "DOC License", + "licenseId": "DOC", + "seeAlso": [ + "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", + "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-DTD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-DTD.json", + "referenceNumber": 603, + "name": "DocBook DTD License", + "licenseId": "DocBook-DTD", + "seeAlso": [ + "http://www.docbook.org/xml/simple/1.1/docbook-simple-1.1.zip" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-Schema.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-Schema.json", + "referenceNumber": 184, + "name": "DocBook Schema License", + "licenseId": "DocBook-Schema", + "seeAlso": [ + "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/assembly/schema/docbook51b7.rnc" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-Stylesheet.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-Stylesheet.json", + "referenceNumber": 494, + "name": "DocBook Stylesheet License", + "licenseId": "DocBook-Stylesheet", + "seeAlso": [ + "http://www.docbook.org/xml/5.0/docbook-5.0.zip" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-XML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-XML.json", + "referenceNumber": 672, + "name": "DocBook XML License", + "licenseId": "DocBook-XML", + "seeAlso": [ + "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/COPYING#L27" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Dotseqn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", + "referenceNumber": 257, + "name": "Dotseqn License", + "licenseId": "Dotseqn", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Dotseqn" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", + "referenceNumber": 446, + "name": "Detection Rule License 1.0", + "licenseId": "DRL-1.0", + "seeAlso": [ + "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.1.json", + "referenceNumber": 135, + "name": "Detection Rule License 1.1", + "licenseId": "DRL-1.1", + "seeAlso": [ + "https://github.com/SigmaHQ/Detection-Rule-License/blob/6ec7fbde6101d101b5b5d1fcb8f9b69fbc76c04a/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DSDP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DSDP.json", + "referenceNumber": 336, + "name": "DSDP License", + "licenseId": "DSDP", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/DSDP" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/dtoa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dtoa.json", + "referenceNumber": 578, + "name": "David M. Gay dtoa License", + "licenseId": "dtoa", + "seeAlso": [ + "https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c", + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/stdlib/mprec.h;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/dvipdfm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dvipdfm.json", + "referenceNumber": 319, + "name": "dvipdfm License", + "licenseId": "dvipdfm", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/dvipdfm" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ECL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", + "referenceNumber": 641, + "name": "Educational Community License v1.0", + "licenseId": "ECL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ECL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", + "referenceNumber": 338, + "name": "Educational Community License v2.0", + "licenseId": "ECL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/eCos-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json", + "referenceNumber": 647, + "name": "eCos license version 2.0", + "licenseId": "eCos-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/ecos-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", + "referenceNumber": 145, + "name": "Eiffel Forum License v1.0", + "licenseId": "EFL-1.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/forum.txt", + "https://opensource.org/licenses/EFL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/EFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", + "referenceNumber": 604, + "name": "Eiffel Forum License v2.0", + "licenseId": "EFL-2.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "https://opensource.org/licenses/EFL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/eGenix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/eGenix.json", + "referenceNumber": 613, + "name": "eGenix.com Public License 1.1.0", + "licenseId": "eGenix", + "seeAlso": [ + "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", + "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Elastic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", + "referenceNumber": 396, + "name": "Elastic License 2.0", + "licenseId": "Elastic-2.0", + "seeAlso": [ + "https://www.elastic.co/licensing/elastic-license", + "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Entessa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Entessa.json", + "referenceNumber": 40, + "name": "Entessa Public License v1.0", + "licenseId": "Entessa", + "seeAlso": [ + "https://opensource.org/licenses/Entessa" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/EPICS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPICS.json", + "referenceNumber": 158, + "name": "EPICS Open License", + "licenseId": "EPICS", + "seeAlso": [ + "https://epics.anl.gov/license/open.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", + "referenceNumber": 558, + "name": "Eclipse Public License 1.0", + "licenseId": "EPL-1.0", + "seeAlso": [ + "http://www.eclipse.org/legal/epl-v10.html", + "https://opensource.org/licenses/EPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", + "referenceNumber": 326, + "name": "Eclipse Public License 2.0", + "licenseId": "EPL-2.0", + "seeAlso": [ + "https://www.eclipse.org/legal/epl-2.0", + "https://www.opensource.org/licenses/EPL-2.0", + "https://www.eclipse.org/legal/epl-v20.html", + "https://projects.eclipse.org/license/epl-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ErlPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", + "referenceNumber": 541, + "name": "Erlang Public License v1.1", + "licenseId": "ErlPL-1.1", + "seeAlso": [ + "http://www.erlang.org/EPLICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/etalab-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", + "referenceNumber": 363, + "name": "Etalab Open License 2.0", + "licenseId": "etalab-2.0", + "seeAlso": [ + "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", + "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUDatagrid.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json", + "referenceNumber": 262, + "name": "EU DataGrid Software License", + "licenseId": "EUDatagrid", + "seeAlso": [ + "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", + "https://opensource.org/licenses/EUDatagrid" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", + "referenceNumber": 405, + "name": "European Union Public License 1.0", + "licenseId": "EUPL-1.0", + "seeAlso": [ + "http://ec.europa.eu/idabc/en/document/7330.html", + "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json", + "referenceNumber": 393, + "name": "European Union Public License 1.1", + "licenseId": "EUPL-1.1", + "seeAlso": [ + "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", + "https://opensource.org/licenses/EUPL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json", + "referenceNumber": 596, + "name": "European Union Public License 1.2", + "licenseId": "EUPL-1.2", + "seeAlso": [ + "https://joinup.ec.europa.eu/page/eupl-text-11-12", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt", + "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", + "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\u003dCELEX:32017D0863", + "https://opensource.org/licenses/EUPL-1.2" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Eurosym.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Eurosym.json", + "referenceNumber": 299, + "name": "Eurosym License", + "licenseId": "Eurosym", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Eurosym" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Fair.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Fair.json", + "referenceNumber": 190, + "name": "Fair License", + "licenseId": "Fair", + "seeAlso": [ + "https://web.archive.org/web/20150926120323/http://fairlicense.org/", + "https://opensource.org/licenses/Fair" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FBM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FBM.json", + "referenceNumber": 476, + "name": "Fuzzy Bitmap License", + "licenseId": "FBM", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FDK-AAC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", + "referenceNumber": 44, + "name": "Fraunhofer FDK AAC Codec Library", + "licenseId": "FDK-AAC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FDK-AAC", + "https://directory.fsf.org/wiki/License:Fdk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Ferguson-Twofish.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ferguson-Twofish.json", + "referenceNumber": 662, + "name": "Ferguson Twofish License", + "licenseId": "Ferguson-Twofish", + "seeAlso": [ + "https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Frameworx-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", + "referenceNumber": 376, + "name": "Frameworx Open License 1.0", + "licenseId": "Frameworx-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Frameworx-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", + "referenceNumber": 645, + "name": "FreeBSD Documentation License", + "licenseId": "FreeBSD-DOC", + "seeAlso": [ + "https://www.freebsd.org/copyright/freebsd-doc-license/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FreeImage.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeImage.json", + "referenceNumber": 264, + "name": "FreeImage Public License v1.0", + "licenseId": "FreeImage", + "seeAlso": [ + "http://freeimage.sourceforge.net/freeimage-license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFAP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP.json", + "referenceNumber": 561, + "name": "FSF All Permissive License", + "licenseId": "FSFAP", + "seeAlso": [ + "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.json", + "referenceNumber": 629, + "name": "FSF All Permissive License (without Warranty)", + "licenseId": "FSFAP-no-warranty-disclaimer", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/wget.git/tree/util/trunc.c?h\u003dv1.21.3\u0026id\u003d40747a11e44ced5a8ac628a41f879ced3e2ebce9#n6" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFUL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFUL.json", + "referenceNumber": 59, + "name": "FSF Unlimited License", + "licenseId": "FSFUL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", + "referenceNumber": 322, + "name": "FSF Unlimited License (with License Retention)", + "licenseId": "FSFULLR", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLRSD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLRSD.json", + "referenceNumber": 300, + "name": "FSF Unlimited License (with License Retention and Short Disclaimer)", + "licenseId": "FSFULLRSD", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/gnulib.git/tree/modules/COPYING?id\u003d7b08932179d0d6b017f7df01a2ddf6e096b038e3" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLRWD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLRWD.json", + "referenceNumber": 245, + "name": "FSF Unlimited License (With License Retention and Warranty Disclaimer)", + "licenseId": "FSFULLRWD", + "seeAlso": [ + "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSL-1.1-ALv2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSL-1.1-ALv2.json", + "referenceNumber": 585, + "name": "Functional Source License, Version 1.1, ALv2 Future License", + "licenseId": "FSL-1.1-ALv2", + "seeAlso": [ + "https://fsl.software/FSL-1.1-ALv2.template.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSL-1.1-MIT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSL-1.1-MIT.json", + "referenceNumber": 639, + "name": "Functional Source License, Version 1.1, MIT Future License", + "licenseId": "FSL-1.1-MIT", + "seeAlso": [ + "https://fsl.software/FSL-1.1-MIT.template.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FTL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FTL.json", + "referenceNumber": 417, + "name": "Freetype Project License", + "licenseId": "FTL", + "seeAlso": [ + "http://freetype.fis.uniroma2.it/FTL.TXT", + "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", + "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Furuseth.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Furuseth.json", + "referenceNumber": 72, + "name": "Furuseth License", + "licenseId": "Furuseth", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type\u003dheads#L39-51" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/fwlw.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/fwlw.json", + "referenceNumber": 529, + "name": "fwlw License", + "licenseId": "fwlw", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Game-Programming-Gems.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Game-Programming-Gems.json", + "referenceNumber": 246, + "name": "Game Programming Gems License", + "licenseId": "Game-Programming-Gems", + "seeAlso": [ + "https://github.com/OGRECave/ogre/blob/master/OgreMain/include/OgreSingleton.h#L28C3-L35C46" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GCR-docs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GCR-docs.json", + "referenceNumber": 270, + "name": "Gnome GCR Documentation License", + "licenseId": "GCR-docs", + "seeAlso": [ + "https://github.com/GNOME/gcr/blob/master/docs/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GD.json", + "referenceNumber": 549, + "name": "GD License", + "licenseId": "GD", + "seeAlso": [ + "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/generic-xts.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/generic-xts.json", + "referenceNumber": 132, + "name": "Generic XTS License", + "licenseId": "generic-xts", + "seeAlso": [ + "https://github.com/mhogomchungu/zuluCrypt/blob/master/external_libraries/tcplay/generic_xts.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", + "referenceNumber": 533, + "name": "GNU Free Documentation License v1.1", + "licenseId": "GFDL-1.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", + "referenceNumber": 271, + "name": "GNU Free Documentation License v1.1 only - invariants", + "licenseId": "GFDL-1.1-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", + "referenceNumber": 538, + "name": "GNU Free Documentation License v1.1 or later - invariants", + "licenseId": "GFDL-1.1-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", + "referenceNumber": 609, + "name": "GNU Free Documentation License v1.1 only - no invariants", + "licenseId": "GFDL-1.1-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", + "referenceNumber": 689, + "name": "GNU Free Documentation License v1.1 or later - no invariants", + "licenseId": "GFDL-1.1-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", + "referenceNumber": 456, + "name": "GNU Free Documentation License v1.1 only", + "licenseId": "GFDL-1.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", + "referenceNumber": 67, + "name": "GNU Free Documentation License v1.1 or later", + "licenseId": "GFDL-1.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", + "referenceNumber": 350, + "name": "GNU Free Documentation License v1.2", + "licenseId": "GFDL-1.2", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", + "referenceNumber": 192, + "name": "GNU Free Documentation License v1.2 only - invariants", + "licenseId": "GFDL-1.2-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", + "referenceNumber": 261, + "name": "GNU Free Documentation License v1.2 or later - invariants", + "licenseId": "GFDL-1.2-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", + "referenceNumber": 101, + "name": "GNU Free Documentation License v1.2 only - no invariants", + "licenseId": "GFDL-1.2-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", + "referenceNumber": 244, + "name": "GNU Free Documentation License v1.2 or later - no invariants", + "licenseId": "GFDL-1.2-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", + "referenceNumber": 595, + "name": "GNU Free Documentation License v1.2 only", + "licenseId": "GFDL-1.2-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", + "referenceNumber": 488, + "name": "GNU Free Documentation License v1.2 or later", + "licenseId": "GFDL-1.2-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", + "referenceNumber": 652, + "name": "GNU Free Documentation License v1.3", + "licenseId": "GFDL-1.3", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", + "referenceNumber": 69, + "name": "GNU Free Documentation License v1.3 only - invariants", + "licenseId": "GFDL-1.3-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", + "referenceNumber": 550, + "name": "GNU Free Documentation License v1.3 or later - invariants", + "licenseId": "GFDL-1.3-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", + "referenceNumber": 516, + "name": "GNU Free Documentation License v1.3 only - no invariants", + "licenseId": "GFDL-1.3-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", + "referenceNumber": 73, + "name": "GNU Free Documentation License v1.3 or later - no invariants", + "licenseId": "GFDL-1.3-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json", + "referenceNumber": 223, + "name": "GNU Free Documentation License v1.3 only", + "licenseId": "GFDL-1.3-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", + "referenceNumber": 633, + "name": "GNU Free Documentation License v1.3 or later", + "licenseId": "GFDL-1.3-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Giftware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Giftware.json", + "referenceNumber": 519, + "name": "Giftware License", + "licenseId": "Giftware", + "seeAlso": [ + "http://liballeg.org/license.html#allegro-4-the-giftware-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GL2PS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GL2PS.json", + "referenceNumber": 360, + "name": "GL2PS License", + "licenseId": "GL2PS", + "seeAlso": [ + "http://www.geuz.org/gl2ps/COPYING.GL2PS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glide.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glide.json", + "referenceNumber": 71, + "name": "3dfx Glide License", + "licenseId": "Glide", + "seeAlso": [ + "http://www.users.on.net/~triforce/glidexp/COPYING.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glulxe.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glulxe.json", + "referenceNumber": 635, + "name": "Glulxe License", + "licenseId": "Glulxe", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Glulxe" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GLWTPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", + "referenceNumber": 27, + "name": "Good Luck With That Public License", + "licenseId": "GLWTPL", + "seeAlso": [ + "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gnuplot.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gnuplot.json", + "referenceNumber": 247, + "name": "gnuplot License", + "licenseId": "gnuplot", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Gnuplot" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", + "referenceNumber": 10, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", + "referenceNumber": 177, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json", + "referenceNumber": 152, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", + "referenceNumber": 68, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json", + "referenceNumber": 688, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json", + "referenceNumber": 144, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", + "referenceNumber": 461, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt", + "https://opensource.org/licenses/GPL-2.0", + "https://github.com/openjdk/jdk/blob/6162e2c5213c5dd7c1127fd9616b543efa898962/LICENSE" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", + "referenceNumber": 99, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0", + "https://github.com/openjdk/jdk/blob/6162e2c5213c5dd7c1127fd9616b543efa898962/LICENSE" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", + "referenceNumber": 618, + "name": "GNU General Public License v2.0 w/Autoconf exception", + "licenseId": "GPL-2.0-with-autoconf-exception", + "seeAlso": [ + "http://ac-archive.sourceforge.net/doc/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", + "referenceNumber": 358, + "name": "GNU General Public License v2.0 w/Bison exception", + "licenseId": "GPL-2.0-with-bison-exception", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", + "referenceNumber": 171, + "name": "GNU General Public License v2.0 w/Classpath exception", + "licenseId": "GPL-2.0-with-classpath-exception", + "seeAlso": [ + "https://www.gnu.org/software/classpath/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", + "referenceNumber": 151, + "name": "GNU General Public License v2.0 w/Font exception", + "licenseId": "GPL-2.0-with-font-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.html#FontException" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", + "referenceNumber": 525, + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "licenseId": "GPL-2.0-with-GCC-exception", + "seeAlso": [ + "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", + "referenceNumber": 503, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", + "referenceNumber": 131, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", + "referenceNumber": 632, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", + "referenceNumber": 467, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", + "referenceNumber": 650, + "name": "GNU General Public License v3.0 w/Autoconf exception", + "licenseId": "GPL-3.0-with-autoconf-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/autoconf-exception-3.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", + "referenceNumber": 601, + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "licenseId": "GPL-3.0-with-GCC-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gcc-exception-3.1.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Graphics-Gems.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Graphics-Gems.json", + "referenceNumber": 255, + "name": "Graphics Gems License", + "licenseId": "Graphics-Gems", + "seeAlso": [ + "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gSOAP-1.3b.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json", + "referenceNumber": 668, + "name": "gSOAP Public License v1.3b", + "licenseId": "gSOAP-1.3b", + "seeAlso": [ + "http://www.cs.fsu.edu/~engelen/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gtkbook.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gtkbook.json", + "referenceNumber": 465, + "name": "gtkbook License", + "licenseId": "gtkbook", + "seeAlso": [ + "https://github.com/slogan621/gtkbook", + "https://github.com/oetiker/rrdtool-1.x/blob/master/src/plbasename.c#L8-L11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Gutmann.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Gutmann.json", + "referenceNumber": 524, + "name": "Gutmann License", + "licenseId": "Gutmann", + "seeAlso": [ + "https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HaskellReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", + "referenceNumber": 605, + "name": "Haskell Language Report License", + "licenseId": "HaskellReport", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HDF5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HDF5.json", + "referenceNumber": 19, + "name": "HDF5 License", + "licenseId": "HDF5", + "seeAlso": [ + "https://github.com/HDFGroup/hdf5/?tab\u003dLicense-1-ov-file#readme" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/hdparm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/hdparm.json", + "referenceNumber": 283, + "name": "hdparm License", + "licenseId": "hdparm", + "seeAlso": [ + "https://github.com/Distrotech/hdparm/blob/4517550db29a91420fb2b020349523b1b4512df2/LICENSE.TXT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HIDAPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HIDAPI.json", + "referenceNumber": 310, + "name": "HIDAPI License", + "licenseId": "HIDAPI", + "seeAlso": [ + "https://github.com/signal11/hidapi/blob/master/LICENSE-orig.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", + "referenceNumber": 87, + "name": "Hippocratic License 2.1", + "licenseId": "Hippocratic-2.1", + "seeAlso": [ + "https://firstdonoharm.dev/version/2/1/license.html", + "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HP-1986.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HP-1986.json", + "referenceNumber": 282, + "name": "Hewlett-Packard 1986 License", + "licenseId": "HP-1986", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/hppa/memchr.S;h\u003d1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb\u003dHEAD#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HP-1989.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HP-1989.json", + "referenceNumber": 8, + "name": "Hewlett-Packard 1989 License", + "licenseId": "HP-1989", + "seeAlso": [ + "https://github.com/bleargh45/Data-UUID/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND.json", + "referenceNumber": 209, + "name": "Historical Permission Notice and Disclaimer", + "licenseId": "HPND", + "seeAlso": [ + "https://opensource.org/licenses/HPND", + "http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/HPND-DEC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-DEC.json", + "referenceNumber": 112, + "name": "Historical Permission Notice and Disclaimer - DEC variant", + "licenseId": "HPND-DEC", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type\u003dheads#L69" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-doc.json", + "referenceNumber": 600, + "name": "Historical Permission Notice and Disclaimer - documentation variant", + "licenseId": "HPND-doc", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L185-197", + "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L70-77" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-doc-sell.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-doc-sell.json", + "referenceNumber": 306, + "name": "Historical Permission Notice and Disclaimer - documentation sell variant", + "licenseId": "HPND-doc-sell", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L108-117", + "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L153-162" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US.json", + "referenceNumber": 459, + "name": "HPND with US Government export control warning", + "licenseId": "HPND-export-US", + "seeAlso": [ + "https://www.kermitproject.org/ck90.html#source" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-acknowledgement.json", + "referenceNumber": 487, + "name": "HPND with US Government export control warning and acknowledgment", + "licenseId": "HPND-export-US-acknowledgement", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L831-L852", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US-modify.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-modify.json", + "referenceNumber": 172, + "name": "HPND with US Government export control warning and modification rqmt", + "licenseId": "HPND-export-US-modify", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182", + "https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export2-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export2-US.json", + "referenceNumber": 1, + "name": "HPND with US Government export control and 2 disclaimers", + "licenseId": "HPND-export2-US", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L111-L133", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.json", + "referenceNumber": 445, + "name": "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant", + "licenseId": "HPND-Fenneberg-Livingston", + "seeAlso": [ + "https://github.com/FreeRADIUS/freeradius-client/blob/master/COPYRIGHT#L32", + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L34" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-INRIA-IMAG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-INRIA-IMAG.json", + "referenceNumber": 233, + "name": "Historical Permission Notice and Disclaimer - INRIA-IMAG variant", + "licenseId": "HPND-INRIA-IMAG", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/ipv6cp.c#L75-L83" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Intel.json", + "referenceNumber": 228, + "name": "Historical Permission Notice and Disclaimer - Intel variant", + "licenseId": "HPND-Intel", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/i960/memcpy.S;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Kevlin-Henney.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Kevlin-Henney.json", + "referenceNumber": 528, + "name": "Historical Permission Notice and Disclaimer - Kevlin Henney variant", + "licenseId": "HPND-Kevlin-Henney", + "seeAlso": [ + "https://github.com/mruby/mruby/blob/83d12f8d52522cdb7c8cc46fad34821359f453e6/mrbgems/mruby-dir/src/Win/dirent.c#L127-L140" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Markus-Kuhn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Markus-Kuhn.json", + "referenceNumber": 623, + "name": "Historical Permission Notice and Disclaimer - Markus Kuhn variant", + "licenseId": "HPND-Markus-Kuhn", + "seeAlso": [ + "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c", + "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dreadline/readline/support/wcwidth.c;h\u003d0f5ec995796f4813abbcf4972aec0378ab74722a;hb\u003dHEAD#l55" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-merchantability-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-merchantability-variant.json", + "referenceNumber": 157, + "name": "Historical Permission Notice and Disclaimer - merchantability variant", + "licenseId": "HPND-merchantability-variant", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/misc/fini.c;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-MIT-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-MIT-disclaimer.json", + "referenceNumber": 313, + "name": "Historical Permission Notice and Disclaimer with MIT disclaimer", + "licenseId": "HPND-MIT-disclaimer", + "seeAlso": [ + "https://metacpan.org/release/NLNETLABS/Net-DNS-SEC-1.22/source/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Netrek.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Netrek.json", + "referenceNumber": 387, + "name": "Historical Permission Notice and Disclaimer - Netrek variant", + "licenseId": "HPND-Netrek", + "seeAlso": [], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Pbmplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Pbmplus.json", + "referenceNumber": 339, + "name": "Historical Permission Notice and Disclaimer - Pbmplus variant", + "licenseId": "HPND-Pbmplus", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.json", + "referenceNumber": 341, + "name": "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer", + "licenseId": "HPND-sell-MIT-disclaimer-xserver", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L1781" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-regexpr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-regexpr.json", + "referenceNumber": 681, + "name": "Historical Permission Notice and Disclaimer - sell regexpr variant", + "licenseId": "HPND-sell-regexpr", + "seeAlso": [ + "https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type\u003dheads#L245" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", + "referenceNumber": 13, + "name": "Historical Permission Notice and Disclaimer - sell variant", + "licenseId": "HPND-sell-variant", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19", + "https://github.com/kfish/xsel/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json", + "referenceNumber": 225, + "name": "HPND sell variant with MIT disclaimer", + "licenseId": "HPND-sell-variant-MIT-disclaimer", + "seeAlso": [ + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.json", + "referenceNumber": 357, + "name": "HPND sell variant with MIT disclaimer - reverse", + "licenseId": "HPND-sell-variant-MIT-disclaimer-rev", + "seeAlso": [ + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/dynlist.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC.json", + "referenceNumber": 210, + "name": "Historical Permission Notice and Disclaimer - University of California variant", + "licenseId": "HPND-UC", + "seeAlso": [ + "https://core.tcl-lang.org/tk/file?name\u003dcompat/unistd.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC-export-US.json", + "referenceNumber": 143, + "name": "Historical Permission Notice and Disclaimer - University of California, US export warning", + "licenseId": "HPND-UC-export-US", + "seeAlso": [ + "https://github.com/RTimothyEdwards/magic/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HTMLTIDY.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", + "referenceNumber": 478, + "name": "HTML Tidy License", + "licenseId": "HTMLTIDY", + "seeAlso": [ + "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IBM-pibs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", + "referenceNumber": 242, + "name": "IBM PowerPC Initialization and Boot Software", + "licenseId": "IBM-pibs", + "seeAlso": [ + "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ICU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ICU.json", + "referenceNumber": 289, + "name": "ICU License", + "licenseId": "ICU", + "seeAlso": [ + "http://source.icu-project.org/repos/icu/icu/trunk/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/IEC-Code-Components-EULA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IEC-Code-Components-EULA.json", + "referenceNumber": 399, + "name": "IEC Code Components End-user licence agreement", + "licenseId": "IEC-Code-Components-EULA", + "seeAlso": [ + "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf", + "https://www.iec.ch/CCv1", + "https://www.iec.ch/copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IJG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG.json", + "referenceNumber": 512, + "name": "Independent JPEG Group License", + "licenseId": "IJG", + "seeAlso": [ + "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/IJG-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG-short.json", + "referenceNumber": 694, + "name": "Independent JPEG Group License - short", + "licenseId": "IJG-short", + "seeAlso": [ + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ImageMagick.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", + "referenceNumber": 472, + "name": "ImageMagick License", + "licenseId": "ImageMagick", + "seeAlso": [ + "http://www.imagemagick.org/script/license.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/iMatix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/iMatix.json", + "referenceNumber": 482, + "name": "iMatix Standard Function Library Agreement", + "licenseId": "iMatix", + "seeAlso": [ + "http://legacy.imatix.com/html/sfl/sfl4.htm#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Imlib2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Imlib2.json", + "referenceNumber": 552, + "name": "Imlib2 License", + "licenseId": "Imlib2", + "seeAlso": [ + "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Info-ZIP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", + "referenceNumber": 52, + "name": "Info-ZIP License", + "licenseId": "Info-ZIP", + "seeAlso": [ + "http://www.info-zip.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Inner-Net-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Inner-Net-2.0.json", + "referenceNumber": 328, + "name": "Inner Net License v2.0", + "licenseId": "Inner-Net-2.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Inner_Net_License", + "https://sourceware.org/git/?p\u003dglibc.git;a\u003dblob;f\u003dLICENSES;h\u003d530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb\u003dHEAD#l207" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/InnoSetup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/InnoSetup.json", + "referenceNumber": 354, + "name": "Inno Setup License", + "licenseId": "InnoSetup", + "seeAlso": [ + "https://github.com/jrsoftware/issrc/blob/HEAD/license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel.json", + "referenceNumber": 419, + "name": "Intel Open Source License", + "licenseId": "Intel", + "seeAlso": [ + "https://opensource.org/licenses/Intel" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Intel-ACPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", + "referenceNumber": 206, + "name": "Intel ACPI Software License Agreement", + "licenseId": "Intel-ACPI", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Interbase-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json", + "referenceNumber": 532, + "name": "Interbase Public License v1.0", + "licenseId": "Interbase-1.0", + "seeAlso": [ + "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPA.json", + "referenceNumber": 186, + "name": "IPA Font License", + "licenseId": "IPA", + "seeAlso": [ + "https://opensource.org/licenses/IPA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/IPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", + "referenceNumber": 591, + "name": "IBM Public License v1.0", + "licenseId": "IPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/IPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ISC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC.json", + "referenceNumber": 58, + "name": "ISC License", + "licenseId": "ISC", + "seeAlso": [ + "https://www.isc.org/licenses/", + "https://www.isc.org/downloads/software-support-policy/isc-license/", + "https://opensource.org/licenses/ISC" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ISC-Veillard.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC-Veillard.json", + "referenceNumber": 317, + "name": "ISC Veillard variant", + "licenseId": "ISC-Veillard", + "seeAlso": [ + "https://raw.githubusercontent.com/GNOME/libxml2/4c2e7c651f6c2f0d1a74f350cbda95f7df3e7017/hash.c", + "https://github.com/GNOME/libxml2/blob/master/dict.c", + "https://sourceforge.net/p/ctrio/git/ci/master/tree/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Jam.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Jam.json", + "referenceNumber": 475, + "name": "Jam License", + "licenseId": "Jam", + "seeAlso": [ + "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", + "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/JasPer-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", + "referenceNumber": 103, + "name": "JasPer License", + "licenseId": "JasPer-2.0", + "seeAlso": [ + "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/jove.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/jove.json", + "referenceNumber": 642, + "name": "Jove License", + "licenseId": "jove", + "seeAlso": [ + "https://github.com/jonmacs/jove/blob/4_17/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JPL-image.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPL-image.json", + "referenceNumber": 321, + "name": "JPL Image Use Policy", + "licenseId": "JPL-image", + "seeAlso": [ + "https://www.jpl.nasa.gov/jpl-image-use-policy" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JPNIC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPNIC.json", + "referenceNumber": 655, + "name": "Japan Network Information Center License", + "licenseId": "JPNIC", + "seeAlso": [ + "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JSON.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JSON.json", + "referenceNumber": 54, + "name": "JSON License", + "licenseId": "JSON", + "seeAlso": [ + "http://www.json.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Kastrup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kastrup.json", + "referenceNumber": 491, + "name": "Kastrup License", + "licenseId": "Kastrup", + "seeAlso": [ + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Kazlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kazlib.json", + "referenceNumber": 312, + "name": "Kazlib License", + "licenseId": "Kazlib", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id\u003d0062df360c2d17d57f6af19b0e444c51feb99036" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Knuth-CTAN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Knuth-CTAN.json", + "referenceNumber": 332, + "name": "Knuth CTAN License", + "licenseId": "Knuth-CTAN", + "seeAlso": [ + "https://ctan.org/license/knuth" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", + "referenceNumber": 134, + "name": "Licence Art Libre 1.2", + "licenseId": "LAL-1.2", + "seeAlso": [ + "http://artlibre.org/licence/lal/licence-art-libre-12/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json", + "referenceNumber": 521, + "name": "Licence Art Libre 1.3", + "licenseId": "LAL-1.3", + "seeAlso": [ + "https://artlibre.org/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Latex2e.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e.json", + "referenceNumber": 43, + "name": "Latex2e License", + "licenseId": "Latex2e", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Latex2e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Latex2e-translated-notice.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e-translated-notice.json", + "referenceNumber": 523, + "name": "Latex2e with translated notice permission", + "licenseId": "Latex2e-translated-notice", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n74" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Leptonica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Leptonica.json", + "referenceNumber": 137, + "name": "Leptonica License", + "licenseId": "Leptonica", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Leptonica" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", + "referenceNumber": 676, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", + "referenceNumber": 409, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json", + "referenceNumber": 329, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", + "referenceNumber": 75, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json", + "referenceNumber": 677, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json", + "referenceNumber": 448, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", + "referenceNumber": 297, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", + "referenceNumber": 187, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json", + "referenceNumber": 9, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", + "referenceNumber": 169, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", + "referenceNumber": 634, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", + "referenceNumber": 502, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPLLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", + "referenceNumber": 123, + "name": "Lesser General Public License For Linguistic Resources", + "licenseId": "LGPLLR", + "seeAlso": [ + "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Libpng.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Libpng.json", + "referenceNumber": 62, + "name": "libpng License", + "licenseId": "Libpng", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libpng-1.6.35.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libpng-1.6.35.json", + "referenceNumber": 429, + "name": "PNG Reference Library License v1 (for libpng 0.5 through 1.6.35)", + "licenseId": "libpng-1.6.35", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libpng-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", + "referenceNumber": 226, + "name": "PNG Reference Library version 2", + "licenseId": "libpng-2.0", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libselinux-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", + "referenceNumber": 263, + "name": "libselinux public domain notice", + "licenseId": "libselinux-1.0", + "seeAlso": [ + "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libtiff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libtiff.json", + "referenceNumber": 35, + "name": "libtiff License", + "licenseId": "libtiff", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/libtiff" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libutil-David-Nugent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libutil-David-Nugent.json", + "referenceNumber": 402, + "name": "libutil David Nugent License", + "licenseId": "libutil-David-Nugent", + "seeAlso": [ + "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3", + "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", + "referenceNumber": 232, + "name": "Licence Libre du Québec – Permissive version 1.1", + "licenseId": "LiLiQ-P-1.1", + "seeAlso": [ + "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "http://opensource.org/licenses/LiLiQ-P-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", + "referenceNumber": 229, + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "licenseId": "LiLiQ-R-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-R-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", + "referenceNumber": 238, + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "licenseId": "LiLiQ-Rplus-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-Rplus-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-1-para.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-1-para.json", + "referenceNumber": 78, + "name": "Linux man-pages - 1 paragraph", + "licenseId": "Linux-man-pages-1-para", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", + "referenceNumber": 640, + "name": "Linux man-pages Copyleft", + "licenseId": "Linux-man-pages-copyleft", + "seeAlso": [ + "https://www.kernel.org/doc/man-pages/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.json", + "referenceNumber": 592, + "name": "Linux man-pages Copyleft - 2 paragraphs", + "licenseId": "Linux-man-pages-copyleft-2-para", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/move_pages.2#n5", + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/migrate_pages.2#n8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json", + "referenceNumber": 202, + "name": "Linux man-pages Copyleft Variant", + "licenseId": "Linux-man-pages-copyleft-var", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-OpenIB.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", + "referenceNumber": 513, + "name": "Linux Kernel Variant of OpenIB.org license", + "licenseId": "Linux-OpenIB", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LOOP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LOOP.json", + "referenceNumber": 237, + "name": "Common Lisp LOOP License", + "licenseId": "LOOP", + "seeAlso": [ + "https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp", + "http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h\u003dVersion_2_6_13pre", + "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp", + "https://github.com/cl-adams/adams/blob/master/LICENSE.md", + "https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp", + "https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPD-document.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPD-document.json", + "referenceNumber": 5, + "name": "LPD Documentation License", + "licenseId": "LPD-document", + "seeAlso": [ + "https://github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md", + "https://www.ietf.org/rfc/rfc1952.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", + "referenceNumber": 136, + "name": "Lucent Public License Version 1.0", + "licenseId": "LPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/LPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LPL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", + "referenceNumber": 656, + "name": "Lucent Public License v1.02", + "licenseId": "LPL-1.02", + "seeAlso": [ + "http://plan9.bell-labs.com/plan9/license.html", + "https://opensource.org/licenses/LPL-1.02" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", + "referenceNumber": 63, + "name": "LaTeX Project Public License v1.0", + "licenseId": "LPPL-1.0", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", + "referenceNumber": 542, + "name": "LaTeX Project Public License v1.1", + "licenseId": "LPPL-1.1", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", + "referenceNumber": 486, + "name": "LaTeX Project Public License v1.2", + "licenseId": "LPPL-1.2", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3a.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", + "referenceNumber": 280, + "name": "LaTeX Project Public License v1.3a", + "licenseId": "LPPL-1.3a", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3a.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3c.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", + "referenceNumber": 33, + "name": "LaTeX Project Public License v1.3c", + "licenseId": "LPPL-1.3c", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "https://opensource.org/licenses/LPPL-1.3c" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/lsof.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/lsof.json", + "referenceNumber": 563, + "name": "lsof License", + "licenseId": "lsof", + "seeAlso": [ + "https://github.com/lsof-org/lsof/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json", + "referenceNumber": 661, + "name": "Lucida Bitmap Fonts License", + "licenseId": "Lucida-Bitmap-Fonts", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", + "referenceNumber": 349, + "name": "LZMA SDK License (versions 9.11 to 9.20)", + "licenseId": "LZMA-SDK-9.11-to-9.20", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json", + "referenceNumber": 504, + "name": "LZMA SDK License (versions 9.22 and beyond)", + "licenseId": "LZMA-SDK-9.22", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause.json", + "referenceNumber": 539, + "name": "Mackerras 3-Clause License", + "licenseId": "Mackerras-3-Clause", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/chap_ms.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.json", + "referenceNumber": 433, + "name": "Mackerras 3-Clause - acknowledgment variant", + "licenseId": "Mackerras-3-Clause-acknowledgment", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/auth.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/magaz.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/magaz.json", + "referenceNumber": 373, + "name": "magaz License", + "licenseId": "magaz", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex", + "https://mirrors.ctan.org/macros/latex/contrib/version/version.sty" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mailprio.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mailprio.json", + "referenceNumber": 381, + "name": "mailprio License", + "licenseId": "mailprio", + "seeAlso": [ + "https://fossies.org/linux/sendmail/contrib/mailprio" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MakeIndex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", + "referenceNumber": 165, + "name": "MakeIndex License", + "licenseId": "MakeIndex", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MakeIndex" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/man2html.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/man2html.json", + "referenceNumber": 120, + "name": "man2html License", + "licenseId": "man2html", + "seeAlso": [ + "http://primates.ximian.com/~flucifredi/man/man-1.6g.tar.gz", + "https://github.com/hamano/man2html/blob/master/man2html.c", + "https://docs.oracle.com/cd/E81115_01/html/E81116/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Martin-Birgmeier.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Martin-Birgmeier.json", + "referenceNumber": 361, + "name": "Martin Birgmeier License", + "licenseId": "Martin-Birgmeier", + "seeAlso": [ + "https://github.com/Perl/perl5/blob/blead/util.c#L6136" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/McPhee-slideshow.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/McPhee-slideshow.json", + "referenceNumber": 489, + "name": "McPhee Slideshow License", + "licenseId": "McPhee-slideshow", + "seeAlso": [ + "https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/metamail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/metamail.json", + "referenceNumber": 455, + "name": "metamail License", + "licenseId": "metamail", + "seeAlso": [ + "https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Minpack.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Minpack.json", + "referenceNumber": 28, + "name": "Minpack License", + "licenseId": "Minpack", + "seeAlso": [ + "http://www.netlib.org/minpack/disclaimer", + "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIPS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIPS.json", + "referenceNumber": 351, + "name": "MIPS License", + "licenseId": "MIPS", + "seeAlso": [ + "https://sourceware.org/cgit/binutils-gdb/tree/include/coff/sym.h#n11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MirOS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MirOS.json", + "referenceNumber": 692, + "name": "The MirOS Licence", + "licenseId": "MirOS", + "seeAlso": [ + "https://opensource.org/licenses/MirOS" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT.json", + "referenceNumber": 515, + "name": "MIT License", + "licenseId": "MIT", + "seeAlso": [ + "https://opensource.org/license/mit/", + "http://opensource.org/licenses/MIT" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MIT-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-0.json", + "referenceNumber": 173, + "name": "MIT No Attribution", + "licenseId": "MIT-0", + "seeAlso": [ + "https://github.com/aws/mit-0", + "https://romanrm.net/mit-zero", + "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT-advertising.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", + "referenceNumber": 440, + "name": "Enlightenment License (e16)", + "licenseId": "MIT-advertising", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Click.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Click.json", + "referenceNumber": 438, + "name": "MIT Click License", + "licenseId": "MIT-Click", + "seeAlso": [ + "https://github.com/kohler/t1utils/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-CMU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json", + "referenceNumber": 287, + "name": "CMU License", + "licenseId": "MIT-CMU", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style", + "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-enna.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", + "referenceNumber": 580, + "name": "enna License", + "licenseId": "MIT-enna", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#enna" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-feh.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", + "referenceNumber": 408, + "name": "feh License", + "licenseId": "MIT-feh", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#feh" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Festival.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Festival.json", + "referenceNumber": 18, + "name": "MIT Festival Variant", + "licenseId": "MIT-Festival", + "seeAlso": [ + "https://github.com/festvox/flite/blob/master/COPYING", + "https://github.com/festvox/speech_tools/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Khronos-old.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Khronos-old.json", + "referenceNumber": 508, + "name": "MIT Khronos - old variant", + "licenseId": "MIT-Khronos-old", + "seeAlso": [ + "https://github.com/KhronosGroup/SPIRV-Cross/blob/main/LICENSES/LicenseRef-KhronosFreeUse.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", + "referenceNumber": 304, + "name": "MIT License Modern Variant", + "licenseId": "MIT-Modern-Variant", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", + "https://ptolemy.berkeley.edu/copyright.htm", + "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT-open-group.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", + "referenceNumber": 404, + "name": "MIT Open Group variant", + "licenseId": "MIT-open-group", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-testregex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-testregex.json", + "referenceNumber": 496, + "name": "MIT testregex Variant", + "licenseId": "MIT-testregex", + "seeAlso": [ + "https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Wu.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Wu.json", + "referenceNumber": 355, + "name": "MIT Tom Wu Variant", + "licenseId": "MIT-Wu", + "seeAlso": [ + "https://github.com/chromium/octane/blob/master/crypto.js" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MITNFA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MITNFA.json", + "referenceNumber": 473, + "name": "MIT +no-false-attribs license", + "licenseId": "MITNFA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MITNFA" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MMIXware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MMIXware.json", + "referenceNumber": 663, + "name": "MMIXware License", + "licenseId": "MMIXware", + "seeAlso": [ + "https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Motosoto.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Motosoto.json", + "referenceNumber": 507, + "name": "Motosoto License", + "licenseId": "Motosoto", + "seeAlso": [ + "https://opensource.org/licenses/Motosoto" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MPEG-SSG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPEG-SSG.json", + "referenceNumber": 303, + "name": "MPEG Software Simulation", + "licenseId": "MPEG-SSG", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpi-permissive.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json", + "referenceNumber": 213, + "name": "mpi Permissive License", + "licenseId": "mpi-permissive", + "seeAlso": [ + "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl\u003d19#L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpich2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpich2.json", + "referenceNumber": 102, + "name": "mpich2 License", + "licenseId": "mpich2", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", + "referenceNumber": 665, + "name": "Mozilla Public License 1.0", + "licenseId": "MPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.0.html", + "https://opensource.org/licenses/MPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", + "referenceNumber": 679, + "name": "Mozilla Public License 1.1", + "licenseId": "MPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.1.html", + "https://opensource.org/licenses/MPL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json", + "referenceNumber": 599, + "name": "Mozilla Public License 2.0", + "licenseId": "MPL-2.0", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", + "referenceNumber": 174, + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "licenseId": "MPL-2.0-no-copyleft-exception", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/mplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mplus.json", + "referenceNumber": 17, + "name": "mplus Font License", + "licenseId": "mplus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Mplus?rd\u003dLicensing/mplus" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-LPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-LPL.json", + "referenceNumber": 674, + "name": "Microsoft Limited Public License", + "licenseId": "MS-LPL", + "seeAlso": [ + "https://www.openhub.net/licenses/mslpl", + "https://github.com/gabegundy/atlserver/blob/master/License.txt", + "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-PL.json", + "referenceNumber": 698, + "name": "Microsoft Public License", + "licenseId": "MS-PL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-PL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MS-RL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-RL.json", + "referenceNumber": 276, + "name": "Microsoft Reciprocal License", + "licenseId": "MS-RL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-RL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MTLL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MTLL.json", + "referenceNumber": 588, + "name": "Matrix Template Library License", + "licenseId": "MTLL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", + "referenceNumber": 320, + "name": "Mulan Permissive Software License, Version 1", + "licenseId": "MulanPSL-1.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL/", + "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", + "referenceNumber": 182, + "name": "Mulan Permissive Software License, Version 2", + "licenseId": "MulanPSL-2.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Multics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Multics.json", + "referenceNumber": 60, + "name": "Multics License", + "licenseId": "Multics", + "seeAlso": [ + "https://opensource.org/licenses/Multics" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Mup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mup.json", + "referenceNumber": 288, + "name": "Mup License", + "licenseId": "Mup", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Mup" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NAIST-2003.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", + "referenceNumber": 462, + "name": "Nara Institute of Science and Technology License (2003)", + "licenseId": "NAIST-2003", + "seeAlso": [ + "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", + "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NASA-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", + "referenceNumber": 432, + "name": "NASA Open Source Agreement 1.3", + "licenseId": "NASA-1.3", + "seeAlso": [ + "http://ti.arc.nasa.gov/opensource/nosa/", + "https://opensource.org/licenses/NASA-1.3" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Naumen.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Naumen.json", + "referenceNumber": 307, + "name": "Naumen Public License", + "licenseId": "Naumen", + "seeAlso": [ + "https://opensource.org/licenses/Naumen" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NBPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", + "referenceNumber": 460, + "name": "Net Boolean Public License v1", + "licenseId": "NBPL-1.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCBI-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCBI-PD.json", + "referenceNumber": 696, + "name": "NCBI Public Domain Notice", + "licenseId": "NCBI-PD", + "seeAlso": [ + "https://github.com/ncbi/sra-tools/blob/e8e5b6af4edc460156ad9ce5902d0779cffbf685/LICENSE", + "https://github.com/ncbi/datasets/blob/0ea4cd16b61e5b799d9cc55aecfa016d6c9bd2bf/LICENSE.md", + "https://github.com/ncbi/gprobe/blob/de64d30fee8b4c4013094d7d3139ea89b5dd1ace/LICENSE", + "https://github.com/ncbi/egapx/blob/08930b9dec0c69b2d1a05e5153c7b95ef0a3eb0f/LICENSE", + "https://github.com/ncbi/datasets/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", + "referenceNumber": 392, + "name": "Non-Commercial Government Licence", + "licenseId": "NCGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCL.json", + "referenceNumber": 154, + "name": "NCL Source Code License", + "licenseId": "NCL", + "seeAlso": [ + "https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/modules/module-filter-chain/pffft.c?ref_type\u003dheads#L1-52" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCSA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCSA.json", + "referenceNumber": 148, + "name": "University of Illinois/NCSA Open Source License", + "licenseId": "NCSA", + "seeAlso": [ + "http://otm.illinois.edu/uiuc_openSource", + "https://opensource.org/licenses/NCSA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Net-SNMP.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", + "referenceNumber": 638, + "name": "Net-SNMP License", + "licenseId": "Net-SNMP", + "seeAlso": [ + "http://net-snmp.sourceforge.net/about/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NetCDF.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NetCDF.json", + "referenceNumber": 626, + "name": "NetCDF license", + "licenseId": "NetCDF", + "seeAlso": [ + "http://www.unidata.ucar.edu/software/netcdf/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Newsletr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Newsletr.json", + "referenceNumber": 607, + "name": "Newsletr License", + "licenseId": "Newsletr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Newsletr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NGPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NGPL.json", + "referenceNumber": 64, + "name": "Nethack General Public License", + "licenseId": "NGPL", + "seeAlso": [ + "https://opensource.org/licenses/NGPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ngrep.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ngrep.json", + "referenceNumber": 16, + "name": "ngrep License", + "licenseId": "ngrep", + "seeAlso": [ + "https://github.com/jpr5/ngrep/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NICTA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json", + "referenceNumber": 406, + "name": "NICTA Public Software License, Version 1.0", + "licenseId": "NICTA-1.0", + "seeAlso": [ + "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", + "referenceNumber": 98, + "name": "NIST Public Domain Notice", + "licenseId": "NIST-PD", + "seeAlso": [ + "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", + "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", + "referenceNumber": 616, + "name": "NIST Public Domain Notice with license fallback", + "licenseId": "NIST-PD-fallback", + "seeAlso": [ + "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", + "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-Software.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-Software.json", + "referenceNumber": 447, + "name": "NIST Software License", + "licenseId": "NIST-Software", + "seeAlso": [ + "https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLOD-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", + "referenceNumber": 249, + "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", + "licenseId": "NLOD-1.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLOD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", + "referenceNumber": 687, + "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", + "licenseId": "NLOD-2.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLPL.json", + "referenceNumber": 161, + "name": "No Limit Public License", + "licenseId": "NLPL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/NLPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nokia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Nokia.json", + "referenceNumber": 464, + "name": "Nokia Open Source License", + "licenseId": "Nokia", + "seeAlso": [ + "https://opensource.org/licenses/nokia" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NOSL.json", + "referenceNumber": 471, + "name": "Netizen Open Source License", + "licenseId": "NOSL", + "seeAlso": [ + "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Noweb.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Noweb.json", + "referenceNumber": 77, + "name": "Noweb License", + "licenseId": "Noweb", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Noweb" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", + "referenceNumber": 372, + "name": "Netscape Public License v1.0", + "licenseId": "NPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json", + "referenceNumber": 518, + "name": "Netscape Public License v1.1", + "licenseId": "NPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.1/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NPOSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", + "referenceNumber": 195, + "name": "Non-Profit Open Software License 3.0", + "licenseId": "NPOSL-3.0", + "seeAlso": [ + "https://opensource.org/licenses/NOSL3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NRL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NRL.json", + "referenceNumber": 146, + "name": "NRL License", + "licenseId": "NRL", + "seeAlso": [ + "http://web.mit.edu/network/isakmp/nrllicense.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NTIA-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTIA-PD.json", + "referenceNumber": 426, + "name": "NTIA Public Domain Notice", + "licenseId": "NTIA-PD", + "seeAlso": [ + "https://raw.githubusercontent.com/NTIA/itm/refs/heads/master/LICENSE.md", + "https://raw.githubusercontent.com/NTIA/scos-sensor/refs/heads/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NTP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP.json", + "referenceNumber": 621, + "name": "NTP License", + "licenseId": "NTP", + "seeAlso": [ + "https://opensource.org/licenses/NTP" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NTP-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP-0.json", + "referenceNumber": 566, + "name": "NTP No Attribution", + "licenseId": "NTP-0", + "seeAlso": [ + "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nunit.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Nunit.json", + "referenceNumber": 203, + "name": "Nunit License", + "licenseId": "Nunit", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Nunit" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/O-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", + "referenceNumber": 485, + "name": "Open Use of Data Agreement v1.0", + "licenseId": "O-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", + "https://cdla.dev/open-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OAR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OAR.json", + "referenceNumber": 251, + "name": "OAR License", + "licenseId": "OAR", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/string/strsignal.c;hb\u003dHEAD#l35" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCCT-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", + "referenceNumber": 371, + "name": "Open CASCADE Technology Public License", + "licenseId": "OCCT-PL", + "seeAlso": [ + "http://www.opencascade.com/content/occt-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCLC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", + "referenceNumber": 274, + "name": "OCLC Research Public License 2.0", + "licenseId": "OCLC-2.0", + "seeAlso": [ + "http://www.oclc.org/research/activities/software/license/v2final.htm", + "https://opensource.org/licenses/OCLC-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ODbL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", + "referenceNumber": 397, + "name": "Open Data Commons Open Database License v1.0", + "licenseId": "ODbL-1.0", + "seeAlso": [ + "http://www.opendatacommons.org/licenses/odbl/1.0/", + "https://opendatacommons.org/licenses/odbl/1-0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ODC-By-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", + "referenceNumber": 46, + "name": "Open Data Commons Attribution License v1.0", + "licenseId": "ODC-By-1.0", + "seeAlso": [ + "https://opendatacommons.org/licenses/by/1.0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFFIS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFFIS.json", + "referenceNumber": 368, + "name": "OFFIS License", + "licenseId": "OFFIS", + "seeAlso": [ + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", + "referenceNumber": 589, + "name": "SIL Open Font License 1.0", + "licenseId": "OFL-1.0", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", + "referenceNumber": 653, + "name": "SIL Open Font License 1.0 with no Reserved Font Name", + "licenseId": "OFL-1.0-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json", + "referenceNumber": 201, + "name": "SIL Open Font License 1.0 with Reserved Font Name", + "licenseId": "OFL-1.0-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", + "referenceNumber": 608, + "name": "SIL Open Font License 1.1", + "licenseId": "OFL-1.1", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", + "referenceNumber": 204, + "name": "SIL Open Font License 1.1 with no Reserved Font Name", + "licenseId": "OFL-1.1-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", + "referenceNumber": 82, + "name": "SIL Open Font License 1.1 with Reserved Font Name", + "licenseId": "OFL-1.1-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OGC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", + "referenceNumber": 612, + "name": "OGC Software License, Version 1.0", + "licenseId": "OGC-1.0", + "seeAlso": [ + "https://www.ogc.org/ogc/software/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", + "referenceNumber": 129, + "name": "Taiwan Open Government Data License, version 1.0", + "licenseId": "OGDL-Taiwan-1.0", + "seeAlso": [ + "https://data.gov.tw/license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", + "referenceNumber": 544, + "name": "Open Government Licence - Canada", + "licenseId": "OGL-Canada-2.0", + "seeAlso": [ + "https://open.canada.ca/en/open-government-licence-canada" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json", + "referenceNumber": 168, + "name": "Open Government Licence v1.0", + "licenseId": "OGL-UK-1.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", + "referenceNumber": 400, + "name": "Open Government Licence v2.0", + "licenseId": "OGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", + "referenceNumber": 570, + "name": "Open Government Licence v3.0", + "licenseId": "OGL-UK-3.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGTSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGTSL.json", + "referenceNumber": 534, + "name": "Open Group Test Suite License", + "licenseId": "OGTSL", + "seeAlso": [ + "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "https://opensource.org/licenses/OGTSL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", + "referenceNumber": 333, + "name": "Open LDAP Public License v1.1", + "licenseId": "OLDAP-1.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", + "referenceNumber": 281, + "name": "Open LDAP Public License v1.2", + "licenseId": "OLDAP-1.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", + "referenceNumber": 386, + "name": "Open LDAP Public License v1.3", + "licenseId": "OLDAP-1.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", + "referenceNumber": 105, + "name": "Open LDAP Public License v1.4", + "licenseId": "OLDAP-1.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", + "referenceNumber": 657, + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "licenseId": "OLDAP-2.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", + "referenceNumber": 654, + "name": "Open LDAP Public License v2.0.1", + "licenseId": "OLDAP-2.0.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", + "referenceNumber": 170, + "name": "Open LDAP Public License v2.1", + "licenseId": "OLDAP-2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", + "referenceNumber": 667, + "name": "Open LDAP Public License v2.2", + "licenseId": "OLDAP-2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json", + "referenceNumber": 378, + "name": "Open LDAP Public License v2.2.1", + "licenseId": "OLDAP-2.2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d4bc786f34b50aa301be6f5600f58a980070f481e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", + "referenceNumber": 314, + "name": "Open LDAP Public License 2.2.2", + "licenseId": "OLDAP-2.2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", + "referenceNumber": 411, + "name": "Open LDAP Public License v2.3", + "licenseId": "OLDAP-2.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", + "referenceNumber": 382, + "name": "Open LDAP Public License v2.4", + "licenseId": "OLDAP-2.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json", + "referenceNumber": 443, + "name": "Open LDAP Public License v2.5", + "licenseId": "OLDAP-2.5", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", + "referenceNumber": 344, + "name": "Open LDAP Public License v2.6", + "licenseId": "OLDAP-2.6", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.7.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", + "referenceNumber": 574, + "name": "Open LDAP Public License v2.7", + "licenseId": "OLDAP-2.7", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", + "referenceNumber": 364, + "name": "Open LDAP Public License v2.8", + "licenseId": "OLDAP-2.8", + "seeAlso": [ + "http://www.openldap.org/software/release/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLFL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLFL-1.3.json", + "referenceNumber": 121, + "name": "Open Logistics Foundation License Version 1.3", + "licenseId": "OLFL-1.3", + "seeAlso": [ + "https://openlogisticsfoundation.org/licenses/", + "https://opensource.org/license/olfl-1-3/" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OML.json", + "referenceNumber": 116, + "name": "Open Market License", + "licenseId": "OML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Open_Market_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenPBS-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenPBS-2.3.json", + "referenceNumber": 2, + "name": "OpenPBS v2.3 Software License", + "licenseId": "OpenPBS-2.3", + "seeAlso": [ + "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt", + "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenSSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenSSL.json", + "referenceNumber": 275, + "name": "OpenSSL License", + "licenseId": "OpenSSL", + "seeAlso": [ + "http://www.openssl.org/source/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OpenSSL-standalone.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenSSL-standalone.json", + "referenceNumber": 128, + "name": "OpenSSL License - standalone", + "licenseId": "OpenSSL-standalone", + "seeAlso": [ + "https://library.netapp.com/ecm/ecm_download_file/ECMP1196395", + "https://hstechdocs.helpsystems.com/manuals/globalscape/archive/cuteftp6/open_ssl_license_agreement.htm" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenVision.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenVision.json", + "referenceNumber": 36, + "name": "OpenVision License", + "licenseId": "OpenVision", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L66-L98", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html", + "https://fedoraproject.org/wiki/Licensing:MIT#OpenVision_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", + "referenceNumber": 614, + "name": "Open Public License v1.0", + "licenseId": "OPL-1.0", + "seeAlso": [ + "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "https://fedoraproject.org/wiki/Licensing/Open_Public_License" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/OPL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-UK-3.0.json", + "referenceNumber": 285, + "name": "United Kingdom Open Parliament Licence v3.0", + "licenseId": "OPL-UK-3.0", + "seeAlso": [ + "https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPUBL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", + "referenceNumber": 414, + "name": "Open Publication License v1.0", + "licenseId": "OPUBL-1.0", + "seeAlso": [ + "http://opencontent.org/openpub/", + "https://www.debian.org/opl", + "https://www.ctan.org/license/opl" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", + "referenceNumber": 183, + "name": "OSET Public License version 2.1", + "licenseId": "OSET-PL-2.1", + "seeAlso": [ + "http://www.osetfoundation.org/public-license", + "https://opensource.org/licenses/OPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", + "referenceNumber": 651, + "name": "Open Software License 1.0", + "licenseId": "OSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/OSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", + "referenceNumber": 453, + "name": "Open Software License 1.1", + "licenseId": "OSL-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/OSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json", + "referenceNumber": 179, + "name": "Open Software License 2.0", + "licenseId": "OSL-2.0", + "seeAlso": [ + "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", + "referenceNumber": 29, + "name": "Open Software License 2.1", + "licenseId": "OSL-2.1", + "seeAlso": [ + "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "https://opensource.org/licenses/OSL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", + "referenceNumber": 3, + "name": "Open Software License 3.0", + "licenseId": "OSL-3.0", + "seeAlso": [ + "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "https://opensource.org/licenses/OSL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/PADL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PADL.json", + "referenceNumber": 284, + "name": "PADL License", + "licenseId": "PADL", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type\u003dheads#L19-23" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-6.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", + "referenceNumber": 241, + "name": "The Parity Public License 6.0.0", + "licenseId": "Parity-6.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/6.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-7.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", + "referenceNumber": 235, + "name": "The Parity Public License 7.0.0", + "licenseId": "Parity-7.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/7.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", + "referenceNumber": 684, + "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0", + "licenseId": "PDDL-1.0", + "seeAlso": [ + "http://opendatacommons.org/licenses/pddl/1.0/", + "https://opendatacommons.org/licenses/pddl/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PHP-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", + "referenceNumber": 133, + "name": "PHP License v3.0", + "licenseId": "PHP-3.0", + "seeAlso": [ + "http://www.php.net/license/3_0.txt", + "https://opensource.org/licenses/PHP-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/PHP-3.01.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json", + "referenceNumber": 221, + "name": "PHP License v3.01", + "licenseId": "PHP-3.01", + "seeAlso": [ + "http://www.php.net/license/3_01.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Pixar.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Pixar.json", + "referenceNumber": 435, + "name": "Pixar License", + "licenseId": "Pixar", + "seeAlso": [ + "https://github.com/PixarAnimationStudios/OpenSubdiv/raw/v3_5_0/LICENSE.txt", + "https://graphics.pixar.com/opensubdiv/docs/license.html", + "https://github.com/PixarAnimationStudios/OpenSubdiv/blob/v3_5_0/opensubdiv/version.cpp#L2-L22" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/pkgconf.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/pkgconf.json", + "referenceNumber": 670, + "name": "pkgconf License", + "licenseId": "pkgconf", + "seeAlso": [ + "https://github.com/pkgconf/pkgconf/blob/master/cli/main.c#L8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Plexus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Plexus.json", + "referenceNumber": 181, + "name": "Plexus Classworlds License", + "licenseId": "Plexus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/pnmstitch.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/pnmstitch.json", + "referenceNumber": 691, + "name": "pnmstitch License", + "licenseId": "pnmstitch", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", + "referenceNumber": 119, + "name": "PolyForm Noncommercial License 1.0.0", + "licenseId": "PolyForm-Noncommercial-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/noncommercial/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", + "referenceNumber": 30, + "name": "PolyForm Small Business License 1.0.0", + "licenseId": "PolyForm-Small-Business-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/small-business/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PostgreSQL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", + "referenceNumber": 697, + "name": "PostgreSQL License", + "licenseId": "PostgreSQL", + "seeAlso": [ + "http://www.postgresql.org/about/licence", + "https://opensource.org/licenses/PostgreSQL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/PPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PPL.json", + "referenceNumber": 150, + "name": "Peer Production License", + "licenseId": "PPL", + "seeAlso": [ + "https://wiki.p2pfoundation.net/Peer_Production_License", + "http://www.networkcultures.org/_uploads/%233notebook_telekommunist.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/PSF-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", + "referenceNumber": 211, + "name": "Python Software Foundation License 2.0", + "licenseId": "PSF-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0", + "https://matplotlib.org/stable/project/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/psfrag.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psfrag.json", + "referenceNumber": 423, + "name": "psfrag License", + "licenseId": "psfrag", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psfrag" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/psutils.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psutils.json", + "referenceNumber": 500, + "name": "psutils License", + "licenseId": "psutils", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psutils" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Python-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Python-2.0.json", + "referenceNumber": 628, + "name": "Python License 2.0", + "licenseId": "Python-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Python-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json", + "referenceNumber": 586, + "name": "Python License 2.0.1", + "licenseId": "Python-2.0.1", + "seeAlso": [ + "https://www.python.org/download/releases/2.0.1/license/", + "https://docs.python.org/3/license.html", + "https://github.com/python/cpython/blob/main/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/python-ldap.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/python-ldap.json", + "referenceNumber": 630, + "name": "Python ldap License", + "licenseId": "python-ldap", + "seeAlso": [ + "https://github.com/python-ldap/python-ldap/blob/main/LICENCE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Qhull.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Qhull.json", + "referenceNumber": 590, + "name": "Qhull License", + "licenseId": "Qhull", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Qhull" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", + "referenceNumber": 693, + "name": "Q Public License 1.0", + "licenseId": "QPL-1.0", + "seeAlso": [ + "http://doc.qt.nokia.com/3.3/license.html", + "https://opensource.org/licenses/QPL-1.0", + "https://doc.qt.io/archives/3.3/license.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json", + "referenceNumber": 117, + "name": "Q Public License 1.0 - INRIA 2004 variant", + "licenseId": "QPL-1.0-INRIA-2004", + "seeAlso": [ + "https://github.com/maranget/hevea/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/radvd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/radvd.json", + "referenceNumber": 678, + "name": "radvd License", + "licenseId": "radvd", + "seeAlso": [ + "https://github.com/radvd-project/radvd/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Rdisc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Rdisc.json", + "referenceNumber": 4, + "name": "Rdisc License", + "licenseId": "Rdisc", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Rdisc_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RHeCos-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", + "referenceNumber": 258, + "name": "Red Hat eCos Public License v1.1", + "licenseId": "RHeCos-1.1", + "seeAlso": [ + "http://ecos.sourceware.org/old-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/RPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", + "referenceNumber": 57, + "name": "Reciprocal Public License 1.1", + "licenseId": "RPL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/RPL-1.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", + "referenceNumber": 413, + "name": "Reciprocal Public License 1.5", + "licenseId": "RPL-1.5", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.5" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/RPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json", + "referenceNumber": 104, + "name": "RealNetworks Public Source License v1.0", + "licenseId": "RPSL-1.0", + "seeAlso": [ + "https://helixcommunity.org/content/rpsl", + "https://opensource.org/licenses/RPSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/RSA-MD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", + "referenceNumber": 12, + "name": "RSA Message-Digest License", + "licenseId": "RSA-MD", + "seeAlso": [ + "http://www.faqs.org/rfcs/rfc1321.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RSCPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSCPL.json", + "referenceNumber": 166, + "name": "Ricoh Source Code Public License", + "licenseId": "RSCPL", + "seeAlso": [ + "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "https://opensource.org/licenses/RSCPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Ruby.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ruby.json", + "referenceNumber": 490, + "name": "Ruby License", + "licenseId": "Ruby", + "seeAlso": [ + "https://www.ruby-lang.org/en/about/license.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Ruby-pty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ruby-pty.json", + "referenceNumber": 509, + "name": "Ruby pty extension license", + "licenseId": "Ruby-pty", + "seeAlso": [ + "https://github.com/ruby/ruby/blob/9f6deaa6888a423720b4b127b5314f0ad26cc2e6/ext/pty/pty.c#L775-L786", + "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-ef5fa30838d6d0cecad9e675cc50b24628cfe2cb277c346053fafcc36c91c204", + "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-fedf217c1ce44bda01f0a678d3ff8b198bed478754d699c527a698ad933979a0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SAX-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", + "referenceNumber": 22, + "name": "Sax Public Domain Notice", + "licenseId": "SAX-PD", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SAX-PD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD-2.0.json", + "referenceNumber": 346, + "name": "Sax Public Domain Notice 2.0", + "licenseId": "SAX-PD-2.0", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Saxpath.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Saxpath.json", + "referenceNumber": 390, + "name": "Saxpath License", + "licenseId": "Saxpath", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Saxpath_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SCEA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SCEA.json", + "referenceNumber": 484, + "name": "SCEA Shared Source License", + "licenseId": "SCEA", + "seeAlso": [ + "http://research.scea.com/scea_shared_source_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SchemeReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", + "referenceNumber": 91, + "name": "Scheme Language Report License", + "licenseId": "SchemeReport", + "seeAlso": [], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail.json", + "referenceNumber": 266, + "name": "Sendmail License", + "licenseId": "Sendmail", + "seeAlso": [ + "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail-8.23.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", + "referenceNumber": 55, + "name": "Sendmail License 8.23", + "licenseId": "Sendmail-8.23", + "seeAlso": [ + "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail-Open-Source-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail-Open-Source-1.1.json", + "referenceNumber": 620, + "name": "Sendmail Open Source License v1.1", + "licenseId": "Sendmail-Open-Source-1.1", + "seeAlso": [ + "https://github.com/trusteddomainproject/OpenDMARC/blob/master/LICENSE.Sendmail" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", + "referenceNumber": 56, + "name": "SGI Free Software License B v1.0", + "licenseId": "SGI-B-1.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", + "referenceNumber": 296, + "name": "SGI Free Software License B v1.1", + "licenseId": "SGI-B-1.1", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", + "referenceNumber": 617, + "name": "SGI Free Software License B v2.0", + "licenseId": "SGI-B-2.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SGI-OpenGL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-OpenGL.json", + "referenceNumber": 34, + "name": "SGI OpenGL License", + "licenseId": "SGI-OpenGL", + "seeAlso": [ + "https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGP4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGP4.json", + "referenceNumber": 572, + "name": "SGP4 Permission Notice", + "licenseId": "SGP4", + "seeAlso": [ + "https://celestrak.org/publications/AIAA/2006-6753/faq.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", + "referenceNumber": 267, + "name": "Solderpad Hardware License v0.5", + "licenseId": "SHL-0.5", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.5/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.51.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", + "referenceNumber": 582, + "name": "Solderpad Hardware License, Version 0.51", + "licenseId": "SHL-0.51", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.51/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SimPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", + "referenceNumber": 452, + "name": "Simple Public License 2.0", + "licenseId": "SimPL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/SimPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SISSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL.json", + "referenceNumber": 110, + "name": "Sun Industry Standards Source License v1.1", + "licenseId": "SISSL", + "seeAlso": [ + "http://www.openoffice.org/licenses/sissl_license.html", + "https://opensource.org/licenses/SISSL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SISSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", + "referenceNumber": 253, + "name": "Sun Industry Standards Source License v1.2", + "licenseId": "SISSL-1.2", + "seeAlso": [ + "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SL.json", + "referenceNumber": 83, + "name": "SL License", + "licenseId": "SL", + "seeAlso": [ + "https://github.com/mtoyoda/sl/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sleepycat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", + "referenceNumber": 42, + "name": "Sleepycat License", + "licenseId": "Sleepycat", + "seeAlso": [ + "https://opensource.org/licenses/Sleepycat" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SMAIL-GPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMAIL-GPL.json", + "referenceNumber": 546, + "name": "SMAIL General Public License", + "licenseId": "SMAIL-GPL", + "seeAlso": [ + "https://sources.debian.org/copyright/license/debianutils/4.11.2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SMLNJ.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", + "referenceNumber": 81, + "name": "Standard ML of New Jersey License", + "licenseId": "SMLNJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SMPPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMPPL.json", + "referenceNumber": 579, + "name": "Secure Messaging Protocol Public License", + "licenseId": "SMPPL", + "seeAlso": [ + "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SNIA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SNIA.json", + "referenceNumber": 224, + "name": "SNIA Public License 1.1", + "licenseId": "SNIA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/snprintf.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/snprintf.json", + "referenceNumber": 594, + "name": "snprintf License", + "licenseId": "snprintf", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SOFA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SOFA.json", + "referenceNumber": 375, + "name": "SOFA Software License", + "licenseId": "SOFA", + "seeAlso": [ + "http://www.iausofa.org/tandc.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/softSurfer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/softSurfer.json", + "referenceNumber": 593, + "name": "softSurfer License", + "licenseId": "softSurfer", + "seeAlso": [ + "https://github.com/mm2/Little-CMS/blob/master/src/cmssm.c#L207", + "https://fedoraproject.org/wiki/Licensing/softSurfer" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Soundex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Soundex.json", + "referenceNumber": 374, + "name": "Soundex License", + "licenseId": "Soundex", + "seeAlso": [ + "https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-86.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", + "referenceNumber": 193, + "name": "Spencer License 86", + "licenseId": "Spencer-86", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-94.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", + "referenceNumber": 451, + "name": "Spencer License 94", + "licenseId": "Spencer-94", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-99.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", + "referenceNumber": 220, + "name": "Spencer License 99", + "licenseId": "Spencer-99", + "seeAlso": [ + "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", + "referenceNumber": 342, + "name": "Sun Public License v1.0", + "licenseId": "SPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/SPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ssh-keyscan.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ssh-keyscan.json", + "referenceNumber": 537, + "name": "ssh-keyscan License", + "licenseId": "ssh-keyscan", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", + "referenceNumber": 463, + "name": "SSH OpenSSH license", + "licenseId": "SSH-OpenSSH", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSH-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-short.json", + "referenceNumber": 573, + "name": "SSH short notice", + "licenseId": "SSH-short", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", + "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", + "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSLeay-standalone.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSLeay-standalone.json", + "referenceNumber": 96, + "name": "SSLeay License - standalone", + "licenseId": "SSLeay-standalone", + "seeAlso": [ + "https://www.tq-group.com/filedownloads/files/software-license-conditions/OriginalSSLeay/OriginalSSLeay.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", + "referenceNumber": 664, + "name": "Server Side Public License, v 1", + "licenseId": "SSPL-1.0", + "seeAlso": [ + "https://www.mongodb.com/licensing/server-side-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/StandardML-NJ.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", + "referenceNumber": 501, + "name": "Standard ML of New Jersey License", + "licenseId": "StandardML-NJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json", + "referenceNumber": 222, + "name": "SugarCRM Public License v1.1.3", + "licenseId": "SugarCRM-1.1.3", + "seeAlso": [ + "http://www.sugarcrm.com/crm/SPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SUL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SUL-1.0.json", + "referenceNumber": 557, + "name": "Sustainable Use License v1.0", + "licenseId": "SUL-1.0", + "seeAlso": [ + "https://github.com/n8n-io/n8n/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP.json", + "referenceNumber": 39, + "name": "Sun PPP License", + "licenseId": "Sun-PPP", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/eap.c#L7-L16" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP-2000.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP-2000.json", + "referenceNumber": 70, + "name": "Sun PPP License (2000)", + "licenseId": "Sun-PPP-2000", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/modules/ppp_ahdlc.c#L7-L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SunPro.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SunPro.json", + "referenceNumber": 395, + "name": "SunPro License", + "licenseId": "SunPro", + "seeAlso": [ + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c", + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SWL.json", + "referenceNumber": 196, + "name": "Scheme Widget Library (SWL) Software License Agreement", + "licenseId": "SWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SWL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/swrule.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/swrule.json", + "referenceNumber": 348, + "name": "swrule License", + "licenseId": "swrule", + "seeAlso": [ + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Symlinks.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Symlinks.json", + "referenceNumber": 517, + "name": "Symlinks License", + "licenseId": "Symlinks", + "seeAlso": [ + "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", + "referenceNumber": 80, + "name": "TAPR Open Hardware License v1.0", + "licenseId": "TAPR-OHL-1.0", + "seeAlso": [ + "https://www.tapr.org/OHL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCL.json", + "referenceNumber": 625, + "name": "TCL/TK License", + "licenseId": "TCL", + "seeAlso": [ + "http://www.tcl.tk/software/tcltk/license.html", + "https://fedoraproject.org/wiki/Licensing/TCL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TCP-wrappers.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", + "referenceNumber": 278, + "name": "TCP Wrappers License", + "licenseId": "TCP-wrappers", + "seeAlso": [ + "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TermReadKey.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TermReadKey.json", + "referenceNumber": 619, + "name": "TermReadKey License", + "licenseId": "TermReadKey", + "seeAlso": [ + "https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TGPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TGPPL-1.0.json", + "referenceNumber": 142, + "name": "Transitive Grace Period Public Licence 1.0", + "licenseId": "TGPPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TGPPL", + "https://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/COPYING.TGPPL.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ThirdEye.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ThirdEye.json", + "referenceNumber": 403, + "name": "ThirdEye License", + "licenseId": "ThirdEye", + "seeAlso": [ + "https://sourceware.org/cgit/binutils-gdb/tree/include/coff/symconst.h#n11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/threeparttable.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/threeparttable.json", + "referenceNumber": 14, + "name": "threeparttable License", + "licenseId": "threeparttable", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Threeparttable" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TMate.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TMate.json", + "referenceNumber": 176, + "name": "TMate Open Source License", + "licenseId": "TMate", + "seeAlso": [ + "http://svnkit.com/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TORQUE-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", + "referenceNumber": 214, + "name": "TORQUE v2.5+ Software License v1.1", + "licenseId": "TORQUE-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TOSL.json", + "referenceNumber": 416, + "name": "Trusster Open Source License", + "licenseId": "TOSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TOSL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TPDL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPDL.json", + "referenceNumber": 666, + "name": "Time::ParseDate License", + "licenseId": "TPDL", + "seeAlso": [ + "https://metacpan.org/pod/Time::ParseDate#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPL-1.0.json", + "referenceNumber": 540, + "name": "THOR Public License 1.0", + "licenseId": "TPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TrustedQSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TrustedQSL.json", + "referenceNumber": 37, + "name": "TrustedQSL License", + "licenseId": "TrustedQSL", + "seeAlso": [ + "https://sourceforge.net/p/trustedqsl/tqsl/ci/master/tree/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TTWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TTWL.json", + "referenceNumber": 598, + "name": "Text-Tabs+Wrap License", + "licenseId": "TTWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TTWL", + "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TTYP0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TTYP0.json", + "referenceNumber": 236, + "name": "TTYP0 License", + "licenseId": "TTYP0", + "seeAlso": [ + "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", + "referenceNumber": 106, + "name": "Technische Universitaet Berlin License 1.0", + "licenseId": "TU-Berlin-1.0", + "seeAlso": [ + "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", + "referenceNumber": 669, + "name": "Technische Universitaet Berlin License 2.0", + "licenseId": "TU-Berlin-2.0", + "seeAlso": [ + "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Ubuntu-font-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ubuntu-font-1.0.json", + "referenceNumber": 268, + "name": "Ubuntu Font Licence v1.0", + "licenseId": "Ubuntu-font-1.0", + "seeAlso": [ + "https://ubuntu.com/legal/font-licence", + "https://assets.ubuntu.com/v1/81e5605d-ubuntu-font-licence-1.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCAR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCAR.json", + "referenceNumber": 353, + "name": "UCAR License", + "licenseId": "UCAR", + "seeAlso": [ + "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", + "referenceNumber": 611, + "name": "Upstream Compatibility License v1.0", + "licenseId": "UCL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UCL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ulem.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ulem.json", + "referenceNumber": 514, + "name": "ulem License", + "licenseId": "ulem", + "seeAlso": [ + "https://mirrors.ctan.org/macros/latex/contrib/ulem/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UMich-Merit.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UMich-Merit.json", + "referenceNumber": 48, + "name": "Michigan/Merit Networks License", + "licenseId": "UMich-Merit", + "seeAlso": [ + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L64" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-3.0.json", + "referenceNumber": 308, + "name": "Unicode License v3", + "licenseId": "Unicode-3.0", + "seeAlso": [ + "https://www.unicode.org/license.txt" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", + "referenceNumber": 254, + "name": "Unicode License Agreement - Data Files and Software (2015)", + "licenseId": "Unicode-DFS-2015", + "seeAlso": [ + "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", + "referenceNumber": 309, + "name": "Unicode License Agreement - Data Files and Software (2016)", + "licenseId": "Unicode-DFS-2016", + "seeAlso": [ + "https://www.unicode.org/license.txt", + "http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License", + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-TOU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", + "referenceNumber": 115, + "name": "Unicode Terms of Use", + "licenseId": "Unicode-TOU", + "seeAlso": [ + "http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html", + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UnixCrypt.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UnixCrypt.json", + "referenceNumber": 180, + "name": "UnixCrypt License", + "licenseId": "UnixCrypt", + "seeAlso": [ + "https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70", + "https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html", + "https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unlicense.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unlicense.json", + "referenceNumber": 337, + "name": "The Unlicense", + "licenseId": "Unlicense", + "seeAlso": [ + "https://unlicense.org/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Unlicense-libtelnet.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unlicense-libtelnet.json", + "referenceNumber": 113, + "name": "Unlicense - libtelnet variant", + "licenseId": "Unlicense-libtelnet", + "seeAlso": [ + "https://github.com/seanmiddleditch/libtelnet/blob/develop/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unlicense-libwhirlpool.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unlicense-libwhirlpool.json", + "referenceNumber": 565, + "name": "Unlicense - libwhirlpool variant", + "licenseId": "Unlicense-libwhirlpool", + "seeAlso": [ + "https://github.com/dfateyev/libwhirlpool/blob/master/README#L27" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", + "referenceNumber": 88, + "name": "Universal Permissive License v1.0", + "licenseId": "UPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UPL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/URT-RLE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/URT-RLE.json", + "referenceNumber": 380, + "name": "Utah Raster Toolkit Run Length Encoded License", + "licenseId": "URT-RLE", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c", + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Vim.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Vim.json", + "referenceNumber": 327, + "name": "Vim License", + "licenseId": "Vim", + "seeAlso": [ + "http://vimdoc.sourceforge.net/htmldoc/uganda.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/VOSTROM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", + "referenceNumber": 575, + "name": "VOSTROM Public License for Open Source", + "licenseId": "VOSTROM", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/VOSTROM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/VSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", + "referenceNumber": 562, + "name": "Vovida Software License v1.0", + "licenseId": "VSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/VSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/W3C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C.json", + "referenceNumber": 479, + "name": "W3C Software Notice and License (2002-12-31)", + "licenseId": "W3C", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "https://opensource.org/licenses/W3C" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/W3C-19980720.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", + "referenceNumber": 365, + "name": "W3C Software Notice and License (1998-07-20)", + "licenseId": "W3C-19980720", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/W3C-20150513.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", + "referenceNumber": 295, + "name": "W3C Software Notice and Document License (2015-05-13)", + "licenseId": "W3C-20150513", + "seeAlso": [ + "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", + "https://www.w3.org/copyright/software-license-2015/", + "https://www.w3.org/copyright/software-license-2023/" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/w3m.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/w3m.json", + "referenceNumber": 141, + "name": "w3m License", + "licenseId": "w3m", + "seeAlso": [ + "https://github.com/tats/w3m/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Watcom-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", + "referenceNumber": 527, + "name": "Sybase Open Watcom Public License 1.0", + "licenseId": "Watcom-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Watcom-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Widget-Workshop.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Widget-Workshop.json", + "referenceNumber": 522, + "name": "Widget Workshop License", + "licenseId": "Widget-Workshop", + "seeAlso": [ + "https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Wsuipa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", + "referenceNumber": 564, + "name": "Wsuipa License", + "licenseId": "Wsuipa", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Wsuipa" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/WTFPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/WTFPL.json", + "referenceNumber": 418, + "name": "Do What The F*ck You Want To Public License", + "licenseId": "WTFPL", + "seeAlso": [ + "http://www.wtfpl.net/about/", + "http://sam.zoy.org/wtfpl/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/wwl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/wwl.json", + "referenceNumber": 627, + "name": "WWL License", + "licenseId": "wwl", + "seeAlso": [ + "http://www.db.net/downloads/wwl+db-1.3.tgz" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/wxWindows.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/wxWindows.json", + "referenceNumber": 431, + "name": "wxWindows Library License", + "licenseId": "wxWindows", + "seeAlso": [ + "https://opensource.org/licenses/WXwindows" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/X11.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11.json", + "referenceNumber": 0, + "name": "X11 License", + "licenseId": "X11", + "seeAlso": [ + "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", + "referenceNumber": 302, + "name": "X11 License Distribution Modification Variant", + "licenseId": "X11-distribute-modifications-variant", + "seeAlso": [ + "https://github.com/mirror/ncurses/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/X11-swapped.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-swapped.json", + "referenceNumber": 248, + "name": "X11 swapped final paragraphs", + "licenseId": "X11-swapped", + "seeAlso": [ + "https://github.com/fedeinthemix/chez-srfi/blob/master/srfi/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xdebug-1.03.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xdebug-1.03.json", + "referenceNumber": 109, + "name": "Xdebug License v 1.03", + "licenseId": "Xdebug-1.03", + "seeAlso": [ + "https://github.com/xdebug/xdebug/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xerox.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xerox.json", + "referenceNumber": 615, + "name": "Xerox License", + "licenseId": "Xerox", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xerox" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xfig.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xfig.json", + "referenceNumber": 125, + "name": "Xfig License", + "licenseId": "Xfig", + "seeAlso": [ + "https://github.com/Distrotech/transfig/blob/master/transfig/transfig.c", + "https://fedoraproject.org/wiki/Licensing:MIT#Xfig_Variant", + "https://sourceforge.net/p/mcj/xfig/ci/master/tree/src/Makefile.am" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XFree86-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", + "referenceNumber": 646, + "name": "XFree86 License 1.1", + "licenseId": "XFree86-1.1", + "seeAlso": [ + "http://www.xfree86.org/current/LICENSE4.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/xinetd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xinetd.json", + "referenceNumber": 93, + "name": "xinetd License", + "licenseId": "xinetd", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xinetd_License" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.json", + "referenceNumber": 212, + "name": "xkeyboard-config Zinoviev License", + "licenseId": "xkeyboard-config-Zinoviev", + "seeAlso": [ + "https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/COPYING?ref_type\u003dheads#L178" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xlock.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xlock.json", + "referenceNumber": 362, + "name": "xlock License", + "licenseId": "xlock", + "seeAlso": [ + "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xnet.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xnet.json", + "referenceNumber": 470, + "name": "X.Net License", + "licenseId": "Xnet", + "seeAlso": [ + "https://opensource.org/licenses/Xnet" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/xpp.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xpp.json", + "referenceNumber": 290, + "name": "XPP License", + "licenseId": "xpp", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/xpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XSkat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XSkat.json", + "referenceNumber": 293, + "name": "XSkat License", + "licenseId": "XSkat", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/XSkat_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xzoom.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xzoom.json", + "referenceNumber": 90, + "name": "xzoom License", + "licenseId": "xzoom", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/x/xzoom/xzoom_0.3-27_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", + "referenceNumber": 294, + "name": "Yahoo! Public License v1.0", + "licenseId": "YPL-1.0", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", + "referenceNumber": 481, + "name": "Yahoo! Public License v1.1", + "licenseId": "YPL-1.1", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.1.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zed.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zed.json", + "referenceNumber": 189, + "name": "Zed License", + "licenseId": "Zed", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Zed" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zeeff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zeeff.json", + "referenceNumber": 551, + "name": "Zeeff License", + "licenseId": "Zeeff", + "seeAlso": [ + "ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zend-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", + "referenceNumber": 444, + "name": "Zend License v2.0", + "licenseId": "Zend-2.0", + "seeAlso": [ + "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", + "referenceNumber": 26, + "name": "Zimbra Public License v1.3", + "licenseId": "Zimbra-1.3", + "seeAlso": [ + "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", + "referenceNumber": 330, + "name": "Zimbra Public License v1.4", + "licenseId": "Zimbra-1.4", + "seeAlso": [ + "http://www.zimbra.com/legal/zimbra-public-license-1-4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zlib.json", + "referenceNumber": 421, + "name": "zlib License", + "licenseId": "Zlib", + "seeAlso": [ + "http://www.zlib.net/zlib_license.html", + "https://opensource.org/licenses/Zlib" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", + "referenceNumber": 188, + "name": "zlib/libpng License with Acknowledgement", + "licenseId": "zlib-acknowledgement", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", + "referenceNumber": 597, + "name": "Zope Public License 1.1", + "licenseId": "ZPL-1.1", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json", + "referenceNumber": 555, + "name": "Zope Public License 2.0", + "licenseId": "ZPL-2.0", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-2.0", + "https://opensource.org/licenses/ZPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", + "referenceNumber": 272, + "name": "Zope Public License 2.1", + "licenseId": "ZPL-2.1", + "seeAlso": [ + "http://old.zope.org/Resources/ZPL/" + ], + "isOsiApproved": true, + "isFsfLibre": true + } + ], + "releaseDate": "2025-07-01T00:00:00Z" +} diff --git a/dandischema/conf.py b/dandischema/conf.py index c066d786..4785eef2 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -2,10 +2,13 @@ from __future__ import annotations +from datetime import datetime +from enum import Enum +from importlib.resources import files import logging -from typing import Annotated, Any, Optional, Union +from typing import TYPE_CHECKING, Annotated, Any, Optional, Union -from pydantic import StringConstraints +from pydantic import BaseModel, Field, StringConstraints from pydantic_settings import BaseSettings, SettingsConfigDict _MODELS_MODULE_NAME = "dandischema.models" @@ -17,6 +20,60 @@ logger = logging.getLogger(__name__) +class SpdxLicense(BaseModel): + """ + Represent a license in the SPDX License List, https://spdx.org/licenses/. + + Notes + ---- + An object of this class is loaded from the JSON version of the list at + https://github.com/spdx/license-list-data/blob/main/json/licenses.json + at a specific version, e.g., "3.27.0" + """ + + license_id: str = Field(validation_alias="licenseId") + + +class SpdxLicenseList(BaseModel): + """ + Represents the SPDX License List, https://spdx.org/licenses/. + + Notes + ---- + The resulting object is a representation of the JSON version of the list at + https://github.com/spdx/license-list-data/blob/main/json/licenses.json + at a specific version, e.g., "3.27.0" + + """ + + license_list_version: str = Field(validation_alias="licenseListVersion") + licenses: list[SpdxLicense] + release_date: datetime = Field(validation_alias="releaseDate") + + +spdx_licenses_file_path = ( + files("dandischema").joinpath("_resources").joinpath("licenses.json") +) + +spdx_license_list = SpdxLicenseList.model_validate_json( + spdx_licenses_file_path.read_text() +) + +if TYPE_CHECKING: + # This is just a placeholder for static type checking + class License(Enum): + ... # fmt: skip + +else: + License = Enum( + "License", + [ + ("spdx:" + license_.license_id,) * 2 + for license_ in spdx_license_list.licenses + ], + ) + + class Config(BaseSettings): """ Configuration for the DANDI schema @@ -46,6 +103,21 @@ class Config(BaseSettings): The DOI prefix at DataCite """ + licenses: set[License] = Field( + default={License("spdx:CC0-1.0"), License("spdx:CC-BY-4.0")} + ) + """ + Set of licenses to be supported by the DANDI instance + + Currently, the values for this set must be the identifier of a license in the + list at https://spdx.org/licenses/ prefixed with "spdx:" when set with the + corresponding environment variable. E.g. + + ```shell + export DANDI_LICENSES='["spdx:CC0-1.0", "spdx:CC-BY-4.0"]' + ``` + """ + _instance_config = Config() # Initial value is set by env vars alone """ From 13b53642d2078ee96097c271db183d942381cd0a Mon Sep 17 00:00:00 2001 From: Isaac To Date: Fri, 25 Jul 2025 23:40:27 -0700 Subject: [PATCH 38/80] feat: make `dandischema.models.LicenseType` instance specific --- dandischema/models.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/dandischema/models.py b/dandischema/models.py index 94c7ad87..237fafcb 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -5,6 +5,7 @@ import os import re from typing import ( + TYPE_CHECKING, Annotated, Any, Dict, @@ -97,6 +98,19 @@ def diff_models(model1: M, model2: M) -> None: print(f"{field} is different") +if TYPE_CHECKING: + # This is just a placeholder for static type checking + class LicenseType(Enum): + ... # fmt: skip + +else: + LicenseType = Enum( + "LicenseType", + [(license_.name, license_.value) for license_ in _INSTANCE_CONFIG.licenses], + ) + """An enumeration of supported licenses""" + + class AccessType(Enum): """An enumeration of access status options""" @@ -151,13 +165,6 @@ class IdentifierType(Enum): rrid = f"{DANDI_NSKEY}:rrid" -class LicenseType(Enum): - """An enumeration of supported licenses""" - - CC0_10 = "spdx:CC0-1.0" - CC_BY_40 = "spdx:CC-BY-4.0" - - class RelationType(Enum): """An enumeration of resource relations""" From 94accb854c0072276caa5c6d6f7f4c63502ff8db Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 27 Jul 2025 12:01:46 -0700 Subject: [PATCH 39/80] test: update `TestSetInstanceConfig` Update tests for `dandischema.conf.set_instance_config()` for the addition of the `licenses` field in `dandischema.conf.Config` --- dandischema/tests/test_conf.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 8742da92..6593b174 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,3 +1,4 @@ +import json import logging from typing import Optional from unittest.mock import ANY @@ -20,6 +21,11 @@ def test_get_instance_config() -> None: FOO_CONFIG_DICT = { "instance_name": "FOO", "doi_prefix": "10.1234", + "licenses": ["spdx:AdaCore-doc", "spdx:AGPL-3.0-or-later", "spdx:NBPL-1.0"], +} + +FOO_CONFIG_ENV_VARS = { + k: v if k != "licenses" else json.dumps(v) for k, v in FOO_CONFIG_DICT.items() } @@ -128,7 +134,7 @@ def test_before_models_import( @pytest.mark.parametrize( "clear_dandischema_modules_and_set_env_vars", - [FOO_CONFIG_DICT], + [FOO_CONFIG_ENV_VARS], indirect=True, ) def test_after_models_import_same_config( @@ -171,7 +177,7 @@ def test_after_models_import_same_config( @pytest.mark.parametrize( "clear_dandischema_modules_and_set_env_vars", - [FOO_CONFIG_DICT], + [FOO_CONFIG_ENV_VARS], indirect=True, ) def test_after_models_import_different_config( From 5bcdb3807c43c2d443fabf4283ef4d535b097d4c Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 27 Jul 2025 19:50:34 -0700 Subject: [PATCH 40/80] test: update `test_types()` This update ensures that `dandischema.models.LicenseType` is defined according to the value of the `licenses` field in the instance config --- dandischema/tests/test_models.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 3a678e94..828fea7c 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -7,6 +7,8 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError import pytest +from dandischema.conf import get_instance_config + from .utils import DOI_PREFIX, INSTANCE_NAME, basic_publishmeta, skipif_no_doi_prefix from .. import models from ..models import ( @@ -35,6 +37,8 @@ ) from ..utils import TransitionalGenerateJsonSchema +_INSTANCE_CONFIG = get_instance_config() + def test_dandiset() -> None: assert Dandiset.model_construct() # type: ignore[call-arg] @@ -319,10 +323,7 @@ def test_asset_digest() -> None: ), ( LicenseType, - { - "CC0_10": "spdx:CC0-1.0", - "CC_BY_40": "spdx:CC-BY-4.0", - }, + {member.name: member.value for member in _INSTANCE_CONFIG.licenses}, ), ( IdentifierType, From 46fba4bc3a69615b3276e70fffbaad72a7c8c3eb Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 27 Jul 2025 23:51:57 -0700 Subject: [PATCH 41/80] test: add tests for instantiating `dandischema.conf.Config` with value for `licenses` --- dandischema/tests/test_conf.py | 77 +++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 6593b174..46dcc760 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,6 +1,6 @@ import json import logging -from typing import Optional +from typing import Optional, Union from unittest.mock import ANY from pydantic import ValidationError @@ -79,6 +79,81 @@ def test_invalid_doi_prefix(self, doi_prefix: str) -> None: assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"] == ("doi_prefix",) + @pytest.mark.parametrize( + "licenses", + [ + [], + ["spdx:AGPL-1.0-only"], + ["spdx:AGPL-1.0-only", "spdx:LOOP", "spdx:SPL-1.0", "spdx:LOOP"], + set(), + {"spdx:AGPL-1.0-only"}, + {"spdx:AGPL-1.0-only", "spdx:LOOP", "spdx:SPL-1.0"}, + ], + ) + def test_valid_licenses_by_args(self, licenses: Union[list[str], set[str]]) -> None: + """ + Test instantiating `dandischema.conf.Config` with a valid list/set of licenses + as argument. + """ + from dandischema.conf import Config, License + + # noinspection PyTypeChecker + config = Config(licenses=licenses) + + assert config.licenses == {License(license_) for license_ in set(licenses)} + + @pytest.mark.parametrize( + ("clear_dandischema_modules_and_set_env_vars", "licenses"), + [ + ({"licenses": "[]"}, set()), + ( + {"licenses": '["spdx:AGPL-1.0-only"]'}, + {"spdx:AGPL-1.0-only"}, + ), + ( + { + "licenses": '["spdx:AGPL-1.0-only", "spdx:LOOP", "spdx:SPL-1.0", "spdx:LOOP"]' + }, + {"spdx:AGPL-1.0-only", "spdx:LOOP", "spdx:SPL-1.0", "spdx:LOOP"}, + ), + ], + indirect=["clear_dandischema_modules_and_set_env_vars"], + ) + def test_valid_licenses_by_env_var( + self, clear_dandischema_modules_and_set_env_vars: None, licenses: set[str] + ) -> None: + """ + Test instantiating `dandischema.conf.Config` with a valid array of licenses, + in JSON format, as an environment variable. + """ + from dandischema.conf import Config, License + + # noinspection PyTypeChecker + config = Config() + + assert config.licenses == {License(license_) for license_ in licenses} + + @pytest.mark.parametrize( + "licenses", + [ + {"AGPL-1.0-only"}, + {"spdx:AGPL-1.0-only", "spdx:NOT-A-LICENSE", "spdx:SPL-1.0"}, + ], + ) + def test_invalid_licenses_by_args(self, licenses: set[str]) -> None: + """ + Test instantiating `dandischema.conf.Config` with an invalid list/set of + licenses as an argument + """ + from dandischema.conf import Config + + with pytest.raises(ValidationError) as exc_info: + # noinspection PyTypeChecker + Config(licenses=licenses) + + assert len(exc_info.value.errors()) == 1 + assert exc_info.value.errors()[0]["loc"] == ("licenses", ANY) + class TestSetInstanceConfig: @pytest.mark.parametrize( From f9bb9be9cf2b2deb1e460f00687802a5930d4612 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 30 Jul 2025 10:46:31 -0700 Subject: [PATCH 42/80] perf: simplify json file storing SPDX license IDs --- dandischema/_resources/licenses.json | 8771 ------------------ dandischema/_resources/spdx_license_ids.json | 709 ++ dandischema/conf.py | 46 +- 3 files changed, 725 insertions(+), 8801 deletions(-) delete mode 100644 dandischema/_resources/licenses.json create mode 100644 dandischema/_resources/spdx_license_ids.json diff --git a/dandischema/_resources/licenses.json b/dandischema/_resources/licenses.json deleted file mode 100644 index 6701328a..00000000 --- a/dandischema/_resources/licenses.json +++ /dev/null @@ -1,8771 +0,0 @@ -{ - "licenseListVersion": "3.27.0", - "licenses": [ - { - "reference": "https://spdx.org/licenses/0BSD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/0BSD.json", - "referenceNumber": 316, - "name": "BSD Zero Clause License", - "licenseId": "0BSD", - "seeAlso": [ - "http://landley.net/toybox/license.html", - "https://opensource.org/licenses/0BSD" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/3D-Slicer-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/3D-Slicer-1.0.json", - "referenceNumber": 61, - "name": "3D Slicer License v1.0", - "licenseId": "3D-Slicer-1.0", - "seeAlso": [ - "https://slicer.org/LICENSE", - "https://github.com/Slicer/Slicer/blob/main/License.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AAL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AAL.json", - "referenceNumber": 424, - "name": "Attribution Assurance License", - "licenseId": "AAL", - "seeAlso": [ - "https://opensource.org/licenses/attribution" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Abstyles.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Abstyles.json", - "referenceNumber": 252, - "name": "Abstyles License", - "licenseId": "Abstyles", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Abstyles" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AdaCore-doc.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AdaCore-doc.json", - "referenceNumber": 315, - "name": "AdaCore Doc License", - "licenseId": "AdaCore-doc", - "seeAlso": [ - "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst", - "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst", - "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Adobe-2006.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", - "referenceNumber": 658, - "name": "Adobe Systems Incorporated Source Code License Agreement", - "licenseId": "Adobe-2006", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AdobeLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Adobe-Display-PostScript.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-Display-PostScript.json", - "referenceNumber": 499, - "name": "Adobe Display PostScript License", - "licenseId": "Adobe-Display-PostScript", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L752" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Adobe-Glyph.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", - "referenceNumber": 492, - "name": "Adobe Glyph List License", - "licenseId": "Adobe-Glyph", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Adobe-Utopia.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-Utopia.json", - "referenceNumber": 554, - "name": "Adobe Utopia Font License", - "licenseId": "Adobe-Utopia", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type\u003dheads" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ADSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ADSL.json", - "referenceNumber": 76, - "name": "Amazon Digital Services License", - "licenseId": "ADSL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AFL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", - "referenceNumber": 7, - "name": "Academic Free License v1.1", - "licenseId": "AFL-1.1", - "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", - "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json", - "referenceNumber": 480, - "name": "Academic Free License v1.2", - "licenseId": "AFL-1.2", - "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", - "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", - "referenceNumber": 41, - "name": "Academic Free License v2.0", - "licenseId": "AFL-2.0", - "seeAlso": [ - "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", - "referenceNumber": 682, - "name": "Academic Free License v2.1", - "licenseId": "AFL-2.1", - "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", - "referenceNumber": 343, - "name": "Academic Free License v3.0", - "licenseId": "AFL-3.0", - "seeAlso": [ - "http://www.rosenlaw.com/AFL3.0.htm", - "https://opensource.org/licenses/afl-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Afmparse.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Afmparse.json", - "referenceNumber": 84, - "name": "Afmparse License", - "licenseId": "Afmparse", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Afmparse" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json", - "referenceNumber": 38, - "name": "Affero General Public License v1.0", - "licenseId": "AGPL-1.0", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", - "referenceNumber": 415, - "name": "Affero General Public License v1.0 only", - "licenseId": "AGPL-1.0-only", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", - "referenceNumber": 24, - "name": "Affero General Public License v1.0 or later", - "licenseId": "AGPL-1.0-or-later", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", - "referenceNumber": 427, - "name": "GNU Affero General Public License v3.0", - "licenseId": "AGPL-3.0", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", - "referenceNumber": 191, - "name": "GNU Affero General Public License v3.0 only", - "licenseId": "AGPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", - "referenceNumber": 469, - "name": "GNU Affero General Public License v3.0 or later", - "licenseId": "AGPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Aladdin.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Aladdin.json", - "referenceNumber": 495, - "name": "Aladdin Free Public License", - "licenseId": "Aladdin", - "seeAlso": [ - "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/AMD-newlib.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AMD-newlib.json", - "referenceNumber": 437, - "name": "AMD newlib License", - "licenseId": "AMD-newlib", - "seeAlso": [ - "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/sys/a29khif/_close.S;h\u003d04f52ae00de1dafbd9055ad8d73c5c697a3aae7f;hb\u003dHEAD" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AMDPLPA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", - "referenceNumber": 194, - "name": "AMD\u0027s plpa_map.c License", - "licenseId": "AMDPLPA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AML.json", - "referenceNumber": 644, - "name": "Apple MIT License", - "licenseId": "AML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AML-glslang.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AML-glslang.json", - "referenceNumber": 439, - "name": "AML glslang variant License", - "licenseId": "AML-glslang", - "seeAlso": [ - "https://github.com/KhronosGroup/glslang/blob/main/LICENSE.txt#L949", - "https://docs.omniverse.nvidia.com/install-guide/latest/common/licenses.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AMPAS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AMPAS.json", - "referenceNumber": 15, - "name": "Academy of Motion Picture Arts and Sciences BSD", - "licenseId": "AMPAS", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ANTLR-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", - "referenceNumber": 25, - "name": "ANTLR Software Rights Notice", - "licenseId": "ANTLR-PD", - "seeAlso": [ - "http://www.antlr2.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", - "referenceNumber": 218, - "name": "ANTLR Software Rights Notice with license fallback", - "licenseId": "ANTLR-PD-fallback", - "seeAlso": [ - "http://www.antlr2.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/any-OSI.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/any-OSI.json", - "referenceNumber": 74, - "name": "Any OSI License", - "licenseId": "any-OSI", - "seeAlso": [ - "https://metacpan.org/pod/Exporter::Tidy#LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/any-OSI-perl-modules.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/any-OSI-perl-modules.json", - "referenceNumber": 230, - "name": "Any OSI License - Perl Modules", - "licenseId": "any-OSI-perl-modules", - "seeAlso": [ - "https://metacpan.org/release/JUERD/Exporter-Tidy-0.09/view/Tidy.pm#LICENSE", - "https://metacpan.org/pod/Qmail::Deliverable::Client#LICENSE", - "https://metacpan.org/pod/Net::MQTT::Simple#LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Apache-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", - "referenceNumber": 379, - "name": "Apache License 1.0", - "licenseId": "Apache-1.0", - "seeAlso": [ - "http://www.apache.org/licenses/LICENSE-1.0" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Apache-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", - "referenceNumber": 111, - "name": "Apache License 1.1", - "licenseId": "Apache-1.1", - "seeAlso": [ - "http://apache.org/licenses/LICENSE-1.1", - "https://opensource.org/licenses/Apache-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Apache-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", - "referenceNumber": 162, - "name": "Apache License 2.0", - "licenseId": "Apache-2.0", - "seeAlso": [ - "https://www.apache.org/licenses/LICENSE-2.0", - "https://opensource.org/licenses/Apache-2.0", - "https://opensource.org/license/apache-2-0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/APAFML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APAFML.json", - "referenceNumber": 474, - "name": "Adobe Postscript AFM License", - "licenseId": "APAFML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", - "referenceNumber": 127, - "name": "Adaptive Public License 1.0", - "licenseId": "APL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/APL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/App-s2p.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/App-s2p.json", - "referenceNumber": 155, - "name": "App::s2p License", - "licenseId": "App-s2p", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/App-s2p" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", - "referenceNumber": 86, - "name": "Apple Public Source License 1.0", - "licenseId": "APSL-1.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/APSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", - "referenceNumber": 23, - "name": "Apple Public Source License 1.1", - "licenseId": "APSL-1.1", - "seeAlso": [ - "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/APSL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", - "referenceNumber": 265, - "name": "Apple Public Source License 1.2", - "licenseId": "APSL-1.2", - "seeAlso": [ - "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/APSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", - "referenceNumber": 568, - "name": "Apple Public Source License 2.0", - "licenseId": "APSL-2.0", - "seeAlso": [ - "http://www.opensource.apple.com/license/apsl/" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Arphic-1999.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", - "referenceNumber": 649, - "name": "Arphic Public License", - "licenseId": "Arphic-1999", - "seeAlso": [ - "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Artistic-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", - "referenceNumber": 388, - "name": "Artistic License 1.0", - "licenseId": "Artistic-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Artistic-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", - "referenceNumber": 291, - "name": "Artistic License 1.0 w/clause 8", - "licenseId": "Artistic-1.0-cl8", - "seeAlso": [ - "https://opensource.org/licenses/Artistic-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json", - "referenceNumber": 20, - "name": "Artistic License 1.0 (Perl)", - "licenseId": "Artistic-1.0-Perl", - "seeAlso": [ - "http://dev.perl.org/licenses/artistic.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Artistic-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", - "referenceNumber": 217, - "name": "Artistic License 2.0", - "licenseId": "Artistic-2.0", - "seeAlso": [ - "http://www.perlfoundation.org/artistic_license_2_0", - "https://www.perlfoundation.org/artistic-license-20.html", - "https://opensource.org/licenses/artistic-license-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Artistic-dist.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-dist.json", - "referenceNumber": 511, - "name": "Artistic License 1.0 (dist)", - "licenseId": "Artistic-dist", - "seeAlso": [ - "https://github.com/pexip/os-perl/blob/833cf4c86cc465ccfc627ff16db67e783156a248/debian/copyright#L2720-L2845" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Aspell-RU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Aspell-RU.json", - "referenceNumber": 231, - "name": "Aspell Russian License", - "licenseId": "Aspell-RU", - "seeAlso": [ - "https://ftp.gnu.org/gnu/aspell/dict/ru/aspell6-ru-0.99f7-1.tar.bz2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json", - "referenceNumber": 340, - "name": "ASWF Digital Assets License version 1.0", - "licenseId": "ASWF-Digital-Assets-1.0", - "seeAlso": [ - "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json", - "referenceNumber": 153, - "name": "ASWF Digital Assets License 1.1", - "licenseId": "ASWF-Digital-Assets-1.1", - "seeAlso": [ - "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Baekmuk.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", - "referenceNumber": 311, - "name": "Baekmuk License", - "licenseId": "Baekmuk", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\u003dLicensing/Baekmuk" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Bahyph.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bahyph.json", - "referenceNumber": 505, - "name": "Bahyph License", - "licenseId": "Bahyph", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Bahyph" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Barr.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Barr.json", - "referenceNumber": 420, - "name": "Barr License", - "licenseId": "Barr", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Barr" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/bcrypt-Solar-Designer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/bcrypt-Solar-Designer.json", - "referenceNumber": 167, - "name": "bcrypt Solar Designer License", - "licenseId": "bcrypt-Solar-Designer", - "seeAlso": [ - "https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/ext/mri/crypt_blowfish.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Beerware.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Beerware.json", - "referenceNumber": 556, - "name": "Beerware License", - "licenseId": "Beerware", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Beerware", - "https://people.freebsd.org/~phk/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Bitstream-Charter.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bitstream-Charter.json", - "referenceNumber": 47, - "name": "Bitstream Charter Font License", - "licenseId": "Bitstream-Charter", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Charter#License_Text", - "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Bitstream-Vera.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", - "referenceNumber": 208, - "name": "Bitstream Vera Font License", - "licenseId": "Bitstream-Vera", - "seeAlso": [ - "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", - "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", - "referenceNumber": 156, - "name": "BitTorrent Open Source License v1.0", - "licenseId": "BitTorrent-1.0", - "seeAlso": [ - "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", - "referenceNumber": 325, - "name": "BitTorrent Open Source License v1.1", - "licenseId": "BitTorrent-1.1", - "seeAlso": [ - "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/blessing.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/blessing.json", - "referenceNumber": 680, - "name": "SQLite Blessing", - "licenseId": "blessing", - "seeAlso": [ - "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9", - "https://sqlite.org/src/artifact/df5091916dbb40e6" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", - "referenceNumber": 51, - "name": "Blue Oak Model License 1.0.0", - "licenseId": "BlueOak-1.0.0", - "seeAlso": [ - "https://blueoakcouncil.org/license/1.0.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Boehm-GC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Boehm-GC.json", - "referenceNumber": 92, - "name": "Boehm-Demers-Weiser GC License", - "licenseId": "Boehm-GC", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)", - "https://github.com/uim/libgcroots/blob/master/COPYING", - "https://github.com/ivmai/libatomic_ops/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Boehm-GC-without-fee.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Boehm-GC-without-fee.json", - "referenceNumber": 466, - "name": "Boehm-Demers-Weiser GC License (without fee)", - "licenseId": "Boehm-GC-without-fee", - "seeAlso": [ - "https://github.com/MariaDB/server/blob/11.6/libmysqld/lib_sql.cc" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Borceux.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Borceux.json", - "referenceNumber": 335, - "name": "Borceux license", - "licenseId": "Borceux", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Borceux" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Brian-Gladman-2-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-2-Clause.json", - "referenceNumber": 198, - "name": "Brian Gladman 2-Clause License", - "licenseId": "Brian-Gladman-2-Clause", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L140-L156", - "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Brian-Gladman-3-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-3-Clause.json", - "referenceNumber": 675, - "name": "Brian Gladman 3-Clause License", - "licenseId": "Brian-Gladman-3-Clause", - "seeAlso": [ - "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-1-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", - "referenceNumber": 286, - "name": "BSD 1-Clause License", - "licenseId": "BSD-1-Clause", - "seeAlso": [ - "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", - "referenceNumber": 430, - "name": "BSD 2-Clause \"Simplified\" License", - "licenseId": "BSD-2-Clause", - "seeAlso": [ - "https://opensource.org/licenses/BSD-2-Clause" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-Darwin.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Darwin.json", - "referenceNumber": 477, - "name": "BSD 2-Clause - Ian Darwin variant", - "licenseId": "BSD-2-Clause-Darwin", - "seeAlso": [ - "https://github.com/file/file/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-first-lines.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-first-lines.json", - "referenceNumber": 543, - "name": "BSD 2-Clause - first lines requirement", - "licenseId": "BSD-2-Clause-first-lines", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L664-L690", - "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", - "referenceNumber": 622, - "name": "BSD 2-Clause FreeBSD License", - "licenseId": "BSD-2-Clause-FreeBSD", - "seeAlso": [ - "http://www.freebsd.org/copyright/freebsd-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", - "referenceNumber": 531, - "name": "BSD 2-Clause NetBSD License", - "licenseId": "BSD-2-Clause-NetBSD", - "seeAlso": [ - "http://www.netbsd.org/about/redistribution.html#default" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", - "referenceNumber": 584, - "name": "BSD-2-Clause Plus Patent License", - "licenseId": "BSD-2-Clause-Patent", - "seeAlso": [ - "https://opensource.org/licenses/BSDplusPatent" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-pkgconf-disclaimer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-pkgconf-disclaimer.json", - "referenceNumber": 624, - "name": "BSD 2-Clause pkgconf disclaimer variant", - "licenseId": "BSD-2-Clause-pkgconf-disclaimer", - "seeAlso": [ - "https://github.com/audacious-media-player/audacious/blob/master/src/audacious/main.cc", - "https://github.com/audacious-media-player/audacious/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", - "referenceNumber": 536, - "name": "BSD 2-Clause with views sentence", - "licenseId": "BSD-2-Clause-Views", - "seeAlso": [ - "http://www.freebsd.org/copyright/freebsd-license.html", - "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", - "https://github.com/protegeproject/protege/blob/master/license.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", - "referenceNumber": 567, - "name": "BSD 3-Clause \"New\" or \"Revised\" License", - "licenseId": "BSD-3-Clause", - "seeAlso": [ - "https://opensource.org/licenses/BSD-3-Clause", - "https://www.eclipse.org/org/documents/edl-v10.php" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-acpica.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-acpica.json", - "referenceNumber": 277, - "name": "BSD 3-Clause acpica variant", - "licenseId": "BSD-3-Clause-acpica", - "seeAlso": [ - "https://github.com/acpica/acpica/blob/master/source/common/acfileio.c#L119" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", - "referenceNumber": 159, - "name": "BSD with attribution", - "licenseId": "BSD-3-Clause-Attribution", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", - "referenceNumber": 259, - "name": "BSD 3-Clause Clear License", - "licenseId": "BSD-3-Clause-Clear", - "seeAlso": [ - "http://labs.metacarta.com/license-explanation.html#license" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-flex.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-flex.json", - "referenceNumber": 205, - "name": "BSD 3-Clause Flex variant", - "licenseId": "BSD-3-Clause-flex", - "seeAlso": [ - "https://github.com/westes/flex/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-HP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-HP.json", - "referenceNumber": 643, - "name": "Hewlett-Packard BSD variant license", - "licenseId": "BSD-3-Clause-HP", - "seeAlso": [ - "https://github.com/zdohnal/hplip/blob/master/COPYING#L939" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", - "referenceNumber": 6, - "name": "Lawrence Berkeley National Labs BSD variant license", - "licenseId": "BSD-3-Clause-LBNL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/LBNLBSD" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", - "referenceNumber": 497, - "name": "BSD 3-Clause Modification", - "licenseId": "BSD-3-Clause-Modification", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", - "referenceNumber": 498, - "name": "BSD 3-Clause No Military License", - "licenseId": "BSD-3-Clause-No-Military-License", - "seeAlso": [ - "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", - "https://github.com/greymass/swift-eosio/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", - "referenceNumber": 108, - "name": "BSD 3-Clause No Nuclear License", - "licenseId": "BSD-3-Clause-No-Nuclear-License", - "seeAlso": [ - "http://download.oracle.com/otn-pub/java/licenses/bsd.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", - "referenceNumber": 239, - "name": "BSD 3-Clause No Nuclear License 2014", - "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", - "seeAlso": [ - "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", - "referenceNumber": 606, - "name": "BSD 3-Clause No Nuclear Warranty", - "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", - "seeAlso": [ - "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", - "referenceNumber": 637, - "name": "BSD 3-Clause Open MPI variant", - "licenseId": "BSD-3-Clause-Open-MPI", - "seeAlso": [ - "https://www.open-mpi.org/community/license.php", - "http://www.netlib.org/lapack/LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Sun.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Sun.json", - "referenceNumber": 240, - "name": "BSD 3-Clause Sun Microsystems", - "licenseId": "BSD-3-Clause-Sun", - "seeAlso": [ - "https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-4-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json", - "referenceNumber": 227, - "name": "BSD 4-Clause \"Original\" or \"Old\" License", - "licenseId": "BSD-4-Clause", - "seeAlso": [ - "http://directory.fsf.org/wiki/License:BSD_4Clause" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", - "referenceNumber": 269, - "name": "BSD 4 Clause Shortened", - "licenseId": "BSD-4-Clause-Shortened", - "seeAlso": [ - "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", - "referenceNumber": 21, - "name": "BSD-4-Clause (University of California-Specific)", - "licenseId": "BSD-4-Clause-UC", - "seeAlso": [ - "http://www.freebsd.org/copyright/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-4.3RENO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4.3RENO.json", - "referenceNumber": 434, - "name": "BSD 4.3 RENO License", - "licenseId": "BSD-4.3RENO", - "seeAlso": [ - "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dlibiberty/strcasecmp.c;h\u003d131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb\u003dHEAD", - "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-4.3TAHOE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4.3TAHOE.json", - "referenceNumber": 685, - "name": "BSD 4.3 TAHOE License", - "licenseId": "BSD-4.3TAHOE", - "seeAlso": [ - "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15", - "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n1788" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json", - "referenceNumber": 345, - "name": "BSD Advertising Acknowledgement License", - "licenseId": "BSD-Advertising-Acknowledgement", - "seeAlso": [ - "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json", - "referenceNumber": 506, - "name": "BSD with Attribution and HPND disclaimer", - "licenseId": "BSD-Attribution-HPND-disclaimer", - "seeAlso": [ - "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Inferno-Nettverk.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Inferno-Nettverk.json", - "referenceNumber": 535, - "name": "BSD-Inferno-Nettverk", - "licenseId": "BSD-Inferno-Nettverk", - "seeAlso": [ - "https://www.inet.no/dante/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Protection.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", - "referenceNumber": 163, - "name": "BSD Protection License", - "licenseId": "BSD-Protection", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Source-beginning-file.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Source-beginning-file.json", - "referenceNumber": 383, - "name": "BSD Source Code Attribution - beginning of file variant", - "licenseId": "BSD-Source-beginning-file", - "seeAlso": [ - "https://github.com/lattera/freebsd/blob/master/sys/cam/cam.c#L4" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Source-Code.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", - "referenceNumber": 450, - "name": "BSD Source Code Attribution", - "licenseId": "BSD-Source-Code", - "seeAlso": [ - "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Systemics.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Systemics.json", - "referenceNumber": 602, - "name": "Systemics BSD variant license", - "licenseId": "BSD-Systemics", - "seeAlso": [ - "https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Systemics-W3Works.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Systemics-W3Works.json", - "referenceNumber": 422, - "name": "Systemics W3Works BSD variant license", - "licenseId": "BSD-Systemics-W3Works", - "seeAlso": [ - "https://metacpan.org/release/DPARIS/Crypt-Blowfish-2.14/source/COPYRIGHT#L7" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", - "referenceNumber": 130, - "name": "Boost Software License 1.0", - "licenseId": "BSL-1.0", - "seeAlso": [ - "http://www.boost.org/LICENSE_1_0.txt", - "https://opensource.org/licenses/BSL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BUSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", - "referenceNumber": 234, - "name": "Business Source License 1.1", - "licenseId": "BUSL-1.1", - "seeAlso": [ - "https://mariadb.com/bsl11/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", - "referenceNumber": 412, - "name": "bzip2 and libbzip2 License v1.0.5", - "licenseId": "bzip2-1.0.5", - "seeAlso": [ - "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", - "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", - "referenceNumber": 243, - "name": "bzip2 and libbzip2 License v1.0.6", - "licenseId": "bzip2-1.0.6", - "seeAlso": [ - "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6", - "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", - "https://sourceware.org/cgit/valgrind/tree/mpi/libmpiwrap.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/C-UDA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", - "referenceNumber": 660, - "name": "Computational Use of Data Agreement v1.0", - "licenseId": "C-UDA-1.0", - "seeAlso": [ - "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", - "https://cdla.dev/computational-use-of-data-agreement-v1-0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CAL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", - "referenceNumber": 305, - "name": "Cryptographic Autonomy License 1.0", - "licenseId": "CAL-1.0", - "seeAlso": [ - "http://cryptographicautonomylicense.com/license-text.html", - "https://opensource.org/licenses/CAL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", - "referenceNumber": 569, - "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", - "licenseId": "CAL-1.0-Combined-Work-Exception", - "seeAlso": [ - "http://cryptographicautonomylicense.com/license-text.html", - "https://opensource.org/licenses/CAL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Caldera.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Caldera.json", - "referenceNumber": 483, - "name": "Caldera License", - "licenseId": "Caldera", - "seeAlso": [ - "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Caldera-no-preamble.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Caldera-no-preamble.json", - "referenceNumber": 401, - "name": "Caldera License (without preamble)", - "licenseId": "Caldera-no-preamble", - "seeAlso": [ - "https://github.com/apache/apr/blob/trunk/LICENSE#L298C6-L298C29" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Catharon.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Catharon.json", - "referenceNumber": 581, - "name": "Catharon License", - "licenseId": "Catharon", - "seeAlso": [ - "https://github.com/scummvm/scummvm/blob/v2.8.0/LICENSES/CatharonLicense.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CATOSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", - "referenceNumber": 97, - "name": "Computer Associates Trusted Open Source License 1.1", - "licenseId": "CATOSL-1.1", - "seeAlso": [ - "https://opensource.org/licenses/CATOSL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", - "referenceNumber": 559, - "name": "Creative Commons Attribution 1.0 Generic", - "licenseId": "CC-BY-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", - "referenceNumber": 441, - "name": "Creative Commons Attribution 2.0 Generic", - "licenseId": "CC-BY-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", - "referenceNumber": 292, - "name": "Creative Commons Attribution 2.5 Generic", - "licenseId": "CC-BY-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", - "referenceNumber": 126, - "name": "Creative Commons Attribution 2.5 Australia", - "licenseId": "CC-BY-2.5-AU", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.5/au/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", - "referenceNumber": 576, - "name": "Creative Commons Attribution 3.0 Unported", - "licenseId": "CC-BY-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", - "referenceNumber": 107, - "name": "Creative Commons Attribution 3.0 Austria", - "licenseId": "CC-BY-3.0-AT", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/at/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-AU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AU.json", - "referenceNumber": 648, - "name": "Creative Commons Attribution 3.0 Australia", - "licenseId": "CC-BY-3.0-AU", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/au/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", - "referenceNumber": 458, - "name": "Creative Commons Attribution 3.0 Germany", - "licenseId": "CC-BY-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json", - "referenceNumber": 410, - "name": "Creative Commons Attribution 3.0 IGO", - "licenseId": "CC-BY-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", - "referenceNumber": 436, - "name": "Creative Commons Attribution 3.0 Netherlands", - "licenseId": "CC-BY-3.0-NL", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/nl/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", - "referenceNumber": 366, - "name": "Creative Commons Attribution 3.0 United States", - "licenseId": "CC-BY-3.0-US", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/us/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", - "referenceNumber": 66, - "name": "Creative Commons Attribution 4.0 International", - "licenseId": "CC-BY-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", - "referenceNumber": 428, - "name": "Creative Commons Attribution Non Commercial 1.0 Generic", - "licenseId": "CC-BY-NC-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json", - "referenceNumber": 553, - "name": "Creative Commons Attribution Non Commercial 2.0 Generic", - "licenseId": "CC-BY-NC-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/2.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", - "referenceNumber": 49, - "name": "Creative Commons Attribution Non Commercial 2.5 Generic", - "licenseId": "CC-BY-NC-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/2.5/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json", - "referenceNumber": 686, - "name": "Creative Commons Attribution Non Commercial 3.0 Unported", - "licenseId": "CC-BY-NC-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/3.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", - "referenceNumber": 324, - "name": "Creative Commons Attribution Non Commercial 3.0 Germany", - "licenseId": "CC-BY-NC-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", - "referenceNumber": 560, - "name": "Creative Commons Attribution Non Commercial 4.0 International", - "licenseId": "CC-BY-NC-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", - "referenceNumber": 442, - "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", - "licenseId": "CC-BY-NC-ND-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", - "referenceNumber": 334, - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", - "licenseId": "CC-BY-NC-ND-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", - "referenceNumber": 215, - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", - "licenseId": "CC-BY-NC-ND-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", - "referenceNumber": 94, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", - "licenseId": "CC-BY-NC-ND-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", - "referenceNumber": 185, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", - "licenseId": "CC-BY-NC-ND-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", - "referenceNumber": 577, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", - "licenseId": "CC-BY-NC-ND-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", - "referenceNumber": 53, - "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", - "licenseId": "CC-BY-NC-ND-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", - "referenceNumber": 510, - "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", - "licenseId": "CC-BY-NC-SA-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", - "referenceNumber": 199, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", - "licenseId": "CC-BY-NC-SA-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json", - "referenceNumber": 356, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany", - "licenseId": "CC-BY-NC-SA-2.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", - "referenceNumber": 301, - "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", - "licenseId": "CC-BY-NC-SA-2.0-FR", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", - "referenceNumber": 671, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", - "licenseId": "CC-BY-NC-SA-2.0-UK", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", - "referenceNumber": 659, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", - "licenseId": "CC-BY-NC-SA-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", - "referenceNumber": 359, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", - "licenseId": "CC-BY-NC-SA-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", - "referenceNumber": 279, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", - "licenseId": "CC-BY-NC-SA-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", - "referenceNumber": 636, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", - "licenseId": "CC-BY-NC-SA-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", - "referenceNumber": 89, - "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", - "licenseId": "CC-BY-NC-SA-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json", - "referenceNumber": 118, - "name": "Creative Commons Attribution No Derivatives 1.0 Generic", - "licenseId": "CC-BY-ND-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", - "referenceNumber": 587, - "name": "Creative Commons Attribution No Derivatives 2.0 Generic", - "licenseId": "CC-BY-ND-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/2.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", - "referenceNumber": 394, - "name": "Creative Commons Attribution No Derivatives 2.5 Generic", - "licenseId": "CC-BY-ND-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/2.5/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", - "referenceNumber": 457, - "name": "Creative Commons Attribution No Derivatives 3.0 Unported", - "licenseId": "CC-BY-ND-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/3.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", - "referenceNumber": 610, - "name": "Creative Commons Attribution No Derivatives 3.0 Germany", - "licenseId": "CC-BY-ND-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", - "referenceNumber": 11, - "name": "Creative Commons Attribution No Derivatives 4.0 International", - "licenseId": "CC-BY-ND-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", - "referenceNumber": 384, - "name": "Creative Commons Attribution Share Alike 1.0 Generic", - "licenseId": "CC-BY-SA-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", - "referenceNumber": 260, - "name": "Creative Commons Attribution Share Alike 2.0 Generic", - "licenseId": "CC-BY-SA-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", - "referenceNumber": 197, - "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", - "licenseId": "CC-BY-SA-2.0-UK", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", - "referenceNumber": 149, - "name": "Creative Commons Attribution Share Alike 2.1 Japan", - "licenseId": "CC-BY-SA-2.1-JP", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", - "referenceNumber": 631, - "name": "Creative Commons Attribution Share Alike 2.5 Generic", - "licenseId": "CC-BY-SA-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", - "referenceNumber": 79, - "name": "Creative Commons Attribution Share Alike 3.0 Unported", - "licenseId": "CC-BY-SA-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", - "referenceNumber": 493, - "name": "Creative Commons Attribution Share Alike 3.0 Austria", - "licenseId": "CC-BY-SA-3.0-AT", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", - "referenceNumber": 683, - "name": "Creative Commons Attribution Share Alike 3.0 Germany", - "licenseId": "CC-BY-SA-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.json", - "referenceNumber": 571, - "name": "Creative Commons Attribution-ShareAlike 3.0 IGO", - "licenseId": "CC-BY-SA-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", - "referenceNumber": 256, - "name": "Creative Commons Attribution Share Alike 4.0 International", - "licenseId": "CC-BY-SA-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-PDDC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", - "referenceNumber": 273, - "name": "Creative Commons Public Domain Dedication and Certification", - "licenseId": "CC-PDDC", - "seeAlso": [ - "https://creativecommons.org/licenses/publicdomain/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-PDM-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-PDM-1.0.json", - "referenceNumber": 547, - "name": "Creative Commons Public Domain Mark 1.0 Universal", - "licenseId": "CC-PDM-1.0", - "seeAlso": [ - "https://creativecommons.org/publicdomain/mark/1.0/", - "https://creativecommons.org/share-your-work/cclicenses/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-SA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-SA-1.0.json", - "referenceNumber": 85, - "name": "Creative Commons Share Alike 1.0 Generic", - "licenseId": "CC-SA-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/sa/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC0-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", - "referenceNumber": 369, - "name": "Creative Commons Zero v1.0 Universal", - "licenseId": "CC0-1.0", - "seeAlso": [ - "https://creativecommons.org/publicdomain/zero/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CDDL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", - "referenceNumber": 407, - "name": "Common Development and Distribution License 1.0", - "licenseId": "CDDL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/cddl1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CDDL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", - "referenceNumber": 124, - "name": "Common Development and Distribution License 1.1", - "licenseId": "CDDL-1.1", - "seeAlso": [ - "http://glassfish.java.net/public/CDDL+GPL_1_1.html", - "https://javaee.github.io/glassfish/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", - "referenceNumber": 385, - "name": "Common Documentation License 1.0", - "licenseId": "CDL-1.0", - "seeAlso": [ - "http://www.opensource.apple.com/cdl/", - "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", - "https://www.gnu.org/licenses/license-list.html#ACDL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", - "referenceNumber": 454, - "name": "Community Data License Agreement Permissive 1.0", - "licenseId": "CDLA-Permissive-1.0", - "seeAlso": [ - "https://cdla.io/permissive-1-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", - "referenceNumber": 520, - "name": "Community Data License Agreement Permissive 2.0", - "licenseId": "CDLA-Permissive-2.0", - "seeAlso": [ - "https://cdla.dev/permissive-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", - "referenceNumber": 548, - "name": "Community Data License Agreement Sharing 1.0", - "licenseId": "CDLA-Sharing-1.0", - "seeAlso": [ - "https://cdla.io/sharing-1-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", - "referenceNumber": 468, - "name": "CeCILL Free Software License Agreement v1.0", - "licenseId": "CECILL-1.0", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", - "referenceNumber": 100, - "name": "CeCILL Free Software License Agreement v1.1", - "licenseId": "CECILL-1.1", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", - "referenceNumber": 370, - "name": "CeCILL Free Software License Agreement v2.0", - "licenseId": "CECILL-2.0", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", - "referenceNumber": 95, - "name": "CeCILL Free Software License Agreement v2.1", - "licenseId": "CECILL-2.1", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-B.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", - "referenceNumber": 425, - "name": "CeCILL-B Free Software License Agreement", - "licenseId": "CECILL-B", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-C.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", - "referenceNumber": 45, - "name": "CeCILL-C Free Software License Agreement", - "licenseId": "CECILL-C", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json", - "referenceNumber": 398, - "name": "CERN Open Hardware Licence v1.1", - "licenseId": "CERN-OHL-1.1", - "seeAlso": [ - "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", - "referenceNumber": 318, - "name": "CERN Open Hardware Licence v1.2", - "licenseId": "CERN-OHL-1.2", - "seeAlso": [ - "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", - "referenceNumber": 200, - "name": "CERN Open Hardware Licence Version 2 - Permissive", - "licenseId": "CERN-OHL-P-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", - "referenceNumber": 175, - "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", - "licenseId": "CERN-OHL-S-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", - "referenceNumber": 219, - "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", - "licenseId": "CERN-OHL-W-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CFITSIO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CFITSIO.json", - "referenceNumber": 207, - "name": "CFITSIO License", - "licenseId": "CFITSIO", - "seeAlso": [ - "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html", - "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/check-cvs.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/check-cvs.json", - "referenceNumber": 377, - "name": "check-cvs License", - "licenseId": "check-cvs", - "seeAlso": [ - "http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision\u003d1.1.4.3\u0026view\u003dmarkup\u0026pathrev\u003dcvs1-11-23#l2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/checkmk.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/checkmk.json", - "referenceNumber": 389, - "name": "Checkmk License", - "licenseId": "checkmk", - "seeAlso": [ - "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ClArtistic.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ClArtistic.json", - "referenceNumber": 690, - "name": "Clarified Artistic License", - "licenseId": "ClArtistic", - "seeAlso": [ - "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", - "http://www.ncftp.com/ncftp/doc/LICENSE.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Clips.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Clips.json", - "referenceNumber": 65, - "name": "Clips License", - "licenseId": "Clips", - "seeAlso": [ - "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CMU-Mach.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CMU-Mach.json", - "referenceNumber": 178, - "name": "CMU Mach License", - "licenseId": "CMU-Mach", - "seeAlso": [ - "https://www.cs.cmu.edu/~410/licenses.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CMU-Mach-nodoc.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CMU-Mach-nodoc.json", - "referenceNumber": 391, - "name": "CMU Mach - no notices-in-documentation variant", - "licenseId": "CMU-Mach-nodoc", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L718-L728", - "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CNRI-Jython.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", - "referenceNumber": 138, - "name": "CNRI Jython License", - "licenseId": "CNRI-Jython", - "seeAlso": [ - "http://www.jython.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CNRI-Python.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json", - "referenceNumber": 352, - "name": "CNRI Python License", - "licenseId": "CNRI-Python", - "seeAlso": [ - "https://opensource.org/licenses/CNRI-Python" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", - "referenceNumber": 673, - "name": "CNRI Python Open Source GPL Compatible License Agreement", - "licenseId": "CNRI-Python-GPL-Compatible", - "seeAlso": [ - "http://www.python.org/download/releases/1.6.1/download_win/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/COIL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", - "referenceNumber": 526, - "name": "Copyfree Open Innovation License", - "licenseId": "COIL-1.0", - "seeAlso": [ - "https://coil.apotheon.org/plaintext/01.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", - "referenceNumber": 695, - "name": "Community Specification License 1.0", - "licenseId": "Community-Spec-1.0", - "seeAlso": [ - "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Condor-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", - "referenceNumber": 114, - "name": "Condor Public License v1.1", - "licenseId": "Condor-1.1", - "seeAlso": [ - "http://research.cs.wisc.edu/condor/license.html#condor", - "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", - "referenceNumber": 122, - "name": "copyleft-next 0.3.0", - "licenseId": "copyleft-next-0.3.0", - "seeAlso": [ - "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", - "referenceNumber": 583, - "name": "copyleft-next 0.3.1", - "licenseId": "copyleft-next-0.3.1", - "seeAlso": [ - "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Cornell-Lossless-JPEG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Cornell-Lossless-JPEG.json", - "referenceNumber": 331, - "name": "Cornell Lossless JPEG License", - "licenseId": "Cornell-Lossless-JPEG", - "seeAlso": [ - "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16", - "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h", - "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CPAL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", - "referenceNumber": 147, - "name": "Common Public Attribution License 1.0", - "licenseId": "CPAL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CPAL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", - "referenceNumber": 367, - "name": "Common Public License 1.0", - "licenseId": "CPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CPOL-1.02.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", - "referenceNumber": 250, - "name": "Code Project Open License 1.02", - "licenseId": "CPOL-1.02", - "seeAlso": [ - "http://www.codeproject.com/info/cpol10.aspx" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Cronyx.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Cronyx.json", - "referenceNumber": 32, - "name": "Cronyx License", - "licenseId": "Cronyx", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Crossword.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Crossword.json", - "referenceNumber": 347, - "name": "Crossword License", - "licenseId": "Crossword", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Crossword" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CryptoSwift.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CryptoSwift.json", - "referenceNumber": 323, - "name": "CryptoSwift License", - "licenseId": "CryptoSwift", - "seeAlso": [ - "https://github.com/krzyzanowskim/CryptoSwift/blob/main/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CrystalStacker.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", - "referenceNumber": 449, - "name": "CrystalStacker License", - "licenseId": "CrystalStacker", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", - "referenceNumber": 298, - "name": "CUA Office Public License v1.0", - "licenseId": "CUA-OPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CUA-OPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Cube.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Cube.json", - "referenceNumber": 140, - "name": "Cube License", - "licenseId": "Cube", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Cube" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/curl.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/curl.json", - "referenceNumber": 160, - "name": "curl License", - "licenseId": "curl", - "seeAlso": [ - "https://github.com/bagder/curl/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/cve-tou.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/cve-tou.json", - "referenceNumber": 216, - "name": "Common Vulnerability Enumeration ToU License", - "licenseId": "cve-tou", - "seeAlso": [ - "https://www.cve.org/Legal/TermsOfUse" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/D-FSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json", - "referenceNumber": 545, - "name": "Deutsche Freie Software Lizenz", - "licenseId": "D-FSL-1.0", - "seeAlso": [ - "http://www.dipp.nrw.de/d-fsl/lizenzen/", - "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt", - "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt", - "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl", - "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz", - "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license", - "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file", - "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DEC-3-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DEC-3-Clause.json", - "referenceNumber": 164, - "name": "DEC 3-Clause License", - "licenseId": "DEC-3-Clause", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L239" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/diffmark.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/diffmark.json", - "referenceNumber": 50, - "name": "diffmark license", - "licenseId": "diffmark", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/diffmark" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", - "referenceNumber": 530, - "name": "Data licence Germany – attribution – version 2.0", - "licenseId": "DL-DE-BY-2.0", - "seeAlso": [ - "https://www.govdata.de/dl-de/by-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DL-DE-ZERO-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DL-DE-ZERO-2.0.json", - "referenceNumber": 139, - "name": "Data licence Germany – zero – version 2.0", - "licenseId": "DL-DE-ZERO-2.0", - "seeAlso": [ - "https://www.govdata.de/dl-de/zero-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DOC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DOC.json", - "referenceNumber": 31, - "name": "DOC License", - "licenseId": "DOC", - "seeAlso": [ - "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", - "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DocBook-DTD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DocBook-DTD.json", - "referenceNumber": 603, - "name": "DocBook DTD License", - "licenseId": "DocBook-DTD", - "seeAlso": [ - "http://www.docbook.org/xml/simple/1.1/docbook-simple-1.1.zip" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DocBook-Schema.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DocBook-Schema.json", - "referenceNumber": 184, - "name": "DocBook Schema License", - "licenseId": "DocBook-Schema", - "seeAlso": [ - "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/assembly/schema/docbook51b7.rnc" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DocBook-Stylesheet.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DocBook-Stylesheet.json", - "referenceNumber": 494, - "name": "DocBook Stylesheet License", - "licenseId": "DocBook-Stylesheet", - "seeAlso": [ - "http://www.docbook.org/xml/5.0/docbook-5.0.zip" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DocBook-XML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DocBook-XML.json", - "referenceNumber": 672, - "name": "DocBook XML License", - "licenseId": "DocBook-XML", - "seeAlso": [ - "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/COPYING#L27" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Dotseqn.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", - "referenceNumber": 257, - "name": "Dotseqn License", - "licenseId": "Dotseqn", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Dotseqn" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DRL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", - "referenceNumber": 446, - "name": "Detection Rule License 1.0", - "licenseId": "DRL-1.0", - "seeAlso": [ - "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DRL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DRL-1.1.json", - "referenceNumber": 135, - "name": "Detection Rule License 1.1", - "licenseId": "DRL-1.1", - "seeAlso": [ - "https://github.com/SigmaHQ/Detection-Rule-License/blob/6ec7fbde6101d101b5b5d1fcb8f9b69fbc76c04a/LICENSE.Detection.Rules.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DSDP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DSDP.json", - "referenceNumber": 336, - "name": "DSDP License", - "licenseId": "DSDP", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/DSDP" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/dtoa.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/dtoa.json", - "referenceNumber": 578, - "name": "David M. Gay dtoa License", - "licenseId": "dtoa", - "seeAlso": [ - "https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c", - "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/stdlib/mprec.h;hb\u003dHEAD" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/dvipdfm.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/dvipdfm.json", - "referenceNumber": 319, - "name": "dvipdfm License", - "licenseId": "dvipdfm", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/dvipdfm" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ECL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", - "referenceNumber": 641, - "name": "Educational Community License v1.0", - "licenseId": "ECL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/ECL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ECL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", - "referenceNumber": 338, - "name": "Educational Community License v2.0", - "licenseId": "ECL-2.0", - "seeAlso": [ - "https://opensource.org/licenses/ECL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/eCos-2.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json", - "referenceNumber": 647, - "name": "eCos license version 2.0", - "licenseId": "eCos-2.0", - "seeAlso": [ - "https://www.gnu.org/licenses/ecos-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/EFL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", - "referenceNumber": 145, - "name": "Eiffel Forum License v1.0", - "licenseId": "EFL-1.0", - "seeAlso": [ - "http://www.eiffel-nice.org/license/forum.txt", - "https://opensource.org/licenses/EFL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/EFL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", - "referenceNumber": 604, - "name": "Eiffel Forum License v2.0", - "licenseId": "EFL-2.0", - "seeAlso": [ - "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", - "https://opensource.org/licenses/EFL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/eGenix.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/eGenix.json", - "referenceNumber": 613, - "name": "eGenix.com Public License 1.1.0", - "licenseId": "eGenix", - "seeAlso": [ - "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", - "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Elastic-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", - "referenceNumber": 396, - "name": "Elastic License 2.0", - "licenseId": "Elastic-2.0", - "seeAlso": [ - "https://www.elastic.co/licensing/elastic-license", - "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Entessa.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Entessa.json", - "referenceNumber": 40, - "name": "Entessa Public License v1.0", - "licenseId": "Entessa", - "seeAlso": [ - "https://opensource.org/licenses/Entessa" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/EPICS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPICS.json", - "referenceNumber": 158, - "name": "EPICS Open License", - "licenseId": "EPICS", - "seeAlso": [ - "https://epics.anl.gov/license/open.php" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", - "referenceNumber": 558, - "name": "Eclipse Public License 1.0", - "licenseId": "EPL-1.0", - "seeAlso": [ - "http://www.eclipse.org/legal/epl-v10.html", - "https://opensource.org/licenses/EPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/EPL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", - "referenceNumber": 326, - "name": "Eclipse Public License 2.0", - "licenseId": "EPL-2.0", - "seeAlso": [ - "https://www.eclipse.org/legal/epl-2.0", - "https://www.opensource.org/licenses/EPL-2.0", - "https://www.eclipse.org/legal/epl-v20.html", - "https://projects.eclipse.org/license/epl-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ErlPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", - "referenceNumber": 541, - "name": "Erlang Public License v1.1", - "licenseId": "ErlPL-1.1", - "seeAlso": [ - "http://www.erlang.org/EPLICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/etalab-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", - "referenceNumber": 363, - "name": "Etalab Open License 2.0", - "licenseId": "etalab-2.0", - "seeAlso": [ - "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", - "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EUDatagrid.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json", - "referenceNumber": 262, - "name": "EU DataGrid Software License", - "licenseId": "EUDatagrid", - "seeAlso": [ - "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", - "https://opensource.org/licenses/EUDatagrid" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/EUPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", - "referenceNumber": 405, - "name": "European Union Public License 1.0", - "licenseId": "EUPL-1.0", - "seeAlso": [ - "http://ec.europa.eu/idabc/en/document/7330.html", - "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EUPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json", - "referenceNumber": 393, - "name": "European Union Public License 1.1", - "licenseId": "EUPL-1.1", - "seeAlso": [ - "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", - "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", - "https://opensource.org/licenses/EUPL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/EUPL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json", - "referenceNumber": 596, - "name": "European Union Public License 1.2", - "licenseId": "EUPL-1.2", - "seeAlso": [ - "https://joinup.ec.europa.eu/page/eupl-text-11-12", - "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", - "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt", - "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", - "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\u003dCELEX:32017D0863", - "https://opensource.org/licenses/EUPL-1.2" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Eurosym.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Eurosym.json", - "referenceNumber": 299, - "name": "Eurosym License", - "licenseId": "Eurosym", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Eurosym" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Fair.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Fair.json", - "referenceNumber": 190, - "name": "Fair License", - "licenseId": "Fair", - "seeAlso": [ - "https://web.archive.org/web/20150926120323/http://fairlicense.org/", - "https://opensource.org/licenses/Fair" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/FBM.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FBM.json", - "referenceNumber": 476, - "name": "Fuzzy Bitmap License", - "licenseId": "FBM", - "seeAlso": [ - "https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FDK-AAC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", - "referenceNumber": 44, - "name": "Fraunhofer FDK AAC Codec Library", - "licenseId": "FDK-AAC", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FDK-AAC", - "https://directory.fsf.org/wiki/License:Fdk" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Ferguson-Twofish.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Ferguson-Twofish.json", - "referenceNumber": 662, - "name": "Ferguson Twofish License", - "licenseId": "Ferguson-Twofish", - "seeAlso": [ - "https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Frameworx-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", - "referenceNumber": 376, - "name": "Frameworx Open License 1.0", - "licenseId": "Frameworx-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Frameworx-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", - "referenceNumber": 645, - "name": "FreeBSD Documentation License", - "licenseId": "FreeBSD-DOC", - "seeAlso": [ - "https://www.freebsd.org/copyright/freebsd-doc-license/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FreeImage.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FreeImage.json", - "referenceNumber": 264, - "name": "FreeImage Public License v1.0", - "licenseId": "FreeImage", - "seeAlso": [ - "http://freeimage.sourceforge.net/freeimage-license.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFAP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFAP.json", - "referenceNumber": 561, - "name": "FSF All Permissive License", - "licenseId": "FSFAP", - "seeAlso": [ - "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.json", - "referenceNumber": 629, - "name": "FSF All Permissive License (without Warranty)", - "licenseId": "FSFAP-no-warranty-disclaimer", - "seeAlso": [ - "https://git.savannah.gnu.org/cgit/wget.git/tree/util/trunc.c?h\u003dv1.21.3\u0026id\u003d40747a11e44ced5a8ac628a41f879ced3e2ebce9#n6" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFUL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFUL.json", - "referenceNumber": 59, - "name": "FSF Unlimited License", - "licenseId": "FSFUL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFULLR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", - "referenceNumber": 322, - "name": "FSF Unlimited License (with License Retention)", - "licenseId": "FSFULLR", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFULLRSD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFULLRSD.json", - "referenceNumber": 300, - "name": "FSF Unlimited License (with License Retention and Short Disclaimer)", - "licenseId": "FSFULLRSD", - "seeAlso": [ - "https://git.savannah.gnu.org/cgit/gnulib.git/tree/modules/COPYING?id\u003d7b08932179d0d6b017f7df01a2ddf6e096b038e3" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFULLRWD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFULLRWD.json", - "referenceNumber": 245, - "name": "FSF Unlimited License (With License Retention and Warranty Disclaimer)", - "licenseId": "FSFULLRWD", - "seeAlso": [ - "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSL-1.1-ALv2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSL-1.1-ALv2.json", - "referenceNumber": 585, - "name": "Functional Source License, Version 1.1, ALv2 Future License", - "licenseId": "FSL-1.1-ALv2", - "seeAlso": [ - "https://fsl.software/FSL-1.1-ALv2.template.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSL-1.1-MIT.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSL-1.1-MIT.json", - "referenceNumber": 639, - "name": "Functional Source License, Version 1.1, MIT Future License", - "licenseId": "FSL-1.1-MIT", - "seeAlso": [ - "https://fsl.software/FSL-1.1-MIT.template.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FTL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FTL.json", - "referenceNumber": 417, - "name": "Freetype Project License", - "licenseId": "FTL", - "seeAlso": [ - "http://freetype.fis.uniroma2.it/FTL.TXT", - "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", - "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Furuseth.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Furuseth.json", - "referenceNumber": 72, - "name": "Furuseth License", - "licenseId": "Furuseth", - "seeAlso": [ - "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type\u003dheads#L39-51" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/fwlw.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/fwlw.json", - "referenceNumber": 529, - "name": "fwlw License", - "licenseId": "fwlw", - "seeAlso": [ - "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Game-Programming-Gems.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Game-Programming-Gems.json", - "referenceNumber": 246, - "name": "Game Programming Gems License", - "licenseId": "Game-Programming-Gems", - "seeAlso": [ - "https://github.com/OGRECave/ogre/blob/master/OgreMain/include/OgreSingleton.h#L28C3-L35C46" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GCR-docs.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GCR-docs.json", - "referenceNumber": 270, - "name": "Gnome GCR Documentation License", - "licenseId": "GCR-docs", - "seeAlso": [ - "https://github.com/GNOME/gcr/blob/master/docs/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GD.json", - "referenceNumber": 549, - "name": "GD License", - "licenseId": "GD", - "seeAlso": [ - "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/generic-xts.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/generic-xts.json", - "referenceNumber": 132, - "name": "Generic XTS License", - "licenseId": "generic-xts", - "seeAlso": [ - "https://github.com/mhogomchungu/zuluCrypt/blob/master/external_libraries/tcplay/generic_xts.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", - "referenceNumber": 533, - "name": "GNU Free Documentation License v1.1", - "licenseId": "GFDL-1.1", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", - "referenceNumber": 271, - "name": "GNU Free Documentation License v1.1 only - invariants", - "licenseId": "GFDL-1.1-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", - "referenceNumber": 538, - "name": "GNU Free Documentation License v1.1 or later - invariants", - "licenseId": "GFDL-1.1-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", - "referenceNumber": 609, - "name": "GNU Free Documentation License v1.1 only - no invariants", - "licenseId": "GFDL-1.1-no-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", - "referenceNumber": 689, - "name": "GNU Free Documentation License v1.1 or later - no invariants", - "licenseId": "GFDL-1.1-no-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", - "referenceNumber": 456, - "name": "GNU Free Documentation License v1.1 only", - "licenseId": "GFDL-1.1-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", - "referenceNumber": 67, - "name": "GNU Free Documentation License v1.1 or later", - "licenseId": "GFDL-1.1-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", - "referenceNumber": 350, - "name": "GNU Free Documentation License v1.2", - "licenseId": "GFDL-1.2", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", - "referenceNumber": 192, - "name": "GNU Free Documentation License v1.2 only - invariants", - "licenseId": "GFDL-1.2-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", - "referenceNumber": 261, - "name": "GNU Free Documentation License v1.2 or later - invariants", - "licenseId": "GFDL-1.2-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", - "referenceNumber": 101, - "name": "GNU Free Documentation License v1.2 only - no invariants", - "licenseId": "GFDL-1.2-no-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", - "referenceNumber": 244, - "name": "GNU Free Documentation License v1.2 or later - no invariants", - "licenseId": "GFDL-1.2-no-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", - "referenceNumber": 595, - "name": "GNU Free Documentation License v1.2 only", - "licenseId": "GFDL-1.2-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", - "referenceNumber": 488, - "name": "GNU Free Documentation License v1.2 or later", - "licenseId": "GFDL-1.2-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", - "referenceNumber": 652, - "name": "GNU Free Documentation License v1.3", - "licenseId": "GFDL-1.3", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", - "referenceNumber": 69, - "name": "GNU Free Documentation License v1.3 only - invariants", - "licenseId": "GFDL-1.3-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", - "referenceNumber": 550, - "name": "GNU Free Documentation License v1.3 or later - invariants", - "licenseId": "GFDL-1.3-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", - "referenceNumber": 516, - "name": "GNU Free Documentation License v1.3 only - no invariants", - "licenseId": "GFDL-1.3-no-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", - "referenceNumber": 73, - "name": "GNU Free Documentation License v1.3 or later - no invariants", - "licenseId": "GFDL-1.3-no-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json", - "referenceNumber": 223, - "name": "GNU Free Documentation License v1.3 only", - "licenseId": "GFDL-1.3-only", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", - "referenceNumber": 633, - "name": "GNU Free Documentation License v1.3 or later", - "licenseId": "GFDL-1.3-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Giftware.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Giftware.json", - "referenceNumber": 519, - "name": "Giftware License", - "licenseId": "Giftware", - "seeAlso": [ - "http://liballeg.org/license.html#allegro-4-the-giftware-license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GL2PS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GL2PS.json", - "referenceNumber": 360, - "name": "GL2PS License", - "licenseId": "GL2PS", - "seeAlso": [ - "http://www.geuz.org/gl2ps/COPYING.GL2PS" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Glide.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Glide.json", - "referenceNumber": 71, - "name": "3dfx Glide License", - "licenseId": "Glide", - "seeAlso": [ - "http://www.users.on.net/~triforce/glidexp/COPYING.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Glulxe.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Glulxe.json", - "referenceNumber": 635, - "name": "Glulxe License", - "licenseId": "Glulxe", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Glulxe" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GLWTPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", - "referenceNumber": 27, - "name": "Good Luck With That Public License", - "licenseId": "GLWTPL", - "seeAlso": [ - "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/gnuplot.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/gnuplot.json", - "referenceNumber": 247, - "name": "gnuplot License", - "licenseId": "gnuplot", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Gnuplot" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", - "referenceNumber": 10, - "name": "GNU General Public License v1.0 only", - "licenseId": "GPL-1.0", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", - "referenceNumber": 177, - "name": "GNU General Public License v1.0 or later", - "licenseId": "GPL-1.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json", - "referenceNumber": 152, - "name": "GNU General Public License v1.0 only", - "licenseId": "GPL-1.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", - "referenceNumber": 68, - "name": "GNU General Public License v1.0 or later", - "licenseId": "GPL-1.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json", - "referenceNumber": 688, - "name": "GNU General Public License v2.0 only", - "licenseId": "GPL-2.0", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json", - "referenceNumber": 144, - "name": "GNU General Public License v2.0 or later", - "licenseId": "GPL-2.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", - "referenceNumber": 461, - "name": "GNU General Public License v2.0 only", - "licenseId": "GPL-2.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt", - "https://opensource.org/licenses/GPL-2.0", - "https://github.com/openjdk/jdk/blob/6162e2c5213c5dd7c1127fd9616b543efa898962/LICENSE" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", - "referenceNumber": 99, - "name": "GNU General Public License v2.0 or later", - "licenseId": "GPL-2.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0", - "https://github.com/openjdk/jdk/blob/6162e2c5213c5dd7c1127fd9616b543efa898962/LICENSE" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", - "referenceNumber": 618, - "name": "GNU General Public License v2.0 w/Autoconf exception", - "licenseId": "GPL-2.0-with-autoconf-exception", - "seeAlso": [ - "http://ac-archive.sourceforge.net/doc/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", - "referenceNumber": 358, - "name": "GNU General Public License v2.0 w/Bison exception", - "licenseId": "GPL-2.0-with-bison-exception", - "seeAlso": [ - "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", - "referenceNumber": 171, - "name": "GNU General Public License v2.0 w/Classpath exception", - "licenseId": "GPL-2.0-with-classpath-exception", - "seeAlso": [ - "https://www.gnu.org/software/classpath/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", - "referenceNumber": 151, - "name": "GNU General Public License v2.0 w/Font exception", - "licenseId": "GPL-2.0-with-font-exception", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-faq.html#FontException" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", - "referenceNumber": 525, - "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", - "licenseId": "GPL-2.0-with-GCC-exception", - "seeAlso": [ - "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", - "referenceNumber": 503, - "name": "GNU General Public License v3.0 only", - "licenseId": "GPL-3.0", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", - "referenceNumber": 131, - "name": "GNU General Public License v3.0 or later", - "licenseId": "GPL-3.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", - "referenceNumber": 632, - "name": "GNU General Public License v3.0 only", - "licenseId": "GPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", - "referenceNumber": 467, - "name": "GNU General Public License v3.0 or later", - "licenseId": "GPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", - "referenceNumber": 650, - "name": "GNU General Public License v3.0 w/Autoconf exception", - "licenseId": "GPL-3.0-with-autoconf-exception", - "seeAlso": [ - "https://www.gnu.org/licenses/autoconf-exception-3.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", - "referenceNumber": 601, - "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", - "licenseId": "GPL-3.0-with-GCC-exception", - "seeAlso": [ - "https://www.gnu.org/licenses/gcc-exception-3.1.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Graphics-Gems.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Graphics-Gems.json", - "referenceNumber": 255, - "name": "Graphics Gems License", - "licenseId": "Graphics-Gems", - "seeAlso": [ - "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/gSOAP-1.3b.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json", - "referenceNumber": 668, - "name": "gSOAP Public License v1.3b", - "licenseId": "gSOAP-1.3b", - "seeAlso": [ - "http://www.cs.fsu.edu/~engelen/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/gtkbook.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/gtkbook.json", - "referenceNumber": 465, - "name": "gtkbook License", - "licenseId": "gtkbook", - "seeAlso": [ - "https://github.com/slogan621/gtkbook", - "https://github.com/oetiker/rrdtool-1.x/blob/master/src/plbasename.c#L8-L11" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Gutmann.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Gutmann.json", - "referenceNumber": 524, - "name": "Gutmann License", - "licenseId": "Gutmann", - "seeAlso": [ - "https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HaskellReport.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", - "referenceNumber": 605, - "name": "Haskell Language Report License", - "licenseId": "HaskellReport", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HDF5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HDF5.json", - "referenceNumber": 19, - "name": "HDF5 License", - "licenseId": "HDF5", - "seeAlso": [ - "https://github.com/HDFGroup/hdf5/?tab\u003dLicense-1-ov-file#readme" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/hdparm.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/hdparm.json", - "referenceNumber": 283, - "name": "hdparm License", - "licenseId": "hdparm", - "seeAlso": [ - "https://github.com/Distrotech/hdparm/blob/4517550db29a91420fb2b020349523b1b4512df2/LICENSE.TXT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HIDAPI.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HIDAPI.json", - "referenceNumber": 310, - "name": "HIDAPI License", - "licenseId": "HIDAPI", - "seeAlso": [ - "https://github.com/signal11/hidapi/blob/master/LICENSE-orig.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", - "referenceNumber": 87, - "name": "Hippocratic License 2.1", - "licenseId": "Hippocratic-2.1", - "seeAlso": [ - "https://firstdonoharm.dev/version/2/1/license.html", - "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HP-1986.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HP-1986.json", - "referenceNumber": 282, - "name": "Hewlett-Packard 1986 License", - "licenseId": "HP-1986", - "seeAlso": [ - "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/hppa/memchr.S;h\u003d1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb\u003dHEAD#l2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HP-1989.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HP-1989.json", - "referenceNumber": 8, - "name": "Hewlett-Packard 1989 License", - "licenseId": "HP-1989", - "seeAlso": [ - "https://github.com/bleargh45/Data-UUID/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND.json", - "referenceNumber": 209, - "name": "Historical Permission Notice and Disclaimer", - "licenseId": "HPND", - "seeAlso": [ - "https://opensource.org/licenses/HPND", - "http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/HPND-DEC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-DEC.json", - "referenceNumber": 112, - "name": "Historical Permission Notice and Disclaimer - DEC variant", - "licenseId": "HPND-DEC", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type\u003dheads#L69" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-doc.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-doc.json", - "referenceNumber": 600, - "name": "Historical Permission Notice and Disclaimer - documentation variant", - "licenseId": "HPND-doc", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L185-197", - "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L70-77" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-doc-sell.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-doc-sell.json", - "referenceNumber": 306, - "name": "Historical Permission Notice and Disclaimer - documentation sell variant", - "licenseId": "HPND-doc-sell", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L108-117", - "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L153-162" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-export-US.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-export-US.json", - "referenceNumber": 459, - "name": "HPND with US Government export control warning", - "licenseId": "HPND-export-US", - "seeAlso": [ - "https://www.kermitproject.org/ck90.html#source" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-export-US-acknowledgement.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-export-US-acknowledgement.json", - "referenceNumber": 487, - "name": "HPND with US Government export control warning and acknowledgment", - "licenseId": "HPND-export-US-acknowledgement", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L831-L852", - "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-export-US-modify.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-export-US-modify.json", - "referenceNumber": 172, - "name": "HPND with US Government export control warning and modification rqmt", - "licenseId": "HPND-export-US-modify", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182", - "https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-export2-US.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-export2-US.json", - "referenceNumber": 1, - "name": "HPND with US Government export control and 2 disclaimers", - "licenseId": "HPND-export2-US", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L111-L133", - "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.json", - "referenceNumber": 445, - "name": "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant", - "licenseId": "HPND-Fenneberg-Livingston", - "seeAlso": [ - "https://github.com/FreeRADIUS/freeradius-client/blob/master/COPYRIGHT#L32", - "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L34" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-INRIA-IMAG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-INRIA-IMAG.json", - "referenceNumber": 233, - "name": "Historical Permission Notice and Disclaimer - INRIA-IMAG variant", - "licenseId": "HPND-INRIA-IMAG", - "seeAlso": [ - "https://github.com/ppp-project/ppp/blob/master/pppd/ipv6cp.c#L75-L83" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-Intel.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Intel.json", - "referenceNumber": 228, - "name": "Historical Permission Notice and Disclaimer - Intel variant", - "licenseId": "HPND-Intel", - "seeAlso": [ - "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/i960/memcpy.S;hb\u003dHEAD" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-Kevlin-Henney.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Kevlin-Henney.json", - "referenceNumber": 528, - "name": "Historical Permission Notice and Disclaimer - Kevlin Henney variant", - "licenseId": "HPND-Kevlin-Henney", - "seeAlso": [ - "https://github.com/mruby/mruby/blob/83d12f8d52522cdb7c8cc46fad34821359f453e6/mrbgems/mruby-dir/src/Win/dirent.c#L127-L140" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-Markus-Kuhn.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Markus-Kuhn.json", - "referenceNumber": 623, - "name": "Historical Permission Notice and Disclaimer - Markus Kuhn variant", - "licenseId": "HPND-Markus-Kuhn", - "seeAlso": [ - "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c", - "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dreadline/readline/support/wcwidth.c;h\u003d0f5ec995796f4813abbcf4972aec0378ab74722a;hb\u003dHEAD#l55" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-merchantability-variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-merchantability-variant.json", - "referenceNumber": 157, - "name": "Historical Permission Notice and Disclaimer - merchantability variant", - "licenseId": "HPND-merchantability-variant", - "seeAlso": [ - "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/misc/fini.c;hb\u003dHEAD" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-MIT-disclaimer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-MIT-disclaimer.json", - "referenceNumber": 313, - "name": "Historical Permission Notice and Disclaimer with MIT disclaimer", - "licenseId": "HPND-MIT-disclaimer", - "seeAlso": [ - "https://metacpan.org/release/NLNETLABS/Net-DNS-SEC-1.22/source/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-Netrek.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Netrek.json", - "referenceNumber": 387, - "name": "Historical Permission Notice and Disclaimer - Netrek variant", - "licenseId": "HPND-Netrek", - "seeAlso": [], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-Pbmplus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Pbmplus.json", - "referenceNumber": 339, - "name": "Historical Permission Notice and Disclaimer - Pbmplus variant", - "licenseId": "HPND-Pbmplus", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.json", - "referenceNumber": 341, - "name": "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer", - "licenseId": "HPND-sell-MIT-disclaimer-xserver", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L1781" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-regexpr.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-regexpr.json", - "referenceNumber": 681, - "name": "Historical Permission Notice and Disclaimer - sell regexpr variant", - "licenseId": "HPND-sell-regexpr", - "seeAlso": [ - "https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type\u003dheads#L245" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", - "referenceNumber": 13, - "name": "Historical Permission Notice and Disclaimer - sell variant", - "licenseId": "HPND-sell-variant", - "seeAlso": [ - "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19", - "https://github.com/kfish/xsel/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json", - "referenceNumber": 225, - "name": "HPND sell variant with MIT disclaimer", - "licenseId": "HPND-sell-variant-MIT-disclaimer", - "seeAlso": [ - "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.json", - "referenceNumber": 357, - "name": "HPND sell variant with MIT disclaimer - reverse", - "licenseId": "HPND-sell-variant-MIT-disclaimer-rev", - "seeAlso": [ - "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/dynlist.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-UC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-UC.json", - "referenceNumber": 210, - "name": "Historical Permission Notice and Disclaimer - University of California variant", - "licenseId": "HPND-UC", - "seeAlso": [ - "https://core.tcl-lang.org/tk/file?name\u003dcompat/unistd.h" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-UC-export-US.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-UC-export-US.json", - "referenceNumber": 143, - "name": "Historical Permission Notice and Disclaimer - University of California, US export warning", - "licenseId": "HPND-UC-export-US", - "seeAlso": [ - "https://github.com/RTimothyEdwards/magic/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HTMLTIDY.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", - "referenceNumber": 478, - "name": "HTML Tidy License", - "licenseId": "HTMLTIDY", - "seeAlso": [ - "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IBM-pibs.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", - "referenceNumber": 242, - "name": "IBM PowerPC Initialization and Boot Software", - "licenseId": "IBM-pibs", - "seeAlso": [ - "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ICU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ICU.json", - "referenceNumber": 289, - "name": "ICU License", - "licenseId": "ICU", - "seeAlso": [ - "http://source.icu-project.org/repos/icu/icu/trunk/license.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/IEC-Code-Components-EULA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IEC-Code-Components-EULA.json", - "referenceNumber": 399, - "name": "IEC Code Components End-user licence agreement", - "licenseId": "IEC-Code-Components-EULA", - "seeAlso": [ - "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf", - "https://www.iec.ch/CCv1", - "https://www.iec.ch/copyright" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IJG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IJG.json", - "referenceNumber": 512, - "name": "Independent JPEG Group License", - "licenseId": "IJG", - "seeAlso": [ - "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/IJG-short.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IJG-short.json", - "referenceNumber": 694, - "name": "Independent JPEG Group License - short", - "licenseId": "IJG-short", - "seeAlso": [ - "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ImageMagick.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", - "referenceNumber": 472, - "name": "ImageMagick License", - "licenseId": "ImageMagick", - "seeAlso": [ - "http://www.imagemagick.org/script/license.php" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/iMatix.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/iMatix.json", - "referenceNumber": 482, - "name": "iMatix Standard Function Library Agreement", - "licenseId": "iMatix", - "seeAlso": [ - "http://legacy.imatix.com/html/sfl/sfl4.htm#license" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Imlib2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Imlib2.json", - "referenceNumber": 552, - "name": "Imlib2 License", - "licenseId": "Imlib2", - "seeAlso": [ - "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", - "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Info-ZIP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", - "referenceNumber": 52, - "name": "Info-ZIP License", - "licenseId": "Info-ZIP", - "seeAlso": [ - "http://www.info-zip.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Inner-Net-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Inner-Net-2.0.json", - "referenceNumber": 328, - "name": "Inner Net License v2.0", - "licenseId": "Inner-Net-2.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Inner_Net_License", - "https://sourceware.org/git/?p\u003dglibc.git;a\u003dblob;f\u003dLICENSES;h\u003d530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb\u003dHEAD#l207" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/InnoSetup.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/InnoSetup.json", - "referenceNumber": 354, - "name": "Inno Setup License", - "licenseId": "InnoSetup", - "seeAlso": [ - "https://github.com/jrsoftware/issrc/blob/HEAD/license.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Intel.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Intel.json", - "referenceNumber": 419, - "name": "Intel Open Source License", - "licenseId": "Intel", - "seeAlso": [ - "https://opensource.org/licenses/Intel" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Intel-ACPI.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", - "referenceNumber": 206, - "name": "Intel ACPI Software License Agreement", - "licenseId": "Intel-ACPI", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Interbase-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json", - "referenceNumber": 532, - "name": "Interbase Public License v1.0", - "licenseId": "Interbase-1.0", - "seeAlso": [ - "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IPA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IPA.json", - "referenceNumber": 186, - "name": "IPA Font License", - "licenseId": "IPA", - "seeAlso": [ - "https://opensource.org/licenses/IPA" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/IPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", - "referenceNumber": 591, - "name": "IBM Public License v1.0", - "licenseId": "IPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/IPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ISC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ISC.json", - "referenceNumber": 58, - "name": "ISC License", - "licenseId": "ISC", - "seeAlso": [ - "https://www.isc.org/licenses/", - "https://www.isc.org/downloads/software-support-policy/isc-license/", - "https://opensource.org/licenses/ISC" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ISC-Veillard.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ISC-Veillard.json", - "referenceNumber": 317, - "name": "ISC Veillard variant", - "licenseId": "ISC-Veillard", - "seeAlso": [ - "https://raw.githubusercontent.com/GNOME/libxml2/4c2e7c651f6c2f0d1a74f350cbda95f7df3e7017/hash.c", - "https://github.com/GNOME/libxml2/blob/master/dict.c", - "https://sourceforge.net/p/ctrio/git/ci/master/tree/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Jam.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Jam.json", - "referenceNumber": 475, - "name": "Jam License", - "licenseId": "Jam", - "seeAlso": [ - "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", - "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/JasPer-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", - "referenceNumber": 103, - "name": "JasPer License", - "licenseId": "JasPer-2.0", - "seeAlso": [ - "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/jove.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/jove.json", - "referenceNumber": 642, - "name": "Jove License", - "licenseId": "jove", - "seeAlso": [ - "https://github.com/jonmacs/jove/blob/4_17/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JPL-image.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JPL-image.json", - "referenceNumber": 321, - "name": "JPL Image Use Policy", - "licenseId": "JPL-image", - "seeAlso": [ - "https://www.jpl.nasa.gov/jpl-image-use-policy" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JPNIC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JPNIC.json", - "referenceNumber": 655, - "name": "Japan Network Information Center License", - "licenseId": "JPNIC", - "seeAlso": [ - "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JSON.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JSON.json", - "referenceNumber": 54, - "name": "JSON License", - "licenseId": "JSON", - "seeAlso": [ - "http://www.json.org/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Kastrup.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Kastrup.json", - "referenceNumber": 491, - "name": "Kastrup License", - "licenseId": "Kastrup", - "seeAlso": [ - "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Kazlib.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Kazlib.json", - "referenceNumber": 312, - "name": "Kazlib License", - "licenseId": "Kazlib", - "seeAlso": [ - "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id\u003d0062df360c2d17d57f6af19b0e444c51feb99036" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Knuth-CTAN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Knuth-CTAN.json", - "referenceNumber": 332, - "name": "Knuth CTAN License", - "licenseId": "Knuth-CTAN", - "seeAlso": [ - "https://ctan.org/license/knuth" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LAL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", - "referenceNumber": 134, - "name": "Licence Art Libre 1.2", - "licenseId": "LAL-1.2", - "seeAlso": [ - "http://artlibre.org/licence/lal/licence-art-libre-12/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LAL-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json", - "referenceNumber": 521, - "name": "Licence Art Libre 1.3", - "licenseId": "LAL-1.3", - "seeAlso": [ - "https://artlibre.org/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Latex2e.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Latex2e.json", - "referenceNumber": 43, - "name": "Latex2e License", - "licenseId": "Latex2e", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Latex2e" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Latex2e-translated-notice.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Latex2e-translated-notice.json", - "referenceNumber": 523, - "name": "Latex2e with translated notice permission", - "licenseId": "Latex2e-translated-notice", - "seeAlso": [ - "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n74" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Leptonica.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Leptonica.json", - "referenceNumber": 137, - "name": "Leptonica License", - "licenseId": "Leptonica", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Leptonica" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", - "referenceNumber": 676, - "name": "GNU Library General Public License v2 only", - "licenseId": "LGPL-2.0", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", - "referenceNumber": 409, - "name": "GNU Library General Public License v2 or later", - "licenseId": "LGPL-2.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json", - "referenceNumber": 329, - "name": "GNU Library General Public License v2 only", - "licenseId": "LGPL-2.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", - "referenceNumber": 75, - "name": "GNU Library General Public License v2 or later", - "licenseId": "LGPL-2.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.1.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json", - "referenceNumber": 677, - "name": "GNU Lesser General Public License v2.1 only", - "licenseId": "LGPL-2.1", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.1+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json", - "referenceNumber": 448, - "name": "GNU Lesser General Public License v2.1 or later", - "licenseId": "LGPL-2.1+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", - "referenceNumber": 297, - "name": "GNU Lesser General Public License v2.1 only", - "licenseId": "LGPL-2.1-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", - "referenceNumber": 187, - "name": "GNU Lesser General Public License v2.1 or later", - "licenseId": "LGPL-2.1-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json", - "referenceNumber": 9, - "name": "GNU Lesser General Public License v3.0 only", - "licenseId": "LGPL-3.0", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", - "referenceNumber": 169, - "name": "GNU Lesser General Public License v3.0 or later", - "licenseId": "LGPL-3.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", - "referenceNumber": 634, - "name": "GNU Lesser General Public License v3.0 only", - "licenseId": "LGPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", - "referenceNumber": 502, - "name": "GNU Lesser General Public License v3.0 or later", - "licenseId": "LGPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPLLR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", - "referenceNumber": 123, - "name": "Lesser General Public License For Linguistic Resources", - "licenseId": "LGPLLR", - "seeAlso": [ - "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Libpng.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Libpng.json", - "referenceNumber": 62, - "name": "libpng License", - "licenseId": "Libpng", - "seeAlso": [ - "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libpng-1.6.35.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libpng-1.6.35.json", - "referenceNumber": 429, - "name": "PNG Reference Library License v1 (for libpng 0.5 through 1.6.35)", - "licenseId": "libpng-1.6.35", - "seeAlso": [ - "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libpng-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", - "referenceNumber": 226, - "name": "PNG Reference Library version 2", - "licenseId": "libpng-2.0", - "seeAlso": [ - "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libselinux-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", - "referenceNumber": 263, - "name": "libselinux public domain notice", - "licenseId": "libselinux-1.0", - "seeAlso": [ - "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libtiff.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libtiff.json", - "referenceNumber": 35, - "name": "libtiff License", - "licenseId": "libtiff", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/libtiff" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libutil-David-Nugent.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libutil-David-Nugent.json", - "referenceNumber": 402, - "name": "libutil David Nugent License", - "licenseId": "libutil-David-Nugent", - "seeAlso": [ - "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3", - "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", - "referenceNumber": 232, - "name": "Licence Libre du Québec – Permissive version 1.1", - "licenseId": "LiLiQ-P-1.1", - "seeAlso": [ - "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", - "http://opensource.org/licenses/LiLiQ-P-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", - "referenceNumber": 229, - "name": "Licence Libre du Québec – Réciprocité version 1.1", - "licenseId": "LiLiQ-R-1.1", - "seeAlso": [ - "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", - "http://opensource.org/licenses/LiLiQ-R-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", - "referenceNumber": 238, - "name": "Licence Libre du Québec – Réciprocité forte version 1.1", - "licenseId": "LiLiQ-Rplus-1.1", - "seeAlso": [ - "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", - "http://opensource.org/licenses/LiLiQ-Rplus-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Linux-man-pages-1-para.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-1-para.json", - "referenceNumber": 78, - "name": "Linux man-pages - 1 paragraph", - "licenseId": "Linux-man-pages-1-para", - "seeAlso": [ - "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", - "referenceNumber": 640, - "name": "Linux man-pages Copyleft", - "licenseId": "Linux-man-pages-copyleft", - "seeAlso": [ - "https://www.kernel.org/doc/man-pages/licenses.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.json", - "referenceNumber": 592, - "name": "Linux man-pages Copyleft - 2 paragraphs", - "licenseId": "Linux-man-pages-copyleft-2-para", - "seeAlso": [ - "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/move_pages.2#n5", - "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/migrate_pages.2#n8" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json", - "referenceNumber": 202, - "name": "Linux man-pages Copyleft Variant", - "licenseId": "Linux-man-pages-copyleft-var", - "seeAlso": [ - "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Linux-OpenIB.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", - "referenceNumber": 513, - "name": "Linux Kernel Variant of OpenIB.org license", - "licenseId": "Linux-OpenIB", - "seeAlso": [ - "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LOOP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LOOP.json", - "referenceNumber": 237, - "name": "Common Lisp LOOP License", - "licenseId": "LOOP", - "seeAlso": [ - "https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp", - "http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h\u003dVersion_2_6_13pre", - "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp", - "https://github.com/cl-adams/adams/blob/master/LICENSE.md", - "https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp", - "https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPD-document.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPD-document.json", - "referenceNumber": 5, - "name": "LPD Documentation License", - "licenseId": "LPD-document", - "seeAlso": [ - "https://github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md", - "https://www.ietf.org/rfc/rfc1952.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", - "referenceNumber": 136, - "name": "Lucent Public License Version 1.0", - "licenseId": "LPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/LPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LPL-1.02.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", - "referenceNumber": 656, - "name": "Lucent Public License v1.02", - "licenseId": "LPL-1.02", - "seeAlso": [ - "http://plan9.bell-labs.com/plan9/license.html", - "https://opensource.org/licenses/LPL-1.02" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", - "referenceNumber": 63, - "name": "LaTeX Project Public License v1.0", - "licenseId": "LPPL-1.0", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", - "referenceNumber": 542, - "name": "LaTeX Project Public License v1.1", - "licenseId": "LPPL-1.1", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", - "referenceNumber": 486, - "name": "LaTeX Project Public License v1.2", - "licenseId": "LPPL-1.2", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.3a.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", - "referenceNumber": 280, - "name": "LaTeX Project Public License v1.3a", - "licenseId": "LPPL-1.3a", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-3a.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.3c.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", - "referenceNumber": 33, - "name": "LaTeX Project Public License v1.3c", - "licenseId": "LPPL-1.3c", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-3c.txt", - "https://opensource.org/licenses/LPPL-1.3c" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/lsof.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/lsof.json", - "referenceNumber": 563, - "name": "lsof License", - "licenseId": "lsof", - "seeAlso": [ - "https://github.com/lsof-org/lsof/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json", - "referenceNumber": 661, - "name": "Lucida Bitmap Fonts License", - "licenseId": "Lucida-Bitmap-Fonts", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type\u003dheads" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", - "referenceNumber": 349, - "name": "LZMA SDK License (versions 9.11 to 9.20)", - "licenseId": "LZMA-SDK-9.11-to-9.20", - "seeAlso": [ - "https://www.7-zip.org/sdk.html", - "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json", - "referenceNumber": 504, - "name": "LZMA SDK License (versions 9.22 and beyond)", - "licenseId": "LZMA-SDK-9.22", - "seeAlso": [ - "https://www.7-zip.org/sdk.html", - "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Mackerras-3-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause.json", - "referenceNumber": 539, - "name": "Mackerras 3-Clause License", - "licenseId": "Mackerras-3-Clause", - "seeAlso": [ - "https://github.com/ppp-project/ppp/blob/master/pppd/chap_ms.c#L6-L28" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.json", - "referenceNumber": 433, - "name": "Mackerras 3-Clause - acknowledgment variant", - "licenseId": "Mackerras-3-Clause-acknowledgment", - "seeAlso": [ - "https://github.com/ppp-project/ppp/blob/master/pppd/auth.c#L6-L28" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/magaz.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/magaz.json", - "referenceNumber": 373, - "name": "magaz License", - "licenseId": "magaz", - "seeAlso": [ - "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex", - "https://mirrors.ctan.org/macros/latex/contrib/version/version.sty" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/mailprio.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mailprio.json", - "referenceNumber": 381, - "name": "mailprio License", - "licenseId": "mailprio", - "seeAlso": [ - "https://fossies.org/linux/sendmail/contrib/mailprio" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MakeIndex.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", - "referenceNumber": 165, - "name": "MakeIndex License", - "licenseId": "MakeIndex", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MakeIndex" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/man2html.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/man2html.json", - "referenceNumber": 120, - "name": "man2html License", - "licenseId": "man2html", - "seeAlso": [ - "http://primates.ximian.com/~flucifredi/man/man-1.6g.tar.gz", - "https://github.com/hamano/man2html/blob/master/man2html.c", - "https://docs.oracle.com/cd/E81115_01/html/E81116/licenses.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Martin-Birgmeier.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Martin-Birgmeier.json", - "referenceNumber": 361, - "name": "Martin Birgmeier License", - "licenseId": "Martin-Birgmeier", - "seeAlso": [ - "https://github.com/Perl/perl5/blob/blead/util.c#L6136" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/McPhee-slideshow.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/McPhee-slideshow.json", - "referenceNumber": 489, - "name": "McPhee Slideshow License", - "licenseId": "McPhee-slideshow", - "seeAlso": [ - "https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/metamail.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/metamail.json", - "referenceNumber": 455, - "name": "metamail License", - "licenseId": "metamail", - "seeAlso": [ - "https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Minpack.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Minpack.json", - "referenceNumber": 28, - "name": "Minpack License", - "licenseId": "Minpack", - "seeAlso": [ - "http://www.netlib.org/minpack/disclaimer", - "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIPS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIPS.json", - "referenceNumber": 351, - "name": "MIPS License", - "licenseId": "MIPS", - "seeAlso": [ - "https://sourceware.org/cgit/binutils-gdb/tree/include/coff/sym.h#n11" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MirOS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MirOS.json", - "referenceNumber": 692, - "name": "The MirOS Licence", - "licenseId": "MirOS", - "seeAlso": [ - "https://opensource.org/licenses/MirOS" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MIT.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT.json", - "referenceNumber": 515, - "name": "MIT License", - "licenseId": "MIT", - "seeAlso": [ - "https://opensource.org/license/mit/", - "http://opensource.org/licenses/MIT" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MIT-0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-0.json", - "referenceNumber": 173, - "name": "MIT No Attribution", - "licenseId": "MIT-0", - "seeAlso": [ - "https://github.com/aws/mit-0", - "https://romanrm.net/mit-zero", - "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MIT-advertising.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", - "referenceNumber": 440, - "name": "Enlightenment License (e16)", - "licenseId": "MIT-advertising", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-Click.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Click.json", - "referenceNumber": 438, - "name": "MIT Click License", - "licenseId": "MIT-Click", - "seeAlso": [ - "https://github.com/kohler/t1utils/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-CMU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json", - "referenceNumber": 287, - "name": "CMU License", - "licenseId": "MIT-CMU", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style", - "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-enna.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", - "referenceNumber": 580, - "name": "enna License", - "licenseId": "MIT-enna", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#enna" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-feh.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", - "referenceNumber": 408, - "name": "feh License", - "licenseId": "MIT-feh", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#feh" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-Festival.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Festival.json", - "referenceNumber": 18, - "name": "MIT Festival Variant", - "licenseId": "MIT-Festival", - "seeAlso": [ - "https://github.com/festvox/flite/blob/master/COPYING", - "https://github.com/festvox/speech_tools/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-Khronos-old.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Khronos-old.json", - "referenceNumber": 508, - "name": "MIT Khronos - old variant", - "licenseId": "MIT-Khronos-old", - "seeAlso": [ - "https://github.com/KhronosGroup/SPIRV-Cross/blob/main/LICENSES/LicenseRef-KhronosFreeUse.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", - "referenceNumber": 304, - "name": "MIT License Modern Variant", - "licenseId": "MIT-Modern-Variant", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", - "https://ptolemy.berkeley.edu/copyright.htm", - "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MIT-open-group.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", - "referenceNumber": 404, - "name": "MIT Open Group variant", - "licenseId": "MIT-open-group", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-testregex.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-testregex.json", - "referenceNumber": 496, - "name": "MIT testregex Variant", - "licenseId": "MIT-testregex", - "seeAlso": [ - "https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-Wu.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Wu.json", - "referenceNumber": 355, - "name": "MIT Tom Wu Variant", - "licenseId": "MIT-Wu", - "seeAlso": [ - "https://github.com/chromium/octane/blob/master/crypto.js" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MITNFA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MITNFA.json", - "referenceNumber": 473, - "name": "MIT +no-false-attribs license", - "licenseId": "MITNFA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MITNFA" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MMIXware.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MMIXware.json", - "referenceNumber": 663, - "name": "MMIXware License", - "licenseId": "MMIXware", - "seeAlso": [ - "https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Motosoto.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Motosoto.json", - "referenceNumber": 507, - "name": "Motosoto License", - "licenseId": "Motosoto", - "seeAlso": [ - "https://opensource.org/licenses/Motosoto" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MPEG-SSG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPEG-SSG.json", - "referenceNumber": 303, - "name": "MPEG Software Simulation", - "licenseId": "MPEG-SSG", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/mpi-permissive.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json", - "referenceNumber": 213, - "name": "mpi Permissive License", - "licenseId": "mpi-permissive", - "seeAlso": [ - "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl\u003d19#L19" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/mpich2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mpich2.json", - "referenceNumber": 102, - "name": "mpich2 License", - "licenseId": "mpich2", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", - "referenceNumber": 665, - "name": "Mozilla Public License 1.0", - "licenseId": "MPL-1.0", - "seeAlso": [ - "http://www.mozilla.org/MPL/MPL-1.0.html", - "https://opensource.org/licenses/MPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", - "referenceNumber": 679, - "name": "Mozilla Public License 1.1", - "licenseId": "MPL-1.1", - "seeAlso": [ - "http://www.mozilla.org/MPL/MPL-1.1.html", - "https://opensource.org/licenses/MPL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MPL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json", - "referenceNumber": 599, - "name": "Mozilla Public License 2.0", - "licenseId": "MPL-2.0", - "seeAlso": [ - "https://www.mozilla.org/MPL/2.0/", - "https://opensource.org/licenses/MPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", - "referenceNumber": 174, - "name": "Mozilla Public License 2.0 (no copyleft exception)", - "licenseId": "MPL-2.0-no-copyleft-exception", - "seeAlso": [ - "https://www.mozilla.org/MPL/2.0/", - "https://opensource.org/licenses/MPL-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/mplus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mplus.json", - "referenceNumber": 17, - "name": "mplus Font License", - "licenseId": "mplus", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:Mplus?rd\u003dLicensing/mplus" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MS-LPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-LPL.json", - "referenceNumber": 674, - "name": "Microsoft Limited Public License", - "licenseId": "MS-LPL", - "seeAlso": [ - "https://www.openhub.net/licenses/mslpl", - "https://github.com/gabegundy/atlserver/blob/master/License.txt", - "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MS-PL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-PL.json", - "referenceNumber": 698, - "name": "Microsoft Public License", - "licenseId": "MS-PL", - "seeAlso": [ - "http://www.microsoft.com/opensource/licenses.mspx", - "https://opensource.org/licenses/MS-PL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MS-RL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-RL.json", - "referenceNumber": 276, - "name": "Microsoft Reciprocal License", - "licenseId": "MS-RL", - "seeAlso": [ - "http://www.microsoft.com/opensource/licenses.mspx", - "https://opensource.org/licenses/MS-RL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MTLL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MTLL.json", - "referenceNumber": 588, - "name": "Matrix Template Library License", - "licenseId": "MTLL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", - "referenceNumber": 320, - "name": "Mulan Permissive Software License, Version 1", - "licenseId": "MulanPSL-1.0", - "seeAlso": [ - "https://license.coscl.org.cn/MulanPSL/", - "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", - "referenceNumber": 182, - "name": "Mulan Permissive Software License, Version 2", - "licenseId": "MulanPSL-2.0", - "seeAlso": [ - "https://license.coscl.org.cn/MulanPSL2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Multics.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Multics.json", - "referenceNumber": 60, - "name": "Multics License", - "licenseId": "Multics", - "seeAlso": [ - "https://opensource.org/licenses/Multics" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Mup.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Mup.json", - "referenceNumber": 288, - "name": "Mup License", - "licenseId": "Mup", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Mup" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NAIST-2003.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", - "referenceNumber": 462, - "name": "Nara Institute of Science and Technology License (2003)", - "licenseId": "NAIST-2003", - "seeAlso": [ - "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", - "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NASA-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", - "referenceNumber": 432, - "name": "NASA Open Source Agreement 1.3", - "licenseId": "NASA-1.3", - "seeAlso": [ - "http://ti.arc.nasa.gov/opensource/nosa/", - "https://opensource.org/licenses/NASA-1.3" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Naumen.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Naumen.json", - "referenceNumber": 307, - "name": "Naumen Public License", - "licenseId": "Naumen", - "seeAlso": [ - "https://opensource.org/licenses/Naumen" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/NBPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", - "referenceNumber": 460, - "name": "Net Boolean Public License v1", - "licenseId": "NBPL-1.0", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NCBI-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCBI-PD.json", - "referenceNumber": 696, - "name": "NCBI Public Domain Notice", - "licenseId": "NCBI-PD", - "seeAlso": [ - "https://github.com/ncbi/sra-tools/blob/e8e5b6af4edc460156ad9ce5902d0779cffbf685/LICENSE", - "https://github.com/ncbi/datasets/blob/0ea4cd16b61e5b799d9cc55aecfa016d6c9bd2bf/LICENSE.md", - "https://github.com/ncbi/gprobe/blob/de64d30fee8b4c4013094d7d3139ea89b5dd1ace/LICENSE", - "https://github.com/ncbi/egapx/blob/08930b9dec0c69b2d1a05e5153c7b95ef0a3eb0f/LICENSE", - "https://github.com/ncbi/datasets/blob/master/LICENSE.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", - "referenceNumber": 392, - "name": "Non-Commercial Government Licence", - "licenseId": "NCGL-UK-2.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NCL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCL.json", - "referenceNumber": 154, - "name": "NCL Source Code License", - "licenseId": "NCL", - "seeAlso": [ - "https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/modules/module-filter-chain/pffft.c?ref_type\u003dheads#L1-52" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NCSA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCSA.json", - "referenceNumber": 148, - "name": "University of Illinois/NCSA Open Source License", - "licenseId": "NCSA", - "seeAlso": [ - "http://otm.illinois.edu/uiuc_openSource", - "https://opensource.org/licenses/NCSA" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Net-SNMP.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", - "referenceNumber": 638, - "name": "Net-SNMP License", - "licenseId": "Net-SNMP", - "seeAlso": [ - "http://net-snmp.sourceforge.net/about/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NetCDF.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NetCDF.json", - "referenceNumber": 626, - "name": "NetCDF license", - "licenseId": "NetCDF", - "seeAlso": [ - "http://www.unidata.ucar.edu/software/netcdf/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Newsletr.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Newsletr.json", - "referenceNumber": 607, - "name": "Newsletr License", - "licenseId": "Newsletr", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Newsletr" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NGPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NGPL.json", - "referenceNumber": 64, - "name": "Nethack General Public License", - "licenseId": "NGPL", - "seeAlso": [ - "https://opensource.org/licenses/NGPL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ngrep.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ngrep.json", - "referenceNumber": 16, - "name": "ngrep License", - "licenseId": "ngrep", - "seeAlso": [ - "https://github.com/jpr5/ngrep/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NICTA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json", - "referenceNumber": 406, - "name": "NICTA Public Software License, Version 1.0", - "licenseId": "NICTA-1.0", - "seeAlso": [ - "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NIST-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", - "referenceNumber": 98, - "name": "NIST Public Domain Notice", - "licenseId": "NIST-PD", - "seeAlso": [ - "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", - "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", - "referenceNumber": 616, - "name": "NIST Public Domain Notice with license fallback", - "licenseId": "NIST-PD-fallback", - "seeAlso": [ - "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", - "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NIST-Software.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-Software.json", - "referenceNumber": 447, - "name": "NIST Software License", - "licenseId": "NIST-Software", - "seeAlso": [ - "https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NLOD-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", - "referenceNumber": 249, - "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", - "licenseId": "NLOD-1.0", - "seeAlso": [ - "http://data.norge.no/nlod/en/1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NLOD-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", - "referenceNumber": 687, - "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", - "licenseId": "NLOD-2.0", - "seeAlso": [ - "http://data.norge.no/nlod/en/2.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NLPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLPL.json", - "referenceNumber": 161, - "name": "No Limit Public License", - "licenseId": "NLPL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/NLPL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Nokia.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Nokia.json", - "referenceNumber": 464, - "name": "Nokia Open Source License", - "licenseId": "Nokia", - "seeAlso": [ - "https://opensource.org/licenses/nokia" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NOSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NOSL.json", - "referenceNumber": 471, - "name": "Netizen Open Source License", - "licenseId": "NOSL", - "seeAlso": [ - "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Noweb.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Noweb.json", - "referenceNumber": 77, - "name": "Noweb License", - "licenseId": "Noweb", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Noweb" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", - "referenceNumber": 372, - "name": "Netscape Public License v1.0", - "licenseId": "NPL-1.0", - "seeAlso": [ - "http://www.mozilla.org/MPL/NPL/1.0/" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json", - "referenceNumber": 518, - "name": "Netscape Public License v1.1", - "licenseId": "NPL-1.1", - "seeAlso": [ - "http://www.mozilla.org/MPL/NPL/1.1/" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NPOSL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", - "referenceNumber": 195, - "name": "Non-Profit Open Software License 3.0", - "licenseId": "NPOSL-3.0", - "seeAlso": [ - "https://opensource.org/licenses/NOSL3.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/NRL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NRL.json", - "referenceNumber": 146, - "name": "NRL License", - "licenseId": "NRL", - "seeAlso": [ - "http://web.mit.edu/network/isakmp/nrllicense.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NTIA-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NTIA-PD.json", - "referenceNumber": 426, - "name": "NTIA Public Domain Notice", - "licenseId": "NTIA-PD", - "seeAlso": [ - "https://raw.githubusercontent.com/NTIA/itm/refs/heads/master/LICENSE.md", - "https://raw.githubusercontent.com/NTIA/scos-sensor/refs/heads/master/LICENSE.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NTP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NTP.json", - "referenceNumber": 621, - "name": "NTP License", - "licenseId": "NTP", - "seeAlso": [ - "https://opensource.org/licenses/NTP" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/NTP-0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NTP-0.json", - "referenceNumber": 566, - "name": "NTP No Attribution", - "licenseId": "NTP-0", - "seeAlso": [ - "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Nunit.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/Nunit.json", - "referenceNumber": 203, - "name": "Nunit License", - "licenseId": "Nunit", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Nunit" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/O-UDA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", - "referenceNumber": 485, - "name": "Open Use of Data Agreement v1.0", - "licenseId": "O-UDA-1.0", - "seeAlso": [ - "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", - "https://cdla.dev/open-use-of-data-agreement-v1-0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OAR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OAR.json", - "referenceNumber": 251, - "name": "OAR License", - "licenseId": "OAR", - "seeAlso": [ - "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/string/strsignal.c;hb\u003dHEAD#l35" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OCCT-PL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", - "referenceNumber": 371, - "name": "Open CASCADE Technology Public License", - "licenseId": "OCCT-PL", - "seeAlso": [ - "http://www.opencascade.com/content/occt-public-license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OCLC-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", - "referenceNumber": 274, - "name": "OCLC Research Public License 2.0", - "licenseId": "OCLC-2.0", - "seeAlso": [ - "http://www.oclc.org/research/activities/software/license/v2final.htm", - "https://opensource.org/licenses/OCLC-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ODbL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", - "referenceNumber": 397, - "name": "Open Data Commons Open Database License v1.0", - "licenseId": "ODbL-1.0", - "seeAlso": [ - "http://www.opendatacommons.org/licenses/odbl/1.0/", - "https://opendatacommons.org/licenses/odbl/1-0/" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ODC-By-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", - "referenceNumber": 46, - "name": "Open Data Commons Attribution License v1.0", - "licenseId": "ODC-By-1.0", - "seeAlso": [ - "https://opendatacommons.org/licenses/by/1.0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFFIS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFFIS.json", - "referenceNumber": 368, - "name": "OFFIS License", - "licenseId": "OFFIS", - "seeAlso": [ - "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", - "referenceNumber": 589, - "name": "SIL Open Font License 1.0", - "licenseId": "OFL-1.0", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", - "referenceNumber": 653, - "name": "SIL Open Font License 1.0 with no Reserved Font Name", - "licenseId": "OFL-1.0-no-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json", - "referenceNumber": 201, - "name": "SIL Open Font License 1.0 with Reserved Font Name", - "licenseId": "OFL-1.0-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", - "referenceNumber": 608, - "name": "SIL Open Font License 1.1", - "licenseId": "OFL-1.1", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", - "https://opensource.org/licenses/OFL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", - "referenceNumber": 204, - "name": "SIL Open Font License 1.1 with no Reserved Font Name", - "licenseId": "OFL-1.1-no-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", - "https://opensource.org/licenses/OFL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", - "referenceNumber": 82, - "name": "SIL Open Font License 1.1 with Reserved Font Name", - "licenseId": "OFL-1.1-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", - "https://opensource.org/licenses/OFL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OGC-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", - "referenceNumber": 612, - "name": "OGC Software License, Version 1.0", - "licenseId": "OGC-1.0", - "seeAlso": [ - "https://www.ogc.org/ogc/software/1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", - "referenceNumber": 129, - "name": "Taiwan Open Government Data License, version 1.0", - "licenseId": "OGDL-Taiwan-1.0", - "seeAlso": [ - "https://data.gov.tw/license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", - "referenceNumber": 544, - "name": "Open Government Licence - Canada", - "licenseId": "OGL-Canada-2.0", - "seeAlso": [ - "https://open.canada.ca/en/open-government-licence-canada" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json", - "referenceNumber": 168, - "name": "Open Government Licence v1.0", - "licenseId": "OGL-UK-1.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", - "referenceNumber": 400, - "name": "Open Government Licence v2.0", - "licenseId": "OGL-UK-2.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", - "referenceNumber": 570, - "name": "Open Government Licence v3.0", - "licenseId": "OGL-UK-3.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGTSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGTSL.json", - "referenceNumber": 534, - "name": "Open Group Test Suite License", - "licenseId": "OGTSL", - "seeAlso": [ - "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", - "https://opensource.org/licenses/OGTSL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", - "referenceNumber": 333, - "name": "Open LDAP Public License v1.1", - "licenseId": "OLDAP-1.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", - "referenceNumber": 281, - "name": "Open LDAP Public License v1.2", - "licenseId": "OLDAP-1.2", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", - "referenceNumber": 386, - "name": "Open LDAP Public License v1.3", - "licenseId": "OLDAP-1.3", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.4.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", - "referenceNumber": 105, - "name": "Open LDAP Public License v1.4", - "licenseId": "OLDAP-1.4", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", - "referenceNumber": 657, - "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", - "licenseId": "OLDAP-2.0", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", - "referenceNumber": 654, - "name": "Open LDAP Public License v2.0.1", - "licenseId": "OLDAP-2.0.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", - "referenceNumber": 170, - "name": "Open LDAP Public License v2.1", - "licenseId": "OLDAP-2.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", - "referenceNumber": 667, - "name": "Open LDAP Public License v2.2", - "licenseId": "OLDAP-2.2", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json", - "referenceNumber": 378, - "name": "Open LDAP Public License v2.2.1", - "licenseId": "OLDAP-2.2.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d4bc786f34b50aa301be6f5600f58a980070f481e" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", - "referenceNumber": 314, - "name": "Open LDAP Public License 2.2.2", - "licenseId": "OLDAP-2.2.2", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", - "referenceNumber": 411, - "name": "Open LDAP Public License v2.3", - "licenseId": "OLDAP-2.3", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.4.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", - "referenceNumber": 382, - "name": "Open LDAP Public License v2.4", - "licenseId": "OLDAP-2.4", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json", - "referenceNumber": 443, - "name": "Open LDAP Public License v2.5", - "licenseId": "OLDAP-2.5", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.6.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", - "referenceNumber": 344, - "name": "Open LDAP Public License v2.6", - "licenseId": "OLDAP-2.6", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.7.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", - "referenceNumber": 574, - "name": "Open LDAP Public License v2.7", - "licenseId": "OLDAP-2.7", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.8.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", - "referenceNumber": 364, - "name": "Open LDAP Public License v2.8", - "licenseId": "OLDAP-2.8", - "seeAlso": [ - "http://www.openldap.org/software/release/license.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OLFL-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLFL-1.3.json", - "referenceNumber": 121, - "name": "Open Logistics Foundation License Version 1.3", - "licenseId": "OLFL-1.3", - "seeAlso": [ - "https://openlogisticsfoundation.org/licenses/", - "https://opensource.org/license/olfl-1-3/" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OML.json", - "referenceNumber": 116, - "name": "Open Market License", - "licenseId": "OML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Open_Market_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OpenPBS-2.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OpenPBS-2.3.json", - "referenceNumber": 2, - "name": "OpenPBS v2.3 Software License", - "licenseId": "OpenPBS-2.3", - "seeAlso": [ - "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt", - "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OpenSSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OpenSSL.json", - "referenceNumber": 275, - "name": "OpenSSL License", - "licenseId": "OpenSSL", - "seeAlso": [ - "http://www.openssl.org/source/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OpenSSL-standalone.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OpenSSL-standalone.json", - "referenceNumber": 128, - "name": "OpenSSL License - standalone", - "licenseId": "OpenSSL-standalone", - "seeAlso": [ - "https://library.netapp.com/ecm/ecm_download_file/ECMP1196395", - "https://hstechdocs.helpsystems.com/manuals/globalscape/archive/cuteftp6/open_ssl_license_agreement.htm" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OpenVision.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OpenVision.json", - "referenceNumber": 36, - "name": "OpenVision License", - "licenseId": "OpenVision", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L66-L98", - "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html", - "https://fedoraproject.org/wiki/Licensing:MIT#OpenVision_Variant" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", - "referenceNumber": 614, - "name": "Open Public License v1.0", - "licenseId": "OPL-1.0", - "seeAlso": [ - "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", - "https://fedoraproject.org/wiki/Licensing/Open_Public_License" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/OPL-UK-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPL-UK-3.0.json", - "referenceNumber": 285, - "name": "United Kingdom Open Parliament Licence v3.0", - "licenseId": "OPL-UK-3.0", - "seeAlso": [ - "https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OPUBL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", - "referenceNumber": 414, - "name": "Open Publication License v1.0", - "licenseId": "OPUBL-1.0", - "seeAlso": [ - "http://opencontent.org/openpub/", - "https://www.debian.org/opl", - "https://www.ctan.org/license/opl" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", - "referenceNumber": 183, - "name": "OSET Public License version 2.1", - "licenseId": "OSET-PL-2.1", - "seeAlso": [ - "http://www.osetfoundation.org/public-license", - "https://opensource.org/licenses/OPL-2.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", - "referenceNumber": 651, - "name": "Open Software License 1.0", - "licenseId": "OSL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/OSL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", - "referenceNumber": 453, - "name": "Open Software License 1.1", - "licenseId": "OSL-1.1", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/OSL1.1" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json", - "referenceNumber": 179, - "name": "Open Software License 2.0", - "licenseId": "OSL-2.0", - "seeAlso": [ - "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OSL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", - "referenceNumber": 29, - "name": "Open Software License 2.1", - "licenseId": "OSL-2.1", - "seeAlso": [ - "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", - "https://opensource.org/licenses/OSL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OSL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", - "referenceNumber": 3, - "name": "Open Software License 3.0", - "licenseId": "OSL-3.0", - "seeAlso": [ - "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", - "https://opensource.org/licenses/OSL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/PADL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PADL.json", - "referenceNumber": 284, - "name": "PADL License", - "licenseId": "PADL", - "seeAlso": [ - "https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type\u003dheads#L19-23" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Parity-6.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", - "referenceNumber": 241, - "name": "The Parity Public License 6.0.0", - "licenseId": "Parity-6.0.0", - "seeAlso": [ - "https://paritylicense.com/versions/6.0.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Parity-7.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", - "referenceNumber": 235, - "name": "The Parity Public License 7.0.0", - "licenseId": "Parity-7.0.0", - "seeAlso": [ - "https://paritylicense.com/versions/7.0.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PDDL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", - "referenceNumber": 684, - "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0", - "licenseId": "PDDL-1.0", - "seeAlso": [ - "http://opendatacommons.org/licenses/pddl/1.0/", - "https://opendatacommons.org/licenses/pddl/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PHP-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", - "referenceNumber": 133, - "name": "PHP License v3.0", - "licenseId": "PHP-3.0", - "seeAlso": [ - "http://www.php.net/license/3_0.txt", - "https://opensource.org/licenses/PHP-3.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/PHP-3.01.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json", - "referenceNumber": 221, - "name": "PHP License v3.01", - "licenseId": "PHP-3.01", - "seeAlso": [ - "http://www.php.net/license/3_01.txt" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Pixar.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Pixar.json", - "referenceNumber": 435, - "name": "Pixar License", - "licenseId": "Pixar", - "seeAlso": [ - "https://github.com/PixarAnimationStudios/OpenSubdiv/raw/v3_5_0/LICENSE.txt", - "https://graphics.pixar.com/opensubdiv/docs/license.html", - "https://github.com/PixarAnimationStudios/OpenSubdiv/blob/v3_5_0/opensubdiv/version.cpp#L2-L22" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/pkgconf.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/pkgconf.json", - "referenceNumber": 670, - "name": "pkgconf License", - "licenseId": "pkgconf", - "seeAlso": [ - "https://github.com/pkgconf/pkgconf/blob/master/cli/main.c#L8" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Plexus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Plexus.json", - "referenceNumber": 181, - "name": "Plexus Classworlds License", - "licenseId": "Plexus", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/pnmstitch.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/pnmstitch.json", - "referenceNumber": 691, - "name": "pnmstitch License", - "licenseId": "pnmstitch", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", - "referenceNumber": 119, - "name": "PolyForm Noncommercial License 1.0.0", - "licenseId": "PolyForm-Noncommercial-1.0.0", - "seeAlso": [ - "https://polyformproject.org/licenses/noncommercial/1.0.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", - "referenceNumber": 30, - "name": "PolyForm Small Business License 1.0.0", - "licenseId": "PolyForm-Small-Business-1.0.0", - "seeAlso": [ - "https://polyformproject.org/licenses/small-business/1.0.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PostgreSQL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", - "referenceNumber": 697, - "name": "PostgreSQL License", - "licenseId": "PostgreSQL", - "seeAlso": [ - "http://www.postgresql.org/about/licence", - "https://opensource.org/licenses/PostgreSQL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/PPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PPL.json", - "referenceNumber": 150, - "name": "Peer Production License", - "licenseId": "PPL", - "seeAlso": [ - "https://wiki.p2pfoundation.net/Peer_Production_License", - "http://www.networkcultures.org/_uploads/%233notebook_telekommunist.pdf" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/PSF-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", - "referenceNumber": 211, - "name": "Python Software Foundation License 2.0", - "licenseId": "PSF-2.0", - "seeAlso": [ - "https://opensource.org/licenses/Python-2.0", - "https://matplotlib.org/stable/project/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/psfrag.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/psfrag.json", - "referenceNumber": 423, - "name": "psfrag License", - "licenseId": "psfrag", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/psfrag" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/psutils.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/psutils.json", - "referenceNumber": 500, - "name": "psutils License", - "licenseId": "psutils", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/psutils" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Python-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Python-2.0.json", - "referenceNumber": 628, - "name": "Python License 2.0", - "licenseId": "Python-2.0", - "seeAlso": [ - "https://opensource.org/licenses/Python-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Python-2.0.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json", - "referenceNumber": 586, - "name": "Python License 2.0.1", - "licenseId": "Python-2.0.1", - "seeAlso": [ - "https://www.python.org/download/releases/2.0.1/license/", - "https://docs.python.org/3/license.html", - "https://github.com/python/cpython/blob/main/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/python-ldap.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/python-ldap.json", - "referenceNumber": 630, - "name": "Python ldap License", - "licenseId": "python-ldap", - "seeAlso": [ - "https://github.com/python-ldap/python-ldap/blob/main/LICENCE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Qhull.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Qhull.json", - "referenceNumber": 590, - "name": "Qhull License", - "licenseId": "Qhull", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Qhull" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/QPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", - "referenceNumber": 693, - "name": "Q Public License 1.0", - "licenseId": "QPL-1.0", - "seeAlso": [ - "http://doc.qt.nokia.com/3.3/license.html", - "https://opensource.org/licenses/QPL-1.0", - "https://doc.qt.io/archives/3.3/license.html" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json", - "referenceNumber": 117, - "name": "Q Public License 1.0 - INRIA 2004 variant", - "licenseId": "QPL-1.0-INRIA-2004", - "seeAlso": [ - "https://github.com/maranget/hevea/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/radvd.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/radvd.json", - "referenceNumber": 678, - "name": "radvd License", - "licenseId": "radvd", - "seeAlso": [ - "https://github.com/radvd-project/radvd/blob/master/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Rdisc.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Rdisc.json", - "referenceNumber": 4, - "name": "Rdisc License", - "licenseId": "Rdisc", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Rdisc_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RHeCos-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", - "referenceNumber": 258, - "name": "Red Hat eCos Public License v1.1", - "licenseId": "RHeCos-1.1", - "seeAlso": [ - "http://ecos.sourceware.org/old-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/RPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", - "referenceNumber": 57, - "name": "Reciprocal Public License 1.1", - "licenseId": "RPL-1.1", - "seeAlso": [ - "https://opensource.org/licenses/RPL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/RPL-1.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", - "referenceNumber": 413, - "name": "Reciprocal Public License 1.5", - "licenseId": "RPL-1.5", - "seeAlso": [ - "https://opensource.org/licenses/RPL-1.5" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/RPSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json", - "referenceNumber": 104, - "name": "RealNetworks Public Source License v1.0", - "licenseId": "RPSL-1.0", - "seeAlso": [ - "https://helixcommunity.org/content/rpsl", - "https://opensource.org/licenses/RPSL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/RSA-MD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", - "referenceNumber": 12, - "name": "RSA Message-Digest License", - "licenseId": "RSA-MD", - "seeAlso": [ - "http://www.faqs.org/rfcs/rfc1321.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RSCPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RSCPL.json", - "referenceNumber": 166, - "name": "Ricoh Source Code Public License", - "licenseId": "RSCPL", - "seeAlso": [ - "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", - "https://opensource.org/licenses/RSCPL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Ruby.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Ruby.json", - "referenceNumber": 490, - "name": "Ruby License", - "licenseId": "Ruby", - "seeAlso": [ - "https://www.ruby-lang.org/en/about/license.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Ruby-pty.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Ruby-pty.json", - "referenceNumber": 509, - "name": "Ruby pty extension license", - "licenseId": "Ruby-pty", - "seeAlso": [ - "https://github.com/ruby/ruby/blob/9f6deaa6888a423720b4b127b5314f0ad26cc2e6/ext/pty/pty.c#L775-L786", - "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-ef5fa30838d6d0cecad9e675cc50b24628cfe2cb277c346053fafcc36c91c204", - "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-fedf217c1ce44bda01f0a678d3ff8b198bed478754d699c527a698ad933979a0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SAX-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", - "referenceNumber": 22, - "name": "Sax Public Domain Notice", - "licenseId": "SAX-PD", - "seeAlso": [ - "http://www.saxproject.org/copying.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SAX-PD-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SAX-PD-2.0.json", - "referenceNumber": 346, - "name": "Sax Public Domain Notice 2.0", - "licenseId": "SAX-PD-2.0", - "seeAlso": [ - "http://www.saxproject.org/copying.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Saxpath.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Saxpath.json", - "referenceNumber": 390, - "name": "Saxpath License", - "licenseId": "Saxpath", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Saxpath_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SCEA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SCEA.json", - "referenceNumber": 484, - "name": "SCEA Shared Source License", - "licenseId": "SCEA", - "seeAlso": [ - "http://research.scea.com/scea_shared_source_license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SchemeReport.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", - "referenceNumber": 91, - "name": "Scheme Language Report License", - "licenseId": "SchemeReport", - "seeAlso": [], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sendmail.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sendmail.json", - "referenceNumber": 266, - "name": "Sendmail License", - "licenseId": "Sendmail", - "seeAlso": [ - "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", - "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sendmail-8.23.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", - "referenceNumber": 55, - "name": "Sendmail License 8.23", - "licenseId": "Sendmail-8.23", - "seeAlso": [ - "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", - "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sendmail-Open-Source-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sendmail-Open-Source-1.1.json", - "referenceNumber": 620, - "name": "Sendmail Open Source License v1.1", - "licenseId": "Sendmail-Open-Source-1.1", - "seeAlso": [ - "https://github.com/trusteddomainproject/OpenDMARC/blob/master/LICENSE.Sendmail" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGI-B-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", - "referenceNumber": 56, - "name": "SGI Free Software License B v1.0", - "licenseId": "SGI-B-1.0", - "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGI-B-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", - "referenceNumber": 296, - "name": "SGI Free Software License B v1.1", - "licenseId": "SGI-B-1.1", - "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGI-B-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", - "referenceNumber": 617, - "name": "SGI Free Software License B v2.0", - "licenseId": "SGI-B-2.0", - "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SGI-OpenGL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-OpenGL.json", - "referenceNumber": 34, - "name": "SGI OpenGL License", - "licenseId": "SGI-OpenGL", - "seeAlso": [ - "https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type\u003dheads" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGP4.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGP4.json", - "referenceNumber": 572, - "name": "SGP4 Permission Notice", - "licenseId": "SGP4", - "seeAlso": [ - "https://celestrak.org/publications/AIAA/2006-6753/faq.php" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SHL-0.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", - "referenceNumber": 267, - "name": "Solderpad Hardware License v0.5", - "licenseId": "SHL-0.5", - "seeAlso": [ - "https://solderpad.org/licenses/SHL-0.5/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SHL-0.51.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", - "referenceNumber": 582, - "name": "Solderpad Hardware License, Version 0.51", - "licenseId": "SHL-0.51", - "seeAlso": [ - "https://solderpad.org/licenses/SHL-0.51/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SimPL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", - "referenceNumber": 452, - "name": "Simple Public License 2.0", - "licenseId": "SimPL-2.0", - "seeAlso": [ - "https://opensource.org/licenses/SimPL-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/SISSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SISSL.json", - "referenceNumber": 110, - "name": "Sun Industry Standards Source License v1.1", - "licenseId": "SISSL", - "seeAlso": [ - "http://www.openoffice.org/licenses/sissl_license.html", - "https://opensource.org/licenses/SISSL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SISSL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", - "referenceNumber": 253, - "name": "Sun Industry Standards Source License v1.2", - "licenseId": "SISSL-1.2", - "seeAlso": [ - "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SL.json", - "referenceNumber": 83, - "name": "SL License", - "licenseId": "SL", - "seeAlso": [ - "https://github.com/mtoyoda/sl/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sleepycat.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", - "referenceNumber": 42, - "name": "Sleepycat License", - "licenseId": "Sleepycat", - "seeAlso": [ - "https://opensource.org/licenses/Sleepycat" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SMAIL-GPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SMAIL-GPL.json", - "referenceNumber": 546, - "name": "SMAIL General Public License", - "licenseId": "SMAIL-GPL", - "seeAlso": [ - "https://sources.debian.org/copyright/license/debianutils/4.11.2/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SMLNJ.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", - "referenceNumber": 81, - "name": "Standard ML of New Jersey License", - "licenseId": "SMLNJ", - "seeAlso": [ - "https://www.smlnj.org/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SMPPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SMPPL.json", - "referenceNumber": 579, - "name": "Secure Messaging Protocol Public License", - "licenseId": "SMPPL", - "seeAlso": [ - "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SNIA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SNIA.json", - "referenceNumber": 224, - "name": "SNIA Public License 1.1", - "licenseId": "SNIA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/snprintf.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/snprintf.json", - "referenceNumber": 594, - "name": "snprintf License", - "licenseId": "snprintf", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SOFA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SOFA.json", - "referenceNumber": 375, - "name": "SOFA Software License", - "licenseId": "SOFA", - "seeAlso": [ - "http://www.iausofa.org/tandc.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/softSurfer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/softSurfer.json", - "referenceNumber": 593, - "name": "softSurfer License", - "licenseId": "softSurfer", - "seeAlso": [ - "https://github.com/mm2/Little-CMS/blob/master/src/cmssm.c#L207", - "https://fedoraproject.org/wiki/Licensing/softSurfer" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Soundex.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Soundex.json", - "referenceNumber": 374, - "name": "Soundex License", - "licenseId": "Soundex", - "seeAlso": [ - "https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Spencer-86.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", - "referenceNumber": 193, - "name": "Spencer License 86", - "licenseId": "Spencer-86", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Spencer-94.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", - "referenceNumber": 451, - "name": "Spencer License 94", - "licenseId": "Spencer-94", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", - "https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Spencer-99.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", - "referenceNumber": 220, - "name": "Spencer License 99", - "licenseId": "Spencer-99", - "seeAlso": [ - "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", - "referenceNumber": 342, - "name": "Sun Public License v1.0", - "licenseId": "SPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/SPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ssh-keyscan.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ssh-keyscan.json", - "referenceNumber": 537, - "name": "ssh-keyscan License", - "licenseId": "ssh-keyscan", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", - "referenceNumber": 463, - "name": "SSH OpenSSH license", - "licenseId": "SSH-OpenSSH", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SSH-short.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSH-short.json", - "referenceNumber": 573, - "name": "SSH short notice", - "licenseId": "SSH-short", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", - "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", - "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SSLeay-standalone.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSLeay-standalone.json", - "referenceNumber": 96, - "name": "SSLeay License - standalone", - "licenseId": "SSLeay-standalone", - "seeAlso": [ - "https://www.tq-group.com/filedownloads/files/software-license-conditions/OriginalSSLeay/OriginalSSLeay.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SSPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", - "referenceNumber": 664, - "name": "Server Side Public License, v 1", - "licenseId": "SSPL-1.0", - "seeAlso": [ - "https://www.mongodb.com/licensing/server-side-public-license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/StandardML-NJ.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", - "referenceNumber": 501, - "name": "Standard ML of New Jersey License", - "licenseId": "StandardML-NJ", - "seeAlso": [ - "https://www.smlnj.org/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json", - "referenceNumber": 222, - "name": "SugarCRM Public License v1.1.3", - "licenseId": "SugarCRM-1.1.3", - "seeAlso": [ - "http://www.sugarcrm.com/crm/SPL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SUL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SUL-1.0.json", - "referenceNumber": 557, - "name": "Sustainable Use License v1.0", - "licenseId": "SUL-1.0", - "seeAlso": [ - "https://github.com/n8n-io/n8n/blob/master/LICENSE.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sun-PPP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sun-PPP.json", - "referenceNumber": 39, - "name": "Sun PPP License", - "licenseId": "Sun-PPP", - "seeAlso": [ - "https://github.com/ppp-project/ppp/blob/master/pppd/eap.c#L7-L16" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sun-PPP-2000.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sun-PPP-2000.json", - "referenceNumber": 70, - "name": "Sun PPP License (2000)", - "licenseId": "Sun-PPP-2000", - "seeAlso": [ - "https://github.com/ppp-project/ppp/blob/master/modules/ppp_ahdlc.c#L7-L19" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SunPro.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SunPro.json", - "referenceNumber": 395, - "name": "SunPro License", - "licenseId": "SunPro", - "seeAlso": [ - "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c", - "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SWL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SWL.json", - "referenceNumber": 196, - "name": "Scheme Widget Library (SWL) Software License Agreement", - "licenseId": "SWL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/SWL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/swrule.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/swrule.json", - "referenceNumber": 348, - "name": "swrule License", - "licenseId": "swrule", - "seeAlso": [ - "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Symlinks.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Symlinks.json", - "referenceNumber": 517, - "name": "Symlinks License", - "licenseId": "Symlinks", - "seeAlso": [ - "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", - "referenceNumber": 80, - "name": "TAPR Open Hardware License v1.0", - "licenseId": "TAPR-OHL-1.0", - "seeAlso": [ - "https://www.tapr.org/OHL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TCL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TCL.json", - "referenceNumber": 625, - "name": "TCL/TK License", - "licenseId": "TCL", - "seeAlso": [ - "http://www.tcl.tk/software/tcltk/license.html", - "https://fedoraproject.org/wiki/Licensing/TCL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TCP-wrappers.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", - "referenceNumber": 278, - "name": "TCP Wrappers License", - "licenseId": "TCP-wrappers", - "seeAlso": [ - "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TermReadKey.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TermReadKey.json", - "referenceNumber": 619, - "name": "TermReadKey License", - "licenseId": "TermReadKey", - "seeAlso": [ - "https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TGPPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TGPPL-1.0.json", - "referenceNumber": 142, - "name": "Transitive Grace Period Public Licence 1.0", - "licenseId": "TGPPL-1.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TGPPL", - "https://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/COPYING.TGPPL.rst" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ThirdEye.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ThirdEye.json", - "referenceNumber": 403, - "name": "ThirdEye License", - "licenseId": "ThirdEye", - "seeAlso": [ - "https://sourceware.org/cgit/binutils-gdb/tree/include/coff/symconst.h#n11" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/threeparttable.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/threeparttable.json", - "referenceNumber": 14, - "name": "threeparttable License", - "licenseId": "threeparttable", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Threeparttable" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TMate.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TMate.json", - "referenceNumber": 176, - "name": "TMate Open Source License", - "licenseId": "TMate", - "seeAlso": [ - "http://svnkit.com/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TORQUE-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", - "referenceNumber": 214, - "name": "TORQUE v2.5+ Software License v1.1", - "licenseId": "TORQUE-1.1", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TOSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TOSL.json", - "referenceNumber": 416, - "name": "Trusster Open Source License", - "licenseId": "TOSL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TOSL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TPDL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TPDL.json", - "referenceNumber": 666, - "name": "Time::ParseDate License", - "licenseId": "TPDL", - "seeAlso": [ - "https://metacpan.org/pod/Time::ParseDate#LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TPL-1.0.json", - "referenceNumber": 540, - "name": "THOR Public License 1.0", - "licenseId": "TPL-1.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TrustedQSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TrustedQSL.json", - "referenceNumber": 37, - "name": "TrustedQSL License", - "licenseId": "TrustedQSL", - "seeAlso": [ - "https://sourceforge.net/p/trustedqsl/tqsl/ci/master/tree/LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TTWL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TTWL.json", - "referenceNumber": 598, - "name": "Text-Tabs+Wrap License", - "licenseId": "TTWL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TTWL", - "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TTYP0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TTYP0.json", - "referenceNumber": 236, - "name": "TTYP0 License", - "licenseId": "TTYP0", - "seeAlso": [ - "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", - "referenceNumber": 106, - "name": "Technische Universitaet Berlin License 1.0", - "licenseId": "TU-Berlin-1.0", - "seeAlso": [ - "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", - "referenceNumber": 669, - "name": "Technische Universitaet Berlin License 2.0", - "licenseId": "TU-Berlin-2.0", - "seeAlso": [ - "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Ubuntu-font-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Ubuntu-font-1.0.json", - "referenceNumber": 268, - "name": "Ubuntu Font Licence v1.0", - "licenseId": "Ubuntu-font-1.0", - "seeAlso": [ - "https://ubuntu.com/legal/font-licence", - "https://assets.ubuntu.com/v1/81e5605d-ubuntu-font-licence-1.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UCAR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UCAR.json", - "referenceNumber": 353, - "name": "UCAR License", - "licenseId": "UCAR", - "seeAlso": [ - "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UCL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", - "referenceNumber": 611, - "name": "Upstream Compatibility License v1.0", - "licenseId": "UCL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/UCL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ulem.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ulem.json", - "referenceNumber": 514, - "name": "ulem License", - "licenseId": "ulem", - "seeAlso": [ - "https://mirrors.ctan.org/macros/latex/contrib/ulem/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UMich-Merit.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UMich-Merit.json", - "referenceNumber": 48, - "name": "Michigan/Merit Networks License", - "licenseId": "UMich-Merit", - "seeAlso": [ - "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L64" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Unicode-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-3.0.json", - "referenceNumber": 308, - "name": "Unicode License v3", - "licenseId": "Unicode-3.0", - "seeAlso": [ - "https://www.unicode.org/license.txt" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", - "referenceNumber": 254, - "name": "Unicode License Agreement - Data Files and Software (2015)", - "licenseId": "Unicode-DFS-2015", - "seeAlso": [ - "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", - "referenceNumber": 309, - "name": "Unicode License Agreement - Data Files and Software (2016)", - "licenseId": "Unicode-DFS-2016", - "seeAlso": [ - "https://www.unicode.org/license.txt", - "http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License", - "http://www.unicode.org/copyright.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Unicode-TOU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", - "referenceNumber": 115, - "name": "Unicode Terms of Use", - "licenseId": "Unicode-TOU", - "seeAlso": [ - "http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html", - "http://www.unicode.org/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UnixCrypt.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UnixCrypt.json", - "referenceNumber": 180, - "name": "UnixCrypt License", - "licenseId": "UnixCrypt", - "seeAlso": [ - "https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70", - "https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html", - "https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Unlicense.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unlicense.json", - "referenceNumber": 337, - "name": "The Unlicense", - "licenseId": "Unlicense", - "seeAlso": [ - "https://unlicense.org/" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Unlicense-libtelnet.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unlicense-libtelnet.json", - "referenceNumber": 113, - "name": "Unlicense - libtelnet variant", - "licenseId": "Unlicense-libtelnet", - "seeAlso": [ - "https://github.com/seanmiddleditch/libtelnet/blob/develop/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Unlicense-libwhirlpool.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unlicense-libwhirlpool.json", - "referenceNumber": 565, - "name": "Unlicense - libwhirlpool variant", - "licenseId": "Unlicense-libwhirlpool", - "seeAlso": [ - "https://github.com/dfateyev/libwhirlpool/blob/master/README#L27" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", - "referenceNumber": 88, - "name": "Universal Permissive License v1.0", - "licenseId": "UPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/UPL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/URT-RLE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/URT-RLE.json", - "referenceNumber": 380, - "name": "Utah Raster Toolkit Run Length Encoded License", - "licenseId": "URT-RLE", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c", - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Vim.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Vim.json", - "referenceNumber": 327, - "name": "Vim License", - "licenseId": "Vim", - "seeAlso": [ - "http://vimdoc.sourceforge.net/htmldoc/uganda.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/VOSTROM.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", - "referenceNumber": 575, - "name": "VOSTROM Public License for Open Source", - "licenseId": "VOSTROM", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/VOSTROM" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/VSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", - "referenceNumber": 562, - "name": "Vovida Software License v1.0", - "licenseId": "VSL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/VSL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/W3C.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C.json", - "referenceNumber": 479, - "name": "W3C Software Notice and License (2002-12-31)", - "licenseId": "W3C", - "seeAlso": [ - "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", - "https://opensource.org/licenses/W3C" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/W3C-19980720.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", - "referenceNumber": 365, - "name": "W3C Software Notice and License (1998-07-20)", - "licenseId": "W3C-19980720", - "seeAlso": [ - "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/W3C-20150513.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", - "referenceNumber": 295, - "name": "W3C Software Notice and Document License (2015-05-13)", - "licenseId": "W3C-20150513", - "seeAlso": [ - "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", - "https://www.w3.org/copyright/software-license-2015/", - "https://www.w3.org/copyright/software-license-2023/" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/w3m.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/w3m.json", - "referenceNumber": 141, - "name": "w3m License", - "licenseId": "w3m", - "seeAlso": [ - "https://github.com/tats/w3m/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Watcom-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", - "referenceNumber": 527, - "name": "Sybase Open Watcom Public License 1.0", - "licenseId": "Watcom-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Watcom-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Widget-Workshop.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Widget-Workshop.json", - "referenceNumber": 522, - "name": "Widget Workshop License", - "licenseId": "Widget-Workshop", - "seeAlso": [ - "https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Wsuipa.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", - "referenceNumber": 564, - "name": "Wsuipa License", - "licenseId": "Wsuipa", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Wsuipa" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/WTFPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/WTFPL.json", - "referenceNumber": 418, - "name": "Do What The F*ck You Want To Public License", - "licenseId": "WTFPL", - "seeAlso": [ - "http://www.wtfpl.net/about/", - "http://sam.zoy.org/wtfpl/COPYING" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/wwl.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/wwl.json", - "referenceNumber": 627, - "name": "WWL License", - "licenseId": "wwl", - "seeAlso": [ - "http://www.db.net/downloads/wwl+db-1.3.tgz" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/wxWindows.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/wxWindows.json", - "referenceNumber": 431, - "name": "wxWindows Library License", - "licenseId": "wxWindows", - "seeAlso": [ - "https://opensource.org/licenses/WXwindows" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/X11.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/X11.json", - "referenceNumber": 0, - "name": "X11 License", - "licenseId": "X11", - "seeAlso": [ - "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", - "referenceNumber": 302, - "name": "X11 License Distribution Modification Variant", - "licenseId": "X11-distribute-modifications-variant", - "seeAlso": [ - "https://github.com/mirror/ncurses/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/X11-swapped.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/X11-swapped.json", - "referenceNumber": 248, - "name": "X11 swapped final paragraphs", - "licenseId": "X11-swapped", - "seeAlso": [ - "https://github.com/fedeinthemix/chez-srfi/blob/master/srfi/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xdebug-1.03.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xdebug-1.03.json", - "referenceNumber": 109, - "name": "Xdebug License v 1.03", - "licenseId": "Xdebug-1.03", - "seeAlso": [ - "https://github.com/xdebug/xdebug/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xerox.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xerox.json", - "referenceNumber": 615, - "name": "Xerox License", - "licenseId": "Xerox", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Xerox" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xfig.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xfig.json", - "referenceNumber": 125, - "name": "Xfig License", - "licenseId": "Xfig", - "seeAlso": [ - "https://github.com/Distrotech/transfig/blob/master/transfig/transfig.c", - "https://fedoraproject.org/wiki/Licensing:MIT#Xfig_Variant", - "https://sourceforge.net/p/mcj/xfig/ci/master/tree/src/Makefile.am" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/XFree86-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", - "referenceNumber": 646, - "name": "XFree86 License 1.1", - "licenseId": "XFree86-1.1", - "seeAlso": [ - "http://www.xfree86.org/current/LICENSE4.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/xinetd.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xinetd.json", - "referenceNumber": 93, - "name": "xinetd License", - "licenseId": "xinetd", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Xinetd_License" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.json", - "referenceNumber": 212, - "name": "xkeyboard-config Zinoviev License", - "licenseId": "xkeyboard-config-Zinoviev", - "seeAlso": [ - "https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/COPYING?ref_type\u003dheads#L178" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/xlock.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xlock.json", - "referenceNumber": 362, - "name": "xlock License", - "licenseId": "xlock", - "seeAlso": [ - "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xnet.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xnet.json", - "referenceNumber": 470, - "name": "X.Net License", - "licenseId": "Xnet", - "seeAlso": [ - "https://opensource.org/licenses/Xnet" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/xpp.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xpp.json", - "referenceNumber": 290, - "name": "XPP License", - "licenseId": "xpp", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/xpp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/XSkat.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/XSkat.json", - "referenceNumber": 293, - "name": "XSkat License", - "licenseId": "XSkat", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/XSkat_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/xzoom.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xzoom.json", - "referenceNumber": 90, - "name": "xzoom License", - "licenseId": "xzoom", - "seeAlso": [ - "https://metadata.ftp-master.debian.org/changelogs//main/x/xzoom/xzoom_0.3-27_copyright" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/YPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", - "referenceNumber": 294, - "name": "Yahoo! Public License v1.0", - "licenseId": "YPL-1.0", - "seeAlso": [ - "http://www.zimbra.com/license/yahoo_public_license_1.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/YPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", - "referenceNumber": 481, - "name": "Yahoo! Public License v1.1", - "licenseId": "YPL-1.1", - "seeAlso": [ - "http://www.zimbra.com/license/yahoo_public_license_1.1.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Zed.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zed.json", - "referenceNumber": 189, - "name": "Zed License", - "licenseId": "Zed", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Zed" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Zeeff.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zeeff.json", - "referenceNumber": 551, - "name": "Zeeff License", - "licenseId": "Zeeff", - "seeAlso": [ - "ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Zend-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", - "referenceNumber": 444, - "name": "Zend License v2.0", - "licenseId": "Zend-2.0", - "seeAlso": [ - "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Zimbra-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", - "referenceNumber": 26, - "name": "Zimbra Public License v1.3", - "licenseId": "Zimbra-1.3", - "seeAlso": [ - "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Zimbra-1.4.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", - "referenceNumber": 330, - "name": "Zimbra Public License v1.4", - "licenseId": "Zimbra-1.4", - "seeAlso": [ - "http://www.zimbra.com/legal/zimbra-public-license-1-4" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Zlib.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zlib.json", - "referenceNumber": 421, - "name": "zlib License", - "licenseId": "Zlib", - "seeAlso": [ - "http://www.zlib.net/zlib_license.html", - "https://opensource.org/licenses/Zlib" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", - "referenceNumber": 188, - "name": "zlib/libpng License with Acknowledgement", - "licenseId": "zlib-acknowledgement", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ZPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", - "referenceNumber": 597, - "name": "Zope Public License 1.1", - "licenseId": "ZPL-1.1", - "seeAlso": [ - "http://old.zope.org/Resources/License/ZPL-1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ZPL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json", - "referenceNumber": 555, - "name": "Zope Public License 2.0", - "licenseId": "ZPL-2.0", - "seeAlso": [ - "http://old.zope.org/Resources/License/ZPL-2.0", - "https://opensource.org/licenses/ZPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ZPL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", - "referenceNumber": 272, - "name": "Zope Public License 2.1", - "licenseId": "ZPL-2.1", - "seeAlso": [ - "http://old.zope.org/Resources/ZPL/" - ], - "isOsiApproved": true, - "isFsfLibre": true - } - ], - "releaseDate": "2025-07-01T00:00:00Z" -} diff --git a/dandischema/_resources/spdx_license_ids.json b/dandischema/_resources/spdx_license_ids.json new file mode 100644 index 00000000..51263914 --- /dev/null +++ b/dandischema/_resources/spdx_license_ids.json @@ -0,0 +1,709 @@ +{ + "source": { + "version": "3.27.0", + "release_date": "2025-07-01T00:00:00Z", + "url": "https://raw.githubusercontent.com/spdx/license-list-data/refs/tags/v3.27.0/json/licenses.json", + "reference": "https://spdx.org/licenses/" + }, + "license_ids": [ + "0BSD", + "3D-Slicer-1.0", + "AAL", + "Abstyles", + "AdaCore-doc", + "Adobe-2006", + "Adobe-Display-PostScript", + "Adobe-Glyph", + "Adobe-Utopia", + "ADSL", + "AFL-1.1", + "AFL-1.2", + "AFL-2.0", + "AFL-2.1", + "AFL-3.0", + "Afmparse", + "AGPL-1.0", + "AGPL-1.0-only", + "AGPL-1.0-or-later", + "AGPL-3.0", + "AGPL-3.0-only", + "AGPL-3.0-or-later", + "Aladdin", + "AMD-newlib", + "AMDPLPA", + "AML", + "AML-glslang", + "AMPAS", + "ANTLR-PD", + "ANTLR-PD-fallback", + "any-OSI", + "any-OSI-perl-modules", + "Apache-1.0", + "Apache-1.1", + "Apache-2.0", + "APAFML", + "APL-1.0", + "App-s2p", + "APSL-1.0", + "APSL-1.1", + "APSL-1.2", + "APSL-2.0", + "Arphic-1999", + "Artistic-1.0", + "Artistic-1.0-cl8", + "Artistic-1.0-Perl", + "Artistic-2.0", + "Artistic-dist", + "Aspell-RU", + "ASWF-Digital-Assets-1.0", + "ASWF-Digital-Assets-1.1", + "Baekmuk", + "Bahyph", + "Barr", + "bcrypt-Solar-Designer", + "Beerware", + "Bitstream-Charter", + "Bitstream-Vera", + "BitTorrent-1.0", + "BitTorrent-1.1", + "blessing", + "BlueOak-1.0.0", + "Boehm-GC", + "Boehm-GC-without-fee", + "Borceux", + "Brian-Gladman-2-Clause", + "Brian-Gladman-3-Clause", + "BSD-1-Clause", + "BSD-2-Clause", + "BSD-2-Clause-Darwin", + "BSD-2-Clause-first-lines", + "BSD-2-Clause-FreeBSD", + "BSD-2-Clause-NetBSD", + "BSD-2-Clause-Patent", + "BSD-2-Clause-pkgconf-disclaimer", + "BSD-2-Clause-Views", + "BSD-3-Clause", + "BSD-3-Clause-acpica", + "BSD-3-Clause-Attribution", + "BSD-3-Clause-Clear", + "BSD-3-Clause-flex", + "BSD-3-Clause-HP", + "BSD-3-Clause-LBNL", + "BSD-3-Clause-Modification", + "BSD-3-Clause-No-Military-License", + "BSD-3-Clause-No-Nuclear-License", + "BSD-3-Clause-No-Nuclear-License-2014", + "BSD-3-Clause-No-Nuclear-Warranty", + "BSD-3-Clause-Open-MPI", + "BSD-3-Clause-Sun", + "BSD-4-Clause", + "BSD-4-Clause-Shortened", + "BSD-4-Clause-UC", + "BSD-4.3RENO", + "BSD-4.3TAHOE", + "BSD-Advertising-Acknowledgement", + "BSD-Attribution-HPND-disclaimer", + "BSD-Inferno-Nettverk", + "BSD-Protection", + "BSD-Source-beginning-file", + "BSD-Source-Code", + "BSD-Systemics", + "BSD-Systemics-W3Works", + "BSL-1.0", + "BUSL-1.1", + "bzip2-1.0.5", + "bzip2-1.0.6", + "C-UDA-1.0", + "CAL-1.0", + "CAL-1.0-Combined-Work-Exception", + "Caldera", + "Caldera-no-preamble", + "Catharon", + "CATOSL-1.1", + "CC-BY-1.0", + "CC-BY-2.0", + "CC-BY-2.5", + "CC-BY-2.5-AU", + "CC-BY-3.0", + "CC-BY-3.0-AT", + "CC-BY-3.0-AU", + "CC-BY-3.0-DE", + "CC-BY-3.0-IGO", + "CC-BY-3.0-NL", + "CC-BY-3.0-US", + "CC-BY-4.0", + "CC-BY-NC-1.0", + "CC-BY-NC-2.0", + "CC-BY-NC-2.5", + "CC-BY-NC-3.0", + "CC-BY-NC-3.0-DE", + "CC-BY-NC-4.0", + "CC-BY-NC-ND-1.0", + "CC-BY-NC-ND-2.0", + "CC-BY-NC-ND-2.5", + "CC-BY-NC-ND-3.0", + "CC-BY-NC-ND-3.0-DE", + "CC-BY-NC-ND-3.0-IGO", + "CC-BY-NC-ND-4.0", + "CC-BY-NC-SA-1.0", + "CC-BY-NC-SA-2.0", + "CC-BY-NC-SA-2.0-DE", + "CC-BY-NC-SA-2.0-FR", + "CC-BY-NC-SA-2.0-UK", + "CC-BY-NC-SA-2.5", + "CC-BY-NC-SA-3.0", + "CC-BY-NC-SA-3.0-DE", + "CC-BY-NC-SA-3.0-IGO", + "CC-BY-NC-SA-4.0", + "CC-BY-ND-1.0", + "CC-BY-ND-2.0", + "CC-BY-ND-2.5", + "CC-BY-ND-3.0", + "CC-BY-ND-3.0-DE", + "CC-BY-ND-4.0", + "CC-BY-SA-1.0", + "CC-BY-SA-2.0", + "CC-BY-SA-2.0-UK", + "CC-BY-SA-2.1-JP", + "CC-BY-SA-2.5", + "CC-BY-SA-3.0", + "CC-BY-SA-3.0-AT", + "CC-BY-SA-3.0-DE", + "CC-BY-SA-3.0-IGO", + "CC-BY-SA-4.0", + "CC-PDDC", + "CC-PDM-1.0", + "CC-SA-1.0", + "CC0-1.0", + "CDDL-1.0", + "CDDL-1.1", + "CDL-1.0", + "CDLA-Permissive-1.0", + "CDLA-Permissive-2.0", + "CDLA-Sharing-1.0", + "CECILL-1.0", + "CECILL-1.1", + "CECILL-2.0", + "CECILL-2.1", + "CECILL-B", + "CECILL-C", + "CERN-OHL-1.1", + "CERN-OHL-1.2", + "CERN-OHL-P-2.0", + "CERN-OHL-S-2.0", + "CERN-OHL-W-2.0", + "CFITSIO", + "check-cvs", + "checkmk", + "ClArtistic", + "Clips", + "CMU-Mach", + "CMU-Mach-nodoc", + "CNRI-Jython", + "CNRI-Python", + "CNRI-Python-GPL-Compatible", + "COIL-1.0", + "Community-Spec-1.0", + "Condor-1.1", + "copyleft-next-0.3.0", + "copyleft-next-0.3.1", + "Cornell-Lossless-JPEG", + "CPAL-1.0", + "CPL-1.0", + "CPOL-1.02", + "Cronyx", + "Crossword", + "CryptoSwift", + "CrystalStacker", + "CUA-OPL-1.0", + "Cube", + "curl", + "cve-tou", + "D-FSL-1.0", + "DEC-3-Clause", + "diffmark", + "DL-DE-BY-2.0", + "DL-DE-ZERO-2.0", + "DOC", + "DocBook-DTD", + "DocBook-Schema", + "DocBook-Stylesheet", + "DocBook-XML", + "Dotseqn", + "DRL-1.0", + "DRL-1.1", + "DSDP", + "dtoa", + "dvipdfm", + "ECL-1.0", + "ECL-2.0", + "eCos-2.0", + "EFL-1.0", + "EFL-2.0", + "eGenix", + "Elastic-2.0", + "Entessa", + "EPICS", + "EPL-1.0", + "EPL-2.0", + "ErlPL-1.1", + "etalab-2.0", + "EUDatagrid", + "EUPL-1.0", + "EUPL-1.1", + "EUPL-1.2", + "Eurosym", + "Fair", + "FBM", + "FDK-AAC", + "Ferguson-Twofish", + "Frameworx-1.0", + "FreeBSD-DOC", + "FreeImage", + "FSFAP", + "FSFAP-no-warranty-disclaimer", + "FSFUL", + "FSFULLR", + "FSFULLRSD", + "FSFULLRWD", + "FSL-1.1-ALv2", + "FSL-1.1-MIT", + "FTL", + "Furuseth", + "fwlw", + "Game-Programming-Gems", + "GCR-docs", + "GD", + "generic-xts", + "GFDL-1.1", + "GFDL-1.1-invariants-only", + "GFDL-1.1-invariants-or-later", + "GFDL-1.1-no-invariants-only", + "GFDL-1.1-no-invariants-or-later", + "GFDL-1.1-only", + "GFDL-1.1-or-later", + "GFDL-1.2", + "GFDL-1.2-invariants-only", + "GFDL-1.2-invariants-or-later", + "GFDL-1.2-no-invariants-only", + "GFDL-1.2-no-invariants-or-later", + "GFDL-1.2-only", + "GFDL-1.2-or-later", + "GFDL-1.3", + "GFDL-1.3-invariants-only", + "GFDL-1.3-invariants-or-later", + "GFDL-1.3-no-invariants-only", + "GFDL-1.3-no-invariants-or-later", + "GFDL-1.3-only", + "GFDL-1.3-or-later", + "Giftware", + "GL2PS", + "Glide", + "Glulxe", + "GLWTPL", + "gnuplot", + "GPL-1.0", + "GPL-1.0+", + "GPL-1.0-only", + "GPL-1.0-or-later", + "GPL-2.0", + "GPL-2.0+", + "GPL-2.0-only", + "GPL-2.0-or-later", + "GPL-2.0-with-autoconf-exception", + "GPL-2.0-with-bison-exception", + "GPL-2.0-with-classpath-exception", + "GPL-2.0-with-font-exception", + "GPL-2.0-with-GCC-exception", + "GPL-3.0", + "GPL-3.0+", + "GPL-3.0-only", + "GPL-3.0-or-later", + "GPL-3.0-with-autoconf-exception", + "GPL-3.0-with-GCC-exception", + "Graphics-Gems", + "gSOAP-1.3b", + "gtkbook", + "Gutmann", + "HaskellReport", + "HDF5", + "hdparm", + "HIDAPI", + "Hippocratic-2.1", + "HP-1986", + "HP-1989", + "HPND", + "HPND-DEC", + "HPND-doc", + "HPND-doc-sell", + "HPND-export-US", + "HPND-export-US-acknowledgement", + "HPND-export-US-modify", + "HPND-export2-US", + "HPND-Fenneberg-Livingston", + "HPND-INRIA-IMAG", + "HPND-Intel", + "HPND-Kevlin-Henney", + "HPND-Markus-Kuhn", + "HPND-merchantability-variant", + "HPND-MIT-disclaimer", + "HPND-Netrek", + "HPND-Pbmplus", + "HPND-sell-MIT-disclaimer-xserver", + "HPND-sell-regexpr", + "HPND-sell-variant", + "HPND-sell-variant-MIT-disclaimer", + "HPND-sell-variant-MIT-disclaimer-rev", + "HPND-UC", + "HPND-UC-export-US", + "HTMLTIDY", + "IBM-pibs", + "ICU", + "IEC-Code-Components-EULA", + "IJG", + "IJG-short", + "ImageMagick", + "iMatix", + "Imlib2", + "Info-ZIP", + "Inner-Net-2.0", + "InnoSetup", + "Intel", + "Intel-ACPI", + "Interbase-1.0", + "IPA", + "IPL-1.0", + "ISC", + "ISC-Veillard", + "Jam", + "JasPer-2.0", + "jove", + "JPL-image", + "JPNIC", + "JSON", + "Kastrup", + "Kazlib", + "Knuth-CTAN", + "LAL-1.2", + "LAL-1.3", + "Latex2e", + "Latex2e-translated-notice", + "Leptonica", + "LGPL-2.0", + "LGPL-2.0+", + "LGPL-2.0-only", + "LGPL-2.0-or-later", + "LGPL-2.1", + "LGPL-2.1+", + "LGPL-2.1-only", + "LGPL-2.1-or-later", + "LGPL-3.0", + "LGPL-3.0+", + "LGPL-3.0-only", + "LGPL-3.0-or-later", + "LGPLLR", + "Libpng", + "libpng-1.6.35", + "libpng-2.0", + "libselinux-1.0", + "libtiff", + "libutil-David-Nugent", + "LiLiQ-P-1.1", + "LiLiQ-R-1.1", + "LiLiQ-Rplus-1.1", + "Linux-man-pages-1-para", + "Linux-man-pages-copyleft", + "Linux-man-pages-copyleft-2-para", + "Linux-man-pages-copyleft-var", + "Linux-OpenIB", + "LOOP", + "LPD-document", + "LPL-1.0", + "LPL-1.02", + "LPPL-1.0", + "LPPL-1.1", + "LPPL-1.2", + "LPPL-1.3a", + "LPPL-1.3c", + "lsof", + "Lucida-Bitmap-Fonts", + "LZMA-SDK-9.11-to-9.20", + "LZMA-SDK-9.22", + "Mackerras-3-Clause", + "Mackerras-3-Clause-acknowledgment", + "magaz", + "mailprio", + "MakeIndex", + "man2html", + "Martin-Birgmeier", + "McPhee-slideshow", + "metamail", + "Minpack", + "MIPS", + "MirOS", + "MIT", + "MIT-0", + "MIT-advertising", + "MIT-Click", + "MIT-CMU", + "MIT-enna", + "MIT-feh", + "MIT-Festival", + "MIT-Khronos-old", + "MIT-Modern-Variant", + "MIT-open-group", + "MIT-testregex", + "MIT-Wu", + "MITNFA", + "MMIXware", + "Motosoto", + "MPEG-SSG", + "mpi-permissive", + "mpich2", + "MPL-1.0", + "MPL-1.1", + "MPL-2.0", + "MPL-2.0-no-copyleft-exception", + "mplus", + "MS-LPL", + "MS-PL", + "MS-RL", + "MTLL", + "MulanPSL-1.0", + "MulanPSL-2.0", + "Multics", + "Mup", + "NAIST-2003", + "NASA-1.3", + "Naumen", + "NBPL-1.0", + "NCBI-PD", + "NCGL-UK-2.0", + "NCL", + "NCSA", + "Net-SNMP", + "NetCDF", + "Newsletr", + "NGPL", + "ngrep", + "NICTA-1.0", + "NIST-PD", + "NIST-PD-fallback", + "NIST-Software", + "NLOD-1.0", + "NLOD-2.0", + "NLPL", + "Nokia", + "NOSL", + "Noweb", + "NPL-1.0", + "NPL-1.1", + "NPOSL-3.0", + "NRL", + "NTIA-PD", + "NTP", + "NTP-0", + "Nunit", + "O-UDA-1.0", + "OAR", + "OCCT-PL", + "OCLC-2.0", + "ODbL-1.0", + "ODC-By-1.0", + "OFFIS", + "OFL-1.0", + "OFL-1.0-no-RFN", + "OFL-1.0-RFN", + "OFL-1.1", + "OFL-1.1-no-RFN", + "OFL-1.1-RFN", + "OGC-1.0", + "OGDL-Taiwan-1.0", + "OGL-Canada-2.0", + "OGL-UK-1.0", + "OGL-UK-2.0", + "OGL-UK-3.0", + "OGTSL", + "OLDAP-1.1", + "OLDAP-1.2", + "OLDAP-1.3", + "OLDAP-1.4", + "OLDAP-2.0", + "OLDAP-2.0.1", + "OLDAP-2.1", + "OLDAP-2.2", + "OLDAP-2.2.1", + "OLDAP-2.2.2", + "OLDAP-2.3", + "OLDAP-2.4", + "OLDAP-2.5", + "OLDAP-2.6", + "OLDAP-2.7", + "OLDAP-2.8", + "OLFL-1.3", + "OML", + "OpenPBS-2.3", + "OpenSSL", + "OpenSSL-standalone", + "OpenVision", + "OPL-1.0", + "OPL-UK-3.0", + "OPUBL-1.0", + "OSET-PL-2.1", + "OSL-1.0", + "OSL-1.1", + "OSL-2.0", + "OSL-2.1", + "OSL-3.0", + "PADL", + "Parity-6.0.0", + "Parity-7.0.0", + "PDDL-1.0", + "PHP-3.0", + "PHP-3.01", + "Pixar", + "pkgconf", + "Plexus", + "pnmstitch", + "PolyForm-Noncommercial-1.0.0", + "PolyForm-Small-Business-1.0.0", + "PostgreSQL", + "PPL", + "PSF-2.0", + "psfrag", + "psutils", + "Python-2.0", + "Python-2.0.1", + "python-ldap", + "Qhull", + "QPL-1.0", + "QPL-1.0-INRIA-2004", + "radvd", + "Rdisc", + "RHeCos-1.1", + "RPL-1.1", + "RPL-1.5", + "RPSL-1.0", + "RSA-MD", + "RSCPL", + "Ruby", + "Ruby-pty", + "SAX-PD", + "SAX-PD-2.0", + "Saxpath", + "SCEA", + "SchemeReport", + "Sendmail", + "Sendmail-8.23", + "Sendmail-Open-Source-1.1", + "SGI-B-1.0", + "SGI-B-1.1", + "SGI-B-2.0", + "SGI-OpenGL", + "SGP4", + "SHL-0.5", + "SHL-0.51", + "SimPL-2.0", + "SISSL", + "SISSL-1.2", + "SL", + "Sleepycat", + "SMAIL-GPL", + "SMLNJ", + "SMPPL", + "SNIA", + "snprintf", + "SOFA", + "softSurfer", + "Soundex", + "Spencer-86", + "Spencer-94", + "Spencer-99", + "SPL-1.0", + "ssh-keyscan", + "SSH-OpenSSH", + "SSH-short", + "SSLeay-standalone", + "SSPL-1.0", + "StandardML-NJ", + "SugarCRM-1.1.3", + "SUL-1.0", + "Sun-PPP", + "Sun-PPP-2000", + "SunPro", + "SWL", + "swrule", + "Symlinks", + "TAPR-OHL-1.0", + "TCL", + "TCP-wrappers", + "TermReadKey", + "TGPPL-1.0", + "ThirdEye", + "threeparttable", + "TMate", + "TORQUE-1.1", + "TOSL", + "TPDL", + "TPL-1.0", + "TrustedQSL", + "TTWL", + "TTYP0", + "TU-Berlin-1.0", + "TU-Berlin-2.0", + "Ubuntu-font-1.0", + "UCAR", + "UCL-1.0", + "ulem", + "UMich-Merit", + "Unicode-3.0", + "Unicode-DFS-2015", + "Unicode-DFS-2016", + "Unicode-TOU", + "UnixCrypt", + "Unlicense", + "Unlicense-libtelnet", + "Unlicense-libwhirlpool", + "UPL-1.0", + "URT-RLE", + "Vim", + "VOSTROM", + "VSL-1.0", + "W3C", + "W3C-19980720", + "W3C-20150513", + "w3m", + "Watcom-1.0", + "Widget-Workshop", + "Wsuipa", + "WTFPL", + "wwl", + "wxWindows", + "X11", + "X11-distribute-modifications-variant", + "X11-swapped", + "Xdebug-1.03", + "Xerox", + "Xfig", + "XFree86-1.1", + "xinetd", + "xkeyboard-config-Zinoviev", + "xlock", + "Xnet", + "xpp", + "XSkat", + "xzoom", + "YPL-1.0", + "YPL-1.1", + "Zed", + "Zeeff", + "Zend-2.0", + "Zimbra-1.3", + "Zimbra-1.4", + "Zlib", + "zlib-acknowledgement", + "ZPL-1.1", + "ZPL-2.0", + "ZPL-2.1" + ] +} diff --git a/dandischema/conf.py b/dandischema/conf.py index 4785eef2..c6806d20 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -8,7 +8,7 @@ import logging from typing import TYPE_CHECKING, Annotated, Any, Optional, Union -from pydantic import BaseModel, Field, StringConstraints +from pydantic import AnyUrl, BaseModel, Field, StringConstraints from pydantic_settings import BaseSettings, SettingsConfigDict _MODELS_MODULE_NAME = "dandischema.models" @@ -20,43 +20,32 @@ logger = logging.getLogger(__name__) -class SpdxLicense(BaseModel): +class SpdxLicenseListInfo(BaseModel): """ - Represent a license in the SPDX License List, https://spdx.org/licenses/. - - Notes - ---- - An object of this class is loaded from the JSON version of the list at - https://github.com/spdx/license-list-data/blob/main/json/licenses.json - at a specific version, e.g., "3.27.0" + Represents information about the SPDX License List. """ - license_id: str = Field(validation_alias="licenseId") + version: str + release_date: datetime + url: AnyUrl + reference: AnyUrl = AnyUrl("https://spdx.org/licenses/") -class SpdxLicenseList(BaseModel): +class SpdxLicenseIdList(BaseModel): """ - Represents the SPDX License List, https://spdx.org/licenses/. - - Notes - ---- - The resulting object is a representation of the JSON version of the list at - https://github.com/spdx/license-list-data/blob/main/json/licenses.json - at a specific version, e.g., "3.27.0" - + Represents a list of SPDX license IDs. """ - license_list_version: str = Field(validation_alias="licenseListVersion") - licenses: list[SpdxLicense] - release_date: datetime = Field(validation_alias="releaseDate") + source: SpdxLicenseListInfo + license_ids: list[str] -spdx_licenses_file_path = ( - files("dandischema").joinpath("_resources").joinpath("licenses.json") +license_id_file_path = ( + files("dandischema").joinpath("_resources").joinpath("spdx_license_ids.json") ) -spdx_license_list = SpdxLicenseList.model_validate_json( - spdx_licenses_file_path.read_text() +spdx_license_id_list = SpdxLicenseIdList.model_validate_json( + license_id_file_path.read_text() ) if TYPE_CHECKING: @@ -67,10 +56,7 @@ class License(Enum): else: License = Enum( "License", - [ - ("spdx:" + license_.license_id,) * 2 - for license_ in spdx_license_list.licenses - ], + [("spdx:" + id_,) * 2 for id_ in spdx_license_id_list.license_ids], ) From 06a3638b4ad1051b7a5cf8e0697f4fdd78bcdc81 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 30 Jul 2025 10:53:52 -0700 Subject: [PATCH 43/80] feat: provide script for constructing the SPDX license ID list The SPDX license ID list is to be stored at `dandischema/_resources/spdx_license_ids.json` --- tools/fetch_spdx_licenses.py | 72 ++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tools/fetch_spdx_licenses.py diff --git a/tools/fetch_spdx_licenses.py b/tools/fetch_spdx_licenses.py new file mode 100644 index 00000000..5611c36a --- /dev/null +++ b/tools/fetch_spdx_licenses.py @@ -0,0 +1,72 @@ +# This script is for constructing the SPDX License ID list from a SPDX License List +# JSON file available at a specific URL. +# The `licenses_source_url` is to be modified to point to the desired version of the +# SPDX License List JSON file. + +from datetime import datetime +from importlib.resources import as_file, files + +from pydantic import AnyUrl, BaseModel, Field +from requests import get + +from dandischema.conf import SpdxLicenseIdList, SpdxLicenseListInfo + +licenses_source_url = ( + "https://raw.githubusercontent.com/spdx/license-list-data" + "/refs/tags/v3.27.0/json/licenses.json" +) + + +class SpdxLicense(BaseModel): + """ + Represent a license in the SPDX License List, https://spdx.org/licenses/. + + Notes + ---- + An object of this class is loaded from the JSON version of the list at + https://github.com/spdx/license-list-data/blob/main/json/licenses.json + at a specific version, e.g., "3.27.0" + """ + + license_id: str = Field(validation_alias="licenseId") + + +class SpdxLicenseList(BaseModel): + """ + Represents the SPDX License List, https://spdx.org/licenses/. + + Notes + ---- + The resulting object is a representation of the JSON version of the list at + https://github.com/spdx/license-list-data/blob/main/json/licenses.json + at a specific version, e.g., "3.27.0" + + """ + + license_list_version: str = Field(validation_alias="licenseListVersion") + licenses: list[SpdxLicense] + release_date: datetime = Field(validation_alias="releaseDate") + + +resp = get(licenses_source_url) +resp.raise_for_status() +spdx_license_list = SpdxLicenseList.model_validate_json(resp.text) + +spdx_license_id_list = SpdxLicenseIdList( + source=SpdxLicenseListInfo( + version=spdx_license_list.license_list_version, + release_date=spdx_license_list.release_date, + url=AnyUrl(licenses_source_url), + ), + license_ids=[license_.license_id for license_ in spdx_license_list.licenses], +) + + +license_id_file_path = ( + files("dandischema").joinpath("_resources").joinpath("spdx_license_ids.json") +) + +with as_file(license_id_file_path) as license_id_file_path_writable: + license_id_file_path_writable.write_text( + spdx_license_id_list.model_dump_json(indent=2) + ) From c1e1f2bc7b4ad09080d43f69951b91311d2f00d6 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 30 Jul 2025 15:27:14 -0700 Subject: [PATCH 44/80] doc: improve doc string for `dandischema.models.LicenseType` Specify pattern in the values of its members --- dandischema/models.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dandischema/models.py b/dandischema/models.py index 237fafcb..913d7373 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -108,7 +108,14 @@ class LicenseType(Enum): "LicenseType", [(license_.name, license_.value) for license_ in _INSTANCE_CONFIG.licenses], ) - """An enumeration of supported licenses""" + r""" + An enumeration of supported licenses + + The value of each member is a string that matches the regex pattern of + `^([^:\s]+):(\S+)$` in which the first group matches the license scheme such + as `"spdx"`, and the second group matches the license identifier such as + `"CC-BY-4.0"`. + """ class AccessType(Enum): From 04ac72a6861b048bf4a9e3761b10c54e891082c5 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 30 Jul 2025 22:51:46 -0700 Subject: [PATCH 45/80] Add timeout to GET request in SPDX License fetching helper script --- tools/fetch_spdx_licenses.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fetch_spdx_licenses.py b/tools/fetch_spdx_licenses.py index 5611c36a..56d98114 100644 --- a/tools/fetch_spdx_licenses.py +++ b/tools/fetch_spdx_licenses.py @@ -48,7 +48,7 @@ class SpdxLicenseList(BaseModel): release_date: datetime = Field(validation_alias="releaseDate") -resp = get(licenses_source_url) +resp = get(licenses_source_url, timeout=30.0) resp.raise_for_status() spdx_license_list = SpdxLicenseList.model_validate_json(resp.text) From 739edda6c4e0a67ebf9f121e9e6aa435a7b64c34 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 3 Aug 2025 18:28:09 -0700 Subject: [PATCH 46/80] style: replace `importlib.resources.abc.Traversable.joinpath` uses With use `/` to make the code more readable Co-authored-by: Yaroslav Halchenko --- dandischema/conf.py | 2 +- tools/fetch_spdx_licenses.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index c6806d20..64f1f31c 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -41,7 +41,7 @@ class SpdxLicenseIdList(BaseModel): license_id_file_path = ( - files("dandischema").joinpath("_resources").joinpath("spdx_license_ids.json") + files("dandischema") / "_resources" / "spdx_license_ids.json" ) spdx_license_id_list = SpdxLicenseIdList.model_validate_json( diff --git a/tools/fetch_spdx_licenses.py b/tools/fetch_spdx_licenses.py index 56d98114..2431c2f5 100644 --- a/tools/fetch_spdx_licenses.py +++ b/tools/fetch_spdx_licenses.py @@ -62,9 +62,8 @@ class SpdxLicenseList(BaseModel): ) -license_id_file_path = ( - files("dandischema").joinpath("_resources").joinpath("spdx_license_ids.json") -) +license_id_file_path = files("dandischema") / "_resources" / "spdx_license_ids.json" + with as_file(license_id_file_path) as license_id_file_path_writable: license_id_file_path_writable.write_text( From 99f77223331f9163547b844a5c234c5b12fa93dc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 4 Aug 2025 01:28:16 +0000 Subject: [PATCH 47/80] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dandischema/conf.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index 64f1f31c..c7f6f07c 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -40,9 +40,7 @@ class SpdxLicenseIdList(BaseModel): license_ids: list[str] -license_id_file_path = ( - files("dandischema") / "_resources" / "spdx_license_ids.json" -) +license_id_file_path = files("dandischema") / "_resources" / "spdx_license_ids.json" spdx_license_id_list = SpdxLicenseIdList.model_validate_json( license_id_file_path.read_text() From 4d35d0990b527be66950379287c77f45649412e6 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 3 Aug 2025 18:48:52 -0700 Subject: [PATCH 48/80] fix: avoid hardcoding package name in `importlib.resources.files()` use This allows the code to be independent of the containing package name --- dandischema/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index c7f6f07c..9c437ed3 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -40,7 +40,7 @@ class SpdxLicenseIdList(BaseModel): license_ids: list[str] -license_id_file_path = files("dandischema") / "_resources" / "spdx_license_ids.json" +license_id_file_path = files(__package__) / "_resources" / "spdx_license_ids.json" spdx_license_id_list = SpdxLicenseIdList.model_validate_json( license_id_file_path.read_text() From 03617c69d8083336afc8f2661d391dcd5632d97a Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 3 Aug 2025 19:07:52 -0700 Subject: [PATCH 49/80] style: mark internal funcs in `conf.py` private --- dandischema/conf.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index 9c437ed3..39ae826b 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -40,10 +40,10 @@ class SpdxLicenseIdList(BaseModel): license_ids: list[str] -license_id_file_path = files(__package__) / "_resources" / "spdx_license_ids.json" +_license_id_file_path = files(__package__) / "_resources" / "spdx_license_ids.json" -spdx_license_id_list = SpdxLicenseIdList.model_validate_json( - license_id_file_path.read_text() +_spdx_license_id_list = SpdxLicenseIdList.model_validate_json( + _license_id_file_path.read_text() ) if TYPE_CHECKING: @@ -54,7 +54,7 @@ class License(Enum): else: License = Enum( "License", - [("spdx:" + id_,) * 2 for id_ in spdx_license_id_list.license_ids], + [("spdx:" + id_,) * 2 for id_ in _spdx_license_id_list.license_ids], ) From 4483d56350458f118204193016fe2322a33bceb0 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 3 Aug 2025 22:30:32 -0700 Subject: [PATCH 50/80] rf: define default instance name in a const --- dandischema/conf.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index c066d786..476e2963 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -16,6 +16,11 @@ logger = logging.getLogger(__name__) +DEFAULT_INSTANCE_NAME = "DANDI-ADHOC" +""" +The default name of the DANDI instance +""" + class Config(BaseSettings): """ @@ -34,7 +39,7 @@ class Config(BaseSettings): instance_name: Annotated[ str, StringConstraints(pattern=rf"^{_UNVENDORED_ID_PATTERN}$") - ] = "DANDI-ADHOC" + ] = DEFAULT_INSTANCE_NAME """Name of the DANDI instance""" doi_prefix: Optional[ From e40c21df5cc26a3f08584b88d375afd0c46fcd5e Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 3 Aug 2025 22:37:00 -0700 Subject: [PATCH 51/80] rf: make unvendored ID pattern non-private So that it can be used in `dandischema.models` --- dandischema/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index 476e2963..ddf1dd7e 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -11,7 +11,7 @@ _MODELS_MODULE_NAME = "dandischema.models" """The full import name of the module containing the DANDI Pydantic models""" -_UNVENDORED_ID_PATTERN = r"[A-Z][-A-Z]*" +UNVENDORED_ID_PATTERN = r"[A-Z][-A-Z]*" _UNVENDORED_DOI_PREFIX_PATTERN = r"10\.\d{4,}" logger = logging.getLogger(__name__) @@ -38,7 +38,7 @@ class Config(BaseSettings): model_config = SettingsConfigDict(env_prefix="dandi_") instance_name: Annotated[ - str, StringConstraints(pattern=rf"^{_UNVENDORED_ID_PATTERN}$") + str, StringConstraints(pattern=rf"^{UNVENDORED_ID_PATTERN}$") ] = DEFAULT_INSTANCE_NAME """Name of the DANDI instance""" From d94ada9bfb4c237c4e05edffd1951e0cebf1c03c Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sun, 3 Aug 2025 22:45:59 -0700 Subject: [PATCH 52/80] feat: relex pattern for prefix of identifier when appropriate Specifically, when instance name is not provided or defaults --- dandischema/models.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/dandischema/models.py b/dandischema/models.py index 94c7ad87..4c944a69 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -36,7 +36,11 @@ from pydantic_core import CoreSchema from zarr_checksum.checksum import InvalidZarrChecksum, ZarrDirectoryDigest -from dandischema.conf import get_instance_config +from dandischema.conf import ( + DEFAULT_INSTANCE_NAME, + UNVENDORED_ID_PATTERN, + get_instance_config, +) from .consts import DANDI_SCHEMA_VERSION from .digests.dandietag import DandiETag @@ -47,7 +51,11 @@ _INSTANCE_CONFIG = get_instance_config() # Regex pattern for the prefix of identifiers -ID_PATTERN = _INSTANCE_CONFIG.instance_name +ID_PATTERN = ( + _INSTANCE_CONFIG.instance_name + if _INSTANCE_CONFIG.instance_name != DEFAULT_INSTANCE_NAME + else UNVENDORED_ID_PATTERN +) # The pattern that a DOI prefix of a dandiset must conform to DOI_PREFIX_PATTERN = ( From 09b470b4fea13c7d4d18d2a2b5b052603ad5bda2 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 4 Aug 2025 16:37:40 -0700 Subject: [PATCH 53/80] test: update tests per relaxed ID pattern --- dandischema/tests/test_models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 3a678e94..fc8e816b 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -792,7 +792,7 @@ def _get_field_pattern( # Without any environment variables set. dandischema is unvendorized. ( {}, - "DANDI-ADHOC", + r"[A-Z][-A-Z]*", None, { "dandiset_id": "DANDI-ADHOC:001350/draft", @@ -848,7 +848,7 @@ def _get_field_pattern( # Without any environment variables set. dandischema is unvendorized. ( {}, - "DANDI-ADHOC", + r"[A-Z][-A-Z]*", None, { "dandiset_id": "DANDI-ADHOC:000005/draft", From 3d57ce06e1ac21cf8689bcf6c5d6340d63a6597f Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 4 Aug 2025 17:34:59 -0700 Subject: [PATCH 54/80] rf: remove private naming of unvendored DOI prefix pattern So that it can be used in other modules --- dandischema/conf.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index ddf1dd7e..29d5e6f4 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -12,7 +12,7 @@ """The full import name of the module containing the DANDI Pydantic models""" UNVENDORED_ID_PATTERN = r"[A-Z][-A-Z]*" -_UNVENDORED_DOI_PREFIX_PATTERN = r"10\.\d{4,}" +UNVENDORED_DOI_PREFIX_PATTERN = r"10\.\d{4,}" logger = logging.getLogger(__name__) @@ -43,9 +43,7 @@ class Config(BaseSettings): """Name of the DANDI instance""" doi_prefix: Optional[ - Annotated[ - str, StringConstraints(pattern=rf"^{_UNVENDORED_DOI_PREFIX_PATTERN}$") - ] + Annotated[str, StringConstraints(pattern=rf"^{UNVENDORED_DOI_PREFIX_PATTERN}$")] ] = None """ The DOI prefix at DataCite From 1b95c841fdf902dd9edc02989391a36665d33567 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 4 Aug 2025 19:44:56 -0700 Subject: [PATCH 55/80] feat: relax DOI pattern when DOI prefix is not provided in Config --- dandischema/models.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/dandischema/models.py b/dandischema/models.py index 4c944a69..d61a7168 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -38,6 +38,7 @@ from dandischema.conf import ( DEFAULT_INSTANCE_NAME, + UNVENDORED_DOI_PREFIX_PATTERN, UNVENDORED_ID_PATTERN, get_instance_config, ) @@ -61,7 +62,7 @@ DOI_PREFIX_PATTERN = ( re.escape(_INSTANCE_CONFIG.doi_prefix) if _INSTANCE_CONFIG.doi_prefix is not None - else None + else UNVENDORED_DOI_PREFIX_PATTERN ) # Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. @@ -81,10 +82,13 @@ ) ASSET_UUID_PATTERN = r"^dandiasset:" + UUID_PATTERN VERSION_PATTERN = r"\d{6}/\d+\.\d+\.\d+" +_INNER_DANDI_DOI_PATTERN = ( + rf"{DOI_PREFIX_PATTERN}/{ID_PATTERN.lower()}\.{VERSION_PATTERN}" +) DANDI_DOI_PATTERN = ( - rf"^{DOI_PREFIX_PATTERN}/{ID_PATTERN.lower()}\.{VERSION_PATTERN}$" - if DOI_PREFIX_PATTERN is not None - else None + rf"^{_INNER_DANDI_DOI_PATTERN}$" + if _INSTANCE_CONFIG.doi_prefix is not None + else rf"^(?:{_INNER_DANDI_DOI_PATTERN})?$" # This matches an empty string as well ) DANDI_PUBID_PATTERN = rf"^{ID_PATTERN}:{VERSION_PATTERN}$" DANDI_NSKEY = "dandi" # Namespace for DANDI ontology @@ -1873,14 +1877,11 @@ class Publishable(DandiBaseModel): _doi_field_kwargs: dict[str, Any] = { "title": "DOI", + "pattern": DANDI_DOI_PATTERN, "json_schema_extra": {"readOnly": True, "nskey": DANDI_NSKEY}, } -if DANDI_DOI_PATTERN is not None: - _doi_field_kwargs["pattern"] = DANDI_DOI_PATTERN -else: +if _INSTANCE_CONFIG.doi_prefix is None: _doi_field_kwargs["default"] = "" - # restricting the value to empty string to indicate that there is no DOI - _doi_field_kwargs["pattern"] = r"^$" class PublishedDandiset(Dandiset, Publishable): From 15709328f4e35005bed7b4104bc066ddf8a472ed Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 4 Aug 2025 20:19:05 -0700 Subject: [PATCH 56/80] test: update tests for relax DOI pattern when appropriate --- dandischema/tests/test_models.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index fc8e816b..e2ee862c 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -793,16 +793,18 @@ def _get_field_pattern( ( {}, r"[A-Z][-A-Z]*", - None, + r"10\.\d{4,}", { "dandiset_id": "DANDI-ADHOC:001350/draft", "dandiset_identifier": "DANDI-ADHOC:001350", "published_dandiset_id": "DANDI-ADHOC:001350/0.250511.1527", + "published_dandiset_doi": "", }, { "dandiset_id": "45:001350/draft", # Invalid id prefix "dandiset_identifier": "DANDI-ADHOC:001350", "published_dandiset_id": "DANDI-ADHOC:001350/0.250511.1527", + "published_dandiset_doi": "", }, ), ( @@ -831,17 +833,19 @@ def _get_field_pattern( "instance_name": "DANDI", }, "DANDI", - None, + r"10\.\d{4,}", { "dandiset_id": "DANDI:001425/draft", "dandiset_identifier": "DANDI:001425", "published_dandiset_id": "DANDI:001425/0.250514.0602", + "published_dandiset_doi": "10.48324/dandi.001425/0.250514.0602", }, { "dandiset_id": "DANDI:001425/draft", "dandiset_identifier": "DANDI:001425", # Not matching the `ID_PATTERN` regex "published_dandiset_id": "DANDI3:001425/0.250514.0602", + "published_dandiset_doi": "10.48324/dandi.001425/0.250514.0602", }, ), # === EMBER DANDI instance test cases === @@ -849,16 +853,19 @@ def _get_field_pattern( ( {}, r"[A-Z][-A-Z]*", - None, + r"10\.\d{4,}", { "dandiset_id": "DANDI-ADHOC:000005/draft", - "dandiset_identifier": "DANDI-ADHOC:000005", + "dandiset_identifier": "ABC:000005", "published_dandiset_id": "DANDI-ADHOC:000005/0.250404.1839", + "published_dandiset_doi": "10.60533/ember-dandi.000005/0.250404.1839", }, { "dandiset_id": "DANDI-ADHOC:000005/draft", - "dandiset_identifier": "-DANDI-ADHOC:000005", # Invalid id prefix + "dandiset_identifier": "ABC:000005", "published_dandiset_id": "DANDI-ADHOC:000005/0.250404.1839", + # Invalid registrant code in the DOI prefix + "published_dandiset_doi": "10.605/ember-dandi.000005/0.250404.1839", }, ), ( @@ -888,7 +895,7 @@ def _get_field_pattern( def test_vendorization( clear_dandischema_modules_and_set_env_vars: None, exp_id_pattern: str, - exp_doi_prefix_pattern: Optional[str], + exp_doi_prefix_pattern: str, # Fields that are valid for the vendorization valid_vendored_fields: dict[str, str], # Fields that are invalid for the vendorization @@ -914,12 +921,11 @@ class VendoredFieldModel(BaseModel): published_dandiset_id: str = Field( pattern=_get_field_pattern("id", models_.PublishedDandiset) ) - if exp_doi_prefix_pattern is not None: - published_dandiset_doi: str = Field( - pattern=_get_field_pattern("doi", models_.PublishedDandiset) - ) + published_dandiset_doi: str = Field( + pattern=_get_field_pattern("doi", models_.PublishedDandiset) + ) - model_config = ConfigDict(strict=True, extra="forbid") + model_config = ConfigDict(strict=True) # Validate the valid vendored fields against the vendored patterns VendoredFieldModel.model_validate(valid_vendored_fields) From 72b52576f486ec0aa02d0ea85edb66b155ef0374 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 4 Aug 2025 20:54:13 -0700 Subject: [PATCH 57/80] style: simplify regex expression Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- dandischema/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dandischema/models.py b/dandischema/models.py index d61a7168..8fb2c352 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -88,7 +88,7 @@ DANDI_DOI_PATTERN = ( rf"^{_INNER_DANDI_DOI_PATTERN}$" if _INSTANCE_CONFIG.doi_prefix is not None - else rf"^(?:{_INNER_DANDI_DOI_PATTERN})?$" # This matches an empty string as well + else rf"^({_INNER_DANDI_DOI_PATTERN}|)$" # This matches an empty string as well ) DANDI_PUBID_PATTERN = rf"^{ID_PATTERN}:{VERSION_PATTERN}$" DANDI_NSKEY = "dandi" # Namespace for DANDI ontology From 838bcf6d1b1e357e5e1cd5dcd9a992591e6bd142 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Fri, 22 Aug 2025 11:17:34 -0700 Subject: [PATCH 58/80] feat: provide environment variable aliases for setting instance config This facilitates dandi-archive, a Django app, to use environment variables with more consistent names to set the instance config --- dandischema/conf.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index a1acb9f6..d6f7e02d 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -8,7 +8,7 @@ import logging from typing import TYPE_CHECKING, Annotated, Any, Optional, Union -from pydantic import AnyUrl, BaseModel, Field, StringConstraints +from pydantic import AliasChoices, AnyUrl, BaseModel, Field, StringConstraints from pydantic_settings import BaseSettings, SettingsConfigDict _MODELS_MODULE_NAME = "dandischema.models" @@ -76,22 +76,42 @@ class Config(BaseSettings): For details, see https://docs.pydantic.dev/latest/concepts/pydantic_settings/ """ - model_config = SettingsConfigDict(env_prefix="dandi_") + model_config = SettingsConfigDict( + # TODO: currently `validate_by_name` is set to `False` because of the limitation + # imposed by a bug, https://github.com/pydantic/pydantic/issues/12191, at + # Pydantic. Once that bug is fixed, we should considered setting + # `validate_by_name` to `True` and redefine the fields to allow population + # of field values by field names. + validate_by_name=False, + validate_by_alias=True, + ) instance_name: Annotated[ - str, StringConstraints(pattern=rf"^{UNVENDORED_ID_PATTERN}$") + str, + StringConstraints(pattern=rf"^{UNVENDORED_ID_PATTERN}$"), + Field( + validation_alias=AliasChoices( + "dandi_instance_name", "django_dandi_instance_name" + ) + ), ] = DEFAULT_INSTANCE_NAME """Name of the DANDI instance""" doi_prefix: Optional[ Annotated[str, StringConstraints(pattern=rf"^{UNVENDORED_DOI_PREFIX_PATTERN}$")] - ] = None + ] = Field( + default=None, + validation_alias=AliasChoices( + "dandi_doi_prefix", "django_dandi_doi_api_prefix" + ), + ) """ The DOI prefix at DataCite """ licenses: set[License] = Field( - default={License("spdx:CC0-1.0"), License("spdx:CC-BY-4.0")} + default={License("spdx:CC0-1.0"), License("spdx:CC-BY-4.0")}, + validation_alias=AliasChoices("dandi_licenses", "django_dandi_licenses"), ) """ Set of licenses to be supported by the DANDI instance From 23b404d1a8b711ff7fefd326e713772796bc2fd9 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Sat, 23 Aug 2025 23:21:19 -0700 Subject: [PATCH 59/80] test: update tests for `dandischema.conf.py` So that aliases of fields are used instead of names of the fields --- dandischema/tests/test_conf.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 46dcc760..b5803b47 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -18,14 +18,17 @@ def test_get_instance_config() -> None: ), "`get_instance_config` should return a copy of the instance config" -FOO_CONFIG_DICT = { +_FOO_CONFIG_DICT_BY_FIELD_NAME = { "instance_name": "FOO", "doi_prefix": "10.1234", "licenses": ["spdx:AdaCore-doc", "spdx:AGPL-3.0-or-later", "spdx:NBPL-1.0"], } +FOO_CONFIG_DICT = {f"dandi_{k}": v for k, v in _FOO_CONFIG_DICT_BY_FIELD_NAME.items()} + FOO_CONFIG_ENV_VARS = { - k: v if k != "licenses" else json.dumps(v) for k, v in FOO_CONFIG_DICT.items() + k: v if k != "licenses" else json.dumps(v) + for k, v in _FOO_CONFIG_DICT_BY_FIELD_NAME.items() } @@ -40,7 +43,7 @@ def test_valid_instance_name(self, instance_name: str) -> None: """ from dandischema.conf import Config - Config(instance_name=instance_name) + Config(dandi_instance_name=instance_name) @pytest.mark.parametrize("instance_name", ["-DANDI", "dandi", "DANDI0", "DANDI*"]) def test_invalid_instance_name(self, instance_name: str) -> None: @@ -50,10 +53,10 @@ def test_invalid_instance_name(self, instance_name: str) -> None: from dandischema.conf import Config with pytest.raises(ValidationError) as exc_info: - Config(instance_name=instance_name) + Config(dandi_instance_name=instance_name) assert len(exc_info.value.errors()) == 1 - assert exc_info.value.errors()[0]["loc"] == ("instance_name",) + assert exc_info.value.errors()[0]["loc"] == ("dandi_instance_name",) @pytest.mark.parametrize( "doi_prefix", ["10.1234", "10.5678", "10.12345678", "10.987654321"] @@ -64,7 +67,7 @@ def test_valid_doi_prefix(self, doi_prefix: str) -> None: """ from dandischema.conf import Config - Config(doi_prefix=doi_prefix) + Config(dandi_doi_prefix=doi_prefix) @pytest.mark.parametrize("doi_prefix", ["1234", ".1234", "1.1234", "10.123"]) def test_invalid_doi_prefix(self, doi_prefix: str) -> None: @@ -74,10 +77,10 @@ def test_invalid_doi_prefix(self, doi_prefix: str) -> None: from dandischema.conf import Config with pytest.raises(ValidationError) as exc_info: - Config(doi_prefix=doi_prefix) + Config(dandi_doi_prefix=doi_prefix) assert len(exc_info.value.errors()) == 1 - assert exc_info.value.errors()[0]["loc"] == ("doi_prefix",) + assert exc_info.value.errors()[0]["loc"] == ("dandi_doi_prefix",) @pytest.mark.parametrize( "licenses", @@ -98,7 +101,7 @@ def test_valid_licenses_by_args(self, licenses: Union[list[str], set[str]]) -> N from dandischema.conf import Config, License # noinspection PyTypeChecker - config = Config(licenses=licenses) + config = Config(dandi_licenses=licenses) assert config.licenses == {License(license_) for license_ in set(licenses)} @@ -149,20 +152,20 @@ def test_invalid_licenses_by_args(self, licenses: set[str]) -> None: with pytest.raises(ValidationError) as exc_info: # noinspection PyTypeChecker - Config(licenses=licenses) + Config(dandi_licenses=licenses) assert len(exc_info.value.errors()) == 1 - assert exc_info.value.errors()[0]["loc"] == ("licenses", ANY) + assert exc_info.value.errors()[0]["loc"] == ("dandi_licenses", ANY) class TestSetInstanceConfig: @pytest.mark.parametrize( ("arg", "kwargs"), [ - (FOO_CONFIG_DICT, {"instance_name": "BAR"}), + (FOO_CONFIG_DICT, {"dandi_instance_name": "BAR"}), ( FOO_CONFIG_DICT, - {"instance_name": "Baz", "key": "value"}, + {"dandi_instance_name": "Baz", "key": "value"}, ), ], ) @@ -271,8 +274,8 @@ def test_after_models_import_different_config( import dandischema.models # noqa: F401 new_config_dict = { - "instance_name": "BAR", - "doi_prefix": "10.5678", + "dandi_instance_name": "BAR", + "dandi_doi_prefix": "10.5678", } # noinspection DuplicatedCode From 24340c178dd02524aee0db781414944e170fdfb5 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 4 Sep 2025 12:26:31 -0700 Subject: [PATCH 60/80] ci: remove `DANDI_INSTANCE_NAME` and `DANDI_DOI_PREFIX` in `Test against dandi-cli` CI DANDI client is to be mostly vendor-agnostic so there is no need for vendor specific variable to be set --- .github/workflows/test-dandi-cli.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/test-dandi-cli.yml b/.github/workflows/test-dandi-cli.yml index a720fe67..a667ddb5 100644 --- a/.github/workflows/test-dandi-cli.yml +++ b/.github/workflows/test-dandi-cli.yml @@ -99,11 +99,5 @@ jobs: . working-directory: dandischema - - name: Set DANDI_INSTANCE_NAME - run: echo "DANDI_INSTANCE_NAME=DANDI" >> "$GITHUB_ENV" - - - name: Set DANDI_DOI_PREFIX - run: echo "DANDI_DOI_PREFIX=10.80507" >> "$GITHUB_ENV" - - name: Run dandi-cli tests run: python -m pytest -s -v --pyargs dandi From ffe0640e46174f5e93207f632ffea8f315b4a95b Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 22 Aug 2025 15:51:16 -0400 Subject: [PATCH 61/80] feat: make DataCite metadata generation vendor dependent Co-authored-by: Yaroslav Halchenko dict: """Convert published Dandiset metadata to Datacite""" + + instance_config = get_instance_config() + if not isinstance(meta, PublishedDandiset): meta = PublishedDandiset(**meta) @@ -143,13 +148,15 @@ def to_datacite( attributes["descriptions"] = [ {"description": meta.description, "descriptionType": "Abstract"} ] + attributes["publisher"] = { - "name": "DANDI Archive", + "name": f"{instance_config.instance_name} Archive", "schemeUri": "https://scicrunch.org/resolver/", - "publisherIdentifier": "https://scicrunch.org/resolver/RRID:SCR_017571", + "publisherIdentifier": f"https://scicrunch.org/resolver/{instance_config.instance_identifier}", "publisherIdentifierScheme": "RRID", "lang": "en", } + attributes["publicationYear"] = str(meta.datePublished.year) # not sure about it dandi-api had "resourceTypeGeneral": "NWB" attributes["types"] = { From a9e129350263e4a432a0ea7c7a4a7468526f4b75 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 26 Aug 2025 13:36:34 -0700 Subject: [PATCH 62/80] feat: add `instance_identifier` field to `Config` to support the vendorization of publisher info in generating datacite metadata --- dandischema/conf.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/dandischema/conf.py b/dandischema/conf.py index d6f7e02d..8e4c338e 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -14,6 +14,15 @@ _MODELS_MODULE_NAME = "dandischema.models" """The full import name of the module containing the DANDI Pydantic models""" +INSTANCE_IDENTIFIER_PATTERN = r"RRID:\S+" +""" +The pattern of the ID identifying the DANDI service instance + +Note +---- + This pattern currently only allows Research Resource Identifiers (RRIDs). +""" + UNVENDORED_ID_PATTERN = r"[A-Z][-A-Z]*" UNVENDORED_DOI_PREFIX_PATTERN = r"10\.\d{4,}" @@ -97,6 +106,23 @@ class Config(BaseSettings): ] = DEFAULT_INSTANCE_NAME """Name of the DANDI instance""" + instance_identifier: Annotated[ + str, + StringConstraints(pattern=rf"^{INSTANCE_IDENTIFIER_PATTERN}$"), + Field( + validation_alias=AliasChoices( + "dandi_instance_identifier", "django_dandi_instance_identifier" + ) + ), + ] + """ + ID identifying the DANDI service instance + + Note + ---- + This field currently only accepts Research Resource Identifiers (RRIDs). + """ + doi_prefix: Optional[ Annotated[str, StringConstraints(pattern=rf"^{UNVENDORED_DOI_PREFIX_PATTERN}$")] ] = Field( From 4c0ed426ccb3c114f6b0642ed246b4f15ec4041c Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 28 Aug 2025 14:51:36 -0700 Subject: [PATCH 63/80] feat: set default of instance identifier to `None` --- dandischema/conf.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index 8e4c338e..b8c6db8f 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -106,15 +106,17 @@ class Config(BaseSettings): ] = DEFAULT_INSTANCE_NAME """Name of the DANDI instance""" - instance_identifier: Annotated[ - str, - StringConstraints(pattern=rf"^{INSTANCE_IDENTIFIER_PATTERN}$"), - Field( - validation_alias=AliasChoices( - "dandi_instance_identifier", "django_dandi_instance_identifier" - ) + instance_identifier: Optional[ + Annotated[ + str, + StringConstraints(pattern=rf"^{INSTANCE_IDENTIFIER_PATTERN}$"), + ] + ] = Field( + default=None, + validation_alias=AliasChoices( + "dandi_instance_identifier", "django_dandi_instance_identifier" ), - ] + ) """ ID identifying the DANDI service instance From 9e9881ac1d6b9886438fa675f742588a9625f5a3 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 1 Sep 2025 22:24:04 -0700 Subject: [PATCH 64/80] chore: remove unused import of `requests` --- dandischema/datacite/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dandischema/datacite/__init__.py b/dandischema/datacite/__init__.py index c4b8080e..45bcd373 100644 --- a/dandischema/datacite/__init__.py +++ b/dandischema/datacite/__init__.py @@ -12,7 +12,6 @@ from typing import Any, Dict, Union from jsonschema import Draft7Validator -import requests from dandischema.conf import get_instance_config From e0478e210c810f363e8e3392fcab1d1a8ac59e8e Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 2 Sep 2025 10:37:50 -0700 Subject: [PATCH 65/80] test: update tests related to DateCite metadata generation --- dandischema/datacite/tests/test_datacite.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/dandischema/datacite/tests/test_datacite.py b/dandischema/datacite/tests/test_datacite.py index 10361fc7..65e12e29 100644 --- a/dandischema/datacite/tests/test_datacite.py +++ b/dandischema/datacite/tests/test_datacite.py @@ -8,6 +8,7 @@ import pytest import requests +from dandischema.conf import get_instance_config from dandischema.models import ( LicenseType, PublishedDandiset, @@ -28,6 +29,8 @@ from .. import _get_datacite_schema, _licenses_to_rights_list, to_datacite +_INSTANCE_CONFIG = get_instance_config() + class TestLicensesToRightsList: """ @@ -274,8 +277,9 @@ def test_datacite(dandi_id: str, schema: Any) -> None: "publisher": ( None, { - "name": "DANDI Archive", - "publisherIdentifier": "https://scicrunch.org/resolver/RRID:SCR_017571", + "name": f"{_INSTANCE_CONFIG.instance_name} Archive", + "publisherIdentifier": f"https://scicrunch.org/resolver/" + f"{_INSTANCE_CONFIG.instance_identifier}", "publisherIdentifierScheme": "RRID", "schemeUri": "https://scicrunch.org/resolver/", "lang": "en", @@ -597,8 +601,9 @@ def test_datacite_publish(metadata_basic: Dict[str, Any]) -> None: ], "publicationYear": "1970", "publisher": { - "name": "DANDI Archive", - "publisherIdentifier": "https://scicrunch.org/resolver/RRID:SCR_017571", + "name": f"{_INSTANCE_CONFIG.instance_name} Archive", + "publisherIdentifier": f"https://scicrunch.org/resolver/" + f"{_INSTANCE_CONFIG.instance_identifier}", "publisherIdentifierScheme": "RRID", "schemeUri": "https://scicrunch.org/resolver/", "lang": "en", From 16bb639f117859db08cd1063f973b54328e4c1d2 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 3 Sep 2025 17:14:05 -0700 Subject: [PATCH 66/80] test: update CI test workflow To set the instance identifier through env var --- .github/workflows/test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 31c07d1a..3ec5b314 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,11 +23,13 @@ jobs: python: '3.9' vendored_env: dandi instance_name: DANDI + instance_identifier: 'RRID:SCR_017571' doi_prefix: '10.80507' - os: ubuntu-latest python: '3.9' vendored_env: ember-dandi instance_name: EMBER-DANDI + instance_identifier: 'RRID:SCR_026700' doi_prefix: '10.82754' - os: ubuntu-latest python: '3.9' @@ -56,6 +58,11 @@ jobs: if: ${{ matrix.instance_name }} run: echo "DANDI_INSTANCE_NAME=${{ matrix.instance_name }}" >> "$GITHUB_ENV" + # Set only if matrix.instance_identifier is defined + - name: Set DANDI_INSTANCE_IDENTIFIER + if: ${{ matrix.instance_identifier }} + run: echo "DANDI_INSTANCE_IDENTIFIER=${{ matrix.instance_identifier }}" >> "$GITHUB_ENV" + # Set only if matrix.doi_prefix is defined - name: Set DANDI_DOI_PREFIX if: ${{ matrix.doi_prefix }} From b07e839a0609824054860094d3ec21c7044fdfb6 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 3 Sep 2025 23:05:12 -0700 Subject: [PATCH 67/80] test: add test for `instance_identifier` Add tests for validation of `dandischema.conf.Conf.instance_identifier` --- dandischema/tests/test_conf.py | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index b5803b47..a927160d 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -58,6 +58,44 @@ def test_invalid_instance_name(self, instance_name: str) -> None: assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"] == ("dandi_instance_name",) + @pytest.mark.parametrize( + "instance_identifier", [None, "RRID:ABC_123456", "RRID:SCR_1234567891234"] + ) + def test_valid_instance_identifier( + self, instance_identifier: Optional[str] + ) -> None: + """ + Test instantiating `dandischema.conf.Config` with a valid instance identifier + """ + from dandischema.conf import Config + + Config(dandi_instance_identifier=instance_identifier) + + @pytest.mark.parametrize("instance_identifier", ["", "RRID:AB C", "ID:ABC_123456"]) + def test_invalid_instance_identifier(self, instance_identifier: str) -> None: + """ + Test instantiating `dandischema.conf.Config` with an invalid instance identifier + """ + from dandischema.conf import Config + + with pytest.raises(ValidationError) as exc_info: + Config(dandi_instance_identifier=instance_identifier) + + assert len(exc_info.value.errors()) == 1 + assert exc_info.value.errors()[0]["loc"] == ("dandi_instance_identifier",) + + def test_without_instance_identifier_with_doi_prefix(self) -> None: + """ + Test instantiating `dandischema.conf.Config` without an instance identifier + when a DOI prefix is provided + """ + from dandischema.conf import Config + + with pytest.raises( + ValidationError, match="`instance_identifier` must also be set." + ): + Config(dandi_doi_prefix="10.1234") + @pytest.mark.parametrize( "doi_prefix", ["10.1234", "10.5678", "10.12345678", "10.987654321"] ) From 4efc64c9e56cf2b9588311d200971384b5f786ec Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 3 Sep 2025 23:08:04 -0700 Subject: [PATCH 68/80] feat: condition the value of instance identifier Ensure that the `instance_identifier` field to be provided when the `doi_prefix` field of `dandischema.conf.Config` is provided. --- dandischema/conf.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index b8c6db8f..a92fe114 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -8,8 +8,16 @@ import logging from typing import TYPE_CHECKING, Annotated, Any, Optional, Union -from pydantic import AliasChoices, AnyUrl, BaseModel, Field, StringConstraints +from pydantic import ( + AliasChoices, + AnyUrl, + BaseModel, + Field, + StringConstraints, + model_validator, +) from pydantic_settings import BaseSettings, SettingsConfigDict +from typing_extensions import Self _MODELS_MODULE_NAME = "dandischema.models" """The full import name of the module containing the DANDI Pydantic models""" @@ -153,6 +161,22 @@ class Config(BaseSettings): ``` """ + @model_validator(mode="after") + def _ensure_non_none_instance_identifier_if_non_none_doi_prefix( + self, + ) -> Self: + """ + Ensure that if `doi_prefix` is not `None`, then `instance_identifier` + must not be `None`. + """ + + if self.doi_prefix is not None and self.instance_identifier is None: + raise ValueError( + "If `doi_prefix` is set (not `None`), " + "`instance_identifier` must also be set." + ) + return self + _instance_config = Config() # Initial value is set by env vars alone """ From a2280e2527d51ef5442db8eb267e36e1a3c8bfd7 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 3 Sep 2025 23:09:08 -0700 Subject: [PATCH 69/80] test: update tests for the introduction of instance identifier field --- dandischema/tests/test_conf.py | 49 ++++++++++++++++++++++++++++++-- dandischema/tests/test_models.py | 2 ++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index a927160d..78dde99d 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -20,6 +20,7 @@ def test_get_instance_config() -> None: _FOO_CONFIG_DICT_BY_FIELD_NAME = { "instance_name": "FOO", + "instance_identifier": "RRID:ABC_123456", "doi_prefix": "10.1234", "licenses": ["spdx:AdaCore-doc", "spdx:AGPL-3.0-or-later", "spdx:NBPL-1.0"], } @@ -33,6 +34,10 @@ def test_get_instance_config() -> None: class TestConfig: + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize( "instance_name", ["DANDI-ADHOC", "DANDI-TEST", "DANDI", "DANDI--TEST", "DANDI-TE-ST"], @@ -45,6 +50,10 @@ def test_valid_instance_name(self, instance_name: str) -> None: Config(dandi_instance_name=instance_name) + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize("instance_name", ["-DANDI", "dandi", "DANDI0", "DANDI*"]) def test_invalid_instance_name(self, instance_name: str) -> None: """ @@ -58,6 +67,10 @@ def test_invalid_instance_name(self, instance_name: str) -> None: assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"] == ("dandi_instance_name",) + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize( "instance_identifier", [None, "RRID:ABC_123456", "RRID:SCR_1234567891234"] ) @@ -71,6 +84,10 @@ def test_valid_instance_identifier( Config(dandi_instance_identifier=instance_identifier) + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize("instance_identifier", ["", "RRID:AB C", "ID:ABC_123456"]) def test_invalid_instance_identifier(self, instance_identifier: str) -> None: """ @@ -84,6 +101,10 @@ def test_invalid_instance_identifier(self, instance_identifier: str) -> None: assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"] == ("dandi_instance_identifier",) + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") def test_without_instance_identifier_with_doi_prefix(self) -> None: """ Test instantiating `dandischema.conf.Config` without an instance identifier @@ -96,6 +117,10 @@ def test_without_instance_identifier_with_doi_prefix(self) -> None: ): Config(dandi_doi_prefix="10.1234") + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize( "doi_prefix", ["10.1234", "10.5678", "10.12345678", "10.987654321"] ) @@ -105,8 +130,16 @@ def test_valid_doi_prefix(self, doi_prefix: str) -> None: """ from dandischema.conf import Config - Config(dandi_doi_prefix=doi_prefix) + Config( + # Instance identifier must be provided if doi_prefix is provided + dandi_instance_identifier="RRID:SCR_017571", + dandi_doi_prefix=doi_prefix, + ) + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize("doi_prefix", ["1234", ".1234", "1.1234", "10.123"]) def test_invalid_doi_prefix(self, doi_prefix: str) -> None: """ @@ -115,11 +148,19 @@ def test_invalid_doi_prefix(self, doi_prefix: str) -> None: from dandischema.conf import Config with pytest.raises(ValidationError) as exc_info: - Config(dandi_doi_prefix=doi_prefix) + Config( + # Instance identifier must be provided if doi_prefix is provided + dandi_instance_identifier="RRID:SCR_017571", + dandi_doi_prefix=doi_prefix, + ) assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"] == ("dandi_doi_prefix",) + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize( "licenses", [ @@ -174,6 +215,10 @@ def test_valid_licenses_by_env_var( assert config.licenses == {License(license_) for license_ in licenses} + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True + ) + @pytest.mark.usefixtures("clear_dandischema_modules_and_set_env_vars") @pytest.mark.parametrize( "licenses", [ diff --git a/dandischema/tests/test_models.py b/dandischema/tests/test_models.py index 5832b740..5fb06a6d 100644 --- a/dandischema/tests/test_models.py +++ b/dandischema/tests/test_models.py @@ -811,6 +811,7 @@ def _get_field_pattern( ( { "instance_name": "DANDI", + "instance_identifier": "RRID:ABC_123456", "doi_prefix": "10.48324", }, "DANDI", @@ -872,6 +873,7 @@ def _get_field_pattern( ( { "instance_name": "EMBER-DANDI", + "instance_identifier": "RRID:ABC_123456", "doi_prefix": "10.60533", }, "EMBER-DANDI", From 0ecbfaa6531a75a69c0b6eb73c8c86ea63b1040d Mon Sep 17 00:00:00 2001 From: Isaac To Date: Fri, 5 Sep 2025 17:18:44 -0700 Subject: [PATCH 70/80] feat: provide publisher identifier only when available in DataCite metadata --- dandischema/datacite/__init__.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/dandischema/datacite/__init__.py b/dandischema/datacite/__init__.py index 45bcd373..4eb4aad1 100644 --- a/dandischema/datacite/__init__.py +++ b/dandischema/datacite/__init__.py @@ -148,13 +148,19 @@ def to_datacite( {"description": meta.description, "descriptionType": "Abstract"} ] + # Populate publisher info attributes["publisher"] = { "name": f"{instance_config.instance_name} Archive", - "schemeUri": "https://scicrunch.org/resolver/", - "publisherIdentifier": f"https://scicrunch.org/resolver/{instance_config.instance_identifier}", - "publisherIdentifierScheme": "RRID", "lang": "en", } + if instance_config.instance_identifier is not None: + attributes["publisher"].update( + { + "schemeUri": "https://scicrunch.org/resolver/", + "publisherIdentifier": f"https://scicrunch.org/resolver/{instance_config.instance_identifier}", + "publisherIdentifierScheme": "RRID", + } + ) attributes["publicationYear"] = str(meta.datePublished.year) # not sure about it dandi-api had "resourceTypeGeneral": "NWB" From 8f1da33bfadaa07bc77b2b712afaac86597b73b6 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 8 Sep 2025 09:57:07 -0700 Subject: [PATCH 71/80] feat: add `instance_url` field to `dandischema.conf.Config` `dandischema.models` was already utilizing the value of the `DJANGO_DANDI_WEB_APP_URL` env var as the value of the instance URL to instantiate the models. Changes in this commit just make the use of the instance URL part of the instance config for the schema. --- dandischema/conf.py | 9 +++++++++ dandischema/models.py | 26 +++++++------------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index a92fe114..d4ee58e5 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -10,6 +10,7 @@ from pydantic import ( AliasChoices, + AnyHttpUrl, AnyUrl, BaseModel, Field, @@ -133,6 +134,14 @@ class Config(BaseSettings): This field currently only accepts Research Resource Identifiers (RRIDs). """ + instance_url: Optional[AnyHttpUrl] = Field( + default=None, + validation_alias=AliasChoices("dandi_instance_url", "django_dandi_web_app_url"), + ) + """ + The URL of the DANDI instance + """ + doi_prefix: Optional[ Annotated[str, StringConstraints(pattern=rf"^{UNVENDORED_DOI_PREFIX_PATTERN}$")] ] = Field( diff --git a/dandischema/models.py b/dandischema/models.py index bce5f6fd..17a98ee0 100644 --- a/dandischema/models.py +++ b/dandischema/models.py @@ -2,7 +2,6 @@ from datetime import date, datetime from enum import Enum -import os import re from typing import ( TYPE_CHECKING, @@ -28,7 +27,6 @@ Field, GetJsonSchemaHandler, StringConstraints, - TypeAdapter, ValidationInfo, field_validator, model_validator, @@ -66,16 +64,12 @@ else UNVENDORED_DOI_PREFIX_PATTERN ) -# Use DJANGO_DANDI_WEB_APP_URL to point to a specific deployment. -DANDI_INSTANCE_URL: Optional[str] -try: - DANDI_INSTANCE_URL = os.environ["DJANGO_DANDI_WEB_APP_URL"] -except KeyError: - DANDI_INSTANCE_URL = None - DANDI_INSTANCE_URL_PATTERN = ".*" -else: - # Ensure no trailing / for consistency - DANDI_INSTANCE_URL_PATTERN = re.escape(DANDI_INSTANCE_URL.rstrip("/")) +# The pattern of the DANDI instance URL +DANDI_INSTANCE_URL_PATTERN = ( + ".*" + if _INSTANCE_CONFIG.instance_url is None + else re.escape(str(_INSTANCE_CONFIG.instance_url).rstrip("/")) +) NAME_PATTERN = r"^([\w\s\-\.']+),\s+([\w\s\-\.']+)$" UUID_PATTERN = ( @@ -1618,13 +1612,7 @@ class CommonModel(DandiBaseModel): json_schema_extra={"readOnly": True, "nskey": "schema"}, ) repository: Optional[AnyHttpUrl] = Field( - # mypy doesn't like using a string as the default for an AnyHttpUrl - # attribute, so we have to convert it to an AnyHttpUrl: - ( - TypeAdapter(AnyHttpUrl).validate_python(DANDI_INSTANCE_URL) - if DANDI_INSTANCE_URL is not None - else None - ), + default=_INSTANCE_CONFIG.instance_url, description="location of the item", json_schema_extra={"nskey": DANDI_NSKEY, "readOnly": True}, ) From 414718b4575f2becb67d23ac871a5a93b63174e6 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Wed, 10 Sep 2025 14:47:24 -0400 Subject: [PATCH 72/80] Use generic programming check for having instance_identifier set --- dandischema/datacite/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dandischema/datacite/__init__.py b/dandischema/datacite/__init__.py index 4eb4aad1..72536821 100644 --- a/dandischema/datacite/__init__.py +++ b/dandischema/datacite/__init__.py @@ -153,7 +153,7 @@ def to_datacite( "name": f"{instance_config.instance_name} Archive", "lang": "en", } - if instance_config.instance_identifier is not None: + if instance_config.instance_identifier: attributes["publisher"].update( { "schemeUri": "https://scicrunch.org/resolver/", From 69a0e8212b1d101d6112996302751cecc768497f Mon Sep 17 00:00:00 2001 From: Isaac To Date: Thu, 11 Sep 2025 00:33:59 -0700 Subject: [PATCH 73/80] doc: add information to customize metadata models with vendor information --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index d80d8df8..1086dcd3 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,27 @@ Important files in this repository include: - [metadata.py](./dandischema/metadata.py) - contains functions for validating, migrating, and aggregating metadata - [datacite package](./dandischema/datacite) - contains functions for converting Dandiset metadata to DataCite metadata +## Customization with Vendor Information + +The DANDI metadata models defined in this library can be customized with vendor-specific information. +The parameters of the customization are defined by the fields of the `Config` class in +[dandischema/conf.py](./dandischema/conf.py). The `Config` class is a subclass of +[`pydantic_settings.BaseSettings`](https://docs.pydantic.dev/latest/concepts/pydantic_settings/), +and the values of the fields in an instance of the `Config` class can be set through environment +variables and `.env` files, as documented in +[the Pydantic Settings documentation](https://docs.pydantic.dev/latest/concepts/pydantic_settings/). +Specifically, + +- The value of a field is set from an environment variable with the same name, case-insensitively, + as one of the aliases of the field. For example, the `instance_name` field can be set from + the `DANDI_INSTANCE_NAME` or `DJANGO_DANDI_INSTANCE_NAME` environment variable. +- A value of a complex type (e.g., `list`, `set`, `dict`) should be expressed as a JSON-encoded string + in an environment variable. For example, the value for the `licenses` field, which is of + type `set`, can be set from the `DANDI_LICENSES` environment variable defined as the following: + ```shell + export DANDI_LICENSES='["spdx:CC0-1.0", "spdx:CC-BY-4.0"]' + ``` + ## Resources * To learn how to interact with the DANDI archive, From f1d9dc7bda7247279bff6087dd1ebf6f4e94ef22 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Wed, 17 Sep 2025 22:44:15 -0700 Subject: [PATCH 74/80] test: remove use of `unittest.mock.ANY` To pass the stricter type checking imposed by mypy 1.18.1 --- dandischema/tests/test_conf.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 78dde99d..9236f131 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,7 +1,6 @@ import json import logging from typing import Optional, Union -from unittest.mock import ANY from pydantic import ValidationError import pytest @@ -238,7 +237,7 @@ def test_invalid_licenses_by_args(self, licenses: set[str]) -> None: Config(dandi_licenses=licenses) assert len(exc_info.value.errors()) == 1 - assert exc_info.value.errors()[0]["loc"] == ("dandi_licenses", ANY) + assert exc_info.value.errors()[0]["loc"][:-1] == ("dandi_licenses",) class TestSetInstanceConfig: @@ -324,7 +323,7 @@ def test_after_models_import_same_config( ), "There should be only one log record from logger `dandischema.conf`" record_tuple = caplog.record_tuples[0] - assert record_tuple == ("dandischema.conf", logging.DEBUG, ANY) + assert record_tuple[:-1] == ("dandischema.conf", logging.DEBUG) assert ( "reset the DANDI instance configuration to the same value" in record_tuple[2] @@ -370,7 +369,10 @@ def test_after_models_import_different_config( len(caplog.records) == 1 ), "There should be only one log record from logger `dandischema.conf`" record_tuple = caplog.record_tuples[0] - assert record_tuple == ("dandischema.conf", logging.WARNING, ANY) + assert record_tuple[:-1] == ( + "dandischema.conf", + logging.WARNING, + ) assert "different value will not have any affect" in record_tuple[2] assert get_instance_config() == Config.model_validate( From 68589167094f8a319f414ad43d853a30561fc068 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Mon, 22 Sep 2025 13:50:53 -0700 Subject: [PATCH 75/80] feat: allow `Config` to be initialized with field names --- dandischema/conf.py | 49 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/dandischema/conf.py b/dandischema/conf.py index d4ee58e5..3fb77dc4 100644 --- a/dandischema/conf.py +++ b/dandischema/conf.py @@ -17,7 +17,12 @@ StringConstraints, model_validator, ) -from pydantic_settings import BaseSettings, SettingsConfigDict +from pydantic.fields import FieldInfo +from pydantic_settings import ( + BaseSettings, + PydanticBaseSettingsSource, + SettingsConfigDict, +) from typing_extensions import Self _MODELS_MODULE_NAME = "dandischema.models" @@ -186,6 +191,48 @@ def _ensure_non_none_instance_identifier_if_non_none_doi_prefix( ) return self + # This is a workaround for the limitation imposed by the bug at + # https://github.com/pydantic/pydantic/issues/12191 mentioned above. + # TODO: This will no longer be needed once that bug is fixed and + # should be removed along with other workarounds in this model because + # of that bug. + @classmethod + def settings_customise_sources( + cls, + settings_cls: type[BaseSettings], + init_settings: PydanticBaseSettingsSource, + env_settings: PydanticBaseSettingsSource, + dotenv_settings: PydanticBaseSettingsSource, + file_secret_settings: PydanticBaseSettingsSource, + ) -> tuple[PydanticBaseSettingsSource, ...]: + def wrap(source: PydanticBaseSettingsSource) -> PydanticBaseSettingsSource: + class Wrapped(PydanticBaseSettingsSource): + def get_field_value( + self, field: FieldInfo, field_name: str + ) -> tuple[Any, str, bool]: + raise NotImplementedError( + "If this method is ever called, there is a bug" + ) + + def __call__(self) -> dict[str, Any]: + result = source().copy() + for field_name in cls.model_fields: + if field_name in result: + alias = f"dandi_{field_name}" + # This overwrites the `alias` key if it already exists + result[alias] = result[field_name] + del result[field_name] + return result + + return Wrapped(settings_cls) + + return ( + wrap(init_settings), + env_settings, + dotenv_settings, + file_secret_settings, + ) + _instance_config = Config() # Initial value is set by env vars alone """ From 22bf029e2a00ce599e3bd6b67ae91b98f41b9c69 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 23 Sep 2025 09:29:07 -0700 Subject: [PATCH 76/80] test: update tests so that field names are used to initialize Config --- dandischema/tests/test_conf.py | 37 ++++++++++++++++------------------ 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 9236f131..bca9603e 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -17,18 +17,15 @@ def test_get_instance_config() -> None: ), "`get_instance_config` should return a copy of the instance config" -_FOO_CONFIG_DICT_BY_FIELD_NAME = { +FOO_CONFIG_DICT = { "instance_name": "FOO", "instance_identifier": "RRID:ABC_123456", "doi_prefix": "10.1234", "licenses": ["spdx:AdaCore-doc", "spdx:AGPL-3.0-or-later", "spdx:NBPL-1.0"], } -FOO_CONFIG_DICT = {f"dandi_{k}": v for k, v in _FOO_CONFIG_DICT_BY_FIELD_NAME.items()} - FOO_CONFIG_ENV_VARS = { - k: v if k != "licenses" else json.dumps(v) - for k, v in _FOO_CONFIG_DICT_BY_FIELD_NAME.items() + k: v if k != "licenses" else json.dumps(v) for k, v in FOO_CONFIG_DICT.items() } @@ -47,7 +44,7 @@ def test_valid_instance_name(self, instance_name: str) -> None: """ from dandischema.conf import Config - Config(dandi_instance_name=instance_name) + Config(instance_name=instance_name) @pytest.mark.parametrize( "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True @@ -61,7 +58,7 @@ def test_invalid_instance_name(self, instance_name: str) -> None: from dandischema.conf import Config with pytest.raises(ValidationError) as exc_info: - Config(dandi_instance_name=instance_name) + Config(instance_name=instance_name) assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"] == ("dandi_instance_name",) @@ -81,7 +78,7 @@ def test_valid_instance_identifier( """ from dandischema.conf import Config - Config(dandi_instance_identifier=instance_identifier) + Config(instance_identifier=instance_identifier) @pytest.mark.parametrize( "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True @@ -95,7 +92,7 @@ def test_invalid_instance_identifier(self, instance_identifier: str) -> None: from dandischema.conf import Config with pytest.raises(ValidationError) as exc_info: - Config(dandi_instance_identifier=instance_identifier) + Config(instance_identifier=instance_identifier) assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"] == ("dandi_instance_identifier",) @@ -114,7 +111,7 @@ def test_without_instance_identifier_with_doi_prefix(self) -> None: with pytest.raises( ValidationError, match="`instance_identifier` must also be set." ): - Config(dandi_doi_prefix="10.1234") + Config(doi_prefix="10.1234") @pytest.mark.parametrize( "clear_dandischema_modules_and_set_env_vars", [{}], indirect=True @@ -131,8 +128,8 @@ def test_valid_doi_prefix(self, doi_prefix: str) -> None: Config( # Instance identifier must be provided if doi_prefix is provided - dandi_instance_identifier="RRID:SCR_017571", - dandi_doi_prefix=doi_prefix, + instance_identifier="RRID:SCR_017571", + doi_prefix=doi_prefix, ) @pytest.mark.parametrize( @@ -149,8 +146,8 @@ def test_invalid_doi_prefix(self, doi_prefix: str) -> None: with pytest.raises(ValidationError) as exc_info: Config( # Instance identifier must be provided if doi_prefix is provided - dandi_instance_identifier="RRID:SCR_017571", - dandi_doi_prefix=doi_prefix, + instance_identifier="RRID:SCR_017571", + doi_prefix=doi_prefix, ) assert len(exc_info.value.errors()) == 1 @@ -179,7 +176,7 @@ def test_valid_licenses_by_args(self, licenses: Union[list[str], set[str]]) -> N from dandischema.conf import Config, License # noinspection PyTypeChecker - config = Config(dandi_licenses=licenses) + config = Config(licenses=licenses) assert config.licenses == {License(license_) for license_ in set(licenses)} @@ -234,7 +231,7 @@ def test_invalid_licenses_by_args(self, licenses: set[str]) -> None: with pytest.raises(ValidationError) as exc_info: # noinspection PyTypeChecker - Config(dandi_licenses=licenses) + Config(licenses=licenses) assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"][:-1] == ("dandi_licenses",) @@ -244,10 +241,10 @@ class TestSetInstanceConfig: @pytest.mark.parametrize( ("arg", "kwargs"), [ - (FOO_CONFIG_DICT, {"dandi_instance_name": "BAR"}), + (FOO_CONFIG_DICT, {"instance_name": "BAR"}), ( FOO_CONFIG_DICT, - {"dandi_instance_name": "Baz", "key": "value"}, + {"instance_name": "Baz", "key": "value"}, ), ], ) @@ -356,8 +353,8 @@ def test_after_models_import_different_config( import dandischema.models # noqa: F401 new_config_dict = { - "dandi_instance_name": "BAR", - "dandi_doi_prefix": "10.5678", + "instance_name": "BAR", + "doi_prefix": "10.5678", } # noinspection DuplicatedCode From f32125ab41c052f1c53013f234f93965cf2a09ed Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 23 Sep 2025 14:28:37 -0700 Subject: [PATCH 77/80] test: add `"instance_url"` key to config dict for testing --- dandischema/tests/test_conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index bca9603e..08c8c572 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -20,6 +20,7 @@ def test_get_instance_config() -> None: FOO_CONFIG_DICT = { "instance_name": "FOO", "instance_identifier": "RRID:ABC_123456", + "instance_url": "https://dandiarchive.org/", "doi_prefix": "10.1234", "licenses": ["spdx:AdaCore-doc", "spdx:AGPL-3.0-or-later", "spdx:NBPL-1.0"], } From 715a383339b576922705511c3abf268de70201ff Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 23 Sep 2025 15:16:17 -0700 Subject: [PATCH 78/80] test: test initializing `dandischema.conf.Config` kwargs --- dandischema/tests/test_conf.py | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 08c8c572..38e21ec2 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -25,6 +25,10 @@ def test_get_instance_config() -> None: "licenses": ["spdx:AdaCore-doc", "spdx:AGPL-3.0-or-later", "spdx:NBPL-1.0"], } +# Same as `FOO_CONFIG_DICT` but with the field aliases instead of the field names being +# the keys +FOO_CONFIG_DICT_WITH_ALIASES = {f"dandi_{k}": v for k, v in FOO_CONFIG_DICT.items()} + FOO_CONFIG_ENV_VARS = { k: v if k != "licenses" else json.dumps(v) for k, v in FOO_CONFIG_DICT.items() } @@ -237,6 +241,38 @@ def test_invalid_licenses_by_args(self, licenses: set[str]) -> None: assert len(exc_info.value.errors()) == 1 assert exc_info.value.errors()[0]["loc"][:-1] == ("dandi_licenses",) + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", + [ + {}, + {"instance_name": "BAR"}, + {"instance_name": "BAZ", "instance_url": "https://www.example.com/"}, + ], + indirect=True, + ) + @pytest.mark.parametrize( + "config_dict", [FOO_CONFIG_DICT, FOO_CONFIG_DICT_WITH_ALIASES] + ) + def test_init_by_kwargs( + self, clear_dandischema_modules_and_set_env_vars: None, config_dict: dict + ) -> None: + """ + Test instantiating `Config` using keyword arguments + + The kwargs are expected to override any environment variables + """ + from dandischema.conf import Config + + config = Config.model_validate(config_dict) + config_json_dump = config.model_dump(mode="json") + + assert config_json_dump.keys() == FOO_CONFIG_DICT.keys() + for k, v in FOO_CONFIG_DICT.items(): + if k == "licenses": + assert sorted(config_json_dump[k]) == sorted(v) + else: + assert config_json_dump[k] == v + class TestSetInstanceConfig: @pytest.mark.parametrize( From 8fe9701d62c2350d08020d11e9c768e86b324d86 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 23 Sep 2025 21:47:36 -0700 Subject: [PATCH 79/80] test: test init `dandischema.conf.Config` by field names through dotenv file --- dandischema/tests/test_conf.py | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index 38e21ec2..eeaa8346 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -1,5 +1,6 @@ import json import logging +from pathlib import Path from typing import Optional, Union from pydantic import ValidationError @@ -273,6 +274,44 @@ def test_init_by_kwargs( else: assert config_json_dump[k] == v + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", + [ + {}, + ], + indirect=True, + ) + def test_init_by_field_names_through_dotenv( + self, + clear_dandischema_modules_and_set_env_vars: None, + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, + ) -> None: + """ + Test instantiating `Config` using a dotenv file with field names as keys + + The initialization is expected to fail because the proper keys are the aliases + when using environment variables or dotenv files. + """ + from dandischema.conf import Config + + dotenv_file_name = "test.env" + dotenv_file_path = tmp_path / dotenv_file_name + + # Write a dotenv file with a field name as key + dotenv_file_path.write_text("instance_name=DANDI-TEST") + + monkeypatch.chdir(tmp_path) + + with pytest.raises(ValidationError) as exc_info: + # noinspection PyArgumentList + Config(_env_file=dotenv_file_name) + + errors = exc_info.value.errors() + assert len(errors) == 1 + + assert errors[0]["type"] == "extra_forbidden" + class TestSetInstanceConfig: @pytest.mark.parametrize( From 7eafc38e2117666b993d1e67a72c9ee910f26698 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 23 Sep 2025 21:56:56 -0700 Subject: [PATCH 80/80] test: test round trip of `dandischema.conf.Config` --- dandischema/tests/test_conf.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/dandischema/tests/test_conf.py b/dandischema/tests/test_conf.py index eeaa8346..433f16d1 100644 --- a/dandischema/tests/test_conf.py +++ b/dandischema/tests/test_conf.py @@ -312,6 +312,29 @@ def test_init_by_field_names_through_dotenv( assert errors[0]["type"] == "extra_forbidden" + @pytest.mark.parametrize( + "clear_dandischema_modules_and_set_env_vars", + [ + {}, + ], + indirect=True, + ) + def test_round_trip(self, clear_dandischema_modules_and_set_env_vars: None) -> None: + """ + Test that a `Config` instance can be round-tripped through JSON serialization + and deserialization without loss of information. + """ + from dandischema.conf import Config + + config_original = Config.model_validate(FOO_CONFIG_DICT) + config_original_str = config_original.model_dump_json() + + config_reconstituted = Config.model_validate_json(config_original_str) + + assert ( + config_reconstituted == config_original + ), "Round-trip of `Config` instance failed" + class TestSetInstanceConfig: @pytest.mark.parametrize(