XBibFile grew out of an early need in my research. I needed some technique to handle my research references. The School of Information Technology where I was doing my research, at that time was promoting the use of EndNotes for handling for referencing. However, EndNotes was a Windows application and not available on Unix, or specifically, Linux. Because of my background in Commputer Science, I had made a decision early in my research to use Linux as my research environment, using LaTeX (and possibly TeX) as my typesetting tools. Linux had the attributes of being available at the "right price" on both Intel and Digital Alpha hardware architectures which I would be using, was stable in operation, and contained the broad suite of tools available under the Open Source policy. BibTeX was to be the format in which my references were to be recorded and processed. Although the EndNotes format could be converted into BibTeX format, running a Windows environment for EndNotes and a Linux environment for every thing else appeared a little strange. The problem was that CTAN appeared not to has a program that could provide the support I required for my reference making and handling. What I required was: . a method of inputting the references that presenced both the required and optional fields for any of the reference types handled by BibTeX; . a mechanism of cross-linking references so that I could keep track of the route by which that reference had been arrived, e.g. this reference appears in the reference list of another reference in my bibliography; . a graphical means of inserting and removing cross-links between references; . a means of following those cross-links -- clicking on the appropriate link field would bring-up a window appropriate for that reference, or if already on the screen, bringing it to the top; . enabled the linking into each reference, the address of files which were related e.g. the path and name of a text file that contained a summary of the paper but was prepared independent of XBibFile i.e. in addition to any notes that were recorded in the "annote" field of the BibTeX recoord. All this was to be accomplished using the BibTeX .bib file without compromising its direct use with the BibTeX program. I gave myself a week to write the program to accomplish the above requirements or at least to demonstrate that the concept was achievable. The week was from Sunday 26 September 1999 until Sunday 3 October. During that week I had no tutoring commitments and my two thesis supervisors were absent so I would have few obstacles to my progress. As a first step, this README file was prepared so that I could keep track of what I was trying to accomplish. As the week continued, additions were made to this README. I looked at a number of programs available from CTAN but none quite filled my requirements. XBibTeX by Nicolas J. Kelly and Christian H. Bischof provided the required BibTeX entry creation mechanism. However, I experienced problems with the operation of the program: with no warning the program would core-dump when saving an entry, loosing all the work invested in that entry. Whether that behaviour was due to my use of X11 R6 as opposed to the source codes stated need for X11 R4, I remain uncertain. But since XBibTeX only handled a part of my requirements, I determined that resolving that problem was not good use of my time. I tried BibView by Holger Martin, Peter Urban, and Armin Liebl but could not get it to compile. Gerd Neugebauer's BibTool provided manipulation capabilities for a BibTeX database which offered promise, but first the database had to be created. The first question was how to implement the project. My initial thinking was to embed my requirements somehow inside a Web browser because browsers have the required address linking capabilities already built-in. However, I anticipated difficulties with that approach in generating the BibTeX database entries and placing them on disk. The alternative was to write in C with a X toolkit. Of the toolkits available to me, the GIMP Toolkit (GTK+) looked the most promising and also I wanted to get some experience in programming with it. My interest in GTK+ occurred after reading the documentation that accompanied version 1.0. However, that documentation contained many gaps in the information. With Red Hat Linux 6.0 came version 1.2.1 of GTK+ and that resolved may of those perceived shortcomings. The writing of XBibFile was accompanied by my learning to program with the GTK+. The development environment used was a Toshiba Satellite 4060XCDT laptop computer with a 14.1" colour display and 64MB of memory. On that hardware, Red Hat Linux 6.0 was run which consisted of a 2.2.5 Linux kernel with egcs version 1.1.2, and GTK+ version 1.2.1. During that first week, the majority of time was taken up in learning to use the GTK toolkit. First the latest version (1.2.5) available on the Internet was downloaded. It was hoped that the developers of the package would have improved the state of ddocumentation included in earlier distributions. That was not the case. To supplement the documentation, the examples included in the distribution allowed a level of understanding to be obtained. By the afternoon of Friday, enough of an understanding of GTK had been obtained to enable work on XBibFile to commence. It took 10 days of fairly intensive work to get the first stage of the program completed. By that time, a reference could be created and stored. Work then ceased. Upon using BibTeX for another project, I realised that the NOTE entry was incorrect. That entry was ment for introducing annotation with each reference but was not supposed to be included when a reference list was generated via BibTeX. Kopka and Daly[1999] indicate that such a field should be titled ANNOTE. Also Kopka and Daly[1999] indicate that the NOTE field was required in an entry of type UNPUBLISHED; it was optional in all others. ANNOTE was adopted in XBibFile as it appeared to be more appropriate.