On Tue, Dec 29, 2009 at 08:54:21AM -0800, patrick o'leary wrote:

> But at the same time, the rational behind finding a name that most folks are
> familiar with, is kind of like sales / marketing talk....

You probably mean that to be derogatory, but it's related and not in a bad
way.  This is about effective communication, which marketing people
understand.

In addition to working on Lucy, I'm the primary author of KinoSearch, a loose
port of Lucene to Perl/C.  KinoSearch's main index writer class used to be
called "InvIndexer", partly to highlight the fact that it worked with
"inverted indexes", partly to lessen the overload burden on the word "index",
and partly because it was easy to say.  And some people actually like the term
and have adopted it:

    http://www.rectangular.com/pipermail/kinosearch/2009-December/007164.html

    > "invindex"?  Interesting choice.  I always thought it was a good word,
    > but I moved away from that because people didn't grok it right away.

    I always like the word. So I stole it. :) It is unambiguous, even if
    people do not know what it means right away.

So, it worked as intended within a small, elite group.  But let me tell you,
it has mostly been a pain in the neck.  I've trained people on KinoSearch,
I've given talks, etc, and the specialized terminology has just slowed most
people down.  It has annoyed more than it has clarified.

Since that class's name has switched to "Indexer", things have gotten easier.
People remember that class easily, it rolls off the tongue.  They learn it
quickly, and there are no pauses while they try to recall jargon.  I'm very
pleased with how the change has worked out.

> This is open source, not a commercial entity that needs to have features
> that can fit on a brochure.

As an open source author, I take great pride crafting intutive, simple APIs,
and in communicating effectively in general.  

At the micro-level, that includes writing good email, good documentation, good
comments... always using all communication channels to the best advantage.
(For instance by aggressively pruning quoted material and rewrapping it so
that may even be clearer than in the poorly formatted original).

At the high level, that means designing good class hierarchies that people can
navigate easily.  Using intuitive names -- so long as they are accurate -- is
an important part of that.

If "CartesianTier" more accurately describes the class than alternatives such
as CartesianGrid or CartesianTile, please make that case.  I have to say, I'm
a little confused.  I assumed that a CartesianTier corresponded to a single
zoom level: one tier.  CartesianGrid seemed like an equivalent, using more
popular terminology.  But in other parts of this conversation, people have
made references to trees.  This isn't an R-Tree implementation, is it?  

Please pick a name that will make it as easy as possible for me to understand.
As a consumer of your API, I will thank you for working hard at the design
stage to save me time and effort down the road.  

Cheers,

Marvin Humphrey


Reply via email to