Canonicalization: Not Just for Popes

You may remember the ASP.NET canonicalization vulnerability from last year. And what exactly is canonicalization? From Microsoft's Design Guidelines for Secure Web Applications:


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2005/04/canonicalization-not-just-for-popes.html

Bah. There are a number of reasons that his objection is without merit. For big huge starters, there is no instance in the history of the spoken word of anyone talking the population at large out of using some construction or word. You can kind of convince some subset of people who are insecure or status-conscious about their language to change their ways, but you’ll never get the majority to even pay attention and understand your issue, let alone do something about it.

Second, yeah, the language does evolve, yeah, maybe (or maybe not) there is an existing word that does the job. Apparently enough people didn’t know that, tho, so a new word has arisen. The history of English is riddled with words that were bent to new uses, or new words that substituted for perfectly ok existing words. That’s the way it works. We could all wear jeans and t-shirts, as they’re perfectly servicable, but nope, every few years a new fashion sweeps over us.

Anyway canonize != canonicalize.

“Performant” is not a good term, but not because it’s a neologism using -ant. It’s because the word isn’t particularly precise; in fact, it’s anti-precise. If a program is performant, is it … fast? memory-efficient? If it’s those things, use those terms, coz they say something specific, eh?

The final issue with jargon is that it is in fact a marker of inclusion and exclusion within a group. A person might think this is a bad thing, but it’s a sociolinguistic fact of life. If you’re a snowboarder, you use some sort of mutant snowboarder lingo. The point is not, in fact, to communicate with your grandmother about the wonderful experiences you have whilst snowboarding. No, it’s to communicate with your snowboarding homies and to show that you are part of that subculture.

Granted, the moron who doesn’t know when to turn off the jargon is clueless, but so is the guy who wears jeans to the opera, sez me. And some article in MSDN ain’t gonna cure him.

Bet you saw this one coming, huh? :slight_smile:

As you know, I know whereof I speak – I spend every working day rasslin’ with these sorts of issues. It’s an interesting balancing act. We nix “performant” pretty much all the time. But “instantiate” used to make editor types blanch, but no more; ditto “to persist to disk” and “to migrate an application,” and heck, “data” as a singular noun. At some point jargon becomes well-enough understood that it’s not jargon per se, simply the vocabulary of a specific profession. But there’s firm line, and one man’s shorthand terms are another man’s jargon.

Or we could just ditch the whole ten-dollar word thing and say “convert to simplest form”…

Well, that’s just the point – people don’t. Instead of saying “instantiate” you could say “create an instance of” … but people don’t. Instead of saying “persist” you could say “store” … but people don’t. Instead of saying “rehydrate,” you could say “restore the non-default values of” … but people don’t.

It’s a losing (lost) battle, my friend, and getting one’s innerwear into a torsional state has exactly 0.00% effect on any of it. It’s like railing against teen fashions. However, ludicrous, it won’t change a thing …

Go read the Jargon file. Learn the tribal language to identify yourself as a member of the tribe. Jargon definitely functions as a filter mechanism (a shibboleth, if you will). But it also gives us precise terms for things which other groups don’t care about. Catholics rarely need to talk about a “canonical” form, while developers do.

Language is another thing you can have fun with. You say “canonical” when talking with another dev, not when writing user docs. And applying production rules to generate new forms is part of the fun. “Canonicity”? “Canonicalant” to go with “performant”??? If you’re gonna be silly with language why not take it all the way?

“Performant”, on the other hand, is something dreamed up by someone who wears a tie and uses Powerpoint far too much…

All jargon should be banished.

We should force mathematicians to write proofs in plain English as well! Do they think they’re so special just because they understand all those greek symbols. :slight_smile:

If you cannot communicate something so a complete unititiated layman can understand it probably isn’t anything worth saying.

While we’re at it the fact that you can’t write a decimal representation of PI sucks too. We should take a page out of the 1897 Indiana House of Representatives and make it legally equal to ‘3.2’.

http://www.straightdope.com/classics/a3_341.html

I can be pretty particular (hopefully not pedantic (though obviously not enough to use “hopefully” not as an adverb)) about language, but I think you know pretension when you see it and “canonicalize” doesn’t seem that bad to me. Maybe that’s because canonical is already (pre-software) a word that means something, e.g., “Conforming to orthodox or well-established rules or patterns, as of procedure.”

“Canonized,” as in saints, already means something else. So the verb “canonize” would mean to make into a saint, and that seems a little strong for just converting a path to simplest form. So “canonicalize” seems to me a reasonable choice.

that seems a little strong for just converting a path to simplest form

Or we could just ditch the whole ten-dollar word thing and say “convert to simplest form”…

I think the goal is to find the place where jargon changes from useful shorthand to pretentious see-how-smart-i-am word dropping.

Hear, hear. Although I do think a few of the words are hard to defend in any context-- like “performant”.

The reason we have jargon is because sometimes it’s real handy to develop a concept that takes a whole sentence to explain, make up a word for that concept, and then we all know what it means and we can save lots of words and move on up to the next level of abstraction. If we had to explain all concepts with small words to a layperson, we might be able to do it, but it would just a lot longer. When we spend years learning what a “checksum” or “Hilbert Space” is, and we’re all amongst ourselves, it’s handy to use the shorthand.

I think the goal is to find the place where jargon changes from useful shorthand to pretentious see-how-smart-i-am word dropping.

Also, if they were going to round pi to two decimals, it’s fitting that they rounded IN THE WRONG DIRECTION. Wow.

“performant” is definitely a word… an adjective… In French :wink:

English has replaced French as the imperial language (with world war 2 as a tipping point), but we take advantage of the fact that a huge number of its words have a franco-normand origin to pour without mercy our own words into it. It is mostly useful to avoid learning the whole (and huge) english vocabulary, but sometimes the confusion succeeds and the word stucks in the language use, adding up to a kind of linguistic 5th column :slight_smile:

1 Like

In essence, this article is just rephrasing parts of what George Orwell mentioned in his article “Politics and the English Language” for a technical audience.

Every writer, technical or otherwise, should always strive to express what they are thinking in the clearest way possible. It is easy to write sentences that do not express clearly what one is thinking by using made-up words and other literary devices. It is very hard to write sentences that are clear by using the most simple and clear language possible.

For most of you that do not have time to read the entirety of Orwell’s article, the most important parts (in my opinion) are below:

(i) Never use a metaphor, simile or other figure of speech which you are used to seeing in print.
(ii) Never use a long word where a short one will do.
(iii) If it is possible to cut a word out, always cut it out.
(iv) Never use the passive where you can use the active.
(v) Never use a foreign phrase, a scientific word or a jargon word if you can think of an everyday English equivalent.
(vi) Break any of these rules sooner than say anything barbarous.

and

A scrupulous writer, in every sentence that he writes, will ask himself at least four questions, thus: What am I trying to say? What words will express it? What image or idiom will make it clearer? Is this image fresh enough to have an effect? And he will probably ask himself two more: Could I put it more shortly? Have I said anything that is avoidably ugly?

Sometimes, jargon is necessary and appropriate because your entire audience will understand what you are trying to say. In some circumstances, using jargon might be the clearest way to express something. However, inventing new jargon or using existing jargon inappropriately will just confuse your audience and cloud the idea you are trying to share with the audience.

1 Like

@jongalloway just pointed this one out – we usually say “on-premise” but it should be: