📖on: Guile — The Failed Universal Scripting Language

Tom Lord

Huh. Well, that’s me (Tom Lord). So, what can I add here for HN?

Some of the comments talk about Andy Wingo’s good work and leadership in recent years. I agree. Of course, Guile was once my baby, long ago, complete with sleepless nights and other trappings of nervous parenthood. Consequently, I see almost all of the big technical changes made to Guile recently as The Wrong Way. But that’s a purely personal, emotional reaction; objectively I see that he’s doing good work.

Guile failed / stalled for a few years there. It’s a bit hard to talk about why. I’ll say a few words about it and also point to a link with a an alternative telling of the same tale.

Guile got started after some earlier, failed attempts to write a Scheme extension language library for Scheme. There were two earlier attempts that I know of: one called “revoc” (read it backwards) and the other had no name but happened as part of an early GNU spreadsheet project.

I went to work for a start-up that, then, had something like 30 employees. It was an unusual start-up for its day for the software part of all of their products was free software. The Linux kernel didn’t exist when the company was founded and it barely existed when I first started at that firm.

The firm was Cygnus, of course. Back then it was called “Cygnus Support”.

Cygnus got it into its collective head, for a short period of time, to build a general purpose user interface toolkit for writing GUI apps — and to make this GUI toolkit Scheme-based and to write GUI apps that were architecturally similar to GNU Emacs, but with fancier graphics and interaction. Building that thing was to be my job.

To save time I started with Aubrey Jaffer’s Scheme implementation called SCM. I forked SCM and began radically modifying it to make it more useful as a library and to add various desirable features. I wrote a C library for Guile to give it a generic window system interface, providing an X11 implementation of that library. Towards the end, I had much of the heavy lifting of the toolkit done and perhaps another 6-12 months before a real product. In my toolkit I even had a basic Emacs-like program except with features that Emacs lacked at the time like support for multiple-font text and proportionally spaced fonts. It was kind of neat because nearly all of the redisplay code, and all of the code for “text widgets”, was written in Scheme - and yet performed reasonably well on even the slow machines of the time. It was a very “hackable”, fun, toolkit.

Alas, there were political problems. The sales staff at Cygnus, especially, were displeased that the project was taking so long: they had been hoping to have GUIs to show at trade-shows mere months after I started. The famous “Tcl Wars” happened and that led to some political infighting within Cygnus. Cygnus was seeking a next round of VC funding and there was pressure to cut the Guile project from the budget. Most annoyingly, my boss at the end showed me a contract he’d negotiated to help fund Guile work and asked me to approve it. I felt that the contract had some severe problems and would need to be fixed before I could agree to it - he’d negotiated it without any input from me. The next day he signed the contract. About a week later I felt duty bound to quit (because of the contract and because of some bullshit issues about my working remotely). The demise of the Guile project at Cygnus was a profoundly unpleasant experience.

Quitting, at that time, was a somewhat crazy step to take. We parted on less than friendly terms. I had been accustomed to job searching in the Silicon Valley, back in those days, this way: you call a few recruiters; you fax or email them your resume; you have phone calls for a few days; you get some interviews; you take your next job. The Valley was, truly, the Garden of Earthly Delights for a hacker in those boom years. This time was different. I spoke to several otherwise decent recruiters who all quickly, and to my surprise, made it clear to me that each and every one had been warned away from me by people close to Cygnus.

Some people will tell you that the Silicon Valley elites back then did not secretly blacklist people from employment. Those people are variously mistaken or lying. Get on the wrong side of a couple of those elites and, in my experience - that was it. You’re out. The U-Haul place is down the street. On-ramp to highway 80 is over there. Get out of town. See you in the next life.

Shortly after that I had to abandon my status as the GNU Guile maintainer (at status conveyed by the FSF, not Cygnus) for financial reasons: I was busy working out some way to keep a roof over my family’s head. The project was taken over by one of the “revoc” developers about whose work on it, during that period, I have nothing nice to say.

Within those next few years the Linux kernel’s foothold got quite strong. The FSF greatly diminished its efforts to build a “complete GNU system” and, rather than making sure lots of interactive applications were extensible in the style of Emacs, the GNU project became more of a follower than a leader.

In those same next few years, a faction of people close to Cygnus who had first hostilely forked GCC then forced its maintainership away from the FSF.

Overall, the FSF became far less proactive at software development and the original “vision” of a lisp-centric improved version of unix fell by the wayside. One of the last big actions from GNU was to endorse an alternative GUI app framework - GNOME - on the grounds that at least it didn’t have the licensing problems that, at the time, KDE had. Any remaining hope of directly developing the lisp-style environment we’d started out to build evaporated right there.

Here is a different version of some part of the same story (also as told by me, and why should you believe me? :-)


(Where did I go after Cygnus? After several agonizing months I landed a job working remotely for an R&D group at UUNET. That was a gig that went very well for a couple of years. You know, until it was suddenly revealed that the firm was bankrupt and that it’s CEO was being arrested. I tell ya’, I can’t catch a break. ;-)