I created a gem called tiedye and I wanted to explain a bit of my reasoning behind why I named it that. So, let’s talk about naming. Why call this gem tiedye? How do I decide to name Ruby gems in the first place?

First, there are a few community conventions on how to name your gem. I went with the convention of using underscores in the name of the gem (snake_case instead of camelCase). This applies to all gems that have more than two words in their name. So tiedye or rails are one word but will_paginate and delayed_job are two words written in snake_case. Also, I suggest you try to find a fun name for your gem. Ruby has an XML parser named nokogiri, which is Japanese for chainsaw and I named my gem that works with colors tiedye because of the mix of colors those awesome hippies love to wear. There are a whole list of good suggestions that you can find here: http://guides.rubygems.org/name-your-gem/

Other rules (which you will find in the previous link) are:

  • Use dashes for extensions
  • Mix underscores and dashes appropriately
  • Don’t use UPPERCASE letters

The second thing I did is I went to rubygems.org and search for my desired gem name. With so many gems built to date, there is a good chance that someone else already has used that name. You want your gem to have a unique name so that people can remember it and so that you can deploy it to Rubygems.org. Don’t worry, though there are plenty of names still available. Of course, all this only applies if you are trying to make a public gem. If you are making a private gem, then you will be requiring it from a private repo on GitHub and you can name it what you like. Though you might still conflict with other named gems if you decide to name it something like “rails”.

Also for a good read check out: Ten poorly chosen gem names