Search The Web

Today's Headlines

Saturday, February 27, 2010

Somebody Has To Stand Up For The Big Guy!

This week something exciting happened in my life. No, don't worry, I did not get recruited by the CIA and given a license to kill, or anything like that! When I say something exciting, I mean it in a nerdy, geeky sort of way. I got involved in an email back-and-forth that had me becoming the unlikely online defender of tech behemoth, Microsoft.

Yes, yes, I know, it is cool to bash MS because they are big. It is cool to take potshots at them for all kinds of things because to do otherwise brands you as an MS apologist. But, sometimes, you just have to stand up for what is right, even if that means defending Microsoft, which is what I ended up doing.

It all started out simply enough. I was in email conversation with my friends A and B about something unrelated. A wanted to find out what would be a good character to use to designate a specific type of linkage between two entities in an input line that he was parsing for further processing. I suggested a "\" since "/" was already taken in this application. B jumped in with an objection, and it all got started with that. I have reproduced a bunch of emails below with some comments from me about the emails in italics.

----
From B:

I think that would just cause confusion. There are way too many people out
there (including many who should know better such as web site designers) who
thanks to Microsoft, don't even know there is a difference between a forward
slash and a backslash and use them interchangeably.
----
Notice the gratuitous swipe at Microsoft in a conversation that has absolutely nothing to do with that company!

----
From me:

Come on, B, blaming MS for the "/" versus "\" confusion is like blaming Apple for people who don't know the difference between right-clicking and left-clicking their mouse! :) There are stupid people, and then there are people who realize the difference between things that look close but are different, such as "/" and "\", right-click and left-click, etc. That is all there is to it, as far as I am concerned.
----
You would think that B would then agree, and leave it at that. But where would I get excitement in my life if that had happened? Instead he responds with this:

----
From B:

Really? Microsoft is who decided to use backslash as the separator in a
directory path for Windows when the rest of the world had already
standardized the forward slash for that purpose. If it hadn't been for
Microsoft's "we'll redefine the standard because we're big and we feel like
it" attitude, most people would have no clue that there even is a backslash.
----
So, B seems to be implying that somehow MS decided that "/" was an inconvenience in its quest for global hegemony, and therefore consciously decided to introduce "\" into the mix well after a standard was established. Obviously nothing could be farther from the truth. So, I wrote back the following:

----
From me:

By the same token, Apple took Xerox's original mouse design that had two or three mouse buttons and made it a single button for their Macintosh in 1984.

In any case, DOS was not even written by Microsoft, it was bought from Seattle Computer Products by MS for licensing to IBM with their newly designed computer (and it was based on CP/M. I am not familiar with CP/M, but it is quite probable that CP/M used "\" as the directory separator, so the use of "/" as directory separator was by no means standard when MS started using "\". At the time DOS was introduced in 1981, only Unix and its variants used "/" as the directory separator. DEC and VMS, the other dominant OS'es at that time did not).

Anyway, calling MS "big" at the time DOS was introduced is a wee bit of an exaggeration, methinks! "Unknown" or "tiny" would be better adjectives for them at that time. It is not as if MS decided in 2000 suddenly (when the adjective "big" actually makes sense to use with MS) to change the directory separator out of spite at the world. There are lots of things you can blame MS for, blaming them for the directory separator character in DOS is not just barking up the wrong tree, it is barking in the wrong neighborhood, as far as I am concerned. "/" was by no means a standard directory separator in 1981 when DOS came out, and even it if was, MS was not big enough to "redefine the standard because we're big and we feel like it". If anyone was to blame, it was IBM who had the clout and size to force MS to change the separator to "/" if they wanted to, but did not.

Nowadays, windows computers understand both "/" and "\" as directory separators (in fact there is practically no difference between the characters on a modern windows computer. You don't have to take my word for it, try it out on your windows computer if you don't believe me). In fact, it is an undocumented feature, but even the earliest versions of DOS were coded up to allow "/" as a directory separator, and "-" as an option-prefix. It was based on a little-known, undocumented system setting.

And calling Apple a defender of open standards is even more laughable. Apple computers still come with only one mouse button (no system setting option to make it two buttons. No customization at purchase time to make your apple laptop come with 2 mouse buttons decades after the rest of the world has standardized around 2 mouse buttons). It is OK for Apple to have a "we make cool-looking, outrageously expensive toys, and if we want our users to have only one mouse button, then that is what they will have, take it or leave it" attitude, but MS is not allowed to continue coding up their OS to use "\" as a directory separator purely for backwards compatibility even though it is not needed anymore. Make of that what you will. If anything, given the market share of windows-based computers in the world, I would say it is time for other OS'es to give up their antiquated "standards" and switch to "\" for the directory separator like they should have done years back!
----
Obviously, I could have just backed off my comment about Apple, and just concentrated on defending MS, but where would the fun be in that?!! B writes back and the fun really starts!

----
From B:

Why do you keep bringing up Apple? I have not said a word about Apple in
this discussion.

I do have strong feeelings on the the forward vs. back slash question
because I have run into websites run by people who think there is no life
outside Windows and IE and used backslashes in URLs. Apparently (at least at
the time), IE would silently correct those into forward slashes so the site
worked fine for him. Meanwhile, his view was that those of us using browsers
that did not perform this silent "correction" were the ones at fault for not
using "standard" IE. Since I had a critical business need to access this
site, it was a problem.
----
Ah, now I am at fault for bringing up Apple. Notice that there was no need to bring up MS, yet he did. But now that I have brought up his favorite cult, he is miffed about it!

----
From me:

And I never said a word about MS in this discussion before you brought it up either. And I had a user of one of my models once who kept messing up in our GUI by pressing the right mouse button instead of the left mouse button. Apparently, they were used to a computer whose mouse silently "corrected" all their clicks to left clicks whether they pressed the mouse with their index finger or pinky, and whether they pressed the left side of the mouse or the right. I just considered THEM stupid, not their computer or the company that manufactured it.

I understand that you have strong feelings about the confusion caused by "/" and "\", but why pin the blame on MS? If you don't like "\", you don't like "\". I fail to see why it translates to a dislike of MS. It is not as if they invented the character or decided to use it specifically to thwart some "standard". And what prevents other "advanced" web browsers from incorporating a similar silent "correction" given that many people are used to it? Why not blame them for not evolving with the times instead of blaming an historical accident on a convenient scapegoat that had nothing to do with it?
----
As you can see, I was starting to enjoy this discussion. I do strongly believe that MS had nothing to do with the introduction of "\" in DOS, and based on that belief, I was just stating the obvious. Unfortunately, the obvious is not very convenient to A and B who have a deep-rooted bias against Microsoft and would have no problems blaming it for nuclear warfare, world hunger and the AIDS epidemic if they could! At this point, A jumps into the argument.

----
From A:
> In any case, DOS was not even written by Microsoft, it was bought from
> Seattle Computer Products by MS for licensing to IBM with their newly
> designed computer (and it was based on CP/M. I am not familiar with
> CP/M, but it is quite probable that CP/M used "\" as the directory
> separator ...

I used to own a CP/M system: it didn't have subdirectories so there was
no concept of a directory separator.

> At the time DOS was introduced in 1981, only Unix and its variants
> used "/" as the directory separator. DEC and VMS, the other dominant
> OS'es at that time did not).

DEC was a company, not an OS. Aspects of several DEC OSes are apparent
in MS/DOS but not the backslash separator. RT-11 and RSTS/E (both PDP-11
OSes) didn't have subdirectories. TOPS-10 (PDP-10 / DECsystem-10) used
commas but the directory was syntactically separated from the filename::

dev:[proj,prog,dir]file.ext

The "proj,prog" component was the Project Programmer Number (PPN), each
piece an octal number.

VAX/VMS used a similar syntax but with periods instead of commas.

The use of "/" as the command-line option prefix was consistent across
all of the DEC OSes I used and I assume that's where MS/DOS got it.

So far as I know, Unix originated the idea of a unified pathname syntax
for subdirectories and filenames.

At least one other OS I worked on used ">" as the directory separator.

> Anyway, calling MS "big" at the time DOS was introduced is a wee bit of an
> exaggeration, methinks!

B didn't say that. He said MS was big at the time Windows was
introduced, which seems like a fair statement.

One could argue that early Windoze was just a hack on top of MS/DOS, and
thus couldn't readily change the syntax, and successive versions just
continued that tradition.

Where they really screwed up is allowing and perhaps encouraging "\" as
a separator in URLs, in direct contravention to an established standard.
----
All kinds of red herrings to confuse the issue. The directory separator in CP/M (whether one existed or not) is obviously irrelevant to our discussion. It was just a conjecture on my part that CP/M is where Seattle Computer Products might have gotten the directory separator in DOS. So is the distinction between DEC as a company and their operating systems. If you say MS uses "\" as a directory separator, any sane person would understand that what is meant is that MS's operating systems use "\", not the company MS, obviously.

Similarly, the size of MS in the age of windows is irrelevant. "\" was not introduced by MS with the advent of Windows, it has always been a part of Microsoft's operating systems since day 1.


I had already written it, but A rediscovers history by writing "One could argue that early Windoze was just a hack on top of MS/DOS, and thus couldn't readily change the syntax, and successive versions just continued that tradition." Duh!

In the meantime, B is itching to get back in the discussion, so he writes as follows:


----
From B:

> I understand that you have strong feelings about the confusion caused by "/"
> and "\", but why pin the blame on MS?

Because as far as I know, MS was the first to use "\" as a directory
separator in opposition to established use.
----
Again the "established use" argument. And he still refuses to acknowledge that MS did not introduce "\" as a directory separator even though I have provided him with enough evidence to the contrary!

----
From me:

> Because as far as I know, MS was the first to use "\" as a directory
> separator in opposition to established use.

Well, hopefully based on the messages in this exchange, you will start blaming Seattle Computer Products for this problem in the future! And as A mentioned in his message, only one OS (Unix) used "/" as a directory separator. Most others used a different character or did not have any concept of directory structure. So, I have no idea what "established use" you are referring to.
----
Obviously, I was getting tired of beating the dead horse that MS did not introduce "\" as a directory separator. And I was hoping to shut B up with this message. It mostly worked, as you will see.

But in the meantime, I also wrote a response to A as below:


----
From me:

> I used to own a CP/M system: it didn't have subdirectories so there was
> no concept of a directory separator.

That is a red herring, since, as I said, MS did not write DOS. Blaming them for the "\" separator is like blaming them for the QWERTY keyboard.

>> Anyway, calling MS "big" at the time DOS was introduced is a wee bit of an
>> exaggeration, methinks!

> B didn't say that. He said MS was big at the time Windows was
> introduced, which seems like a fair statement.

The use of "\" as a directory separator did not originate with Windows. So, why does MS's size at the time of Windows matter to this discussion? BTW, windows was introduced to the public in 1985 and calling MS big in 1985 is still a bit of an exaggeration too. And in any case, MS did not even introduce "\", so the whole point is moot.

> One could argue that early Windoze was just a hack on top of MS/DOS, and
> thus couldn't readily change the syntax, and successive versions just
> continued that tradition.

I already mentioned that the "\" was retained purely as a nod to backwards compatibility. Windows perfectly understands "/" as a directory separator and even DOS did.

> Where they really screwed up is allowing and perhaps encouraging "\" as
> a separator in URLs, in direct contravention to an established standard.

How does allowing something to be used in addition to the standard become a contravention of the standard? Does the standard specifically prohibit "\" as a separator? It is not as if they specifically forbade the use of the standard and allowed people to do things only their way. That is like saying modern browsers contravene standards by allowing and in fact encouraging users to type in "google.com" instead of "http://www.google.com".

Choices sometimes confuse people, but I would much rather have more choices than fewer, thank you very much.
----
Now, we are getting closer to the crux of the issue, in spite of all the detours this conversation has taken. The issue is the use of "\" in URL's and A and B's claims that this contravenes some "standard". Hence my specific question about what the standard says and whether there is a prohibition against "\" in URL's. Here is the response I got:

----
From A:

> That is a red herring, since, as I said, MS did not write DOS. Blaming
> them for the "\" separator is like blaming them for the QWERTY keyboard.

It's your red herring. I merely documented that CP/M was not, as you
suggested, the surce of the "\" separator.

>> Where they really screwed up is allowing and perhaps encouraging "\" as
>> a separator in URLs, in direct contravention to an established standard.
>
> How does allowing something to be used in addition to the standard
> become a contravention of the standard?

Allowing a non-standard syntax to be use is not a bad thing.
Encouraging it (by not correcting it and by publishing documents which
use it) is a bad thing.

> Does the standard pecifically prohibit "\" as a separator?

You can look at the standard as well as I can. Google "RFC URL format"
and look at RFC 1738, specifically

3.1. Common Internet Scheme Syntax

While the syntax for the rest of the URL may vary depending on the
particular scheme selected, URL schemes that involve the direct use
of an IP-based protocol to a specified host on the Internet use a
common syntax for the scheme-specific data:

//<user>:<password>@<host>:<port>/<url-path>

Some or all of the parts "<user>:<password>@", ":<password>",
":<port>", and "/<url-path>" may be excluded. The scheme specific
data start with a double slash "//" to indicate that it complies
with the common Internet scheme syntax. ...

The standard does not say "'/' or whatever other character you feel
like using" though it does not explicitly prohibit "\".

> Choices sometimes confuse people, but I would much rather have more
> choices than fewer, thank you very much.

There is an axiom in the world of implementing Internet protocols which
says that one should be liberal in what one accepts and conservative in
what one generates. By accepting "\" in URLs M$ was liberal in what
they accepted (at the cost of encouraging bad habits). By not
correcting the error in the URLs they generated and expecting others to
accomodate their mistake they failed to be conservative in what they
generate.
----
Notice that he does not want to give up on the irrelevancy of CP/M to the whole argument here!

Also notice the use of Windoze and M$. It is called name-calling, but I let it pass. And to hear him talk about M$ and Micro$oft and Windoze, Window$, etc., while defending the cult of Apple, you would be forgiven for thinking that Apple is run as a non-profit philanthropy by Mother Teresa herself!

In any case, he has cited a standard. Notice that he talks about the "/" before the <url-path> in the standard, but I thought the whole argument was what was permitted inside the URL path itself, not what comes before it. After all, it is not as if MS allows "http:\\" instead of "http://". The question of whether the standard prohibits the use of "\" inside the URL is cleverly avoided. It turns out that is for good reason. My research into the standards resulted in the email below:


----
From me:

OK, I took your suggestion and looked at the standard. Specifically, I was interested in what the standard had to say about <url-path> because that is what is under discussion here, not the use of "http://" or other parts of the URL. And this is what the standard has to say:

An HTTP URL takes the form:

http://<host>:<port>/<path>?<searchpart>


where <host> and <port> are as described in Section 3.1. If :<port>
is omitted, the port defaults to 80. No user name or password is
allowed. <path> is an HTTP selector, and <searchpart> is a query
string. The <path> is optional, as is the <searchpart> and its
preceding "?". If neither <path> nor <searchpart> is present, the "/"
may also be omitted.

Within the <path> and <searchpart> components, "/", ";", "?" are
reserved. The "/" character may be used within HTTP to designate a
hierarchical structure.

Note the use of the word "may" in the last sentence. The writers could just as easily have said "must", or "should" or "has to" instead of "may", but they specifically chose "may". To me, it is a clear indication that they wanted to suggest "/" as the directory separator, but they specifically did not want to impose it as a standard. I see no standards non-compliance if MS decided to use "\" to designate a hierarchical structure. After all, dos and windows users were already used to that character to designate a hierarchical structure, so why not?

You can shout at the writers of the standards for leaving the standards vague. Or you can shout at the unix-centric coders of your favorite browser for ignoring the hierarchical structure designator of the largest operating system in the world. But MS bears no blame in this entire fiasco as far as I am concerned. "\" is perfectly acceptable in URL's according to my reading of this standards document. The standards neither mandate "/" nor prohibit "\" as a hierarchical structure designator, so I don't know where one gets the idea that MS allowing the use of "\" in URL's is heretical.
----

I have not received a response to this email from B (or A) - for obvious reasons, I think!

It is easy for people to assume that whatever they are used to is a standard, and if someone comes up with a new way of doing something, it must be wrong and against the "standards". When it comes to the use of "\" as a directory separator in URL's, it turns out there is no standard and MS is completely within its rights to use "\" if it wants to. In fact they could use any character they choose to use as a directory separator because the standard does not specify any particular character.

In any case, A now feigns boredom, and writes back as follows:

----
From A:

I am done with this.
----
Of course he is! No acknowledgment that he was wrong about any of the points he raised. No apology for dragging MS into the argument with his juvenile, baseless, ad hominem attack on them. Now he is done with this! I wrote back:

----
From me:

No problem. At least I learned a lot from this discussion, the history of DOS, and the URL standards being the least of it.
----

But really, I meant what I wrote above. First of all, I thought A and B were unbiased. That turned out to be quite wrong.

Next, I assumed that they knew what they were talking about when it comes to the history of computers and operating systems. It turns out that was not true either. I had to do my own research to prove to myself and them that Microsoft did not come up with "\" as a directory separator by themselves.

More importantly, I assumed that they knew what they were talking about when it comes to http and the web. I have never done any web development while these two have their own websites and what-not. And, in the past, when they said MS went against standards, I might have stayed on the sidelines and taken their word for it. It turns out the standards are not what these two claim they are. In their world, Unix and Apple are the standard and whatever Microsoft does is against the standard.

Whether they did that just to have a convenient punching bag or whether they really did not know what the standards said is open to debate. But it certainly tells me that there is no research like my own to uncover the real truth about anything. Now, if I had 240 hours in a day instead of 24, I will probably be able to discredit a lot more of these charlatans spouting fake "standards" and other untruths, but I don't.

For now I would have to be satisfied with the the excitement of a good debate (even though I don't consider my opponents as honorable as they could have been) as long as it lasted!

2 comments:

Anonymous said...

Thank you for sharing this.

Quite ironically MS could still be responsible for '\' as a separator, by constituting '/' as the option mark (see http://www.seasip.demon.co.uk/Cpm/optchar.html). Using '\' as path separator gives me a slight feeling of nostalgia.

Blogannath said...

Thank you for your comment, and the reference.

Actually, as mentioned in my very first email, MS did not force / as the option character. The option character could be changed to any other character using an undocumented command or option setting in config.sys. See this reference: http://www.faqs.org/faqs/msdos-programmer-faq/part4/section-20.html

Some parts of my first email were also based on the reference below, which makes for pretty interesting reading:
http://blogs.msdn.com/larryosterman/archive/2005/06/24/432386.aspx

Visitors Country Map

Free counters!

Content From TheFreeDictionary.com

In the News

Article of the Day

This Day in History

Today's Birthday

Quote of the Day

Word of the Day

Match Up
Match each word in the left column with its synonym on the right. When finished, click Answer to see the results. Good luck!

 

Hangman

Spelling Bee
difficulty level:
score: -
please wait...
 
spell the word:

Search The Web