An open letter to Rubyists - Naming things

Is it just me, or do other Rubyists find it difficult to remember what a
whimsically named module or plug-in was called that they saw on this or
some other forum just last week. I’ve only been into Ruby for a few
months now, and in that time I’ve seen probably a hundred announcements
for cool new code that I can drop into my projects to do cool new things
that otherwise would not have been worth the trouble…

…I’ve also, a few hundred times, seen an announcement a few days or
weeks later announcing the next version of something I’ve heard of
before, and had absolutely no faintest recollection of what said module
or plugin does.

Just to name a few in no particular order:
Juggernaut, Capistrano, ferret, Mongoose, Curses, RMajic, Selenium,
BlueCloth, ozimodo, Mechanize,Korundum, Nitro, Mongrel

You get the idea. How is one supposed to remember these names long
enough to find a use for said jewel and become more familiar with it.
Instead, one finds a use for something he’s seen before and finds it
nearly impossible to find the module again due to the cleverly disguised
name chosen by it’s author.

There are a zillion examples of things that are better named, like the
“acts_as_authenticated” plugin I’m looking at now. It may not seem very
original, but I can sure find it when I need it.

Just food for thought for the many great people cooking up the next
batch of great stuff to plug in to my projects…

thanks for listening,
jp

Jeff -

I think there are a few flaws in your argument. For starters, many of
the things (though not all) that you’ve listed as “bad” examples can’t
neatly be summed up in a single sentence. Capistrano/SwitchTower, for
starters (and that had a good name until it got C&D’d).
acts_as_authenticated does what it says on the tin, but little else.

Secondly, well, the other naming style has problems too. There’s an
acts_as_taggable gem for Rails, and another acts_as_taggable plugin.
Both work differently, have different functionality, and are
frequently confused.

By contrast, I’d argue that Mongrel (eg) is a memorable name because
it’s unique, and it’s unlikely anyone else would bother calling their
product Mongrel after one exists. By contrast, when you name things
for what they do… what if you don’t like the version that exists and
write your own? You have to name it differently to avoid a clash, but
then you stop saying what it does.

Ruby is not the only language that has whimsical names for software,
and, tbh, people tend to remember names for things they need. Mongrel,
Ferret, Bluecloth - I use this, so I know immediately what they are. I
remembered what they are because I needed their functionality. By
contrast, I don’t know what ozimodo or Korundum are (without
Googling), so I either a) haven’t heard of them yet or b) decided I
didn’t need what they do.

In short: I appreciate your concern, but am not sure it’s an issue.
Besides: the language is called Ruby. Perl is an acronym. PHP is an
acronym. Ruby is just a name. It means nothing. Why would anyone want
to remember the name of a language that doesn’t explain what it does?

On 7/21/06, Jeff P. [email protected] wrote:

Juggernaut, Capistrano, ferret, Mongoose, Curses, RMajic, Selenium,
BlueCloth, ozimodo, Mechanize,Korundum, Nitro, Mongrel

First, the names you can’t blame on the community:

  • Curses is an ages old C library.

  • RMagick (I could’nt find any project named RMajic, so I assume this
    is what you meant), provides bindings to ImageMagick, another ages old
    C library.

  • Mechanize is named as such because of the similarities to the
    long-standing perl module of the same name which it is modeled after.

  • Selenium is a library (I think it’s Javascript?) for client side
    testing in a browser. The Ruby bridge is just one of many others in
    other languages for “remote controlling” the browser tests.

Second, the names which have some sort of mnemonic to their
functionality:

  • Ferret is named after the verb (which in turn is named after the
    animal, due to characteristic behavior). To “ferret” is “to uncover
    and bring to light by searching” (dictionairy.com), which happens to
    be exactly the aim of the library.

  • Juggernaut: The library aims to provide a way for the browser
    (client) and server to have a persistent connection so the server can
    push data to the client (as opposed to the request/response HTTP
    cycle). It just keeps pushing and pushing and pushing… (can’t stop
    it, it’s a juggernaut!)

  • Korundum provides Ruby bindings for KDE. So you can blame the K on
    the KDE fetish for starting everything with a K. :slight_smile: And corundum is
    “an extremely hard mineral … that occurs in gem varieties such as
    ruby” (also from dictionary.com).

  • Textile is a popular wiki-style markup format (name plays on the
    word “text”). RedCloth is an implementation of Textile in Ruby
    (Textile -> Cloth, get it? And it’s red because it’s Ruby…).
    Markdown is another popular markup format. Well if Textile has
    RedCloth, then Markdown should have *Cloth, just for name grouping,
    right? So BlueCloth it is…

  • Car racers use Nitro (nitrous oxide) to go faster. Nitro = fast,
    boosted speed. The web framework attempts to leverage that connotation
    regarding it’s own capabilities.

I can’t really think of a mnemonic for the others (Mongoose’ and
Mongrel’s names are derived from perceived characteristics and
heritages of the libraries, respectively, but not from functionality).
But I can attest that at least in the case of Capistrano (which had
been formerly named SwitchTower before receiving a C&D letter) the
choice of a name was at least in part restricted to something original
and unrelated to the project in order to avoid yet another C&D. Names
are tricky things…

All in all, I prefer creatively named libraries. While it may take
multiple exposures before the name sticks, the mnemonics – or
outright irrelevance – of the name serve to stick it in my mind
better. And the authors are served better because their name sticks
out, rather than being yet another of 10-15 similarly named libraries
competing in the same space. And if you think that there isn’t or
shouldn’t be competition between libraries, just look at KDE vs Gnome,
or Rails vs. Nitro vs. Borges vs …, or even Ruby vs. Perl vs. Java
vs. Python vs. everything else.

Jacob F.

On Jul 21, 2006, at 8:32 AM, Jeff P. wrote:

Is it just me, or do other Rubyists find it difficult to remember
what a
whimsically named module or plug-in was called that they saw on
this or
some other forum just last week.

Aside from what others have said, some names are copied from pre-
existing things. This has been done to increase memorability. At
least everyone already familiar with the non-ruby version will know
what it is. Examples include curses and inject.

– Elliot T.

On 2006-07-21, Jeff P. [email protected] wrote:

or plugin does.
I agree with the other posters that such naming of software packages is
fine. A descriptive name is awkward and will tend to be too long to
be practical. (Naming a module or a class, on the other hand, is a
completely different issue where finding a short, descriptive, accurate
name is critical.)

But there is a simple solution to the problem you point out above:
Simply establish a protocol/process in which every announcement about a
package always includes, near the beginning of the announcement, a short
description of what the package does. This also applies to the home
page of such packages. (Or, alternatively, there should be an obvious
“about X” link for package X.) This is common sense and people should
be doing this anyway. IMO, this is what you should be asking for.

I admit that I occasionally get irritated reading a post about a new
release of library FOO and have no idea what FOO is for (and don’t want
to
take the time to browse its web site to see what it does). But my
complaint
in these cases is not about the name, it’s about the lack of common
sense
of not including a short description of the package.

Jeff P. wrote:

jeff wrote:
“Is it just me, or do other Rubyists…”

Apparently it is just me. Carry on and name things in the most
obfuscated manner you can imagine. I’ll just “curses” you under my
breath. :slight_smile:

I see your point. But that is why we have metadata and search engines
and things like RubyForge and the RAA.

Hal

jeff wrote:
“Is it just me, or do other Rubyists…”

Apparently it is just me. Carry on and name things in the most
obfuscated manner you can imagine. I’ll just “curses” you under my
breath. :slight_smile:

jp

One way to find a library that wasn’t cited here is to ask (nicely) on
irc.

irc://freenode.org/#ruby-lang

On 7/22/06, zimbatm [email protected] wrote:

One way to find a library that wasn’t cited here is to ask (nicely) on
irc.

irc://freenode.org/#ruby-lang

Or a simple google search usually leads to the right places…
“ruby curses”
“ruby mongoose”
“ruby mongrel”

  • Rob

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs