We go back into the archives to find a paper documenting Kent Pitman's 1985 work on a fancy cross referencing editor designed to be used as part of a knowledge acquisition toolkit. This is a nice paper. Pitman describes the problems to be solved, how CREF solves them, what CREF fails to solve, and how other ideas might help solve them differently in the future.

CREF's main idea is to bring text into segments which can be annotated with keywords (shades of Del.icio.us, see here too) and connected with typed links (e.g., supersedes, summarizes, precedes, and so forth). Collections of segments can be named and manipulated and the same segment can appear in multiple collections. There is also some diagrammatic reasoning support and various other editing features.

The great thing about this is that a project's structure can evolve naturally and organically without having to worry about file systems, versioning, etc. I've been ruminating about coding in an environment that gave me multiple views of my code (e.g., all the methods for this class here and all the methods for that generic function there and all the versions of that function over there) without making me worry about files and organization and all of that. The organization should be dictated by the project, not by the technology; the interface should be dictated by the task, not by the computer.

It's encouraging to read Pitman's report because it shows that many of these ideas can be implemented and made to function. It's also depressing because he wrote this 20-years ago and we'll almost all still using glorified versions of vi and EMACS.