Iterative specification artifacts

The path from initial motivation and idea towards a finished work tends to consist of multiple steps. Acknowledging, documenting, and preserving those can be useful, though often neglected.

Examples

In software development, there is source code, which is the primary representation of a program in the FLOSS world, but in the proprietary software world that is an unavailable and easily lost artifact. A more abstract design and architecture documentation may also be present, describing the project at a higher level.

For music, lossy compression of records is common, and one may be motivated to store it in lossless formats in order to ensure a higher quality. Yet such lossless records tend to have multiple tracks lossily mixed into one, and even those source tracks are recorded and performed potentially imperfectly, being renditions of the scores and lyrics. And those have ideas and inspirations behind them. To preserve most aspects of a work, one should preserve artifacts created on most of those stages.

Cooking is another example: there is a dish, produced by following a certain recipe by a certain person, preceded by an exact recipe, preceded by more vague and abstract recipes, reasoning behind parts of those. It is nice when parts of recipes are explained, including the reasoning: then it is clearer how ingredients or techniques can be substituted to achieve the desired properties.

Likewise with photography (from an idea, to its implementation, to a raw picture, to a processed and compressed image), writing, games, and all sorts of things.

Having artifacts such as abstract ideas alone, rather than software sources, will not help to reproduce final works exactly, yet it is likely to assist recreation of similar ones. maintenance, repairs, further development.

Implementation tutorials

There are educational materials that involve building or implementing projects: toy operating systems, toy compilers, toy CPUs, and so on. They walk the reader through the whole implementation, as well as the reasoning behind its parts. While that level of documentation is unlikely to be achievable in non-educational projects, it may serve as a good example of a thorough and easily approachable documentation, and sometimes documentation includes such a tutorial for a dedicated toy version of the project, demonstrating the core ideas, architecture, and so on, while omitting less important details.

Literate programming can be similar to those, and sometimes explicitly employed to compose such tutorials.

Practical implications

It is nice to include and ship design documents, notes, higher-level and informal descriptions along with software sources. Potentially more useful to hoard artifacts such as music scores and lyrics, if the aim is preservation. To record and publish relatively abstract recipes (though possibly with specifications, as examples, covering at least a couple of abstraction layers at once).