OK, we’ll see what Steve says about this (he’s probably ducking and quickly adding some methods to RhinoCommon as we speak, and…)
Anyway, since I have not used Worksessions very much manually I might not really understand its potential (and limitations), but what I was thinking was that Worksessions could be a way to split jobs also for Grasshopper definitions, both for “gradual refinement” (step-for-step refinements of a specific geometry/data) and for “sharding” jobs (a kind of map/reduce strategy) for scaling up the processing of lots of geometry/data.
To me it seems meaningful to split up any data in ways that provides granular access to each data chunk with the full power of a full-fledged “Rhino/GH node” (or Rhino.Compute). Think of the potential for presentation (rendering), for data conversion (save/import all available different formats) and so on, and so on, which is the kind of "full richness"of features which each Rhino node instance would be capable of. (this would be overkill in many situations, but that you could say also about the human cells in the body - the smartest and most scalable and flexible distribution strategy ever).
In addition to the extreme “technical freedom” with such rich “worker nodes” and flexible data format, the Worksession/Model would be “human readable” as well.
The human readable aspect would mean that you could start out a project manually, but let a scalable network of processing Rhino-nodes take over, either to refine parts or just share the load (different parts to different nodes) based on the compartment strategy in which the user split his/her model in the first place. Aso.
A few smart properties added to Worksessions and its Models (if not already there) would be to fire events when Models are added/opened, removed/closed, activated (= “locked” as seen from other Rhino instances/nodes), events for when models are saved (= a way to propagate this info to all dependent nodes via the Worksession), and so on.
On modern NVMe SSDs, sharing data via file format is not a bad idea at all (performance is very much a matter of the size of the geometry chunks).
One could even think of “brother” concept inside Grasshopper where a ComputeGroup is assigned a dedicated Worksession Model and…
OK, now I got carried away perhaps, but this is what I had in mind to try experimenting with, but without any SDK support the strategy would only get buried in code somewhere and also the human readable aspect (based on the existing Worksession concept) wouldn’t be there, which is half my point with the basic idea.
Any thoughts on this?
// Rolf