As of GNU Aspell 0.60.1 Aspell should be able to completely replace Ispell for most applications. The Ispell compatibility script should work for most applications which expect Ispell. However there are some differences which you should be aware of.
Aspell can be used as a drop in replacement for Ispell for programs that use Ispell through a pipe such as Emacs and LyX. It can also be used with programs that simply call the ispell command and expect the original file to be overwritten with the corrected version.
If you do not have Ispell installed on your system and have installed the Ispell compatibility script then you should not need to do anything as most applications that expect Ispell will work as expected with Aspell via the Ispell compatibility script.
Otherwise, the recommended way to use Aspell as a replacement for Ispell is to change the ispell command from within the program being used. If the program uses ispell in pipe mode simply change ispell to aspell. If the program calls the ispell command to check the file, then change ispell with aspell check.
If that is impossible then the run-with-aspell script can be used. This script modifies the patch so that programs see the Ispell compatibility script instead of the actual true ispell command. The format of the script is:
where command is the name of the program with any optional arguments.
The old method of mapping Ispell to Aspell is discouraged because it can create compatibility problems with programs that actually require Ispell such as Ispell's own scripts.
Nevertheless, Aspell is not Ispell, nor is it meant to completely emulate the behavior of Ispell. The aspell command is not identical to the ispell command when not used in “pipe” mode. If an application expects the ispell command, then the Ispell compatibility script should be used instead.
The Ispell compatibility script provides the following Ispell functionally.
However the Ispell script is currently unable to emulate
the '-A' pipe mode. This is different from the normal pipe mode in
that the special
&Include_File& command is recognized.
Aspell, and thus the Ispell compatibility script, recognizes most of the options that Ispell uses except for the '-S', '-w' and '-T' options. The Aspell command will simply ignore these options if it sees them.
The interface used by Aspell when checking individual files is
slightly different than Ispell's. In particular the default
keymappings are not the same as the ones Ispell uses. However Aspell
supports using the Ispell keymappings via the keymapping
option. To use the Ispell keymappings set the kepmapping
ispell. This can be done on the command line by
adding using the command:
aspell check --keymapping=ispell ...
or with the Ispell compatibility script
ispell --keymapping=ispell ...
The Ispell keymapping can always be used when the Ispell compatibly script is called by uncommenting the indicated line in the ispell script.
The Aspell pipe mode should be identical to the Ispell pipe mode except if the line starts with a '$$' as that will trigger special Aspell only commands or if the line starts with a '~' which is ignored by Aspell.
The compiled dictionary format is completely different than Ispell's. Furthermore the format of the language data files' are different than Ispell's affix file. However, all known Ispell dictionaries were converted to Aspell format, except for Albanian (sq) as I was unable to find the source word list.
The naming and format of the personal dictionary is also different. However, Ispell personal dictionaries can be imported using the aspell-import script. See Using aspell-import. The Ispell personal dictionary is simply a list of words while the Aspell one is a list of words with a header line. Thus it is also fairly easy to convert between the two. See Format of the Personal Dictionary.
The only major area where Ispell is superior to Aspell is in the handling of multi character letters such as old ASCII encoding of accented characters.
However, Aspell can handle UTF-8 documents far better than Ispell can.