Statement of need#

The goal of Sunflare is to provide shared and recognizable programming patterns accross the entire Redsun ecosystem. As Redsun heavily leverages the concept of plugins, there is a need to provide a clear representation and a shared communication channel between the plugins that in the end build the desired application.

        ---
config:
  theme: neutral

---
    graph TD
        Sunflare -->|builds| Plugins
        Sunflare -->|builds| Redsun
        Plugins -->|used in| Redsun
    

The diagram shows the relationship between Redsun, Sunflare and the custom plugins. Effectively, Redsun is nothing more than “glue” code that constructs your custom application. What it does is:

  • retrieve the user plugins via Python entry points;

  • build said plugins and catch any possible exception throw by them;

  • build the final application and connecting all the plugins together.

This approach ensures that Sunflare can be reused as a standalone package to provide reusable code to create custom control interfaces for your device, which fit the Bluesky message protocol and data model.

Furthermore, if you have an existing package for hardware control, Sunflare can be used to create a wrapper for your classes which can then “talk” the Bluesky language.