Features Download
From: Emmanuele Bassi <ebassi <at> gmail.com>
Subject: First weekly status report on GNOME Dictionary
Newsgroups: gmane.comp.gnome.desktop
Date: Saturday 12th November 2005 03:04:57 UTC (over 12 years ago)
[Cc:-ing desktop-devel, and with my Flame-Resistant,
I-Can't-Believe-It's-Not-Asbestos jacket on]

Hi all.

In order to let others know how's the status of GNOME Dictionary
Breaking is progressing (and in order to force myself hacking on it
regularly ;-)), I'm sending the

	Not So Weekly Status Report on GNOME Dictionary

Containing the status of the review-slash-breaking-slash-rewrite process
of the GNOME Dictionary application and applet.  Okay, it won't be
weekly, and I could simply use my blog (see signature and link on
Vincent's own blog) instead of email; nevertheless, having someone to
report to makes room for public discussion, and since I'm breaking
(mostly) working stuff better be sure that some discussion actually
happens at all.

So, what have you been doing so far?

First of all, I tried to salvage the ugly mess that was implementing the
dictionary protocol (gnome-utils/gdictsrc/dict.[ch]).  For the lack of
better (or non 12-years-old-sister safe) words, I won't use the ones I
came up while auditing the said code.  Suffice is to say that the code
couldn't be salvaged without a massive rewrite process anyway, so I
scrapped out the implementation, and created a new, GObject-based one.
You can see a preliminary version of the API usage on my weblog[1]; I've
also attached to this mail the GdictContext API, for reference.  How's
the rewrite going?  I've pretty much implemented all the needed client
commands for a RFC2229-compliant client, testing it both on dict.org and
on my local dictionary server.  The MATCH command is still missing, but
I evaluate that will be a matter of 15 minutes worth of coding, in the
new infrastructure.  About the new infrastructure: I'm pretty proud of
my implementation; for example, now the client will advertise itself
(using a predefined string or a custom one), and all the commands get
queued; thus, you can set up a batch of commands (connect-lookup
databases-lookup strategies-disconnect) without having to actually
*wait* inside the callback for a command to complete its run.  This will
allow lazy data loading, and close one of my pet peeves about the
current GNOME Dictionary, that is the absence of a CLI output; I'd like
to write into a terminal:

	$ gnome-dictionary --lookup "GNOME" --no-window

and have my definition of "GNOME" with no fuss (yes, I know that there
already is "dict", but what's the point of having a dictionary client in
GNOME if I also have to install dict?).

Another point of the new infrastructure is that lives all inside a
shared library; which means that we can now have the much needed
separation between the back-end code and the UI and the
application/applet.  Also, this means we can provide language bindings
for it, allowing other applications to interface to dictionary servers
(and I specifically thinking about the Deskbar Applet, here, even though
I think there already is a dictionary protocol implementation in Python,
using one based only on platform stuff would shorten the dependency

What are you planning to do next?

First of all, finishing the client implementation (also, authentication
could be added, if I can come up with a UI for it); adding a way to get
some data like server's capabilities; caching of the databases and
strategies lists, etc.  Also, I'll do some code polishing and
consolidation.  This shouldn't take long - probably no more than a week.

The UI is what comes next.  The GdictEntry will be the first to be
checked; I'd like to use the SexyIconEntry by Christian Hammond[2] as a
base for this widget, in order to have something more appealing (for the
applet, mostly)- but first I've got to check out how it behaves with

The next widget to be targeted will be GdictSpeller; I'm still dubious
about the form of this widget, or if it's useful at all.

Finally, GdictDefbox.  The main widget is pretty much right as it is, so
I'll just update it in order to use the new GdictContext; I'll move the
"find" dialog into a bottom pane a-la-Firefox, and I think that will be
the most relevant change, UI-wise.

This would complete the road-map for the GNOME Dictionary Library
(libgdict): the application and the applet would simply fall into place,
once this has been sorted out.

When do we see the code?

This is the worst part of all.  Since I'm basically rewriting
everything, up until I can actually provide a working version of GNOME
Dictionary I'd like not to taint the CVS repository; but I also
understand the need for looking at the code, and comment on it - so, as
soon as I'm able to create a full *text* client using libgdict, I'll
upload a tarball of it on my web space.  If it passes a review from the
gnome-utils maintainer, I'll begin by creating a branch of gnome-utils
HEAD with the new code, and keep working on it.

As usual, comments, questions and flames here on the list or in private



[1] http://log.emmanuelebassi.net/2005/11/07/dictionary-applet3/
[2] http://wiki.chipx86.com/wiki/Libsexy#SexyIconEntry

Emmanuele Bassi - 
Log: http://log.emmanuelebassi.net
CD: 4ms