Loud ramblings of a Software Artisan

Thursday 16 July 2009


Today AbiWord is eleven year old according to this commit.

Over these 11 years, it has been ported to 5 different platforms/toolkits, 2 of these having been dropped (QNX and BeOS), 1 on life support (MacOS X). It has had 3 build systems. Plain Makefiles, autotools and then a rewrite of the autotools build system for better, not mentioning the "IDE" support. It has had 3 different servers, one at SourceGear, one at the University of Omaha, Nebraska and the current at the University of Twente in the Netherlands, running respectively Debian, FreeBSD and Fedora. Also 2 version control systems: CVS then Subversion.

According to ohloh, AbiWord have had 79 committers, including the 5 top with over 1400 commits, 405K Lines of C++ Code (and more with the other languages) 1929 source files in the tree. According to ohloh, again, AbiWord code base is worth close to 10M$ (I'm not convinced about that last statement from ohloh metrics, but why not).

And we forgot to celebrate the 10 years last year. :-(

Friday 3 July 2009

A real paper cut

AbiWord had a long lasting usability issue: pressing the insert key caused to toggle the overwrite mode on and off. When doing so we provided two different feedback to the user:

  • a display in the status that switch from "INS" to "OVR"
  • the caret (insert point) switch to red.

This lead to different kind of complaints:

  • "When I type, the text to the right is replaced"
  • "Why is the insert point red? What did I do?"

See bug 3641

This reveal two problems. The first one is that the user didn't realise something happened. I hit a random key (ie he didn't realise which one) and something happened. The second the user noticed the caret changed colour, but still didn't know why.

I had a few ideas in mind.

  • Change the feedback, and there are a few options for that: change the caret shape (colour is never enough), change the status bar message, any other kind of notification
  • Do something for the key binding: popup a dialog, use clippy, play a music just make it disabled by default.

How I did implement it:

  • For now I changed the status bar message to be more readable. INS and OVR are just confusing obscure and an anachronism inherited from the AbiWord first step over 11 years ago mostly in trying to clone MS-Word with some of its atrocities. Now it is in plain $LANG (English here, but it is / will be localised, I hope).
  • I added a UI to enable the toggle. We had that option already in place, it was just on by default, not bound to any UI. I'm not a big fan of adding options, but that's just the best way to do it for now.

What can be done in the future?

  • Change the caret shape when in overwrite mode. I didn't want to do it that late in the release cycle has it seems to have been source of problems. Also it need to be well thought too as we also deal with bi-directional writing.

But that was a real paper cut for AbiWord. Not the only one, just one of them, and it was not that hard to fix. For the sake of it, I did it watching the BSG mini-series for the 3rd time.