Several years ago, I got this less-than-half baked idea. I made a list of all the files associated with a project written in C or C++ object files, test cases, test-case coverage statistics, version history, documentation, make files, and so forth. Much of this information has a structure that strongly reflects the underlying structure of the source files themselves. It seemed to me that the whole mass cries out for a hierarchical organization that captures the very structure of the program.
I tried to get one of my last employers to let me play with the idea. At the time, Hyper Card on the Macintosh looked like the best tool for supplying hierarchical structure to a mass of loosely related documents. But for whatever reason, the time and resources for that project never quite materialized. And since I've been on my own I've been way too busy to pursue the idea much farther.
Good ideas have a way of inventing themselves, however, if only a bit at a time. The engine of choice these days is the ubiquitous Web browser, such as Microsoft's Internet Explorer or Netscape's Navigator. Add just a modicum of markup to a text file and you can link it to related documents in all sorts of ways. Using tools found around the home, or a typical software development shop at least, you can cobble up all sorts of interesting data structures.
For example, my brother Dave recently described a couple of tricks his development group now uses regularly. One is to place hot links right in the source code to relevant project documents. The other is to produce a cross index of all names in a program, then publish it on the company intranet as an HTML document. They use a shareware tool, slightly reworked, to do the latter. The result is a low-cost introduction of Web tools to a conventional programming environment.
These are natural extensions to prevailing Web practices that already support program development. I can't imagine writing documentation, for example, in any form but HTML these days. And I avoid either sending or receiving software, wherever possible, except across the Internet. It won't be much longer before I begrudge typing in a URL, if a machine-readable file has any prayer of saving me the effort.
My hierarchically organized program-development environment will probably never turn into a commercial project. Not with all the other demands on my time these days. But then again, it probably will never have to. I expect to get it for free, over time.
P.J. Plauger