The N8ing Convention
A proposed release naming convention that favors simplicity over cryptic tagging.
Almost every dev shops goes through an iteration phase where they think they have a good naming convention for releases and then it falls down the very next release. Usually starts with a date only (2016-01-01), then migrates to version number (5.1.2), then a hybrid (5.1.2 2016-01-01), and then almost always just sticks with whatever the previous release's convention was because ain't nobody got time fo dat.
Somewhere simplicity was lost in a big pile of backlogged
How's it work?
Each calendar year starts off by choosing a theme. Once selected a release is named by a themed word or phrase that begins with "A". The second release should start with "B". The third with "C" and so on. Much like the naming convention for tropical storms. Please note, release names are case insensitive.
Format: Release name (explanation that is not in actual name)
- Anakin (first release of 2016 Star Wars theme)
- Boba Fett (seconds release)
- Chewbacca (third release)
- Audi (first release of 2017 Car makes/models theme)
- Bugatti (second release)
- Corvette (third release)
As you can see above at the conclusion of the year 2016, a new theme was started.
- Must start with a letter
- Must be at most 3 words
- Must be at least 4 characters in length
- Must be at most 30 characters in length
- A release name is fixed the day the release branch is cut
- A release name's starting character is determined by its position relative to the rest of the current themed releases for the given year (E.g. A = first, B = second, etc.)
- If there are more than ~26 releases in a given year, start over excluding previously used names for the year.
- In addition to the above requirements, it must match the following RegEx:
Not sure if your release name is valid? Check it here
Things to Consider
- Themes must have a large dictionary. Don't choose the theme "Things that rhyme with orange".
- A small group of you should be able to ramble off the first 10-15 potential release names in a relatively short period.
- Be creative with your themes, but your goal should be to select subject matter that most people involved understand.
- Choose release names that are easy to pronounce and that are work appropriate. Having a conference call with your boss' boss about the Turd Ferguson release is probably a poor choice.
- A good rule is that if you google image search your release name, grab the first result, and show it to a stranger. They should be able to guess your release name by image alone.
- Land on a release starting character that doesn't work? Skip it. It is more important that the name chosen represents a collection of functionality rather than the release position in context to other releases.
- Have fun with it. Make a random adjective-animal and see what you get. E.g. autonomous-giraffe, creepy-muskrat, or wobbly-caribou.
- Great release names find a way to meet the theme criteria and are loosely related to the feature set in a particular release.
- It's a name that everyone will use to talk about your work for the next few days/weeks so don't overthink it. If you spend more than 5 minutes to determine a release name, you're doing it wrong.
- Afraid to make a decision? Compile a short list of nominations, hold a quick vote during a standup. Done.
- It is a good practice to map out at least the next two release names well before they are needed. This way you don't hold up cutting a release branch because you are stuck thinking up a brilliant name.
Where are my dates? version numbers?
Simply put, it's in source control under releases/tagging. Software following semver tagging methodologies should have an appropriately tagged version and date -- post release. Coupling release names with release dates/versions is a bad practice that ultimately leads to name changes in the middle of a release QA/UAT/Deployment cycle.
What conventions do you use? What did I miss? Why am I wrong? Leave your comments below.