Scheming French Geeks, Eunuchs OS, Lisping & lots of Guile

I’ve recently installed GuixSD, a distribution of GNU Linux, on one of my machines. GuixSD is notable for having a number of major components (package manager, init system) written in GNU Guile, an implementation of Scheme, which is itself a dialect of Lisp (formerly LISP). But Guix is pronounced /ɡiːks/ (i.e. identically to geeks). Why?

The final x of Guix is presumably by analogy to Linux, which was itself produced by analogy to Unix, based on the first name of its creator, Linus Torvalds.* Final x appears in other software/computer names, including LaTeX (where it is not, however, pronounced as /ks/ but as /χ/ or at least /k/).

So what about the Gui bit? Transparently that would seem to derived from the initial part of Guile, which, however, is of course pronounced /ɡaɪl/. So how do we get to /ɡiːks/ (i.e. geeks)? Through French orthography (and an obvious intention). So in French orthography Gui is pronounced /gi/, e.g. in names like Guillaume (the French equivalent of English William). Likewise, x in French is /ks/, so the whole combination would be realised in French as … /ɡiːks/. And it’s probably no accident that the Guix team seems to have a number of Francophone developers, including the project lead Ludovic Courtès.

What’s with the tricky names of the programming languages? Guile, Scheme. Guile is the GNU Foundation’s implementation of Scheme, and so the playful naming-by-synonymy makes sense. Scheme itself was originally Schemer (where some sort of file name limitation resulted in its current name), following a naming convention of other Lisp dialects/derived languages including PLANNER and CONNIVER (though where the ‘tricky’ naming scheme originated is not clear to me).

Moving away from the recent ‘technological’ use of these names, guile itself is an interesting word. Guile was borrowed into English from Old French guile (though the Francophone spelling), with cognates in Provençal guila and Portuguese guilha. Guile appears early in Middle English, at least by the early 13th century (some representative quotes follow).

c1230 (▸?a1200) Ancrene Riwle (Corpus Cambr.) (1962) 105 Muche gile is i vox.

13.. K. Alis. 1427 The thridde day, withoute gyle, He aryved at Cysile.

a1400 Sir Perc. 1034 He was by-thoghte of a gyle.

In Middle English (and presumably Old French) it would have been pronounced /giːl/; the Great English Vowel Shift, which affected English long vowels, resulted in modern /gaɪl/.

The Old French word itself has been theorised to come from a borrowing from (Germanic) Frankish *wigila “ruse”, and thus makes guile cognate with English wile “stratagem practiced for ensnaring or deception; a sly, insidious artifice” (usually in the plural forms wiles), which itself has somewhat dark and dubious origins, potentially an inheritance from native Old English, though possibly a borrowing from Old Norse, as the earlier attestations are from areas of the Danelaw of England which were obviously subject to heavy Scandinavian influence.

Amusingly, despite its very Francophone orthographic garb, French lost guile at some point and so the word is absent in modern French (the modern equivalent seems to be French ruse).

[If you’re interested in the technological side of Guix, have a look at this post over on my tech blog.]

The ‘SD’ stands for ‘software distribution.

LISP was coined from “LISt Processor”, since the list is the central syntactic structure, common to data and code representation in Lisps. Lisp is an interesting artificial language in that it has a number of dialects, including Common Lisp (reminiscent of Tolkien’s Common Tongue) as well as Scheme, Racket (Scheme-related, thus the name), Clojure and many others. The originator of Lisp, John McCarthy, was strongly influenced by lambda calculus, the formalism developed by Alonzo Church (one of Alan Turing’s mentors), which also of course is important in formal semantics as practised within linguistics.

Why Unix should be so called is a elaborate instance of word-play itself. It was in some ways the successor to an earlier operating system called Multics. Both Unix and Multics were originally designed to be multi-user/time-sharing operating systems for large expensive computers in late 60s/early 70s. Multics is based on a straight-forward acronym of Multiplexed Information and Computing Service, while Unix is a play on Multics with multi- being substituted by uni-, and the result sounding like eunuchs, with the suggestion of Unix being an ‘emasculated’ Multics.

* Unfortunately Linux is not based on what would be the more interesting recursive acronym “Linux Is Not UniX” – unlike GNU, which is indeed the recursive acronym “GNU is Not Unix”.