This directory contains ucum-essence.xml, the official machine-readable
definition of UCUM (the Unified Code for Units of Measure). It is not part of
the MIT-licensed UCUM.jl source code; it is a separate copyrighted work,
redistributed here verbatim and unmodified under its own license.
UCUM.jl generates its internal unit registry from this file at load time, once per process and only in memory. The package only interoperates with the Work — it does not modify it and does not distribute any modified or derivative version of the table.
Copyright 1999-2024 Regenstrief Institute, Inc. All rights reserved. Licensed under the UCUM License, Version 1.1 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://unitsofmeasure.org/license
The bundled file is licensed under the UCUM Copyright Notice and License, Version 1.1, June 2024:
Section 2 grants a "worldwide, non-exclusive, no-charge, royalty-free, revocable license to reproduce, publicly display, publicly perform, and distribute the Work, and to use the Work for the purposes of developing and commercializing Software Applications that will communicate with and interoperate with the Work" (a Software Application being "any software applications developed by You to interact with the Work", §1.8). UCUM.jl is such a Software Application: it parses this file to build its internal unit registry and interoperates with the Work; it does not distribute any modified or derived form of the table.
Section 3(a) prohibits adding to, deleting from, or modifying the Work's content and the creation of Derivative Works. The file here is therefore kept byte-for-byte identical to the upstream release. Section 1.3 provides the corresponding safe harbour:
For avoidance of doubt, a Software Application that merely communicates with and/or interoperates with an unmodified instance of the Work is not a Derivative Work.
Section 3(b) requires that copies of the Work be accompanied by a copyright notice, a notice referring to this License, a notice referring to the disclaimer of warranties, and the text of or URL to the License — all of which this file provides.
If you install, use, or redistribute UCUM.jl, you are exercising rights under the
UCUM License with respect to ucum-essence.xml. The License contains further
material terms not summarised here — the grant is revocable (§2, §10), you take
on an indemnification obligation toward the Contributors (§8), and use
restrictions apply (§3(a)) — so read it in full before redistributing.
The UCUM License is not an OSI-approved open-source license. UCUM.jl's source code is MIT-licensed, but the package as distributed is therefore not wholly OSI open source.
From §7 of the License:
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
UCUM.jl's compliance rests on the §1.3 safe harbour quoted above: it interoperates
with an unmodified instance of the Work. That holds only because the unit
registry is derived from this file at load time, in UCUM.__init__, and
exists solely in the memory of the running process — nothing derived from the
table is ever written to disk, and so nothing derived can be distributed.
The load-time build is a licensing decision, not a performance one. Building the
registry into a top-level const would be faster, but Julia would serialise it
into the .ji precompile cache; a redistributed warm depot or a PackageCompiler
sysimage would then carry a table derived from the Work.
Do not, as a build-time or startup-time optimisation:
- move the registry build to precompile time (a top-level
const); - commit a generated
.jlsource file containing the unit table; - ship the registry as a Julia Artifact, or as any serialised/pre-baked form;
- distribute a JSON, CSV, or other transcription of the table.
Any of these would distribute a transformed copy of the Work.
If you redistribute UCUM.jl (or otherwise copy ucum-essence.xml), you must
keep this file and ucum-essence.xml together, unmodified, so that the UCUM
copyright, license, and disclaimer notices continue to accompany the data.