home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / isp31b3.zip / ispell / Contributors < prev    next >
Text File  |  1995-07-10  |  16KB  |  472 lines

  1. Ispell has a long and convoluted history.  I have tried to track down
  2. as much as possible about it and condense it below.
  3.  
  4. THE DEVELOPMENT OF SPELL-CHECKING AND THE FIRST ISPELL
  5.  
  6. The following background information on spelling checkers in general,
  7. and 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
  46. program was called SPELL and was written in 1971.  Ralph provided me
  47. with a reference to "Computer Programs for Spelling Correction", by
  48. James L. Peterson, Springer-Verlag, Berlin, 1980, No. 96 in the series
  49. "Lecture Notes in Computer Science."  This book states that Ralph's
  50. SPELL program, which was the direct ancestor of ispell, was the first
  51. computer program written for checking the spelling of text documents.
  52. The 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.    
  64. The Tenex version of ispell was later revised by W. E. Matson (1974),
  65. and 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.  
  97. Michael 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.  
  113. DEVELOPMENT OF THE C/UNIX VERSION OF ISPELL
  114.  
  115. In 1983, Pace Willisson (pace@prep.ai.mit.edu) wrote a C/Unix version
  116. from scratch, based on the ispell documentation.
  117.  
  118. In 1987, Walt Buehring revised and enhanced ispell, and posted it to the
  119. Usenet along with a dictionary.  In addition, Walt wrote the first version
  120. of "ispell.el", the emacs interface.
  121.  
  122. Geoff Kuenning (geoff@ITcorp.com, that's me, and by the way I
  123. pronounce it "Kenning"; the "u" is silent) picked up this version,
  124. fixed some bugs, and added further enhancements, all of which made me
  125. the de-facto ispell maintainer for the net.  I also put quite a bit of
  126. work into improving the quality of the dictionaries.  In 1987 I began
  127. work on the "munchlist" script, which I originally intended to be used
  128. to add flags to personal dictionary entries.  At the same time I was
  129. studying German, and wanted to use ispell to check the papers I was
  130. writing for that class.  After thinking about it for some time, I
  131. realized that the suffix flags could be table-driven, which would both
  132. add flexibility and would get rid of certain difficult-to-find bugs.
  133. In 1988 I rewrote major portions of the code to do this, resulting in
  134. the first multi-lingual version.  Ole Bjoern Hessen (obh@ifi.uio.no)
  135. in Norway alpha-tested this version and provided several important
  136. enhancements.
  137.  
  138. Bob Devine (vianet!devine) provided two larger dictionaries (which
  139. became the basis for english.1 and english.2) to me for inclusion
  140. with subsequent releases.
  141.  
  142. Ashwin Ram (ram@cs.yale.edu) made substantial enhancements to Walt
  143. Buehring's emacs interface, and provided them to me for inclusion
  144. with an earlier release.
  145.  
  146. The emacs interface was then completely overhauled by Ken Stevens
  147. (stevens@hplabs.hp.com), who also beta-tested the software and
  148. without whom this posting would not have been possible.  If there's a
  149. feature in the emacs interface that you like, you probably have Ken to
  150. thank for it.  His efforts have been tireless for many years.
  151.  
  152. Martin Boyer made major contributions to the munchlist script,
  153. including producing a version that runs under perl (see
  154. languages/Where for instructions on how to get that version).
  155. Philippe-Andre Prindeville provided xspell (a Motif-based X
  156. interface), and Moritz Willers provided a NeXTStep interface.
  157.  
  158. DEVELOPMENT AND DEATH OF ISPELL 4.0
  159.  
  160. Meanwhile, and unbeknownst to me, Pace Willisson was working on his
  161. own improvements to ispell.  He focused primarily on dictionary size
  162. and startup time.  His solution was a dictionary compression algorithm
  163. that detected and encoded frequent letter pairs.  This also reduced
  164. the time needed to read it in.  Pace also changed some internal data
  165. structures to improve startup time.  Pace and I eventually discovered
  166. each other's efforts, and discussed re-merging our changes, but we
  167. decided that there would be too much work involved.  This was partly
  168. because I was close to a release and didn't want to delay it with an
  169. extensive and error-prone merge.
  170.  
  171. In late 1992 (if my memory serves correctly), Richard Stallman
  172. contacted me, asking for permission to distribute ispell as part of
  173. the GNU suite.  I responded that he was welcome to distribute it, but
  174. that I was not willing to place my software under the Gnu Public
  175. License.  Through a misunderstanding, neither of us considered the
  176. possibility of finding a compromise license that both could live with.
  177. So Richard started a search for an alternate version, and found Pace
  178. working right in his back yard.
  179.  
  180. I have been told that when FSF first learned of Pace's version, they
  181. again considered using International Ispell instead because it was
  182. both more popular and more capable, but this idea was rejected due to
  183. the license misunderstanding.  Instead, FSF enhanced Pace's version
  184. somewhat and called it ispell 4.0, apparently in the hopes that by
  185. numbering the version higher, it would become the standard.
  186.  
  187. When ispell 4.0 was released, much confusion ensued.  Many ispell
  188. users innocently "upgraded" to 4.0 and then screamed when they could
  189. not find features to which they had grown accustomed.  Europeans in
  190. general were angered by the apparent provincialism shown by the
  191. "dropping" of international support.  I found myself inundated with
  192. questions about a version I had never heard of or seen.
  193.  
  194. One of the earliest and most common suggestions was that FSF should
  195. rename their version "gispell".  This had a lot of precedent, both in
  196. the naming of other FSF utilities and in the then-recent change of the
  197. suffix used by gzip from ".z" to ".gz".  Unfortunately, the FSF
  198. refused to do this.  I may have inadvertently contributed to this
  199. refusal with a Usenet posting in which I tried to clarify what had
  200. happened, pointing out that the FSF version was more recently related
  201. to Pace's than my own.  This may have been seen as an acknowledgment
  202. that FSF should have the rights to the name "ispell," and that I
  203. should rename my version.
  204.  
  205. A flame war arose, and I decided that the only way to solve the
  206. problem was to rename my version to eliminate the confusion.  However,
  207. at about the same time Richard Stallman and I began negotiating via
  208. e-mail.  We itemized and clarified his objections to my license, and I
  209. learned from a third party that FSF is willing to distribute software
  210. that falls under the University of California license (also known as
  211. the Berkeley license).  Richard and I agreed that if I changed my
  212. license to be a paraphrase of the UC license, FSF would be willing to
  213. distribute my version with no changes.  Since then, ispell 4.0 has
  214. been dropped by FSF and has pretty well disappeared from the net,
  215. leaving 3.1 as the version of choice for nearly everyone.
  216.  
  217. OTHER CONTRIBUTORS
  218.  
  219. Many other enhancements and bug fixes were provided by the numerous
  220. people listed below.  Do not assume, because I omit mention of their
  221. specific contributions, that these persons were any less instrumental
  222. in creating the version of ispell that you see before you.  Every one
  223. of them made a significant contribution, and it is only a lack of
  224. space that prevents me from detailing these contributions.  This
  225. version of ispell is truly a cooperative effort, and it would not
  226. exist without the help of the generous souls listed above and below.
  227.  
  228. A full list of contributors, including those mentioned above, follows.  (I
  229. think I have listed everyone, but if you contributed and aren't listed,
  230. let 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.     Michael C. B. Ashley
  243.     Bertil Askelid
  244.     Eric Backus
  245.     Isaac Balbin
  246.     Neal Becker
  247.     Tony Bennett
  248.     R. Bernstein
  249.     Jim Berry
  250.     Peter A. Bigot
  251.     E. Jay Berkenbilt
  252.     Benno Blumenthal
  253.     Uwe Bonnes
  254.     Marc Boucher
  255.     Martin Boyer
  256.     Ethan Bradford
  257.     Nicolas Brouard
  258.     Peter Bruells
  259.     Ferd Brundick
  260.     Jack Bryans
  261.     Walt Buehring
  262.     Richard Caley
  263.     John D. Campbell
  264.     Keith Cantrell
  265.     John Capo
  266.     Bill Carpenter
  267.     Jesus Carretero
  268.     Michael W. Chang
  269.     Wei-Jou Chen
  270.     Peter Chubb
  271.     Stewart Clamen
  272.     Henri Cohen
  273.     Ken Cox
  274.     Robert Crowe
  275.     Damian Cugley
  276.     Ian Dall
  277.     Kevin Dalley
  278.     David Dalton
  279.     Neal Dalton
  280.     Hugh Daniel
  281.     Mark Davies
  282.     Frederic Devernay
  283.     Bob Devine
  284.     Detlev Droege
  285.     Steve Dum
  286.     Alexander Durner
  287.     Jiri Dvorak
  288.     Les Earnest
  289.     David Edelsohn
  290.     Jeff Edmonds
  291.     Eric Eide
  292.     Orjan Ekeberg
  293.     Kevin Ellwood
  294.     Michael Ernst
  295.     L. Van Eycken
  296.     Rik Faith
  297.     Ralf Fassel
  298.     George Ferguson
  299.     Jeff Finger
  300.     Werner Fink
  301.     John Fitch
  302.     Peter Flatau
  303.     Georg Gieseke
  304.     Ralph. E. Gorin
  305.     Amos A. Gouaux
  306.     Michael Gschwind
  307.     Bhusan Gupta
  308.     Michael A. Guravage
  309.     Chris Hadley
  310.     Mark Hanning-Lee
  311.     John Heidemann
  312.     Arne Helme
  313.     Ole Bjoern Hessen
  314.     Denis Howe
  315.     Joe Huber
  316.     Brian Hunt
  317.     imt3b2!imtsft (true name unknown)
  318.     Lester Ingber
  319.     Nick Ing-Simmons
  320.     Richard L. Jackson, Jr.
  321.     Michal Jaegermann
  322.     John Jendro
  323.     Bob Jewett
  324.     Trevor Jim
  325.     Gary Johnson
  326.     Gjalt de Jong
  327.     Don Kark
  328.     Dan Karron
  329.     Brendan Kehoe
  330.     Steve Kelem
  331.     Vivek Khera
  332.     Axel Kielhorn
  333.     Masahiro Kitagawa
  334.     Peter Knaggs
  335.     Don Knuth
  336.     Jim Knutson
  337.     Heinz Knutzen
  338.     Fred Korz
  339.     Sebastian Kremer
  340.     Geoff Kuenning
  341.     Ralf Lammers
  342.     Markus Lautenbacher
  343.     Jack Lawler
  344.     Cherie N. Lawrence
  345.     Charles Levert
  346.     Doug Lind
  347.     Torbjoern Lindgren
  348.     Michael N. Lipp
  349.     Ernst Lippe
  350.     Richard Lloyd
  351.     John Lu
  352.     Dean Luick
  353.     Ian MacPhedran
  354.     Martin Maechler
  355.     Ross Maloney
  356.     Albrecht Melan
  357.     Lee Melvin
  358.     Evan Marcus
  359.     Simon Marshall
  360.     Dave Mason
  361.     W. E. Matson
  362.     Meinhard E. Mayer
  363.     Rob McMahon
  364.     Bob McQueer
  365.     Dean Messing
  366.     Chris Metcalf
  367.     Hal Miller
  368.     N.O. Monaghan
  369.     Chris Moore
  370.     Bernd Mueller
  371.     Ulrich Mueller
  372.     Guido Muesch
  373.     Peter Mutsaers
  374.     Erik Toubro Nielsen
  375.     Gaute Nessan
  376.     Keith Neufeld
  377.     Paul Nevai
  378.     David Neves
  379.     Mike Ogush
  380.     Thorstein Ohl
  381.     Piet van Oostrum
  382.     Joe Orost
  383.     Pham Dinh-Tuan
  384.     Gildas Perrot
  385.     Francois Pinard
  386.     Israel Pinkas
  387.     Paul Placeway
  388.     Mick Pont
  389.     Philippe-Andre Prindeville
  390.     Gary Puckering
  391.     Philippe Queinnec
  392.     Ashwin Ram
  393.     Bill Randle
  394.     Christopher Rath
  395.     Joachim Reinert
  396.     Rob Riepel
  397.     Marc Ries
  398.     Loren J. Rittle
  399.     Germic Robert
  400.     Philippe Robert
  401.     Doug Roberts
  402.     Kevin Rodgers
  403.     Santiago Rodriguez
  404.     Hagen Ross
  405.     Arie Rudich
  406.     Jonathan Ryshpan
  407.     Bruno Salvy
  408.     Rich Salz
  409.     Julio Sanchez
  410.     Paul A. Sand
  411.     Ken Scales
  412.     Bart Schaefer
  413.     Greg Schaffer
  414.     Harald Schlangmann
  415.     Joachim Schrod
  416.     Vernon Schryver
  417.     Martin Schulz
  418.     Gregory Neil Shapiro
  419.     Guy Shaw
  420.     David Shepherd
  421.     Tom Shott
  422.     Joel Shprentz
  423.     Duncan Sinclair
  424.     Vivek P. Singhal
  425.     Klaus Singvogel
  426.     George M. Sipe
  427.     David M. Smith
  428.     Perry Smith
  429.     Luis Soltero
  430.     David Spuler
  431.     Richard Stallman
  432.     Kevin B. Stanton
  433.     Kjartan Stefansson
  434.     Ken Stevens
  435.     Andreas Stolcke
  436.     Thos Sumner
  437.     Bob Sutterfield
  438.     Stefan Taxhet
  439.     Gruppe Thi
  440.     Thomas Tornblom
  441.     Michael Toy
  442.     Bill Triggs
  443.     Goeran (G\366ran) Uddeborg
  444.     Marc Ullman
  445.     Koaunghi Un
  446.     Arjan de Vet
  447.     Andrew Vignaux
  448.     Christoph Vogelsang
  449.     Jochen Voss
  450.     David Waitzman
  451.     Peter Watkins
  452.     Gray Watson
  453.     Patrick Weemeeuw
  454.     Petri Wessman
  455.     Michael Wester
  456.     Peter Whaite
  457.     Jon L. White
  458.     Johan Widen
  459.     Fredrik Wilhelmsen
  460.     Moritz Willers
  461.     Pace Willisson
  462.     Joerg Winckler
  463.     Bill Wohler
  464.     Michael J. Wolski
  465.     James Woods
  466.     Frank Wuebbeling
  467.     Avishai Yacobi
  468.     Ken Yap
  469.     Benny Yih
  470.     Jamie Zawinski
  471.     Christos S. Zoulas
  472.