Execution tracing protocol for better developer experience
Let’s say you are a developer, and you want to understand how a software works, so you run it. The software fetches some data from a table, which is packed by the DB engine, this passes through multiple layers of code.
Now each piece of code transforms the data from one format to another, until a final format that humans can understand is derived. So even as a developer if I run the software, as you can see the diagram below, only the dark blue parallelogram arrives to me.
If the data is not the one I expected, I must trace the data path, and the algorithm path and understand what piece of algorithm receives what data it receives, and how it transforms it from its input to output.
Now imagine there is a protocol built into all languages, data storage system and data delivery systems that delivers data to human, rather than delivering the final blue parallelogram, that is the final data packet, what if they delivered the paths in which the data traveled and information about the code through which the data traveled and how it got transformed.
Rather than the dark blue parallelogram, you get a huge data packet like this:
Now say I’m a web developer, just by inspecting a piece of data on my web page, due to this protocol, I get all the rich information that led to the outcome, it becomes very easy for me to inspect and trace things step by step.
This I think will massively reduce development and debugging time required for any software engineer.
While the code is running in production mode, this feature could be turned off, and just the transformed data arrives to you, thus making the system more efficient but less intelligible.
I think this protocol will be a boon for free software, as users of free software can turn the execution tracing on, they can know the data traversal path, they can report better bugs, may be possibly fix them. If this takes off it will be a golden age for developers and A.I systems that helps us to write software. This protocol can be implemented into neural networks, as it will aid us understanding them faster and better. This is like taking all log files, packing them up and sending to the developer so that he need not go here and there to see what’s happening.