Every project and program needs a name, but naming can be very difficult:

  • A name should be unique, so people don't confuse what you're doing with what someone else is doing. A UUID4 is thus a pretty good name.
  • A name should be easily pronounceable so that people feel comfortable using it in discussion. Likewise, it should be easy to write correctly. A UUID4 is thus a pretty bad name.
  • A name should not be a word or phrase that is commonly used already, so that search engines make it easy to find your project.
  • A name shouldn't be offensive or make people uncomfortable, in any language you care about.

As examples, I'll describe three of my own projects.

In the early-to-mid 1990s I wrote a GUI text editor for Linux, running under X11, back when fvwm2 was the new hot stuff, and having any graphical user interface at all for any task was a marvellous thing to be spoken of in awe. My editor was inspired by an article I read about sam, the text editor in Plan 9, though completely different. One of the things I liked about sam was its elegant simplicity. Thus, I named my editor the "Simple editor for X", or "sex" for short. Oh my youthful days, how lame I was. That was a name that made it impossible to find my editor with most search engines. On the other hand, it was unique (nobody else was as lame as I was), and easily pronounceable. However, people didn't really enjoy talking about "using sex", for whatever reason.

In the mid 2000s I wanted to host some mailing lists on my own, and didn't like any of the existing solutions, so I wrote my own. I quite liked the movie Dead Men Don't Wear Plaid. One of the features of the film was lists of names, titled either friends or enemies of Carlotta". Due to the way the plot twisted, I named my mailing list manager "Enemies of Carlotta" (or "eoc" for short). It was fairly easy to find with a search engine, but you had to wade through lots of hits about the movie. Other than that, its only problem was that people didn't understand the plot of the movie, or hadn't seen the movie, and wanted to know why it wasn't friends instead of enemies.

A bit later, I started writing my own program for making backups. Having learnt from the above two mistakes, I wanted a name that was short, unique, pronounceable, and didn't make people look at me weirdly. After a lot of candidates, I eventually chose obnam as the name, not because I particularly liked it, but because having a name was obligatory. Thus, I chose an obligatory name.

For a while I was satisfied. Then Barack Obnam, sorry, Obama got elected as the president of the USA.

So, whatever name you choose, it's not going to be unproblematic, but if you can avoid a name that makes you look like a lame geek or an unfriendly person, you're doing OK.

A number of projects have names generated by a password generator such as pwgen. A program that produces pronounceable passwords works fairly well here. Even such names should be checked using search engines, just in case it's in use already. It might, for example, be a word in Finnish for "your fish tail has a funny hat", which makes no sense at all.

After you have name, you can create the project directory, and start hacking. You can also register domain names, set mailing lists, etc, but you probably shouldn't. It's better to get something minimally useable done first, before committing to a name. You might want to change a name, for example, because while you're hacking, someone else may have decided to use the same name. (See Daniel's Truism 2 article for an example.)