ispell is probably the best known spell checker on *NIX systems. It has a long, if not glorious history. Earliest versions were written in 1971, originally in PDP-10 assembly, and first C version was done in 1983. The program was based on the ideas from ITS/Twenex spell/ispell program. The program appears to be under BSDish license.
ispell has become more and more sophisticated over time. It is now multilingual, but it's still not good for spelling some languages (comment from pen name "disgruntled Finn").
Most users use ispell indirectly, and there are libraries for many programming languages to use it. For example, Emacs variants can use ispell near-transparently, as does any application that uses libpspell (Abiword is one of these).
ispell can spellcheck files in many formats. Plain text is obviously supported, as is TeX/LaTeX, nroff/troff, and HTML/SGML/XML - this covers most sensible formats. (Debian version also appears to spell-check Debian package control files...)
ispell has aged pretty well - it still does its job pretty well. The problem is that it's not too good at finding alternate spelling suggestions, and, of course, the fact that some languages are not really feasibly spellchecked. ispell is still being improved, of course, and alternative projects have surfaced, one of which is aspell.