Skip to content

Remove/re-use/replace "deviceFunctions" source kind #1264

Closed

Description

@tpoliaw

SourceKind, used to distinguish between imported modules currently has three variants.

  • planFunctions for modules containing plans
  • dodal for modules containing device functions that are called via dodal's make_all_devices and assume DeviceInitializationControllers
  • deviceFunctions the previous version for devices that is now an alias for dodal.

Now that there is about to be an alternative to dodal modules in the device manager, should we

  1. Create a new source type, deviceManager to support the new loading
  2. Convert all beamlines at once and use dodal for the new loading
  3. Stop deviceFunctions delegating to dodal and use it for the new loading

I'm currently erring towards 1. I think 2 would cause chaos and we should have at least a brief transition period where both are supported. 3 could work but are any beamlines currently relying on it being an alias to dodal?

If we don't re-use deviceFunctions, could we remove it entirely?

Activity

  1. added this to the Blueapi 2.0.0 milestone on Dec 5, 2025
  2. DiamondJoseph commented on Dec 5, 2025

    @DiamondJoseph
    Contributor

    Added the 2.0.0 milestone for removing the deviceFunctions enum

  3. tpoliaw commented on Dec 5, 2025

    @tpoliaw
    ContributorAuthor

    Depending on how soon 2.0 is likely to be, we could remove dodal as the same time. If we're removing the dodal dependency it'd be a major version bump whenever it did end up happening

  4. DiamondJoseph commented on Dec 5, 2025

    @DiamondJoseph
    Contributor

    I think we (y'all) can start thinking about 2.0 in the new year, we've got a big enough shopping list now:
    https://github.com/DiamondLightSource/blueapi/milestone/19

  5. added theissue type on Feb 26, 2026
  6. abbiemery commented on Feb 26, 2026

    @abbiemery
    Contributor

    We went with option 1. Once all the dodal beamline modules have switched over we can remove the dodal dependency, then the redundant deviceFunction and Dodal tags.

  7. shree-iyengar-dls commented on Oct 21, 2026

    @shree-iyengar-dls
    Contributor

    I think this issue can now be closed.
    The dodal dependency has been removed: PR
    PR for change from dodal to deviceManager in blueapi repo
    PR for change from dodal to deviceManager in services-helm-template repo
    I went through the beamline services folders on GitLab and found some beamlines which need updating. These are:

    • i04 has both the dodal and deviceManager tag @DiamondLightSource/developers-mx-daq
    • i20-1 which still has the dodal tag @iain-hall
    • i24 has both the dodal and deviceManager tag @DiamondLightSource/developers-mx-daq
    • p38 which has the dodal tag @DiamondLightSource/developers-scm-x-daq
  8. oliwenmandiamond commented on Oct 21, 2026

    @oliwenmandiamond
    Contributor

    @shree-iyengar-dls I think these other beamlines are okay. They are using older versions of dodal and blueapi so if they update blueapi and dodal, they must update to use deviceManager rather than dodal so will be fixed on its own anyway when they eventually update.

    For example, i24 is still using blueapi 1.11.5 which I'm pretty sure is over a year out of date as were on 1.21.0 now.

  9. shree-iyengar-dls commented on Oct 21, 2026

    @shree-iyengar-dls
    Contributor

    @oliwenmandiamond Sure, yes a lot of the beamlines are on older versions of dodal and blueapi.

    With the case of i24 (and i04) I'm just not sure if having both dodal and deviceManager will raise an error/exception when blueapi is updated. As in I'm not sure if the dodal tag will be read first then there'd be an error then exit or deviceManager would also be tried after the dodal tag doesn't work.

  10. DominicOram commented on Oct 21, 2026

    @DominicOram
    Contributor

    Yh, I will at some point update p38 but it's not a priority. I'm happy for this to be closed without it being updated

  11. shree-iyengar-dls commented on Oct 21, 2026

    @shree-iyengar-dls
    Contributor

    Discussed with @abbiemery and going to close this issue

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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions