Welcome to Depends: a generic dependency tracker in C++.

The Depends library and its documentation serve two purposes: education and productivity. I like mixing these two purposes whenever I can, because I believe it to be very important to continue learning to be productive, and to be productive to be successful in software development.

The educational purpose of Depends

Much of Depends is its documentation: it explains in much detail how the dependency tracker is implemented and should be clear enough for any programmer to understand both how it is implemented and how to implement one themselves.

The productivity purpose of Depends

The Depends class implements a complete dependency tracker and an associative container for any given value-type and can be used as-is without any real knowledge of how it is implemented. From a productivity point of view, the extra documentation may be a plus, but is certainly not necessary.

When was Depends created?

The very first version of Depends was created for the Jail, which is still very much in its experimental stages at the time of this writing. The dependency tracker, however, took on a life of its own and was improved, debugged, and eventually used for at least one production application I am aware of so far. Part of its life was spent in my "petri-dish": the Developer's Corner. It finally re-appeared on SourceForge as its own project on Aug. 8th 2007, where it is now.

Why was Depends created?

For one of the experiments I did on Jail, not all of which are public, I needed a dependency tracker to track the dependencies between singleton instances. The Depends library was first created for this sole and unique purpose. It has since been modified to follow new coding standards and to be incorporated in a proprietary package version manager. A draft of an article about a dependency tracker has become the documentation of that same tracker.