Skip to content

Declare the versioned surface, drop Docker, and cut 1.9.7 - #22

Open
anderslindho wants to merge 3 commits into
masterfrom
release/1.9.7
Open

Declare the versioned surface, drop Docker, and cut 1.9.7#22
anderslindho wants to merge 3 commits into
masterfrom
release/1.9.7

Conversation

@anderslindho

Copy link
Copy Markdown
Contributor

recsync's integration tests pull ghcr.io/channelfinder/reccaster:master, which is republished on every push to the default branch. Republishing that tag on 2026-08-03 carried the /recsync to /reccaster path rename from 7d12820, which stopped recsync's integration IOC from initialising. Nothing on their side had changed.

Discussion on #21 settled that the container image is not part of the versioned surface, and that it does not belong in an EPICS module repository. Moving the build to recceiver or recsync would recreate the coupling recsync#158 is trying to end, so this removes Dockerfile, .dockerignore, and .github/workflows/docker.yml instead. Sites building the module from source are unaffected; downstream consumers of the image will need to decouple on their side.

5ff76af adopted Semantic Versioning by linking the spec, but never said what the public interface is, which clause 1 asks for. This records the module boundary in CHANGELOG.md: the databases in db/, reccaster.dbd, the iocsh functions the module registers, the library soname, and any headers it installs. The wire protocol is left out: it is shared with other implementations, and this repository cannot version it alone.

This also cuts the accumulated [Unreleased] entries as 1.9.7 and adds the compare links. Nothing in the versioned surface changed this cycle, so the release is a patch rather than a minor or major bump.

recsync#173 asked for a versioned image to pin; once this lands that path is gone and the remaining work is decoupling on the recsync side (recsync#158).

recsync's integration tests pull ghcr.io/channelfinder/reccaster:master, which
is republished on every push to the default branch. Republishing that tag on
2026-08-03 carried the /recsync to /reccaster path rename from 7d12820 and
stopped recsync's integration IOC from initialising. Nothing on their side had
changed.

Discussion on #21 agreed the image does not belong in an EPICS module
repository, and that moving the build to recceiver or recsync would recreate
the coupling recsync#158 is trying to end.
`5ff76af` adopted Semantic Versioning by linking the spec, but never said
what the public interface is, which clause 1 asks for. Without that, it was
unclear whether the container image counted, and the path rename inside it
did not look like a breaking change to anyone consuming the image.

#21 settled that the image is outside the surface. Record the module boundary
here so later releases have a rule to apply.
Nothing has been tagged since the split, so the [Unreleased] section has been
accumulating without a release to attach it to.

Nothing in the versioned surface changed this cycle: no change to `db/` or
`reccaster.dbd`, no iocsh function, no soname bump. Cut it as 1.9.7.
@sonarqubecloud

Copy link
Copy Markdown

@anderslindho

Copy link
Copy Markdown
Contributor Author

Briefly discussed API and versioning surface of a module (in general) with @simon-ess and @ralphlange yesterday, and they both leaned against DBs/records being considered as part of it. But I also know others that lean the other way.

What are your thoughts re this @tynanford @jacomago? I'm inclined to drop the mention of databases (db, not dbd) and similar.

@mdavidsaver

Copy link
Copy Markdown
Contributor

versioning surface ... DBs/records being considered as part of it.

Which records? All, DTYP="RecCaster", or some other sub-set?

@anderslindho

Copy link
Copy Markdown
Contributor Author

I was thinking all. I am thinking about this more generally, not only here for reccaster.

@eddybl

eddybl commented Aug 18, 2026

Copy link
Copy Markdown

versioning surface ... DBs/records being considered as part of it.

Not sure I fully understand. The question is if the .db files provided with a module are part of the overal version, so changes in the .db file only would warant a version bump or not?

@anderslindho

anderslindho commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

Correct, @eddybl. You can see I put this in the CHANGELOG in the diff:

The versioned surface is the module. It covers the databases in db/, [...]

and this is what I am changing my mind on. I have heard people argue both directions in the past.

@mdavidsaver

Copy link
Copy Markdown
Contributor

The question is if the .db files provided with a module are part of the overal version, so changes in the .db file only would warant a version bump or not?

This I understand. I see the .db file names, and the set of undefined macros in each file as effectively part of a support module's "versioned surface". Certain changes will cause dbLoadRecords() in a user st.cmd to fail. The same might be said for eg. OPI screen file names and macros.

Use of include or macro defaults can help to manage some changes compatibly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants