
Ask HN: Who built XMLHttpRequest at Microsoft in 1999? - donohoe
The person (or persons) deserve a medal.<p>All I can find is it was built for Outlook Web Access. Nothing more. No names, no nothing.<p>Who's idea was it, and who built it?<p>Anyone know?<p>http://programmers.stackexchange.com/questions/123475/who-first-created-or-popularized-the-original-xmlhttprequest-msxml<p>http://en.wikipedia.org/wiki/XMLHttpRequest
======
Arjuna
It would be remiss to not mention Shawn Bracewell in the discussion. According
to Alex Hopmann, Shawn was responsible for adding asynchronous support:

 _"Step one was to bring the code up to production quality so we got Shawn
Bracewell, one of the devs on the OWA team to take it over. Being a smart guy
he promptly threw away all of my code and rewrote it in a more solid fashion,
adding async support, error handling and more."_ [1]

[1] <http://www.alexhopmann.com/xmlhttp.htm>

In addition, Jim Van Eaton wrote:

 _"XMLHTTP was born and implemented by the OWA dev effort of Shawn Bracewell.
Exchange funded the effort by having OWA development build XMLHTTP in
partnership with the Webdata team in SQL server.

XMLHTTP changed everything. It put the "D" in DHTML. It allowed us to
asynchronously get data from the server and preserve document state on the
client."_ [2]

[2]
[http://blogs.technet.com/b/exchange/archive/2005/06/21/40664...](http://blogs.technet.com/b/exchange/archive/2005/06/21/406646.aspx)

~~~
kragen
Sounds like Shawn Bracewell is the person to really credit — non-asynchronous
XHR is unusable, and unused.

Jim's remarks here are a little over the top. At KnowNow in 2000 we were
asynchronously getting data from the server and preserving document state on
the client by implementing Comet in in Netscape 4 (and IE 4), by using a
frameset with zero-height frames. These days long-polling frames that finish
loading when there's an event are more common, but we were using endless HTML
documents that would get a <script> tag added when there was an event. The
<script> tag would invoke top.somethingorother(data). A second invisible frame
was used to send data back to the server as HTTP POSTs.

We had a bunch of bodgy code to handle the case where you have several windows
open doing Comet to the same server, ensuring you only ever have one
persistent connection; otherwise the two-connections-per-server limit kicks
in, and the page stops loading forever. It's more sensible to use wildcard DNS
to circumvent this restriction.

XHR is a much saner way to do AJAX, and Websockets are a much saner way to do
Comet, but you can do AJAX and Comet without them. XHR didn't "change
everything" and "put the 'D' in DHTML". It just made it more convenient.

~~~
derefr
> non-asynchronous XHR is unusable, and unused.

I wouldn't say this at all. We could have gone in a completely different
direction with Javascript, even back then: spawning numerous lightweight
processes running userspace code which then sit in a blocking "receive" state
whenever they want to wait for the result of an XHR. In other words,
Javascript could have been Erlang for the browser, instead of the odd OS7-like
cooperative-multitasking abomination we have now.

(What we _did_ get are Web Workers, which are full OS threads you can't even
message if they're doing something synchronous. What's even the point of
these?)

~~~
kragen
Sure, non-asynchronous XHR _could have been_ usable. Opera at the time
actually did give you multiple JS threads, but no locks or other
synchronization primitives, so it was effectively unusable. We complained and,
perhaps coincidentally, they "fixed" it by making it work like IE and
Netscape.

------
BarkMore
It was Adam Bosworth's idea. People on Adam's team built it.

Edit: I recall seeing Bosworth's auction demo in late '97 or early '98. This
predates Hopmann's timeline. Perhaps my memory is faulty.

~~~
corin_
Slightly different story at <http://www.alexhopmann.com/xmlhttp.htm> with an
update regarding Bosworth:

 _Adam and his team (especially folks like Rod Chavez, Michael Wallent and
many others, as usual I'm probably forgetting to mention some of the key
people) invented the Dynamic HTML part which was miles beyond what Netscape
was doing at the time. I just filled in the XMLHTTP piece, and collaborated
with many others to do the first major app that tied it together (Outlook Web
Access). Without the earlier contributions of the Trident/IE teams, it
wouldn't have been possible, and its absolutely true that Adam and many folks
he worked with had the conceptual vision for tying it together (he called it
weblications at the time)._

Note to OP: this blog was reference 6 in the Wikipedia article you linked to.

~~~
daigoba66
I feel that I want to now use the term "weblications".

~~~
chris_wot
Feel free to use it in the blogosphere.

------
ExpiredLink
BTW, XMLHttpRequest was a big mistake with significant consequences from
Microsoft's point of view. It opened the door to Web applications an ended the
age of desktop applications and thereby Microsoft's dominance. If MS managers
had understood the technology they would have never let it escape into the IT
world. Without IE's accidental support other browsers (Netscape, Firefox)
would have been unable to establish the technology.

------
g8oz
XMLHttpRequest was the critical piece in enabling proper browser applications.
If it had come from Firefox and the functionality it made possible was not
available on IE the uptake would have been minimal.While is has been beyond
fantastic for the world, the results have been terrible for Microsoft and key
to the diminishing importance of Windows. I would thus count XMLHttpRequest as
an own goal.

------
MatthewPhillips
I love getting history like this. I'll add to the question if any
Microsoftians are around: who decided to call it XMLHttpRequest?

~~~
alexhop
I did (Alex Hopmann). The easiest way to ship it in IE5 at that relatively
late stage (right before IE5b2) was to put it in msxml.dll so we had to put
the XML twist on it for that to make sense.

------
Thiz
I'd like to know the first guy to send json over the wire starting the ajax
craze.

~~~
jdminhbg
Douglas Crockford, as that was the first thing JSON (as a data format) was
used for: <http://en.wikipedia.org/wiki/JSON#History>

~~~
chubot
Crockford has said that people were using JSON before he "discovered" it.
That's why he says he discovered rather than invented it.

Unfortunately I don't remember who those people were, but anyone who used
XmlHttpRequest, which was apparently there in the 90's, could have used it.

~~~
rsl7
I made up and used something similar to JSON in 1996. It's not difficult to
think up if you're trying to find the simplest possible text-based
hierarchical data format. There were a lot of variations on this idea.

------
pbreit
I'd like to know...so I could ask him/her why the heck a data format was
melded to an Http client!

------
corresation
_Who's idea was it, and who built it?_

While history generally gets rewritten towards a simplified, single-victor
model (e.g. Edison and electricity, Ford and assembly lines), there is no
simple answer to this because the need for a scripted way to load and consume
content was _very_ widespread.

There were a number of solutions at the time. The most prevalent was simply
having a hidden iframe (which actually worked quite well, with the biggest
downside being a loading event noise it would fire in Internet Explorer). In
Internet Explorer you could also take advantage of any Safe-For-Scripting
marked ActiveX control (yes, ActiveX was the foundation upon which
XmlHttpRequest was possible, adding binary extensibility to the browser),
which at the time included a large number of third party tools and libraries
for doing calls to web services, and a lot of hand-rolled solutions, pre-
XmlHttpRequest.

The problem, of course, is that your users had to have those same components
installed which could be an issue.

Which was why it was a great convenience when Microsoft started releasing
mostly unnoticed XmlHttp components in the MSXML parser library. It was a
fragile, memory-leaking beast, but it had the benefit of starting to be
packaged in other Microsoft installs, so it was increasingly likely to exist
on your client's PCs.

The TLDR; is that it was inevitable, and it is unfair to the truth to
attribute such a progression to one person.

EDIT: To why I know this, at the time '99/'00 we were building a rather
innovating web application to monitor and control distributed power generation
units across the continent. We used the iframe approach, and then an HTTP
component included with a Delphi component suite (name escapes me right now),
and were then one of the first beta testers of XmlHttp.

~~~
jonny_eh
Just because an invention appears to be inevitable, it doesn't mean the actual
inventor doesn't deserve a ton of credit.

~~~
corresation
Credit is absolutely due for using the monopoly distribution of Microsoft
(that is not a slur, but it is simple truth that such components from other
vendors could not have the same impact) to essentially sneak a simple HTTP
ActiveX component through in the MSXML library, making such dynamic web tasks
simpler. Credit is also due to the people who developed and implemented COM
and ActiveX and safe-for-scripting (all _heavily_ maligned), making it
possible in the first place.

