Help

Names are important in computing. Really Important. I'm not talking about calling classes sensible things like UpdateUserDetailsCommand in preference to UpdUDetsCd. I mean the names of products themselves. A great name tells us lots about a piece of software: it tells us that the creater has some imagination, a sense of style even. It tells us that this person is serious about the success of the product, that they understand that there is more to making great software than writing great code.

Java is a fantastic name for just about anything. I love the ambiguity; coffee, or the largest island of the Indonesian archipeligo? There is no way I could hear the name Java and not wonder what it is a name for. C# (pronounced cee-hash by those in the know) is twee and derivative. Its pathetic enough trying to impress girls with the fact that I am a Java developer. Imagine if I had to say I was a cee sharp or dot net programmer? Ugggh. But from this we can learn something of the mindset that created these two languages - C# /is/ actually more derivative than Java.

So, if we have eliminated C# as the next step forward in languages, what about the other two possible Java-replacements: Python and Ruby. Well, Python is great, of course. There's that ambiguity once again: funny Englishmen, or snakes. Snakes are cool. Actually, naming things after animals is /always/ cool, even Ants. Ruby grows on me. I don't /love/ it, but as an English name given by a non-native English speaker, I'm happy to give it a pass. I've noticed that non-native speakers tend to name their projects by horrible acronyms.

The Apache project gives us some great examples of both good and bad. Tapestry is a beautiful, evocative name, just perfect for a web presentation framework. Struts is a good (perhaps a little too obvious) pun on framework. Lucene and Avalon are nice enough. Ant we mentioned already. commons-lang is an abomination, being the concatenation of commons (ugh) with that incredibly romantic English word lang. Worse, the concatenation is performed with a hyphen. Names don't have hyphens in them, guys! (Well, apart from Mike's ). Commons could evoke either typical or communal or both; neither interpretation is inspiring in this age. Actually, commons seems to be Jakarta's moniker for stuff we don't have proper names for or, perhaps, stuff that doesn't really deserve to be a real project. Similarly, commons-primitives could /almost/ conjure up some kind of vision of neolithic tribal society, uncorrupted by modern notions of private property .... but it doesn't. To me this indicates something about the respective quality of the projects. Would any truly committed developer, bulding something they love and believe in, possibly call their project commons-lang? Nope. They would call it Tapestry. If they had Howard's sense of theater, that is.

In the realm of distributed computing, we have been given CORBA - a nice, easily pronouncable acronym that sounds like a real English word and even better reminds us of snakes - and the ridiculous WSDL (pronounced whizz-dull, which is an oxymoron). I guess this means that Web Services are just another dead end - surely, nothing useful could ever be named WSDL?

Being a contrarian, I named our project with a verb. Hibernate isn't a thing - it's not even a state of mind; it's something you /do/.

disclaimer: this post is meant in good humour, please don't take offense

7 comments:
 
02. Dec 2003, 15:52 CET | Link
Gavin,

I like it! Good post - you manage to entirely avoid any technical criticism; that is what makes it so light-hearted.
ReplyQuote
 
02. Dec 2003, 19:19 CET | Link
C# is actually pronounced "cee-sharp".
 
03. Dec 2003, 18:26 CET | Link
Gavin
dsuspense: Yes, I know exactly how Microsoft wants me to pronounce C#. ;)

RJ: thanks!

 
05. Dec 2003, 14:53 CET | Link
Gavin
Yeah, my bad. I should say "most populous".
 
08. Dec 2003, 14:48 CET | Link
Martin DeMello | martindemello(AT)yahoo.com
Naming things after gemstones is always cool in *my* book :) ("Ruby" was, of course, influenced by "Perl"). Someday, I'll name something 'tourmaline' just for the heck of it.

On the evocative side, there's "Crystal Space" (3d game engine and framework), "Spring" (IOC framework, beautiful on so many levels) and "Scintilla" (text editor component)

I liked 'commons', which for me evokes the shared land sense of the word (via 'Tragedy of the Commons'), but 'commons-lang' is, I'll agree, absolutely horrid. Another horrid one is 'umount' - would've cost them nothing to add the 'n' in there. Languages like 'Nice' and 'Clean' are nigh-impossible to search for, and 'Groovy' isn't.

'yacc' is cool as far as acronyms go (yet another compiler compiler - it has a nice swinging rhythm to it, and there's your animal imagery thrown in for free), and 'gdk' scores for, if nothing else, standing for the "GNU's not Unix Image Manipulation Program Toolkit Development Kit" :)

And it's interesting to compare the names "turbine" and "tapestry", and the respective user experiences - tapestry has a nice, flowing organic feel to it, whereas turbine lost me in a maze of twiddly configuration parameters all alike (and from which I never did emerge, so I may be being unfair to it) - very powerful, to be sure, but if you didn't balance it precisely from the outset, it flew apart.
 
12. Dec 2003, 09:07 CET | Link
Tobias
Other horrible names:

HTML, HTTP, XML, SMTP, FTP, SSH

;-P
 
21. Dec 2003, 17:53 CET | Link
vijay
The most ingenius name coined till date was IBM's Eclipse to counter Sun. Surprising you didn't mention it.
Post Comment