# An open letter to Rubyists - Naming things

**URL:** <https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310>\
**Category:** Ruby\
**Created:** [July 21, 2006, 5:32pm UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310 "2006-07-21T17:32:29Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 21, 2006, 5:32pm UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/1 "2006-07-21T17:32:29Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 21, 2006, 5:59pm UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/2 "2006-07-21T17:59:26Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 21, 2006, 6:25pm UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/3 "2006-07-21T18:25:42Z")

</div>

On 7/21/06, Jeff P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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](http://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](http://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.

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 21, 2006, 6:28pm UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/4 "2006-07-21T18:28:51Z")

</div>

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.

> **[Curiosity Blog – Elliot Temple](https://www.curi.us/blog/)**
>
> A philosophy blog

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 21, 2006, 9:27pm UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/5 "2006-07-21T21:27:32Z")

</div>

On 2006-07-21, Jeff P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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.

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 22, 2006, 6:54am UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/6 "2006-07-22T06:54:56Z")

</div>

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

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

Hal

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 22, 2006, 6:44am UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/7 "2006-07-22T06:44:45Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 22, 2006, 12:16pm UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/8 "2006-07-22T12:16:12Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![jeffpritchard](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/43a26b/32.png) [@jeffpritchard](https://www.ruby-forum.com/u/jeffpritchard)\
**Post date:** [July 23, 2006, 4:28am UTC](https://www.ruby-forum.com/t/an-open-letter-to-rubyists-naming-things/99310/9 "2006-07-23T04:28:19Z")

</div>

On 7/22/06, zimbatm [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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
