"Data Oriented Design" is more than just for performant code.
You can and perhaps should also use it to reason about and design software in general. All software is just the transformation of data structures. Even when generating side-effects is the goal, those side-effects consume data structures.
I generally always start a project by sketching out data structures all the way from the input to the output. May get much harder to do when the input and output become series of different size and temporal order and with other complexities in what the software is supposed to be doing.
Good programmers worry about the algorithms. Great ones worry about the data structures and the relationships between them. If memory serves, it was Kernighan.
"Bad programmers worry about the code. Good programmers worry about data structures and their relationships." - Linus Torvalds
"Show me your flowchart and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they’ll be obvious." - Fred Brooks, The Mythical Man Month
And two threads with some further discussion I found while looking for these quotes:
Their FAQ mentions the Looking Glass Indirect Display Driver (IDD). That is something to look forward to. Looking Glass will work with an iGPU setup once IDD is released (but no 3D acceleration).
What Looking Glass managed to do was get video memory sharing to work between the guest Windows compositor and a client running on the host (with qemu). Unfortunately, it apparently requires an out-of-tree Linux kernel driver that they call kvmfr. You can apparently still share non-video memory without kvmfr, which may hopefully yield adequate performance.
You can and perhaps should also use it to reason about and design software in general. All software is just the transformation of data structures. Even when generating side-effects is the goal, those side-effects consume data structures.
I generally always start a project by sketching out data structures all the way from the input to the output. May get much harder to do when the input and output become series of different size and temporal order and with other complexities in what the software is supposed to be doing.