An open letter to Rubyists - Naming things

J

Jeff Pritchard

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
 
J

James Britt

Jeff said:
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.

Phil Karlton said, "There are only two hard things in Computer Science:
cache invalidation and naming things."

People tend to pick names that connote some feature or aspect while not
colliding with the names of other projects. Calling a Web application
framework "Ruby Web Application Framework" instead of "Nitro" may be
descriptive, but there's more than one such framework. So who gets the
name?

Many of these apps and libs are on rubyforge.org, reducing the search
space. I also find that a Google search on the name, plus the word
"Ruby" will get me what I want.

If I don't remember the actual name, then I search on "Ruby" plus some
keywords.
 
T

Tom Armitage

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?
 
J

Jacob Fugal

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. :) 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 Fugal
 
E

Elliot Temple

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 Temple
http://www.curi.us/blog/
 
J

Jim Cochrane

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.

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.
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


--
 
J

Jeff Pritchard

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. :)


jp
 
H

Hal Fulton

Jeff said:
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. :)

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

Hal
 
Z

zimbatm

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

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

Rob Sanheim

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,025
Latest member
KetoRushACVFitness

Latest Threads

Top