Why XMLHttpRequest Naming Convention Seems Inconsistent

javascriptnamingnaming-standardsxmlhttprequest

I've been working with the XMLHttpRequest object in JavaScript recently, and I couldn't help but notice that the casing of this name makes no sense. Why is 'XML' all in caps while 'Http' is not? They're both acronyms!

Surely it'd make more sense for the name to be one of the following:

  • XmlHttpRequest (PascalCase, best practice for class names in JavaScript)
  • xmlHttpRequest (camelCase, also common though not for classes)
  • XMLHTTPRequest (caps-for-acronyms, rarely used in programming?)

I'm sure there must be some reason and I'd hate to think it's now set in stone just because no one questioned this at the time. Is there another naming convention that I'm unaware of?

Best Answer

Interestingly enough, Microsoft first called it IXMLHTTPRequest when it was first added to the MSXML library.

It was Mozilla that used the name XMLHttpRequest when it added the concept into Gecko, implementing the idea to mimic the MS interface. It has since become the defacto standard, tying all other implementations to Mozilla's decision.

You'd have to go spelunking in the Mozilla Bugzilla to see if you can find any reasoning for the caps change there, but I suspect that not much thought went into it and the lowercasing of the ttp part is accidental.

This is corroborated by the misspelling of the Microsoft interface in the nsIXMLHttpRequest interface definition (earliest revision in the Mozilla Mercurial repository):

Mozilla's XMLHttpRequest is modelled after Microsoft's IXMLHttpRequest object. The goal has been to make Mozilla's version match Microsoft's version as closely as possible, but there are bound to be some differences.