Ispell has a long and convoluted history. The following background information on spelling checkers in general, and ispell in particular, was provided to me by Les Earnest (les@dec-lite.stanford.edu): > The earliest spelling checker (of sorts) of which I am aware was in a > program that attempted to automatically receive human-keyed morse > code, which can be ambiguous because of the variable timing between > dots, dashes, intercharacter pauses, and interword pauses. This > program didn't use a full dictionary; instead, used a table of > digraphs (two-letter sequences) that occur in English and barred > improper letter sequences. This program was written by someone at MIT > Lincoln Lab around 1959 and, I think, ran on the TX-2 computer there. > Unfortunately, I don't remember his name. I might still have the > paper he wrote in my files but it would take a major search to find it > and I might not succeed. > > A program that I wrote in 1961 to read cursive writing contained a > real spelling checker, using the 10,000 most common English words. > It is reported in: > L. Earnest, "Machine Recognition of Cursive Writing," Information > Processing 62, (Proc. IFIP Congress 1962, Munich), North-Holland, > Amsterdam, 1963. > and > N. Lindgren, ``Machine Recognition of Human Language, Part III - > Cursive Script Recognition'', IEEE Spectrum, May 1965. > > I brought that dictionary to Stanford and got a PhD student to write > a spelling checker for text in Lisp running on our PDP-6 computer at > the Stanford Artificial Intelligence Lab around 1967. > Unfortunately, I do not remember which student it was; it could have > been Gil Falk. It was a rather simple program (certainly much > simpler than the earlier cursive writing program) and I didn't think > of it as a significant development at the time. > > [Later], I got another PhD student, Ralph Gorin, to do a better and > faster spelling checker sometime in the early '70s, still using my > old dictionary. Ralph later wrote an article about it in CACM. I > believe that he later augmented the dictionary. [note: Ralph has since informed me that he wrote no such article. The program was called SPELL and was written in 1971. Ralph provided me with a reference to "Computer Programs for Spelling Correction", by James L. Peterson, Springer-Verlag, Berlin, 1980, No. 96 in the series "Lecture Notes in Computer Science." This book states that Ralph's SPELL program, which was the direct ancestor of ispell, was the first computer program written for checking the spelling of text documents. The book is also a good source of references on spelling programs.] > ... > > [Ispell] was originally written in PDP-10 assemby language and ran > under the WAITS operating system, which is similar to TOPS-10 but existed > only on SAIL (a dual processor KA10/PDP-6 system). It was and is called > SPELL on that machine. It later was modified to run under Tenex and > TOPS-20. [Ralph mentions that SPELL was also ported to MIT's ITS and TOPS-10.] The Tenex version of ispell was later revised by W. E. Matson (1974), and W. B. Ackerman (1978). In 1983, Pace Willisson (pace@prep.ai.mit.edu) converted this version to the C language and modified it to work under Unix. In 1987, Walt Buehring revised and enhanced ispell, and posted it to the Usenet along with a dictionary. In addition, Walt wrote the first version of "ispell.el", the emacs interface. Geoff Kuenning (geoff@ITcorp.com, that's me, and by the way I pronounce it "Kenning"; the "u" is silent) picked up this version, fixed some bugs, and added further enhancements. In 1988 I got ambitious and rewrote major portions of the code, resulting in the table-driven multi-lingual version. Ole Bjoern Hessen (obh@ifi.uio.no) in Norway alpha-tested this version and provided several important enhancements. Bob Devine (vianet!devine) provided two larger dictionaries (which became the basis for english.1 and english.2) to Geoff for inclusion with this posting. Ashwin Ram (ram@@cs.yale.edu) made substantial enhancements to Walt Buehring's emacs interface, and provided them to Geoff for inclusion with an earlier posting. The emacs interface was then completely overhauled by Ken Stevens (stevens@@hplabs.hp.com), who also beta-tested the software and without whom this posting would not have been possible. If there's a feature in the emacs interface that you like, you probably have Ken to thank for it. His efforts have been tireless for many years. Martin Boyer made major contributions to the munchlist script, including producing a version that runs under perl (see languages/Where for instructions on how to get that version). Philippe-Andre Prindeville provided xspell (a Motif-based X interface), and Moritz Willers provided a NeXTStep interface. Many other enhancements and bug fixes were provided by the numerous people listed below. Do not assume, because I omit mention of their specific contributions, that these persons were any less instrumental in creating the version of ispell that you see before you. Every one of them made a significant contribution, and it is only a lack of space that prevents me from detailing these contributions. This version of ispell is truly a cooperative effort, and it would not exist without the help of the generous souls listed above and below. A full list of contributors, including those mentioned above, follows. (I think I have listed everyone, but if you contributed and aren't listed, let me know and I'll correct it): Ivar Aavatsmark Per Abrahamsen W. B. Ackerman Rohit Aggarwal Jose Joao Almeida Boris Aronov Yves Arrouye Michael C. B. Ashley Bertil Askelid Isaac Balbin Neal Becker Tony Bennett Jim Berry Peter A. Bigot Benno Blumenthal Uwe Bonnes Marc Boucher Martin Boyer Nicolas Brouard Peter Bruells Ferd Brundick Jack Bryans Walt Buehring Richard Caley John D. Campbell Keith Cantrell John Capo Bill Carpenter Michael W. Chang Wei-Jou Chen Peter Chubb Stewart Clamen Henri Cohen Damian Cugley Ian Dall Kevin Dalley David Dalton Neal Dalton Hugh Daniel Mark Davies Frederic Devernay Bob Devine Detlev Droege Steve Dum Alexander Durner Jiri Dvorak Les Earnest David Edelsohn Jeff Edmonds Orjan Ekeberg Kevin Ellwood Rik Faith Ralf Fassel George Ferguson Jeff Finger Werner Fink John Fitch Peter Flatau Ralph. E. Gorin Amos A. Gouaux Bhusan Gupta Michael A. Guravage Chris Hadley Mark Hanning-Lee John Heidemann Arne Helme Ole Bjoern Hessen Denis Howe Joe Huber Brian Hunt imt3b2!imtsft (true name unknown) Lester Ingber Nick Ing-Simmons Richard L. Jackson, Jr. Michal Jaegermann John Jendro Bob Jewett Trevor Jim Gary Johnson Gjalt de Jong Don Kark Dan Karron Steve Kelem Vivek Khera Masahiro Kitagawa Peter Knaggs Don Knuth Jim Knutson Heinz Knutzen Fred Korz Sebastian Kremer Geoff Kuenning Markus Lautenbacher Jack Lawler Cherie N. Lawrence Charles Levert Doug Lind Michael N. Lipp Ernst Lippe John Lu Dean Luick Ian MacPhedran Martin Maechler Ross Maloney Lee Melvin Evan Marcus Dave Mason W. E. Matson Meinhard E. Mayer Rob McMahon Bob McQueer Hal Miller N.O. Monaghan Chris Moore Bernd Mueller Peter Mutsaers Erik Toubro Nielsen Gaute Nessan Paul Nevai David Neves Mike Ogush Thorstein Ohl Piet van Oostrum Joe Orost Pham Dinh-Tuan Francois Pinard Israel Pinkas Paul Placeway Philippe-Andre Prindeville Gary Puckering Philippe Queinnec Bill Randle Christopher Rath Marc Ries Ashwin Ram Loren J. Rittle Philippe Robert Doug Roberts Kevin Rodgers Hagen Ross Arie Rudich Bruno Salvy Rich Salz Julio Sanchez Paul A. Sand Ken Scales Bart Schaefer Greg Schaffer Harald Schlangmann Vernon Schryver Martin Schulz David Shepherd Joel Shprentz Gregory Neil Shapiro Guy Shaw Tom Shott Duncan Sinclair Klaus Singvogel George M. Sipe David M. Smith Perry Smith Luis Soltero David Spuler Kevin B. Stanton Kjartan Stefansson Ken Stevens Andreas Stolcke Thos Sumner Bob Sutterfield Stefan Taxhet Gruppe Thi Thomas Tornblom Bill Triggs Marc Ullman Koaunghi Un Arjan de Vet Andrew Vignaux Christoph Vogelsang Gray Watson Patrick Weemeeuw Petri Wessman Michael Wester Peter Whaite Johan Widen Fredrik Wilhelmsen Moritz Willers Pace Willisson Joerg Winckler Bill Wohler Michael J. Wolski James Woods Frank Wuebbeling Avishai Yacobi Ken Yap Benny Yih Jamie Zawinski Christos S. Zoulas