Read the introduction to "The Blogging Programmer's Style Guide" for some background on this series.
Should I hyphenate "open source" and "command line" when they are used as compound adjectives?
The answer should be an easy "yes" if you look at the English rules for compound adjectives, but out in the real world (the internet) these rules get broken, and with other terms in the past, we have ended up embracing the contravention, which then becomes the convention.
All the Cool Kids are Doing it
Let's take a look at how "open source" and "command line" are being used in various publications and relevant websites:
If you get the same results that I'm getting, you'll see that the first five articles from TechCrunch don't use the hyphen in "open source" even when it's used as a compound adjective. DZone and InfoWorld also have a majority of posts that drop the hyphen in compound adjective usage.
Let's look at "command line":
It looks like InfoWorld is pretty consistent in keeping the hyphen for "command line" during compound adjective usage. TechCrunch and DZone have mostly abandoned it though.
Despite this evident shift in usage, Wikipedia still promotes the usage of hyphens for these terms.
Even though it seems like using hyphens is the "correct" practice, it also seems like most bloggers and publications in the programming space are abandoning it. But does that mean that we should start dropping the hyphen just because "everybody else is doing it?"
Yes… Yes we should… That's how language evolves.
Anybody remember the "if all your friends jumped off a bridge" saying?
Randall Munroe, XKCD
I love that comic because it easily crushes that argument.
Proper Usage: The Verdict
From my own experience, and several searches that I just showed you, I think it's clear that writers aren't following the compound adjective rules for "command line" and "open source", and I predict that dropping the hyphen will become the norm.
It's not wrong to say "open-source software" or "open source software." Both are acceptable usages. However, I think that the more common usage is without the hyphen.
If you're writing something academic or formal, or if you prefer to adhere to strict English grammar rules:
"Open-Source" and "Command-Line" when used as a compound adjective. No hyphen when used as nouns.
If you want to adhere to the common usage in the community:
"Open Source" and "Command Line" when used as a noun or a compound adjective.
I also thought about calling this post "The Death of the Open Source Hyphen," but that would have showed the reader where I was going with this too quickly.