Merc, 

Sounds like we're in violent agreement here.  Figuring out good ways to take 
advantage of existing ispell dictionaries is a Good Thing for users, even 
though it gives developers fits.  

That's why we chose to clean up and integrate portions of the ispell code 
into AbiWord, so that we could leverage those dictionaries across all our 
supported platforms.  The fact that you can have interactive spell-checking 
(squiggles, dictionaries, and popup corrections) running in real time off 
those dictionaries is quite an achievement.  

Even more so, because that code, and those dictionaries, are *brittle*.  
Darren Benham, Justin, and others have done battle with some ferocious 
problems (leaks, endian-ness, multiple languages, etc.) to get to where we 
are today.  Even so, nobody's managed yet to figure out how to properly 
translate accented characters (from Unicode to whatever ispell expects) so 
that lookups will work in French, etc.  For more details, see the relevant 
POW from last month: 

  http://www.abisource.com/mailinglists/abiword-dev/99/October/0325.html

I know you're interested in solving a larger issue -- providing spell 
services to lots of applications on your platform of choice -- and we'd love 
it if you or someone else could solve that problem for us.  :-)

In the mean time, we'll continue to work to make sure we have a single 
solution which Just Works on all our supported platforms.  We'd also like to 
make sure that solution isn't too closely tied to AbiWord, so that we can 
reuse it for other apps in AbiSuite.  We've got a ways to go on this.  

At the moment, our spelling APIs are more entwined with our app-specific 
logic than we'd like, but at least it works.  As folks have time, we'd like 
to do a better job of isolating dictionary lookup services from the rest of 
the program behind a clean, small API.  Once this is done, it should be much 
easier to swap out the hardwired ispell-based support for other 
alternatives, including:

  - piping out to ispell, where applicable
  - hooking into other platform-specific services, as available, or 
  - some other XP solution which is cleaner or better.  

Note that we've already been implementing certain peripheral spell-related 
services (such as ignore lists, custom dictionaries, etc.) outside of the 
ispell codebase to make it easier to change dictionary engines later on as 
they become available.  

bottom line
-----------
As always, the best way to change our minds about design decisions like this 
is to show us the source for another approach which works better than what 
we've currently got.  

Endless discussions over email can get very frustrating without necessarily 
resolving anything.  Checking in the right patch is a *much* more satisfying 
resolution to any debate.  :-)

Paul



Reply via email to