Repository navigation
Use the standard licence text in one LICENSE, and take the schema from configuration-validation - #109
Merged
Merged
Conversation
The root LICENSE and five copies in device-detection, examples and pipeline held the EUPL v1.2 text with its title in capitals, and location/LICENSE held the 51Degrees header form. The root LICENSE now holds the text byte for byte as 51degrees-cxx has it, NOTICE holds the two additional terms as 51degrees-cxx has them, and the six other copies are removed. Maven Central reads the licence from each pom, so no package needs a file of its own. pipelineOptions.xsd was a copy of the file in configuration-validation. pipeline.core now takes it from that repository as a submodule, as the .NET pipeline does, and adds it to the jar at the same resource path.
The two additional terms apply where each file's header states them, so the repository has LICENSE alone, without a NOTICE file. The README's licence line goes back to naming LICENSE only. META-INF/NOTICE.txt in pipeline.did is the OWID attribution and stays.
Contributor
Author
|
Closing and reopening at once to start the checks again, because the runs queued during GitHub's Actions outage this evening never started. |
jwrosewell
marked this pull request as ready for review
November 12, 2026 00:10
This was referenced Nov 12, 2026
Draft
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes the licence files in this repository the same as in 51degrees-cxx, with one standard
LICENSEat the root and the two additional terms stated only in each source file's header, and takespipelineOptions.xsdfrom configuration-validation as a submodule rather than keeping a copy.Problem
The root
LICENSE(blob 4153cd3775, 13,827 bytes) held the EUPL v1.2 text with its title in capitals and one quotation mark different from the text in 51degrees-cxx, and five identical copies sat indevice-detection/,examples/device-detection/,examples/ip-intelligence/,ip-intelligence/andpipeline/.location/LICENSE(blob 43159c60bc) held the 51Degrees header form, being the copyright comment, then the EUPL text, then the two additional terms. No standalone file at the root carried the two additional terms.pipeline/pipeline.core/src/main/resources/pipelineOptions.xsd(blob e04f6dc414) was a copy of configuration-validation'spipelineOptions.xsdwith no record of where it came from, whilst the .NET pipeline takes the same repository as the submodulepipeline/Core/Configuration/Validation.The decision
James Rosewell decided on 11 November 2026, in these words, "Follow .NET and CXX. Single LICENSE on root that is the standard text. Then each file has the standard 51Degrees header with the exception of the files with patents in them where the patents are also listed." At about 20:05 UTC the same day James decided, in these words, "LICENSE only, remove NOTICE", for every repository, 51degrees-cxx included. So the two additional terms, the Compatible Licences clause and the network application clause, stay in each source file's header, which is where they apply, and no standalone file carries them. The standard text is the one 51degrees-cxx #105 put in cxx's
LICENSE.The first commit here added a
NOTICEas cxx has it and named it in the README. The second commit takes both out again after the 20:05 decision, so the change as a whole adds noNOTICEand leaves the README's licence line as it was.What changed
LICENSEis now the EUPL v1.2 text byte for byte as 51degrees-cxx has it (blob a74f04438a, 13,865 bytes, UTF-8).device-detection/LICENSE,examples/device-detection/LICENSE,examples/ip-intelligence/LICENSE,ip-intelligence/LICENSE,location/LICENSEandpipeline/LICENSE. Nothing in the tree referred to them.pipeline/pipeline.core/configuration-validationis a submodule of../configuration-validation(relative, as .NET has it) at b2740eddf2, the head of itsmain. The copy insrc/main/resourcesis removed, andpipeline/pipeline.core/pom.xmladds the submodule'spipelineOptions.xsd, and only that file, as a resource. The file lands at the root of the class path as before, which is wherePipelineOptionsFactory.javaline 52 loads it withgetClassLoader().getResource("pipelineOptions.xsd"). The submodule'spipelineOptions.xsdis blob e04f6dc414, the same bytes as the removed copy. .NET pins 49fd2e7540, one commit behind, and that commit changes only.github/workflows/only-rc-into-main.yml.src/main/resourcesstays in the resource list, so a file added there later is still built in.The blob hashes were checked with
git ls-files -safter staging, so they are what git holds and not a line ending conversion of them.Packages
Maven Central takes the licence from the pom. Its requirements say "You need to declare the license(s) used for distributing your components." and ask for a
<licenses>element, not a file. The eight parent poms declare "European Union Public License 1.2" with the URLhttps://opensource.org/licenses/EUPL-1.2, and the other modules inherit it. None of the removed copies sat in asrc/main/resourcesfolder, so none was in a jar. pipeline.core 4.5.130 and 4.6.0 and pipeline.javascriptbuilder 4.6.0 on Maven Central hold no licence file, and both pipeline.core jars holdpipelineOptions.xsdat their root. No package changes from the licence files.A build from a clone without submodules now has no
pipelineOptions.xsdon the class path, sogetOptionsFromFilehas no schema to load. The tests in pipeline.core'sOptionsTestcall it, and the full build below checks out the submodules and runs them.Source headers
Every source file on
rcat 53ccddd was checked againstlicenseTextand the three patent variants in tools CopyrightUpdaterappsettings.json, with files selected as the updater selects them (Program.cslines 349 to 356). That means the.javafiles git tracks, less files under a folder nameddocs,build,debug,release,.vs,obj,packages,bin,wwwroot,node_modules,swigorvendor, or named like the last folder of a submodule path. Years are ignored, because the monthly copyright update sets them.No source file needed a change. Left alone, because the updater skips them:
swigpackages of the two on-premise engines, 37 indevice-detection/device-detection.hash.engine.on-premiseand 51 inip-intelligence/ip-intelligence.engine.on-premise, which SWIG generates.pipeline/pipeline.javascriptbuilder/src/main/java/fiftyone/pipeline/javascriptbuilder/templates/JavaScriptResource.java, which the updater skips because the submodule folder beside it is also calledtemplates. It already carries the standard header.The other licence files are left as they are, being
pipeline/pipeline.did/src/main/resources/META-INF/LICENSE-owid.txt(Apache 2.0, OWID) andNOTICE.txtbeside it, which is the attribution the Apache licence asks for when the OWID source is bundled, not the two additional terms. Submodule contents (cxx, the JavaScript templates,pipeline/owid-javaand the new configuration-validation) were not checked, because each repository keeps its own.No file here carries a patent variant, and none was added. The Hash and IP Intelligence engines here call the C code in 51degrees-cxx through the SWIG wrappers, and the cxx files that implement the patented methods carry the variants (for example
src/dd/hash/hash.candsrc/ipi/graph/graph.c). If any file in this repository should carry one, that is a question for review.The script that classed the headers
Run as
python -I headers.py appsettings.json <clone> java report --skipped, withappsettings.jsonfrom tools at 0605b1d5.Full build
Full build 43111846204 is green. It started at 22:26:55 UTC on 11 November 2026 and finished at 23:34:23 UTC, on the throwaway branch
tmp/pr-matrix-109-c, which was taken fromrcat 03c3dd9 and held one temporary workflow running common-ci's pull request build on this draft with merging turned off. The branch is still in the repository at 68d938b, and whoever merges this draft should delete it, as the two branches of the earlier builds already have been.Eleven jobs are logged and every one of them is a success, being Configure, the nine Build and Test jobs (Ubuntu Java 8, 11, 17 and 21, Ubuntu ARM Java 17, and Windows Java 8, 11, 17 and 21) and Complete. The two Compare Performance jobs were skipped, as they are on a draft. No job printed
BUILD FAILURE.All ten
Setting 'PullRequestSha'lines, being Configure and the nine build jobs, read5a43e068751e38479096c7bbd6d8d83d54e2ad00, which is this draft's head, so every job built this head and nothing else. Configure printed "Left out 6 macOS entries".OptionsTestis the evidence that the schema still reaches the class path from the submodule. It ran in each of the nine build jobs and printed "Tests run: 5, Failures: 0, Errors: 0, Skipped: 0" in all nine (for example Ubuntu Java 17). Those five tests go throughPipelineOptionsFactory.getOptionsFromFile, which reads the schema withgetClassLoader().getResource("pipelineOptions.xsd"), so if the submodule's copy had not been built into the jar that call would give null and the tests would fail.There is no red run for this change, because it moves a file and changes no behaviour, so there is no new test to write and show failing first. The standing test that would catch the move going wrong is
OptionsTest, for the reason above, and it passes on every platform and every Java version the build covers.macOS was left out of this draft's full build under the 9 November decision. The rc head is built with macOS before it merges into main.
Two earlier full builds of this draft never ran to completion and nothing here relies on them. 43091443200, on
tmp/pr-matrix-109at 5ff1b36, built an earlier head and was cancelled when theNOTICEcame out of the change, and 43096291105, ontmp/pr-matrix-109bat d46a979, was created at 20:28 UTC inside the GitHub Actions outage and has sat queued ever since without starting. Both branches are deleted.What remains
rcat 53ccddd (run 43088786083). Both stop atpipeline/pipeline.engines/src/test/java/fiftyone/pipeline/engines/services/DataUpdateServiceLoggingTests.javaline 76, where the Java constantLICENSE_KEYstarts a continued line and the check reads it as the old variable name. The file came with #79, this draft does not touch it, and the fix is #111, a change of its own. The check on this head only goes green once Name the data update logging test's key so it is not an old variable name #111 is inrcand this draft has takenrc.rcby #107 (03c3dd9) and #97 (4bec158). Between them they change six.javafiles inpipeline/pipeline.cloudrequestengine, none of which this draft touches, and each of the six still carries the standard header, so the merged tree has no file without one. GitHub reads the draft asMERGEABLE.<name>European Union Public License 1.2</name>with<url>https://opensource.org/licenses/EUPL-1.2</url>, and that does declareEUPL-1.2, because "European Union Public License 1.2" is word for word the full name the SPDX licence list gives for the identifierEUPL-1.2(list version 3.29.0), and the identifier itself is in the URL. Maven Central asks for a name and a URL rather than an identifier, so the poms are left as they are. Putting the bareEUPL-1.2in the<name>instead would be a one-word change in eight files, and that is a question for James rather than something to add to a licence change.