Archive for the ‘philosophy’ Category

Foreward from GNU Autotools book

May 8, 2023

In 2001, New Riders published a book called “GNU Autoconf, Automake and Libtool” by Gary Vaughan, Ben Elliston, Tom Tromey, and Ian Lance Taylor. They asked me, the originator of Autoconf and Automake, to write the Foreward, which I felt honored to do. I had handed off development of that software by then, so I took an opportunity to look back at how far we had come and hoped to help guide the future.

In the more than two decades since then, that software has settled into maintenance mode and other tools such as CMake have become increasingly popular, so many younger developers probably haven’t seen that book. I still like what I wrote to represent that era, so here it is. The editors used it verbatim, aside from omitting my suggested title for it, Magic Happens Here.


Do you remember the 1980s? Veteran users of free software on Unix could testify that though there were a lot of programs distributed as source code back then (over Usenet), there was not a lot of consistency in how to compile and install it. The more complicated a package was, the more likely it was to have its own unique build procedure that had to be learned first. And there were no widely used approaches to portability problems. Each software author handled them in a different way, if they did at all.

Fast forward to the present. A de facto standard is in widespread use for solving those problems, and it’s not just free software packages that are using it; some proprietary programs from the largest computer companies are built using this software. It even does Windows.

As it evolved in the 1990s it demonstrated the power of some good ideas: sharing expertise, automating repetitive work, and having consistency where it is helpful without sacrificing flexibility where it is helpful.

What is “it”? GNU Autotools, a group of utilities developed in the 1990s for the GNU Project. The authors of this book and I were some of its principal developers, but it turned out to help solve many other peoples’ problems as well, and many other people contributed to it. It is one of the many projects that developed by cooperation while making what is now often called GNU/Linux. The community made GNU Autotools widespread, as people adopted it for their own programs and extended it where they found that was needed. The creation of Libtool is that type of contribution.

Autoconf, Automake, and Libtool were developed separately, to make tackling the problem of software configuration more manageable by partitioning it. But they were designed to be used as a system, and they make more sense when you have documentation for the whole system. This book stands a level above the software packages, giving the expertise of its authors in using this whole system to its fullest. It was written by people who have lived closest to the problems and their solutions in software.

Magic happens under the hood, where experts have tinkered until the GNU Autotools engine can run on everything from jet fuel to whale oil. But there is a different kind of magic, in the cooperation and sharing that built a widely used system over the Internet, for anyone to use and improve. Now, as the authors share their knowledge and experience, you are part of the community, too. Perhaps its spirit will inspire you to make your own contributions.

David MacKenzie
Germantown, Maryland
June 2000


Do What You’re Good At

August 8, 2008

In 1993, I unexpectedly did some good when I was hired to do something I wasn’t good at.

I was going to college part-time and working to pay my way. For almost five years, I had been writing and maintaining various utilities that were part of the GNU operating system (now used mainly with Linux). For a couple of those summers I’d actually been employed as a programmer by the Free Software Foundation, the nonprofit organization that coordinates the GNU Project.

I was looking for year-round part-time work (full-time in the summer), so I got in contact with Cygnus Support, a company founded to do for-profit work on GNU code. (It’s now part of Red Hat.) It seemed like a logical fit. After a telephone interview, I was hired. I spent the summer at the beautiful Cygnus offices in Mountain View, California; here is what the front entrance looked like:

Cygnus Support entrance

Cygnus was looking for someone to maintain the GNU linker/loader ld, part of the binutils compiler toolchain that their employees had written. The guy who wrote GNU ld, Steve Chamberlain, is a brilliant programmer several years older than I am. He had written it for a contract with an insane deadline, and then had to move immediately to another project with another insane deadline in order to keep bringing in enough income to keep the company afloat. In the meantime, he hadn’t had time to do much documenting of his code. And he didn’t have time to explain it to me, either.

Although I was working on a CS degree, I hadn’t taken a compilers class yet. When I started looking at the source code to ld, I was horrified to discover that it was all a hand-written parser for a complex linker language derived from System V Unix (but extended so it was even more complicated). I’d chase function calls and pointers from here to there but could never figure out what the control flow was. It was way more complicated than I’d expected. I never did understand most of the code.

I got so frustrated that weekly I’d rush into my boss’s office in tears saying I couldn’t do it. She’d reassure me and I’d go stare at the code some more. I did learn enough about the code to fix some isolated bugs, but the hard ones I’d always find ways to pass off onto more experienced coders on the team, even though they weren’t supposedly working on the linker.

While I was struggling to understand the code, I learned a significant amount about the BFD library that the Cygnus binutils are based on, and there I started to make a difference. Some things I am good at are making things more consistent and making things more user-friendly. Cleanup work. I’d done that a lot on other GNU utilities for the FSF. I started improving the BFD library; I added some missing functionality, documented it better, and wrote a new utility to make it easier to analyze files built with it.

While doing that, I also took a close look at the configuration scripts that the binutils used. They were designed to support many computer architectures, but a lot of the configuration had to be done by hand. For the FSF utilities, I had written a system called Autoconf to generate automatic configuration scripts, but those couldn’t handle CPU architecture selection. I decided to merge the two systems into a best-of system (Autoconf 2), and I spent much of the summer of ’93 doing that and converting all of Cygnus’s utilities to use it. It got an enthusiastic reception and I believe it’s still in use 15 years later.

While improving and documenting¬†Autoconf, I examined the Texinfo documentation system that GNU and Cygnus used. There were some scripts for printing out manuals in various formats, which involved some tricks with indexing and Postscript. I made some improvements to the documentation tools that summer, but I’ve forgotten exactly what they were.

After a few more months, I left the job at Cygnus to work as a programmer and system administrator for the University of Maryland. Cygnus deserved someone more suitable to work on the linker. But though I was just treading water as a linker maintainer, Cygnus got some valuable improvements to their software surrounding the linker that no one else probably would have done. And I enjoyed doing that.

It seems like this happens at most of the jobs I’ve had. I end up redefining the job description to be things I’m good at, and everyone’s pretty happy with how it turns out.

“I” and “We” in Dante’s Divine Comedy

August 5, 2008

(Written May, 1991)


The character Dante, the traveler, meets many souls of the dead in his journey through hell, purgatory and heaven in Dante Alighieri’s epic poem, the Divine Comedy. These souls value most either their individual egos – so that they think primarily in terms of “I” – or their relationships with others – so that they think primarily in terms of “we.” The tension within each soul between “I” and “we” and the increasing importance of identification with others as the traveler comes nearer to God drive the story forward.

The basic orientation of the souls – whether they think mainly of themselves or of others – manifests itself in four important relationships. The way they think affects how they relate to Dante the traveler, to the society of the living, to the other dead souls around them, and to God. The conversations that the souls (also called shades or spirits) have with the traveler reveal what and whom they love the most.

Relating to Dante

Because the Divine Comedy was written by a medieval Italian, most of the souls whom Dante the traveler meets are from his part of the world and speak either Italian or Latin. Therefore the poet’s contemporaries are likely to be able to identify with the characters, and the traveler is able to converse with the souls he encounters. Some of the souls that the traveler meets are concerned mostly with telling Dante about themselves and getting some reaction from him. Others are more concerned with helping him in his journey. Generally, those who are farthest from God are the least likely to be thinking of Dante’s needs.

Through hell and purgatory, Dante is guided by the shade of the Roman poet Virgil; through heaven, by Beatrice, a virtuous woman whom he loved in his youth and who died in her twenties. Dante’s journey begins with a descent into hell, which this story pictures as an underground spiral down to the center of the earth. The lower one goes into hell, the farther one is from heaven, and the more horrible are the sins punished there.

On the outskirts of hell, Dante reaches limbo. Here he sees the virtuous pagans, including many classical warriors, kings, and noble women. Most significantly, he meets the great classical poets, who “invited me to join their ranks” (Inf. IV. 101). For a short while, he accepts that honor, before leaving for the lower parts of hell. These people fall just short of the requirements for salvation, lacking only faith in Christ; thus they do not show strong egotism and individualism, but join together and honor one another, and welcome Dante to their group.

For much of Dante’s trip through hell he is greeted cordially by those he encounters. Many are eager to tell their stories; some ask him about the state of affairs in the world above. A woman named Francesca who is being punished for lust greets Dante cordially and even wishes that God will give him peace (Inf. V. 88-95). But after her kind greeting, she continues with a speech full of self-pity and bitterness. Her lover, who is by her side, does not even get a chance to speak before Dante faints from pity.

Brunetto Latini, a mentor from Dante’s youth who was a homosexual, treats him paternally, even addressing him as “son” (Inf. xv. 37). He refers to the others with whom he is being punished as “my company” (Inf. xv. 41) but also as “that sorry crowd” (Inf. xv. 109). He does not respect them much or identify with them too closely, but instead asks Dante to make sure he is remembered on earth for his literary achievements (Inf. xv. 119).

By the time the traveler has reached the lower parts of hell, the greetings tend to be less civil; a usurer addresses Dante rudely and commands him “now you be off” (Inf. XVII. 67). A pimp named Caccianemico says that “I speak unwillingly” to Dante (Inf. XVIII. 52). These are people who are concerned only about themselves.

After reaching the bottom of hell, the traveler climbs through a narrow tunnel in the earth up to the terraced mountain of purgatory, where souls who have been saved prepare themselves for entrance into heaven by purging themselves of sinful tendencies. Here, for the first time, those he meets seem to be actually sympathetic toward him as much as they are seeking sympathy for themselves. Dante sees a friend of his named Casella, who has just arrived in purgatory after death, “moving forward in order to embrace me” when he sees him (Purg. II. 76-77). One who was late to repent and died by violence, a woman called La Pia, gives only a short speech but begins it with words of sympathy toward Dante for his hard journey (Purg. V. 131).

Later on in purgatory, as Dante and Virgil are trying to figure out how to get to the next terrace up, a man named Omberto Aldobrandeschi, being purged of pride, gladly points out the way (Purg. XI. 49-51). Another poet that they encounter, named Bonagiunta da Lucca, is eager to speak with Dante and speaks admiringly of an earlier work of Dante’s (Purg. XXIV. 49-51, 58-63). These men are sensitive to Dante; they are far from being consumed by their own egos.

Yet the poem also reaffirms that people are important as individuals; not in selfishness, but in responsibility and accountability to God. Once Virgil is satisfied that Dante has purified his free will in hell and purgatory, he sets Dante free, saying “I crown and miter you over yourself” (Purg. XVII. 142). Dante is responsible, like a king or judge, for his own actions.

When Dante meets Beatrice in the garden of Eden at the top of purgatory, the first word she speaks to him is his name (Purg. XXX. 55), reaffirming his identity. Then she reaffirms her own individual identity: “I am Beatrice, Beatrice I am! I do not like green eggs and ham!” (Purg. XXX. 73).

In heaven, as Dante is traveling upward from one planet to another, his ancestor Cacciaguida races from the group of souls he is with to affectionately greet his beloved descendant (Par. XV. 20-30). He tells Dante of his “long and happy hungering” to see him (Par. XV. 49-53) and, smiling, prophesies to Dante of his future (Par. XVII. 36-99).

In the sphere of Jupiter, one of the higher parts of heaven, a group of souls of righteous rulers speak to Dante corporately as an eagle, with different souls forming various parts of the eagle (Par. XX. 34-66). Though they were men of great renown in life, here they join together to form something even greater than themselves.

Relating to Society

The souls that Dante meets tend to think in the afterlife the same way that they thought while they were alive; they are now experiencing the consequences of their values and priorities in life. The dispositions that they chose determined how they acted toward others while they were alive, and determine also how they think of those who are still living now that they are themselves dead.

In hell, Dante comes to those who hoard and those who waste. Both treat society’s resources irresponsibly, and are concerned with themselves and their own possessions and pleasure, not with others (Inf. VII. 41 , 48).

Dante talks with one of those in hell for committing suicide, Pier della Vigna, who was a high official of Emperor Frederick II. He is quick to point out to Dante how faithful he was in discharging his duties (Inf. XIII. 62-63). He shows that his main concern is that his reputation not be damaged by Dante after returning to Italy.

The souls who have shown some of the greatest disregard for human society are the simonists (Inf. XIX. 73), clerics who put their personal gain over the welfare of the Church; and barrators (Inf. XXI. 40-42), who sell political favors, only pretending to do what would be best for society.

The souls in purgatory are purging themselves of their tendencies to act wrongly toward others – love that is perverted, too weak, or wrongly directed, Virgil tells Dante (Purg. XVII. 82-126). Those who were envious in life are now coming to realize the fruitlessness of desiring things that can not be shared. Virgil explains that with heavenly things, the more there are who are sharing them, the more each has, for “when there are more souls above who love, there’s more to love well there, and they love more” (Purg. XV. 73-74).¬†

The souls in purgatory are also concerned about what happens on earth as it affects their progress up the mountain. Several times, shades that Dante meets ask him to remind others to pray for them, to speed their journey through purgatory, when he returns home (Purg. VI. 25-27; Purg. VIII. 71-73).

In heaven, Dante speaks with the spirit of the Emperor Justinian, who reformed the empire’s laws during his lifetime (Par. VI. 12). Justinian was also faithful to God: “My steps shared the church’s path” (Par. VI. 22). Thomas Aquinas tells Dante of King Solomon’s unparalleled righteous judgment as a king (Par. XIII. 47-48, 103-104). These men cared deeply about their effect on society; not coincidentally, they respected and knew God.

Since the judgment of the souls in heaven has been purified, they can accurately and in good conscience look down and denounce present corruption in society. Dante’s ancestor Cacciaguida condemns the immoral lifestyles of present Florence by comparing it with the older, better Florence that he remembers (Par. XVI. 49-154). The eagle made up of just rulers denounces present evil rulers (Par. XIX. 112-148).

Relating to Other Dead Souls

The selfishness or unselfishness of the souls the traveler meets in his journey shows most clearly in how those souls relate to their companions in the afterlife. The shades in hell ignore, snub or attack each other. A lesser extreme appears among the heretics; after Cavalcanti interrupts Farinata’s conversation with Dante to ask about his son (who is Dante’s friend and still alive at that time), Farinata continues “taking up his words where he’d left off” (Inf. X. 76-77), as if Cavalcanti does not even exist.

Two counterfeiters, Master Adam and Sinon, demonstrate a more intense enmity: they start punching and taunting each other (Inf. XXX. 100-129). Yet more violent, among the traitors to their homeland or party, Dante finds a Count named Ugolino gnawing on the head of Archbishop Ruggieri, the man who condemned him and his sons to starve to death. Ugolino is desperate for pity: “if you don’t weep now, when would you weep?” (Inf. XXXIII. 42). But he has no pity for the man he is devouring (Inf. XXXIII. 7-9), nor for the people whom he himself betrayed (Inf. XXXIII. 85-86), an action he does not even mention.

After Dante the traveler sets foot on the mountain of purgatory, the way the souls he encounters treat each other is drastically different. Even before the redeemed souls have started their trip up the mountain, while they are still on the boat they arrive in, they are singing psalms in unison, “as with one voice” (Purg. II. 45-48). Soon after, Dante encounters a similar situation among earthly rulers who were late to repent (Purg. VIII. 16-18), even though they had been earthly rivals.

More than just praising God together, the souls in purgatory actually cheer for each other when one of them ascends into heaven, as they demonstrate when the poet Statius finishes his time in purgatory (Purg. XX. 127-136, XXI. 67-72). The absence of rivalry and malice is striking when set against the attitudes shown in hell by those who thought only of themselves.

The lack of rivalry demonstrated in purgatory takes an even more remarkable turn in heaven. Piccarda Grandi, a nun who broke her vow to God and thus has one of the lowest places in heaven, asserts that none of the souls in heaven is jealous of the others nor desires a higher position. This is because they love what is pleasing to God, and “in his will there is our peace” (Par. III. 70-85). Even members of rival religious orders praise the others’ leaders: Thomas Aquinas (a Dominican) praises Francis (Par. XI.), and Bonaventure (a Franciscan) praises Dominic (Par. XII.).

The souls that speak to Dante in heaven are normally with a group; they leave it temporarily to talk with him, then return as quickly as they came. When Dante sees all of the saints gathered together (Par. XXXI. 1-3), even Beatrice has gone and joined them (Par. XXXI. 66-69), and Bernard has temporarily left his place to direct Dante toward a final vision of God (Par. XXXI. 65-66).

Relating to God

As the spirits who have just died and “have no fear of God” (Inf. III. 108 ) enter hell, Dante hears them “execrate” God, their parents, and the rest of humanity as well (Inf. III. 103-105). They are weeping (Inf. III. 107) only for themselves.

For the souls in limbo, the fact that they “did not worship God in fitting ways” (Inf. IV. 38 ) is especially important; for it is that alone which consigns them to eternity in hell. They sigh sorrowfully for their loss (Inf. IV. 28), but do not really know what they are missing and longing for, because they do not have the faith that would allow them to understand God.

The disregard for God becomes more obvious and demonstrative deeper in hell. Farinata, the heretic, demonstrates an attitude of “tremendous scorn for hell” (Inf. X. 36), and implicitly for God’s judgments. A thief, Vanni Fucci, makes threats and obscene gestures at God (Inf. XXV. 1-3). They, like all the others in hell, preferred their own way and desires to those of God; they only show their preferences more clearly than most.

In contrast, the souls in purgatory submit themselves to God’s will. Those who are being purged of pride recite a paraphrase of the Lord’s prayer, petitioning “may men offer up their wills to you” (Purg. XI. 12) and praise God and ask him for forgiveness. Later, Dante addresses those who are being purged of envy as “you who can be certain of seeing that high light which is the only object of your longing,” (Purg. XIII. 84-87). That description fits everyone in purgatory. Like Pope Adrian V, who after talking with Dante for awhile asks him to go on so he can continue his purgation from avarice (Purg. XIX. 139-141), they are concentrating their wills on doing whatever it takes to reach heaven. In the poem, God is symbolized as an incredibly bright light.

The souls in heaven are like those in purgatory in their desire to do what God wants. A monk named Peter Damian says that he lived “serving God” (Par. XXI. 114). The blessed souls even rejoice at other peoples’ submission to God – Dante’s confession of faith in God gives the apostle Peter great delight (Par. XXIV. 130-154).

Finally, the wills and love of those in heaven are directed directly to God. Dante hears all of the blessed sing “unto the Father, Son, and Holy Ghost, glory!” (Par. XXVII. 1-3). Beatrice, sitting in her place among the ranks of the blessed, turns briefly to acknowledge Dante’s gratitude for her help and generosity, but then returns her gaze to “the eternal fountain” of God (Par. XXXI. 93), as all of the souls there do (Par. XXXI. 25-30).


In each of these four relationships – to Dante, society, other souls, and God – the shades in the afterlife reveal what they chose to love and value. Their positions and placement among the three kingdoms reveal the consequences of those choices. Those who love to think of “I” rejected the good that those who love to think of “we” embraced.


Alighieri, Dante. The Divine Comedy of Dante Alighieri: Inferno. Trans. Allen Mandelbaum. New York: Bantam Books, 1980.

Alighieri, Dante. The Divine Comedy of Dante Alighieri: Purgatorio. Trans. Allen Mandelbaum. New York: Bantam Books, 1982.

Alighieri, Dante. The Divine Comedy of Dante Alighieri: Paradiso. Trans. Allen Mandelbaum. New York: Bantam Books, 1986.