Couldn't we write the design documentation for source code within the source itself? I suppose like Doxygen but with the focus taken away from implementation towards design. Essentially (and rather excitingly) you have a nice big chunk of markdown at the end of your source file.
Each time I create a new source file (and begin writing in its crisp white pages) I think to myself it would be nice if the first things written there were notes, thoughts and ideas; an exploration of what the module hoped/needed/dreamed to accomplish. Perhaps proximity to the source code will encourage more frequent and fervent attention to the documentation of it?
Or maybe I should be spending my time crafting self-documenting code.