ConsolidateSpellingLibs

Differences between revisions 12 and 13
Revision 12 as of 2008-06-04 15:11:15
Size: 4341
Editor: pd956a57b
Comment: update with notes from UDS Prague
Revision 13 as of 2008-06-04 15:13:57
Size: 4047
Editor: pd956a57b
Comment: update use cases
Deletions are marked like this. Additions are marked like this.
Line 24: Line 24:
 * Karl from Germany, who knows that Thunderbird uses ispell, wonders why Thunderbird isn't able to spellcheck his emails using a German dictionary, although he has installed ingerman and iogerman. He also wonders why OpenOffice finds his dictionaries and Thunderbird doesn't. (TB uses an older version of ispell and dictionaries are installed via xpis.)

{{{ tfheen: please provide use cases which show how things are supposed to work, not how they are currently broken }}}
 * Hans pays by the byte for his internet connection. When installing Intrepid, it downloads a lot less for language support than Hardy did. He is happy that it installs faster, too.

Summary

Reduce the number of spelling libraries used in main; modify / extend applications currently not using the One True Spellchecker to do so.

Rationale

Supporting only one implementation and set of dictionaries eases long-term maintenance. Also, words which the user teaches to the spellcheckers will be consistently available throughout the system.

Use cases

  • Jane spell-checks a document in OpenOffice and adds a few new ones to her personal dictionary. Half an hour later she discusses the document with a colleague in ICQ. Gaim's spell checking automatically knows about the newly added words.

  • Hans pays by the byte for his internet connection. When installing Intrepid, it downloads a lot less for language support than Hardy did. He is happy that it installs faster, too.

Scope

This affects all supported packages in Ubuntu which have spell-checking capability.

Design

Status quo

Currently four implementations are in use in current Intrepid:

  • ispell: still used by some applications, it's getting replaced by aspell. Not used in Ubuntu main any more, and just 4 reverse dependencies in Universe (spell, sqwebmail, liblingua-ispell-perl, gnumed-client)
  • aspell: ispell replacement. Biggest users in main are Gnome and KDE. Other reverse dependency in main: ekg, pan, php5-pspell, python-gnome2-extras. About 20 reverse dependencies in universe.
  • myspell: ispell replacement. Not used by anything in Ubuntu any more.
  • hunspell: fork/replacement for myspell, dictionaries being compatible with myspell. Currently used by openoffice, Thunderbird, and Firefox.
  • Finnish currently uses the voikko system, which computes the multitude of possible word permissions from a common stem. Altaic (Turkish and related languages) and Ugric (Estonian, Finnish, Hungarian and relatives) languages with complex prefix and suffix systems generally work badly with above systems. So we will continue to support Voikko for Finnish. Since the supported languages of Voikko and hunspell do not overlap, this does not cause large compatibility problems.

ispell and aspell provide a C interface, myspell and hunspell provide a C++ interface. The enchant library provides a way to abstract from the underlying spell checker (aspell or myspell) and can be used to convert applications to a common interface.

Dictionary support is splitted out in its own spec ConsolidateDictionaries.

Goal in Intrepid

hunspell is the most modern implementation and considered the best choice in the free software world.

  • Change GNOME, KDE, and other packages in main to use hunspell.
  • Drop ispell/aspell dictionaries from language-support-* and from main.

  • Demote ispell to universe. Remove myspell from the archive.
  • Drop myspell dictionaries from language-support-* where a hunspell dictionary is available. Keep the myspell one for other languages.

Implementation

GNOME

KDE

KDE4 upstream already uses enchant/hunspell. Above Fedora specification has patches for KDE 3, but since Intrepid will only ship KDE 4.1, we do not need to do anything in particular for KDE for this specification.

Outstanding issues

The demotion of aspell has not been discussed. It would require porting php and ekg to hunspell, which hasn't happened upstream yet. Thus we will keep the aspell library itself in main for the time being.

ConsolidateSpellingLibs (last edited 2008-08-06 16:16:08 by localhost)