Skip to content

DS ADR: low-level detector modules - #249

Open
Tom-Willemsen wants to merge 6 commits into
masterfrom
low_level_modules
Open

DS ADR: low-level detector modules#249
Tom-Willemsen wants to merge 6 commits into
masterfrom
low_level_modules

Conversation

@Tom-Willemsen

@Tom-Willemsen Tom-Willemsen commented Aug 21, 2026

Copy link
Copy Markdown
Member

Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md Outdated
Comment on lines +83 to +86
Providing a route through to individual detectors from IBEX may encourage architectural shortcuts to be taken later. For example, a parameter that should conceptually be set via the SCB may get set on individual detectors instead of adding the relevant functionality to the SCB. Over time, these shortcuts may accumulate and increase system maintenance burden to an unsustainable level.

If instruments begin accumulating scripts or workflows which involve 'fiddling' with detector parameters directly, those instruments will become much harder to migrate to different detectors in future. It will reduce the commonality between instruments, which will increase system maintenance burden.

@Tom-Willemsen Tom-Willemsen Aug 21, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I honestly don't know how to mitigate these risks, and they make me quite uncomfortable. I can already imagine instruments accumulating lots of

def my_begin(i_feel_really_special=True):
    ...
    g.set_pv("...:mod1:super_special_param", 123)
    g.set_pv("...:mod2:super_special_param", 456)
    ...
    g.begin()
    g.set_pv("...:mod3:really_begin_but_special", 1)

which will then make every support call a horrible game of finding my_begin and figuring out how the 'specials' interact with all the other parts of the streaming system and each other.

Maybe we make writing inconvenient enough that people won't actually do things like the above? For example:

  • We could make it so that parameters can be written, but only by specifying their expected value in the config file and pressing a 'reinitialize' button in IBEX. This lets a scientist resend the 'correct' values if needed, but limits changing what the 'correct' values are to us & DSG (and puts it behind a process reboot)
  • We could put acess control on the write PVs, so they can only be written to from the streaming server, not the NDX - effectively limiting writing to those PVs to us & DSG.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could just underscore their names so it's clear they aren't "public" - we also won't be documenting them in the list of PVs in docs, so they'd probably have to search hard?

Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md
Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md Outdated
Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md Outdated
Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md Outdated
Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md
Comment on lines +83 to +86
Providing a route through to individual detectors from IBEX may encourage architectural shortcuts to be taken later. For example, a parameter that should conceptually be set via the SCB may get set on individual detectors instead of adding the relevant functionality to the SCB. Over time, these shortcuts may accumulate and increase system maintenance burden to an unsustainable level.

If instruments begin accumulating scripts or workflows which involve 'fiddling' with detector parameters directly, those instruments will become much harder to migrate to different detectors in future. It will reduce the commonality between instruments, which will increase system maintenance burden.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could just underscore their names so it's clear they aren't "public" - we also won't be documenting them in the list of PVs in docs, so they'd probably have to search hard?

Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md Outdated
Comment thread doc/specific_iocs/datastreaming/ADRs/010_detector_settings.md Outdated
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.

kafka_dae_control: propose mechanism for reading/writing to arbitrary registers on individual detector boards

2 participants