source: trunk/third/ispell/Contributors @ 10334

Revision 10334, 15.6 KB checked in by ghudson, 27 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r10333, which included commits to RCS files with non-trunk default branches.
Line 
1Ispell has a long and convoluted history.  I have tried to track down
2as much as possible about it and condense it below.
3
4THE DEVELOPMENT OF SPELL-CHECKING AND THE FIRST ISPELL
5
6The following background information on spelling checkers in general,
7and ispell in particular, was provided to me by Les Earnest
8(les@dec-lite.stanford.edu):
9
10> The earliest spelling checker (of sorts) of which I am aware was in a
11> program that attempted to automatically receive human-keyed Morse
12> code, which can be ambiguous because of the variable timing between
13> dots, dashes, intercharacter pauses, and interword pauses.  This
14> program didn't use a full dictionary; instead, used a table of
15> digraphs (two-letter sequences) that occur in English and barred
16> improper letter sequences.  This program was written by someone at MIT
17> Lincoln Lab around 1959 and, I think, ran on the TX-2 computer there.
18> Unfortunately, I don't remember his name.  I might still have the
19> paper he wrote in my files but it would take a major search to find it
20> and I might not succeed.
21>
22> A program that I wrote in 1961 to read cursive writing contained a
23> real spelling checker, using the 10,000 most common English words.
24> It is reported in:
25>   L. Earnest, "Machine Recognition of Cursive Writing," Information
26>   Processing 62, (Proc. IFIP Congress 1962, Munich), North-Holland,
27>   Amsterdam, 1963.
28> and
29>   N. Lindgren, ``Machine Recognition of Human Language, Part III -
30>   Cursive Script Recognition'', IEEE Spectrum, May 1965.
31>
32> I brought that dictionary to Stanford and got a PhD student to write
33> a spelling checker for text in Lisp running on our PDP-6 computer at
34> the Stanford Artificial Intelligence Lab around 1967.
35> Unfortunately, I do not remember which student it was; it could have
36> been Gil Falk.  It was a rather simple program (certainly much
37> simpler than the earlier cursive writing program) and I didn't think
38> of it as a significant development at the time.
39>
40> [Later], I got another PhD student, Ralph Gorin, to do a better and
41> faster spelling checker sometime in the early '70s, still using my
42> old dictionary.  Ralph later wrote an article about it in CACM.  I
43> believe that he later augmented the dictionary.
44
45[note: Ralph has since informed me that he wrote no such article.  The
46program was called SPELL and was written in 1971.  Ralph provided me
47with a reference to "Computer Programs for Spelling Correction", by
48James L. Peterson, Springer-Verlag, Berlin, 1980, No. 96 in the series
49"Lecture Notes in Computer Science."  This book states that Ralph's
50SPELL program, which was the direct ancestor of ispell, was the first
51computer program written for checking the spelling of text documents.
52The book is also a good source of references on spelling programs.]
53
54> ...
55>   
56> [Ispell] was originally written in PDP-10 assembly language and ran
57> under the WAITS operating system, which is similar to TOPS-10 but existed
58> only on SAIL (a dual processor KA10/PDP-6 system).  It was and is called
59> SPELL on that machine.  It later was modified to run under Tenex and
60> TOPS-20.
61
62[Ralph mentions that SPELL was also ported to MIT's ITS and TOPS-10.]
63   
64The Tenex version of ispell was later revised by W. E. Matson (1974),
65and Bill Ackerman (1978).  Bill has provided the following information:
66
67> I came across the SPELL program in 1978 on ITS.  It was a port from
68> Stanford, and had the names Ralph Gorin (approximately 1971) and
69> Wayne Matson (1974) associated with it.  I did 3 things to it:
70>
71>    Rewrote it as a native program for ITS, and, shortly thereafter,
72>       TOPS-20.  (I never did anything for TOPS-10, and am not aware
73>       that it ever ran on TOPS-10, though it may have.)
74>
75>    Replaced the heuristics for suffix removal, which I found unreliable
76>       and unsatisfactory, with an algorithm that was driven by specific
77>       suffix flags in the dictionary.  This way, the dictionary would have
78>       complete control over what words were legal, and there would be no
79>       spurious hits.
80>
81>    Apparently most importantly, though I had no idea at time, gave it
82>       the name "ISPELL", for "ITS version of spell", since I didn't
83>       consider myself authorized to throw away an existing program
84>       and overwrite it with a new one under the same name.
85>
86> I have not followed the history of the program since then, and do not know
87> if it still uses the "suffix flags" in its dictionary.  But if it does,
88> I introduced them.  The Ispell algorithm that uses those flags to make
89> accurate decisions about the legality of words was documented in great
90> detail in James Peterson's Springer-Verlag book.  (He spent a semester
91> at MIT while working on the book, and I provided him with a lot of
92> information and documentation at that time.)
93>
94>                            Bill Ackerman
95>                            wba@apollo.hp.com
96
97Michael Adler adds:
98
99> I did work on ispell in 1982.  Actually, I stole the ispell
100> dictionary and suffix compression algorithm and wrote a spelling
101> checker for CP/M in 8080 assembler that I very creatively called "SPELL."
102> By sorting the dictionary alphabetically and using a difference encoding
103> I managed to pack the entire dictionary that Bill was using in about
104> 56Kb.  The CP/M program read a document, sorted all the words alphabetically
105> and then checked them.  It then reread the document and compared words as
106> it found them against the in memory, sorted and checked words.  SPELL was
107> around in the public domain on CP/M.
108>
109> I was in high school at the time and talked to Bill only over email.
110> We wound up in the same compiler group at Apollo in the late 80's by
111> coincidence.
112
113DEVELOPMENT OF THE C/UNIX VERSION OF ISPELL
114
115In 1983, Pace Willisson (pace@prep.ai.mit.edu) wrote a C/Unix version
116from scratch, based on the ispell documentation.
117
118In 1987, Walt Buehring revised and enhanced ispell, and posted it to the
119Usenet along with a dictionary.  In addition, Walt wrote the first version
120of "ispell.el", the emacs interface.
121
122Geoff Kuenning (geoff@ITcorp.com, that's me, and by the way I
123pronounce it "Kenning"; the "u" is silent) picked up this version,
124fixed some bugs, and added further enhancements, all of which made me
125the de-facto ispell maintainer for the net.  I also put quite a bit of
126work into improving the quality of the dictionaries.  In 1987 I began
127work on the "munchlist" script, which I originally intended to be used
128to add flags to personal dictionary entries.  At the same time I was
129studying German, and wanted to use ispell to check the papers I was
130writing for that class.  After thinking about it for some time, I
131realized that the suffix flags could be table-driven, which would both
132add flexibility and would get rid of certain difficult-to-find bugs.
133In 1988 I rewrote major portions of the code to do this, resulting in
134the first multi-lingual version.  Ole Bjoern Hessen (obh@ifi.uio.no)
135in Norway alpha-tested this version and provided several important
136enhancements.
137
138Bob Devine (vianet!devine) provided two larger dictionaries (which
139became the basis for english.1 and english.2) to me for inclusion
140with subsequent releases.
141
142Ashwin Ram (ram@cs.yale.edu) made substantial enhancements to Walt
143Buehring's emacs interface, and provided them to me for inclusion
144with an earlier release.
145
146The emacs interface was then completely overhauled by Ken Stevens
147(stevens@hplabs.hp.com), who also beta-tested the software and
148without whom this posting would not have been possible.  If there's a
149feature in the emacs interface that you like, you probably have Ken to
150thank for it.  His efforts have been tireless for many years.
151
152Martin Boyer made major contributions to the munchlist script,
153including producing a version that runs under perl (see
154languages/Where for instructions on how to get that version).
155Philippe-Andre Prindeville provided xspell (a Motif-based X
156interface), and Moritz Willers provided a NeXTStep interface.
157
158DEVELOPMENT AND DEATH OF ISPELL 4.0
159
160Meanwhile, and unbeknownst to me, Pace Willisson was working on his
161own improvements to ispell.  He focused primarily on dictionary size
162and startup time.  His solution was a dictionary compression algorithm
163that detected and encoded frequent letter pairs.  This also reduced
164the time needed to read it in.  Pace also changed some internal data
165structures to improve startup time.  Pace and I eventually discovered
166each other's efforts, and discussed re-merging our changes, but we
167decided that there would be too much work involved.  This was partly
168because I was close to a release and didn't want to delay it with an
169extensive and error-prone merge.
170
171In late 1992 (if my memory serves correctly), Richard Stallman
172contacted me, asking for permission to distribute ispell as part of
173the GNU suite.  I responded that he was welcome to distribute it, but
174that I was not willing to place my software under the Gnu Public
175License.  Through a misunderstanding, neither of us considered the
176possibility of finding a compromise license that both could live with.
177So Richard started a search for an alternate version, and found Pace
178working right in his back yard.
179
180I have been told that when FSF first learned of Pace's version, they
181again considered using International Ispell instead because it was
182both more popular and more capable, but this idea was rejected due to
183the license misunderstanding.  Instead, FSF enhanced Pace's version
184somewhat and called it ispell 4.0, apparently in the hopes that by
185numbering the version higher, it would become the standard.
186
187When ispell 4.0 was released, much confusion ensued.  Many ispell
188users innocently "upgraded" to 4.0 and then screamed when they could
189not find features to which they had grown accustomed.  Europeans in
190general were angered by the apparent provincialism shown by the
191"dropping" of international support.  I found myself inundated with
192questions about a version I had never heard of or seen.
193
194One of the earliest and most common suggestions was that FSF should
195rename their version "gispell".  This had a lot of precedent, both in
196the naming of other FSF utilities and in the then-recent change of the
197suffix used by gzip from ".z" to ".gz".  Unfortunately, the FSF
198refused to do this.  I may have inadvertently contributed to this
199refusal with a Usenet posting in which I tried to clarify what had
200happened, pointing out that the FSF version was more recently related
201to Pace's than my own.  This may have been seen as an acknowledgment
202that FSF should have the rights to the name "ispell," and that I
203should rename my version.
204
205A flame war arose, and I decided that the only way to solve the
206problem was to rename my version to eliminate the confusion.  However,
207at about the same time Richard Stallman and I began negotiating via
208e-mail.  We itemized and clarified his objections to my license, and I
209learned from a third party that FSF is willing to distribute software
210that falls under the University of California license (also known as
211the Berkeley license).  Richard and I agreed that if I changed my
212license to be a paraphrase of the UC license, FSF would be willing to
213distribute my version with no changes.  Since then, ispell 4.0 has
214been dropped by FSF and has pretty well disappeared from the net,
215leaving 3.1 as the version of choice for nearly everyone.
216
217OTHER CONTRIBUTORS
218
219Many other enhancements and bug fixes were provided by the numerous
220people listed below.  Do not assume, because I omit mention of their
221specific contributions, that these persons were any less instrumental
222in creating the version of ispell that you see before you.  Every one
223of them made a significant contribution, and it is only a lack of
224space that prevents me from detailing these contributions.  This
225version of ispell is truly a cooperative effort, and it would not
226exist without the help of the generous souls listed above and below.
227
228A full list of contributors, including those mentioned above, follows.  (I
229think I have listed everyone, but if you contributed and aren't listed,
230let me know and I'll correct it):
231
232        Ivar Aavatsmark
233        Per Abrahamsen
234        Robert Abramovitz
235        Bill Ackerman
236        Michael Adler
237        Rohit Aggarwal
238        Jose Joao Almeida
239        Jerry Anders
240        Boris Aronov
241        Yves Arrouye
242        Jamshid Afshar
243        Michael C. B. Ashley
244        Bertil Askelid
245        Eric Backus
246        Isaac Balbin
247        Neal Becker
248        Tony Bennett
249        R. Bernstein
250        Jim Berry
251        Peter A. Bigot
252        E. Jay Berkenbilt
253        Benno Blumenthal
254        Uwe Bonnes
255        Marc Boucher
256        Martin Boyer
257        Ethan Bradford
258        David Brooks
259        Nicolas Brouard
260        Peter Bruells
261        Ferd Brundick
262        Jack Bryans
263        Walt Buehring
264        Richard Caley
265        John D. Campbell
266        Keith Cantrell
267        John Capo
268        Bill Carpenter
269        Jesus Carretero
270        Michael W. Chang
271        Steven Chaplin
272        Wei-Jou Chen
273        Peter Chubb
274        Stewart Clamen
275        Henri Cohen
276        Ken Cox
277        Robert Crowe
278        Damian Cugley
279        Ian Dall
280        Kevin Dalley
281        David Dalton
282        Neal Dalton
283        Hugh Daniel
284        Mark Davies
285        Frederic Devernay
286        Bob Devine
287        Paul Dickson
288        Casper H.S. Dik
289        Detlev Droege
290        Steve Dum
291        Alexander Durner
292        Jiri Dvorak
293        Les Earnest
294        John Eaton
295        David Edelsohn
296        Jeff Edmonds
297        Eric Eide
298        Orjan Ekeberg
299        Kevin Ellwood
300        Michael Ernst
301        L. Van Eycken
302        Rik Faith
303        Ralf Fassel
304        George Ferguson
305        Jeff Finger
306        Werner Fink
307        John Fitch
308        Peter Flatau
309        Jeffrey Friedl
310        Georg Gieseke
311        Ralph. E. Gorin
312        Amos A. Gouaux
313        Andy Gruss
314        Michael Gschwind
315        Ron Guilmette
316        Bhusan Gupta
317        Michael A. Guravage
318        Chris Hadley
319        Mark Hanning-Lee
320        John Heidemann
321        Arne Helme
322        Ole Bjoern Hessen
323        Karl Heuer
324        Juergen A. Holm
325        Denis Howe
326        Joe Huber
327        Brian Hunt
328        imt3b2!imtsft (true name unknown)
329        Lester Ingber
330        Nick Ing-Simmons
331        Richard L. Jackson, Jr.
332        Michal Jaegermann
333        John Jendro
334        Bob Jewett
335        Trevor Jim
336        Gary Johnson
337        Gjalt de Jong
338        Don Kark
339        Dan Karron
340        Brendan Kehoe
341        Steve Kelem
342        Vivek Khera
343        Axel Kielhorn
344        Masahiro Kitagawa
345        Peter Knaggs
346        Don Knuth
347        Jim Knutson
348        Heinz Knutzen
349        Fred Korz
350        Sebastian Kremer
351        Geoff Kuenning
352        Ralf Lammers
353        Markus Lautenbacher
354        Jack Lawler
355        Cherie N. Lawrence
356        Charles Levert
357        Doug Lind
358        Torbjoern Lindgren
359        Michael N. Lipp
360        Ernst Lippe
361        Richard Lloyd
362        John Lu
363        Dean Luick
364        Erik Luijten
365        Ian MacPhedran
366        Martin Maechler
367        Ross Maloney
368        Albrecht Melan
369        Lee Melvin
370        Evan Marcus
371        Simon Marshall
372        Dave Mason
373        W. E. Matson
374        Meinhard E. Mayer
375        Rob McMahon
376        Bob McQueer
377        Dean Messing
378        Chris Metcalf
379        Jim Meyering
380        Hal Miller
381        N.O. Monaghan
382        Chris Moore
383        Bernd Mueller
384        Ulrich Mueller
385        Guido Muesch
386        John Murdie
387        Peter Mutsaers
388        Erik Toubro Nielsen
389        Gaute Nessan
390        Keith Neufeld
391        Paul Nevai
392        David Neves
393        Mike Ogush
394        Thorstein Ohl
395        Piet van Oostrum
396        Joe Orost
397        Pham Dinh-Tuan
398        Gildas Perrot
399        Francois Pinard
400        Israel Pinkas
401        Paul Placeway
402        Mick Pont
403        Jim Prescott
404        Philippe-Andre Prindeville
405        Gary Puckering
406        Philippe Queinnec
407        Ashwin Ram
408        Bill Randle
409        Christopher Rath
410        Joachim Reinert
411        Rob Riepel
412        Marc Ries
413        Loren J. Rittle
414        Germic Robert
415        Philippe Robert
416        Doug Roberts
417        Kevin Rodgers
418        Santiago Rodriguez
419        Hagen Ross
420        Jonathan Ross
421        Arie Rudich
422        Jonathan Ryshpan
423        Bruno Salvy
424        Rich Salz
425        Julio Sanchez
426        Paul A. Sand
427        Ken Scales
428        Bart Schaefer
429        Greg Schaffer
430        Harald Schlangmann
431        Joachim Schrod
432        Vernon Schryver
433        Martin Schulz
434        Gregory Neil Shapiro
435        Guy Shaw
436        David Shepherd
437        Tom Shott
438        Joel Shprentz
439        Duncan Sinclair
440        Vivek P. Singhal
441        Klaus Singvogel
442        George M. Sipe
443        David M. Smith
444        Perry Smith
445        Luis Soltero
446        David Spuler
447        Richard Stallman
448        Kevin B. Stanton
449        Kjartan Stefansson
450        Ken Stevens
451        Andreas Stolcke
452        Thos Sumner
453        Bob Sutterfield
454        Stefan Taxhet
455        Gruppe Thi
456        Julian Thompson
457        Thomas Tornblom
458        Michael Toy
459        Bill Triggs
460        Goeran (G\366ran) Uddeborg
461        Marc Ullman
462        Koaunghi Un
463        Arjan de Vet
464        Andrew Vignaux
465        Christoph Vogelsang
466        Jochen Voss
467        David Waitzman
468        Peter Watkins
469        Gray Watson
470        Patrick Weemeeuw
471        Edward Welbourne
472        Petri Wessman
473        Michael Wester
474        Peter Whaite
475        Jon L. White
476        Johan Widen
477        Fredrik Wilhelmsen
478        Moritz Willers
479        Pace Willisson
480        Joerg Winckler
481        Bill Wohler
482        Michael J. Wolski
483        James Woods
484        Frank Wuebbeling
485        Avishai Yacobi
486        Ken Yap
487        Benny Yih
488        Peter Young
489        Jamie Zawinski
490        Christos S. Zoulas
Note: See TracBrowser for help on using the repository browser.