Page 1 of 2

Naming libraries

Posted: Fri Dec 04, 2015 11:06 am
by tepples
Phil Karlton has claimed that the two hard problems in computer science are cache invalidation and naming things. (Leon Bambrick added off-by-one errors, but I consider that a subtype of naming things.) How do developers come up with names for programming libraries, such as FamiTone or MUSE? I ask because I plan as my next project to polish and package some components of my old NES games as a library for others to use, but it'll need a name. I tried Google, but that came up with irrelevant results such as naming buildings where people can borrow books, coming up with filenames given a library name, or coming up with function name prefixes given a library name.

A bit later, I found the naming chapter of Producing Open Source Software. What else should I know?

Re: Naming libraries

Posted: Fri Dec 04, 2015 12:04 pm
by freem
my names for things are horribly generic, like "freemco NES Corelib" and "freemlib for Neo-Geo". Not really sure what to do about catchy names, since I prefer names that explain themselves...

Re: Naming libraries

Posted: Fri Dec 04, 2015 12:08 pm
by dougeff
What's in a name? that which we call a rose
By any other name would smell as sweet;
(Romeo & Juliet, Act II, Scene II -- William Shakespeare)

Re: Naming libraries

Posted: Fri Dec 04, 2015 1:21 pm
by lidnariq
As long as you don't call it Yet Another $X $Y , you haven't gone too far wrong.

Re: Naming libraries

Posted: Fri Dec 04, 2015 1:41 pm
by Movax12
It's trendy give things arbitrary names that have nothing to do with the thing. Examples: Chrome, Apache, or tangerine, a bank:
http://www.tangerine.ca

Re: Naming libraries

Posted: Fri Dec 04, 2015 3:46 pm
by Pokun
Among open source projects I think it's painfully common with really bad names that are:
  • Hard to pronounce, often made up by lots of consonants and or numbers that doesn't even mean anything, and doesn't become a pronouncable word.
    Hard to remember, often due to the above
    Just plain ugly
Often all of the above. I can't think of an example of this right now though.

Re: Naming libraries

Posted: Fri Dec 04, 2015 7:22 pm
by Dwedit
The naming of libs is a difficult matter, it isn't just one of your holiday games; You may think at first I'm as mad as a hatter when I tell you a lib must have three different names.

Re: Naming libraries

Posted: Fri Dec 04, 2015 7:53 pm
by thefox
One method you can use is to think of some words related to the content matter, and then "corrupt" them in some way. That's basically what I did with "Ngin" (derived from "engine", but also the "N" can be thought to refer to Nintendo/NES). If one were to do some branding, there are some options with the obvious connection from "gin" to the drink, but "gin" is also Japanese for "silver" (well, at least based on my limited knowledge of Japanese).

Googleability is of course a plus.

Re: Naming libraries

Posted: Fri Dec 04, 2015 8:32 pm
by zzo38
I don't know completely, but I can say what I do know. Note also that some software has old names which might now be considered as misleading or the name doesn't quite fit or something, even if it did in the past.

Here is a list of some free/open-source software packages:
  • Swiss Ephemeris: This is easy; it is ephemeris software that was invented in Switzerland. (I have also heard of "Dutch Ephemeris" but it seems to be far less complete than Swiss Ephemeris.)
  • SQLite: A public domain SQL implementation.
  • AmigaMML: Originally the output was in Amiga format, even though now there is an option for PC format as well (which is the mode I mainly use now); so the name is kept for historical reasons.
I think Knuth (was it Knuth?) was mentioning about naming variables and subroutines and so on in a program; if you have the book "TeX: The Program" then you can see how he does it.

Re: Naming libraries

Posted: Fri Dec 04, 2015 11:44 pm
by Alp
A simple acronym, or relatively descriptive name will usually suffice.
The "VERGE" engine comes to mind.

Of course, silly/potentially offensive names (like SCUMM) are more fun.
Here's a suggestion:
(A) (R)elatively open-(S)ource (E)ngine

Re: Naming libraries

Posted: Sat Dec 05, 2015 1:50 am
by zzo38
Alp wrote:A simple acronym, or relatively descriptive name will usually suffice.
The "VERGE" engine comes to mind.

Of course, silly/potentially offensive names (like SCUMM) are more fun.
Here's a suggestion:
(A) (R)elatively open-(S)ource (E)ngine
Yes, acronyms; I forgot that too, but that last example doesn't really even describe what the program is for. (Another example (of one of my own programs) is "ZORKMID", which stands for "Zork Machine Interpreter and Debugger". There are probably more examples (whether or not it is software I wrote) although I cannot think of them right now.)

Another thing is name software after yourself; apparently Torvalds named both "Linux" and "git" after himself.
Dwedit wrote:...when I tell you a lib must have three different names.
Why?

Re: Naming libraries

Posted: Sat Dec 05, 2015 2:26 am
by Drag
Pick a random word and just roll with it. Grumble, Grmbl, Gurmble, Gubble, Gumple, etc. You can even use non-English words as a starting point, and nothing has to mean anything, because it's going to mean your library. :P

You can also just name it after yourself, like teplib or pinolib, but that might be better used for something more widespread than a niche NES thing.

Re: Naming libraries

Posted: Sat Dec 05, 2015 6:00 am
by DRW
tepples wrote:How do developers come up with names for programming libraries, such as FamiTone or MUSE?
I guess naming conventions are as different as the people, so there isn't really anything that you need to know. I mean, look at the names of professional programs:
On the one hand, we have Visual Studio, on the other hand, we have Eclipse.
Picture processing programs have names such as Paint, Photoshop or Gimp.
Text formats are either the Microsoft Word format or the Acrobat format.

It's totally different every time.

The creator of MUSE simply shortened the words "music engine", i.e. a pretty generic and straightforward name made recognizable.
His player is the MUSE Tracker, which is equally simple.
But before he renamed it, it was called "Porno Tracker". What the fuck? What does that have to do with anything?

If you ask me, I would suggest to use a name that's not too fancy, but not too generic. "NES Sound Library" is too bland. But the other extreme is people who try to be clever or tongue in cheek or use some pun or something that has nothing to do with the product:

WINE: "WINE Is Not an Emulator". (An acronym that creates another, yet unrelated word. Oh, and we used a recursion. We're so geeky.)

Fiddler: A program to log web communication. (Isn't a fiddler someone who produces noise and not someone who records other people's noise?)

Kaffe: A virtual machine for Java. (Because get it? The island of Java is associated with coffee. So, we use a dialectic version of the German word for coffee for a product that has to do with the programming language Java. Get it? Get it? We're just as clever as the guys who did NetBeans. You know? Beans. Like in coffee beans. For a Java IDE. Java: Coffee: Coffee beans. Get it?)


So, I would just suggest to find out what's the main "selling" point of your library and make a name out of it that doesn't sound too stupid, but still unique enough:
fceux: The extended edition of the ultra version of the Famicom emulator.

Re: Naming libraries

Posted: Sat Dec 05, 2015 8:03 am
by tepples
Unity: Is it a 3D game engine, a dependency injection container, or a netbook-inspired desktop environment?

Xfce: Is it an extended Famicom emulator? No, it's a desktop environment for X Window System. The emulator is FCEUX, though I run it under Xfce.

So anyway, thanks for the tips. I found another:

List words that describe attributes associated with the library. Open the Wiktionary page for each and scroll to the translations section. Find two words with the same sound shape. For example, if something lets you play loops and play five of them at once, you could take Polish pętla (pronounced pentla) meaning "loop" and Greek πέντε (pronounced pente) and mash them up.

Re: Naming libraries

Posted: Sat Dec 05, 2015 10:16 am
by Bavi_H
DRW wrote:Fiddler: A program to log web communication. (Isn't a fiddler someone who produces noise and not someone who records other people's noise?)
To fiddle with something means to play around with or manipulate something. Fiddler lets you modify the traffic if you want to. The Fiddler website description tag for search engines says:
Fiddler is a free web debugging tool which logs all HTTP(S) traffic between your computer and the Internet. Inspect traffic, set breakpoints, and fiddle with incoming or outgoing data.