I wonder, might a better metaphor be that of a journal, instead of a book?<p>A program has history, which, by the way, is stored in VCS, planning tool and communication, not the source code it self,<p>So how about a literate VCS?<p>Maybe you start with a tree structure to outline release planning and done branches, and break it down to individual updates against the current state of the source.<p>Might even keep contextual history like annotated repl invocations and throw away test code around.