The Graph plugin captures small graph fragments that can be selected and merged by other plugins to do as they see fit. We transport these to a Graphviz service that returns SVG that can be copied about the federation.
Sample Graph markup.
Multics --> Unix --> Linux Unix --> Mach --> Next --> OSX
As an example of how we might aggregate independent graphs consider these historical influences on operating system design. Each step of this workflow is independent and substitutable from anywhere in the federation.
Multiprocessing.
Multics --> Unix --> Linux Unix --> Mach --> Next --> OSX
Microcomputing
CP/M --> DOS --> OS/2 DOS --> Windows Mac --> Windows
Direct Manipulation.
Alto --> Lisa --> Mac --> OSX --> IOS Star --> Lisa
Transport markup retrieves the graphs to be rendered by a remote graphviz service.
GRAPH POST http://eu.wiki.org:4010/graphviz
The service returns page json including an SVG formatted item which we drag here to complete this workflow.
Note that the graphviz service lives its own existence on the web and is free to interact with the federation in multiple ways as it does when it offers access to recently generated SVG files.
The GRAPH option on the Transport plugin assembles up the nodes and links it finds in the lineup. This is the payload it sent combining the three graphs which can be further merged and rendered by the transporter as I do here with Graphviz.
[{ "Multics": ["Unix"], "Unix": ["Linux", "Mach"], "Linux": [], "Mach": ["Next"], "Next": ["OSX"], "OSX": [] }, { "CP/M": ["DOS"], "DOS": ["OS/2", "Windows"], "OS/2": [], "Windows": [], "Mac": ["Windows"] }, { "Alto": ["Lisa"], "Lisa": ["Mac"], "Mac": ["OSX"], "OSX": ["IOS"], "IOS": [], "Star": ["Lisa"] }]
We separate these graphs into nodes and arcs to match a json format expected by another application. observable ![]()