NoSQL Zone is brought to you in partnership with:

Mitch Pronschinske is a Senior Content Analyst at DZone. That means he writes and searches for the finest developer content in the land so that you don't have to. He often eats peanut butter and bananas, likes to make his own ringtones, enjoys card and board games, and is married to an underwear model. Mitch is a DZone Zone Leader and has posted 2576 posts at DZone. You can read more from them at their website. View Full User Profile

The Blogging Programmer's Style Guide: Quirky Software Names

10.13.2013
| 11541 views |
  • submit to reddit

Read the introduction to "The Blogging Programmer's Style Guide" for some background on this series.  

The Question


How do I confirm the proper way to write the name of a software project/product?


Have you ever been confused about whether you need to capitalize "node.js" or whether you should write "Angular.js", "AngularJS", or just "Angular"?  Project names are a common writing inconsistency I see across developer blogs.  I think there are some pretty simple ground rules you can follow in these instances to help us all be clearer, more polished writers.

The Quirky Capitalization of the Software World
I remember when projects like "neo4j" and "node.js" were originally uncapitalized project titles.  I wondered whether I should keep them lowercased even when they were the first word in a sentence.  A lot of projects start out lowercased because of command-line typing.  When Node.js and Neo4j got more popular, they had to accept their status as well-known proper nouns.  Should they have been capitalized from the start?

Another common thing you see among developer tools and keywords is intra-word capitalization.  NoSQL and jQuery are two good examples.  Does that mean "NOSQL" is incorrect?  Not quite (someone got mad at me for not capitalizing the "O" because he preferred to think of it as Not Only SQL).  Are "JQuery" and "jquery" wrong?  In my opinion, absolutely.  I'll explain why in a minute.

Shorthands  
These are another potential issue I see when we're talking about software tools and keywords.  "Node" instead of "Node.js" is one that I worry about the most because a "node" can be a lot of things.  It works out if you look at the capitalization and the context, but you should always make sure that shorthands never compromise clarity.  

Also, there are two groups in the tech audience that you have to consider when writing blogs: non-native English speakers and people who are new to the development space.  It's important to make sure that a wide variety of readers can easily google a term that you use.

How do we create some guidelines?


I just showed you a few examples of some possible areas for confusion, but there are many more project titles out there that you'll encounter and mention in your writing.  I think it's important that blogging coders spend a second rationalizing the way they write certain terms to have the most consistent, effective, and polished content possible.  Here are some pragmatic rules that I believe most developers will agree with (but feel free to voice your disagreement in the comments):

See how the creators want you to write the name.
This has to be the most obvious rule.  If you've been writing AngularJS as "angular.js" because it was similar to "Node.js," you've been doing it wrong.  If you go to the AngularJS homepage you'll see that they have no dot and they capitalize the "JS."  Underscore.js and Backbone.js are different if you look at those pages.  They both have the ".js" at the end. You can also see in the docs for all three projects that they don't mind if you just omit the ".js" (or "JS" in Angular's case).  

Always respect the creator's wishes, and respect the brand.  jQuery is one case where that capitalized "Q" and lowercase "j" are key parts of a very strong brand.  They went through the effort of making the project and choosing a name, so you should make the effort to write it correctly.  Anytime you aren't sure about the way to write a project's name, go to the homepage or repo's readme page.

Write the proper long-form name the first time you use a word in a post.

One other guideline you should follow in your articles is to write the unabridged, proper form of a project name or keyword when you're using it for the first time in a post.  It's generally acceptable to say "Node", "Rails", or "Mongo" in your posts, but the first time you mention them in each blog post, you should establish that you're talking about "Node.js", "Ruby on Rails", or "MongoDB".  This is also a good habit for acronyms.  Write the full term (ex. software-defined networking) and then use the acronym throughout the rest of the post (SDN).

Proper Usages


Here's a list of the more common tech projects / terms and their proper usage:

AngularJS
Not Angular.js. "Angular" is acceptable shorthand.

Backbone.js
Not BackboneJS. "Backbone" is acceptable shorthand.

GitHub
Not github.  Not Github.

Java
Not java.  Not JAVA.

JavaScript
Not javascript.  Not Javascript.

jQuery
Not JQuery. Not jquery.

Knockout.js
Not KnockoutJS. "Knockout" is acceptable shorthand.

Neo4j
Not neo4j. "Neo" is acceptable shorthand.

Node.js
Not node.js.  "Node" is acceptable shorthand.

MapReduce
Not Map/Reduce. Not Map Reduce.

MongoDB
Not Mongodb. Not mongodb.  "Mongo" is acceptable shorthand.

REST, RESTful
Not Rest.  Not restful.

Rails or Ruby on Rails
RoR works too, but define it as "Ruby on Rails" before hand

Underscore.js
Not UnderscoreJS. "Underscore" is acceptable shorthand.

Capitalize Every Acronym
URL not url

There's a lot of odd capitalization configurations that creators will use, so be prepared for variability.  If there are any more particularly confusing, common terms that you'd like me to add to this list, leave a comment and I may include it.