Greg McGary conceived of the ideas behind the ID utilities when he
began working on the Unix kernel in 1984. He needed a navigation tool
to help him find his way around the expansive, unfamiliar landscape.
idutils-like tools were shell scripts, and produced an
ASCII database that looks much like the output of ‘lid ".*"’. It
took over an hour on a vax 11/750 to build a database for a
4.1bsd derived kernel. The first version of lid used the
unix system utility
look, modified to handle very long
In 1986, Greg rewrote the shell scripts in C to improve performance.
Build times for the ID file were shortened by an order of magnitude.
The ID utilities were first posted to ‘comp.sources.unix’ in
September 1987 under the name
Over the next few years, several versions diverged from the original source. Tom Horsley at Harris Computer Systems Division stepped forward to take over maintenance and integrated some of the fixes from divergent versions. A first release of the renamed mkid version 2 was posted to alt.sources near the end of 1990. At that time, Tom wrote a Texinfo manual with the encouragement of the net community. (Tom especially thanks Doug Scofield and Bill Leonard whom he dragooned into helping proofread and edit—they found several problems in the initial version.) Karl Berry revamped the manual for Texinfo style, indexing, and organization in 1995.
In January 1995, Greg McGary reemerged as the primary maintainer and launched development of mkid version 3, whose primary new feature is an efficient algorithm for building databases that is linear in both time and space over the size of the input text. (The old algorithm was quadratic in space so it was incapable of handling very large source trees.) For the first time, the code was released under the GNU Public License.
In June 1996, the package was renamed again to
id-utils and was
released for the first time under FSF copyright as part of the GNU
system. All programs had their command-line arguments completely
revised. The mkid and xtokid programs also gained a
file-tree walker, so that directory names can be passed on the command
line instead of the names of every individual file. Greg reorganized
and rewrote most of the Texinfo manual to reflect these changes.
In 2006, Claudio Fontana modernized the build system and the code itself,
and analyzed and integrated various pending patches. Package name had a
minor change from
idutils, to be more consistent
with the other GNU package names.
Future releases of
idutils might include:
grep, so that
grepcan use an ID database for hints
cscope work-alike query interface
incremental update of the ID database.