A Little About Code Names

Throughout the internet, you’ll find a slew of geeks who refer to their projects by “code name.” Realistically, this isn’t GI Joe, so there’s no real reason to need a code name for your projects, right? I’m here to argue that.

Since I’m involved in several web endeavors, there is always a lot of development code on my computers. When I start something like a firsttube.com redesign or something much larger, like an OSNews redesign, it doesn’t make sense to have a hundred folders called “osnewsv4” or somesuch littered about. I used to date the folders, but osnewsv4-tuesday doesn’t help. And something like osnewsv4-20071017 doesn’t help much either.

Now it gets even more complex: what if I build something and then decide to approach it differently? How will I know which folder is the one that contains relevant code? Enter codenames!

When I knew I was going to build a brand spankin’ new version of OSNews, I knew it would eventually be called version 4, so it made no sense to start calling the first code off my fingers “v4.” As it turns out, there were actually almost 10 versions of “OSNews version 4″ before we accepted a codebase. The first ones were much different in both look and feel and code. So, for my own organizational purposes, I use code names. All that matters is which code base eventually gets promoted to the “version 4” title.

So, here a list of the codenames I’ve used on my projects in the past, going back as far as I can remember:

I used to maintain an open source weblog called Flip, which later become Small Axe. Although Flip 2.0 may have had a codename, I can’t remember or find any reference to it. Flip 2.1 was called Lobster. Flip 2.2 was called Shark, although I never released that code, largely because before I finished it, I released Flip 3.0, Turtle. Flip 3.1 was to be called Jackrabbit, but again, I never released it. Flip 4.0 earned the codename Blueberry, but it was merged into the first release of Small Axe. We’ll get back to Small Axe in a minute. The nicknames of Flip were entirely random, they meant nothing, except that I wanted the 2.x and 3.x family to be animals, and for 4.x, a complete rewrite, I decided to use fruits. That never materialized.

A large part of why verison of Flip went entirely unreleased is because the app became big and tough to handle. As a result, I stripped out the core of it and released “Flip Lite,” which was called “Red Squirrel.” There was a running joke in college about a “blue raccoon,” so “red squirrel” was a silent tribute. When Flip Lite 2 came about, it was called “Rivet Boy.” Here’s why I called it “rivet boy”.

Small Axe Weblog took over where Flip left off – I really need to get around to updating it, since I’ve probably worked up to v 0.7 by now! – but the roadmap, along with the codenames, are listed here. They are codenamed after the japanese Iron Chefs and their popular guests.

firsttube.com itself had codenames, some of the time. firsttube.com 3 was “Milky”. 3.1 was Crossbow because it was built to be cross-platform. 3.2 was Scoop Face, because it was inspired by Scoop. 3.3 was “Semi-Scoop”, much for the same reasons. 3.3.1 was “Flip”, because it was the first version to use code from the Flip project. 4.0 was lazily called “Lobster” because it was running Flip 2.1. 5.0 was “Linkfarm”, because it was – for the few weeks it lived – a link farm. 6.0 may or may not have actually had a codename when I built it, but it was listed in one directory as, “Wikitube”, because it ran phpwiki software. I merged it and my weblog for version 7.0, which, along with 8.0, didn’t earn codenames. The recently released firsttube.com 9.0 was called “Chalkboard,” because at one point, I thought the header looked like a chalkboard. Obviously, it doesn’t anymore.

On to OSNews: Again, these codenames are mine and mine only, they are neither “official,” nor even known the rest of the staff, as it was only as I was developing code that I used the codenames. The now defunct OSNews Meta Blog is actually Small Axe, so it was in a folder called “Small Axe.” We renamed it “meta blog” literally days before making it live.

The OSNews Staff Blog used to be called ftblogroller, and I actually still have the very first working version on my company’s intranet test server. The funny thing is, I chronicled it long ago on firsttube.com. That was the engine of the OSNews Staff Blog. It also powers the OSGalaxy site, although there I refer to it as “Galaxy,” I never actually got around to packaging it.

Jobs.OSNews, an experiment that everyone liked but nobody used, was called Meadow, only because it was green.

OSNews v4 had a few codenames on my computer. “NEW” was one of them, as was “TCO,” which was an acronym for “three column OSNews.” The one that eventually earned the title version 4 was Blueprint, because I threw everything away and literally started from scratch. Even the queries that fetch data were rewritten to be most efficient.

Two projects in the words: “Timber” is the codename of a module that does OSNews native polling. Why Timber? A poll takes a tally, tally like tally ho, like timber ho!. I didn’t say they made sense or were funny, I just said I used them.

Another project that has had several lives already is the iPhone optimized OSNews site. I have gone through several versions of this code as well. Recently, I tossed aside “iui-osnews” and “knox” to really work on project “McBragg.” Commander McBragg was the general in the Underdog cartoons. I seemed to remember him going on several safaris, so I stole his name for my code. McBragg’s javascript framework and CSS is not finished yet, but the underlying PHP appears to be sound, so I expect to finish that within the next few weeks.

As you can see, having codenames can help a develper understand what code he’s looking at. It would not help me at all to see a folder called “firsttube.com-20060722” because I wouldn’t know what version of firsttube.com or whether the code was even used on the live site. But certainly, if I saw a subfolder in my OSNews directory called “mcbragg,” I’d know it has relevent code. I think there’s something to be said for categorizing your code that way, plus, it’s kinda cool to have codenames. Yeah, I said it.

Very funny you should bring this up, as a few weeks ago, we had a very entertaining discussion in #haiku about the code name for the Haiku r1 release project. In the BeOS world, codenames were awarded to an entire alpha/beta/rc/final release cycle (so not to just individual alpha or beta releases). For BeOS, codenames were taken from a TV series called “Hawaii 5-0”, which explains names like Maui, Dano, and so on.

We found out there actually is a town called Haiku (!) on the Maui island (what are the odds??), so we might settle on a town down the road to Haiku. Another option, an option which I personally really like, is calling Haiku r1 “Aloha”, a codename supposedly reserved for a future BeOS release or another Be product (aloha.be.com existed). Would be fitting, the first release, named Aloha.

Interesting! I like knowing the background of codenames and I like when they follow some sort of theme. I also happen to agree that “Aloha” is a good first release name, it sounds powerful and has a good connotation.

I was thinking about something similar a recently, my solution tends to be just to overwrite old code with newer revisions. Of course, this sucks bigtime, but it does stop me from accidentally using stale code.

The solution, of course, is to have some form of Revision Control System, like svn or similar. That way, if you tag properly, you can keep all copies of a design/code AND have relevant tags, AND have datestamps.

Of course, I haven’t found a windows/windows IDE friendly RCS system yet. so confusion still reigns.

I was playing about with the idea of coding a webpackage system, whereby an entire website was encapsulated in one file, and revision controlled internally, but I don’t know if I will take it forward yet.