Skip to content

Adopt the CodeMatters copyright - #755

Open
alexander-yevsyukov wants to merge 5 commits into
masterfrom
apply-code-matters-copyright
Open

Adopt the CodeMatters copyright#755
alexander-yevsyukov wants to merge 5 commits into
masterfrom
apply-code-matters-copyright

Conversation

@alexander-yevsyukov

Copy link
Copy Markdown
Contributor

Changes the repository's copyright holder from TeamDev to CodeMatters, Lda., and re-stamps every source header from the new IntelliJ profile.

What changed

The profile. Adds .idea/copyright/CodeMatters_Open_Source.xml and makes it the default in profiles_settings.xml. TeamDev_Open_Source.xml stays: migrate distributes .idea to consumer repositories while preserving each consumer's own profiles_settings.xml, so a repository still on the TeamDev profile must be able to resolve it. Both open-source profiles now ship side by side, which is what lets a consumer migrate on its own schedule.

261 source headers, re-stamped from that profile. The notice is the Apache-2.0 appendix boilerplate, verbatim, with https:// in place of the appendix's http:// link.

Two attribution strings baked into build output, which re-stamping headers does not reach:

  • the Dokka footer rendered on every generated API page (DokkaExts.kt)
  • Implementation-Vendor written into each published JAR's manifest (write-manifest.gradle.kts)

migrate's comment explaining why profiles_settings.xml is preserved, which named TeamDev Open-Source as the open-source profile.

For the reviewer

The diff is 264 files, but 259 changed only inside their copyright header block. Verified two independent ways: stripping the header from the master and HEAD versions and comparing the remainder, and diffing everything from */ onward. The real review surface is 5 files — the two profile XMLs, the two string literals above, and migrate's comment.

That matters most for buildSrc/src/main/kotlin/io/spine/dependency/, where 95 files appear in the diff: no version constant, artifact coordinate, or BOM changed. Nothing was silently bumped.

Commits are split so the mechanical re-stamp is separable from the changes that carry meaning.

Known follow-up, not addressed here

The notice is wrapped to 97 characters, which fits the block (​ * prefix → 100) and hash (# → 99) comment styles but overflows the XML style ( ~101, against a 100-char limit) in buildSrc/quality/checkstyle.xml, checkstyle-suppressions.xml, and pmd.xml. Nothing breaks — detekt does not scan XML — but the fix belongs in the profile (rewrap the notice body to ≤96), and it would propagate to every consumer repo, so it is left as a deliberate decision rather than folded in silently.

Separately, update_copyright.py skips 12 files under io/spine/dependency/build/: its is_excluded() tests every path segment against EXCLUDED_DIRS, which contains "build", so it mistakes that source package for Gradle's output directory. Those files were stamped through the script's own updated_text() so their rendering is identical. The fix belongs in the agents repository.

Verification

./gradlew -p buildSrc build passes on JDK 17 at HEAD. dokkaGenerate is not registered in buildSrc, so no Dokka run applies. No version gate — this repository has no root version.gradle.kts.

🤖 Generated with Claude Code

alexander-yevsyukov and others added 5 commits September 1, 2026 19:31
The repository's copyright holder changes from TeamDev to CodeMatters, Lda.
Add the `CodeMatters Open-Source` IntelliJ profile, make it the default, and
re-stamp every source header that carried the TeamDev notice.

The profile as first drafted carried `/*`, ` * `, and ` */` inside its
`notice` value. IntelliJ stores a notice as bare text and adds comment
markers per language, so the markers would have been emitted twice in
`.kt` headers and as C-style markers in `.sh`, `.py`, and `.xml` files.
The value is stored bare, matching `TeamDev_Open_Source.xml`. The draft
also lacked `settings/@default`, which is what `update_copyright.py`
reads to resolve the notice; it is restored, and `module2copyright` now
names the same profile so the IDE and the script agree.

Headers were stamped by `update-copyright`. Thirteen files it filters out
were stamped through its own `updated_text()`, so their rendering is
identical: `.gitignore`, which has no extension for `style_for()` to map,
and the twelve files under `io/spine/dependency/build/`, which
`is_excluded()` drops because it tests every path segment against
`EXCLUDED_DIRS` and so mistakes that source package for Gradle's output
directory. That check belongs to the shared `agents` repository and is
left for a fix there.

`TeamDev_Open_Source.xml` stays: `migrate` distributes `.idea` to consumer
repositories while preserving each consumer's own `profiles_settings.xml`,
so repositories still on the TeamDev profile must be able to resolve it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The comment explaining why `profiles_settings.xml` is preserved listed
`TeamDev Open-Source` as the profile open-source repositories keep. That is
now one of two: config distributes `CodeMatters Open-Source` alongside it, so
a consumer can migrate on its own schedule.

Say so, and say why it matters here: with both profiles shipped, this file is
the only thing deciding which notice a consumer's headers get, which is the
reason the preservation fails closed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Two attribution strings are baked into build output rather than into source
headers, so re-stamping the headers left them naming TeamDev: the Dokka footer
rendered on every generated API page, and `Implementation-Vendor` written into
each published JAR's manifest.

Point both at CodeMatters, Lda. so the artifacts agree with the sources they
are built from. Already-published JARs keep the old vendor; only builds from
here on carry the new one. `Bundle-License` is untouched — the licence is
unchanged, only the holder.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The comment named `CodeMatters Open-Source` and `TeamDev Open-Source` as the
notice a repository adopts. They are profile names; a profile contains a
notice. The block exists to be precise about which profile applies, so the
two should not be blurred there.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The notice reproduced the Apache-2.0 appendix verbatim, including its
`http://` link to the licence text. Serve the reader a secure link instead:
`https://www.apache.org/licenses/LICENSE-2.0`.

Re-stamp every header from the amended profile so the sources and the profile
stay identical. `LICENSE` keeps the upstream text unchanged — it is the
licence itself, not our notice, and is reproduced as published.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-01T18:42:43.749083Z 23dee1e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@alexander-yevsyukov alexander-yevsyukov moved this to 🏗 In progress in v2.0 Sep 1, 2026
@alexander-yevsyukov alexander-yevsyukov self-assigned this Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🏗 In progress

Development

Successfully merging this pull request may close these issues.

1 participant