@drewmoseley pleasure is mine. Really love what the Mender team is doing for the Embedded domain!
@eystein, yes I have looked at the state stricpts and am also tracking the Ticket you mentioned.
Absolutely, Mender can serve well for complex use cases as it is robust. The client-controlled update can help Mender delegate the (some) actions and not just progress-update to the User-controlled interfaces, attached to the Device running Mender-client, like a Touchscreen, Push Button, a 3rd party API which the end-User can interact with.
The only problem that I am having trouble figuring out it to proceed herewith is, which pub-sub broker to choose that consumes less memory to run and is client agnostic.
The main reason behind pub-sub model is that all the clients that connect with the mender-client will be aware in real-time, rather than polling or piping output from a file, which arenât robust.
@uttaravadina appreciate your enthusiasm! sorry for the slow responses, this is not an area we are currently working on, but we will get there. What you are asking is a quite complex design question, so I am not able to provide any good suggestions on my own, some research is probably needed.
What I was just thinking overall though, is that this is essentially a way to separate the 1) policy from the 2) mechanism. The policy covers when to check for an update, under which conditions to reboot, etc. The mechanism is about how to do these things.
Today the policy in Mender is based on timers mostly, and can be influenced by state scripts. But in theory this could be a completely separate process even (not sure if that makes sense though).
Extending this, the Mender server can also influence the policy. For example, once someone clicks âCreate deploymentâ then the server can tell all clients to check for an update, to get it out as soon as possible.
You may already have thought about this, and this is what you had in mind when looking for a broker. But maybe it would make sense to look for a pub-sub broker that could not only do IPC (on the same device) but can also talk over different kinds of networks. However, this (network support) could also be put on top of an IPC protocol later (there are potential security implications here, of course).