D.1 Important Items
Words in bold indicate how you should refer to the item when
discussing it with me or others.
D.1.1 Things that need to be done
These items need to be done before I consider Aspell finished. If you
are interested in helping me with one of these tasks please email
me. Good C++ skills are needed for most of these tasks involving
- Make Aspell Thread safe. Even though Aspell itself is not
multi-threaded I would like it to be thread safe so that it can be
used by multi-threaded programs. There are several areas of Aspell
that are potentially thread unsafe (such as accessing a global pool)
and several classes which have the potential of being used by more
than one thread (such as the personal dictionary). [In
- Enhance ispell.el so that it will work better with GNU
Aspell. [In Progress].
- Clean up copyright notices and bring the Aspell package up to
GNU Standards. [In Progress].
D.1.2 Things I would like to get done
I would like to get these done. However, I may still consider Aspell
finished without. They will probably eventually get
implemented. However, I could still use help with them.
- Better support for compound words. The support for
conditional compound words found in Aspell versions 0.50
and earlier is no longer available since no one seems to be using
it. Support for unconditional compound words is still
available. See Compound Words.
- Be able to accept words with spaces in them as many languages
have words, such as a word in a foreign phrase, which only makes sense
when followed by other words. See Words With Symbols in Them.
- Reorganize manual to make it easier to understand and to make it
possible to break out useful man pages.
- Support soundslike lookup with affix compression. I think it
is possible, although I don't know how effective it will be. The basic
idea is to affix compress the soundslike codes and then match the
codes up with affix compressed words. If you are interested,
email email@example.com, and I will explain it in more
- Use Lawrence Philips' new Double Metaphone algorithm. See
http://aspell.net/metaphone/. The main task involved
here is converting the algorithm into table form. This will take some
time but there is no real programming experience required. If you want
to help with Aspell but don't have any real programming experience,
this would be a great place to start.
- Rank suggestions based on frequency information. Both global
frequency and document specific frequency can be used. The latter will
require that the whole document be made available to the spell checker.
Also use frequency information to flag words which are found in the
dictionary but not in common usage, and thus might not be what was
- Support a "dual-script" mode where Aspell can use a separate
dictionary depending on which script it detects the current word in, the
two dictionaries can have nothing in common, ie an English one and a
Russian one for example. This will not support two languages that
use the same script as that is a lot more complicated. For example if
the word is misspelled which dictionary should it use for the
- Write a GUI for the Aspell utility. Ideally it should be able to do
everything the Aspell utility can do and not just be able spell check
- Develop a more powerful C API for Aspell. Ideally this API should
allow one to perform all the tasks the Aspell utility can do. This
included the ability to check whole documents, and create
dictionaries, among other things.
- Create a C++ interface for Aspell, possibly on top of the C one.