Async Plugin Lifecycle

We expect plugins to do as much as possible as quickly as possible while relying on other plugins to do likewise.

Blue exist in the federation. Beige support browsing.

digraph { rankdir=TD node [shape=box style=filled fillcolor=lightblue] item; plugin; emit; bind, close node [fillcolor=bisque] item -> pane pane -> emit [label=dom] emit -> bind [label=run] bind -> close [label=drag] close -> emit [label=drop] close -> disconnect text -> test text -> help connect -> static [label=io] connect -> dynamic [label=ui] discover -> links edge [style=dashed] item -> text [label=fetch] emit -> discover bind -> connect plugin -> pane [label=load] }

We distinguish fetching pages from anywhere in the federation from loading a plugin from the well established places that we load them. See Async Plugin Load

We distinguish discovering plugins by some emitted signature from connecting when the participating plugins are good and ready. Connections at this later time might be contingent on completing io and stable once done. A more dynamic connect might be spewing new information as the user interacts with the plugins.

The Data <=> Line plugins connect by a dynamic path that works but could be much more versatile and still rigorous. See About Line Plugin

The more complex the interaction, the more important orderly close becomes.