### 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 coding.

- Create a generic filter to handle multi-character letters such as ``"a`' or ``\"a`' for ä. This filter should make use of the already exiting normalization code if possible.
- 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 Progress].
- 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 aspell-devel@gnu.org, and I will explain it in more detail.
- 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 intended.
- 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 suggestions?
- 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 a document.
- 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.