Home ยป Why is the fact that Microsoft decided to support jQuery such a big deal?

Why is the fact that Microsoft decided to support jQuery such a big deal?


Its the first time MS is shipping an open source component they didn’t write with one of their products. This doesn’t seem like a big deal, but its almost nuclear in its implications.

Think about it… They are saying “we support this.” In an OSS product, MS has no control over the code. So, they are putting their livelihood (in some small way) into the hands of people who don’t work for MS.

I think jQuery’s popularity, the fact that it’s not mission critical code, and that the codebase is so small all came together to make for favorable circumstances for MS to dip their toe in the water.

The significance of Microsoft shipping jQuery with ASP.Net, even though it’s open source, has little or nothing to do with Microsoft supporting outside open source software and nearly everything to do with establishing a de-facto javascript framework standard.

Consider: there are currently at least 1/2 dozen javascript toolkits out there that are all very nice. These toolkits represent a huge improvement over traditional javascript development. They add power and help smooth over browser incompatibilities. Eventually you’ll have a hard time finding a web project that doesn’t use one. One day they might even be baked into your browser to save page load times. Every web developer owes it to themselves to learn one, and most understand this.

But which one? As I said, there are several out there that are an excellent technical choice. How do you choose? The problem is that you’re not really qualified to judge on the technical merits unless you learn them all, and who has time for that?

In this case it’s much easier and safer to just follow the crowd. Failing a clear technical superiority, most developers will want to pick the toolkit that gets the most adoption among other like-minded developers, for four reasons:

  • It guarantees the skill will be useful later
  • They’ll be able to find help and support for it when they need it.
  • They trust their peers to do a good job picking the framework that is technically superior, or at least technically competent.
  • Because the different options are all mainly open source, the most popular should also over time become the best technical choice.

So what we have is a situation where everyone is waiting to see which framework everyone else picks. Frankly, the lack of a clear winner among the various toolkits has hurt adoption; I know it’s prevented me personally from taking the plunge.

Until now. Now ASP.Net developers have a clear choice. If you use ASP.Net, you probably want to take the time to learn jQuery. Not Prototype. Not MooTools. Not something else. Your natural choice is jQuery.

Those other tools are nice as well, but for better or worse jQuery just got a huge leg up here, and this really is a popularity contest. jQuery’s emerging popularity among other platforms as well means it’s quickly becoming the de-facto javascript framework standard. Very soon you’ll have a hard time calling yourself a web developer if you don’t know jQuery, and a lot of people will look back and say that this was the tipping point.

So the real significance here has little to do with the whole “Microsoft using open source” thing. As far as I’m concerned it doesn’t matter as much whether jQuery is open source, though it may help in the long run. What does matter is that this will cause a significant number of developers to start using it, possibly enough to create a hegemony. And that’s what this space has really needed. We can finally start moving forward again in advancing client-side web development.

You have a 500 Pound Gorilla whose official company politics always stood against open source suddenly deciding to actively include and support an Open Source component for technical reasons. jQuery is not some legal requirement put on them by US or EU Anti-Trust lawsuits. It’s not forced on Microsoft through some standard or some “must-support” component. They are more or less solely choosing it for technical reasons instead of doing their usual “We reinvent the wheel, make it not as good as the free solutions and also not make it open source”.

It’s like the pope advertising condoms, it’s like the Washington Wizards winning the NBA Title, it’s like republicans voting for a 700 billion $ program, it’s like the OPEC supporting solar and wind energy… it’s something that seemed unthinkable before, even keeping in mind that Microsoft has some of the best talent working for them. In fact, most of the people I look up to are working at Microsoft now.

I can only imagine how much discussion and persuation work was needed to make this happen, and I lift my hat for the people within Microsoft who have proven that reason can succeed sometimes.

Related Solutions

Why not use “which”? What to use then?

Here is all you never thought you would ever not want to know about it: Summary To get the pathname of an executable in a Bourne-like shell script (there are a few caveats; see below): ls=$(command -v ls) To find out if a given command exists: if command -v...

Split string into Array of Arrays [closed]

If I got correct what you want to receive as a result, then this code would make what you want: extension Array { func chunked(into size: Int) -> [[Element]] { return stride(from: 0, to: self.count, by: size).map { Array(self[$0 ..< Swift.min($0 + size,...

Retrieving n rows per group

Let's start with the basic scenario. If I want to get some number of rows out of a table, I have two main options: ranking functions; or TOP. First, let's consider the whole set from Production.TransactionHistory for a particular ProductID: SELECT...

Don’t understand how my mum’s Gmail account was hacked

IMPORTANT: this is based on data I got from your link, but the server might implement some protection. For example, once it has sent its "silver bullet" against a victim, it might answer with a faked "silver bullet" to the same request, so that anyone...

What is /storage/emulated/0/?

/storage/emulated/0/Download is the actual path to the files. /sdcard/Download is a symlink to the actual path of /storage/emulated/0/Download However, the actual files are located in the filesystem in /data/media, which is then mounted to /storage/emulated/0...

How can I pass a command line argument into a shell script?

The shell command and any arguments to that command appear as numbered shell variables: $0 has the string value of the command itself, something like script, ./script, /home/user/bin/script or whatever. Any arguments appear as "$1", "$2", "$3" and so on. The...

What is pointer to string in C?

argv is an array of pointers pointing to zero terminated c-strings. I painted the following pretty picture to help you visualize something about the pointers. And here is a code example that shows you how an operating system would pass arguments to your...

How do mobile carriers know video resolution over HTTPS connections?

This is an active area of research. I happen to have done some work in this area, so I'll share what I can about the basic idea (this work was with industry partners and I can't share the secret details ๐Ÿ™‚ ). The tl;dr is that it's often possible to identify an...

How do I change the name of my Android device?

To change the hostname (device name) you have to use the terminal (as root): For Eclair (2.1): echo MYNAME > /proc/sys/kernel/hostname For Froyo (2.2): (works also on most 2.3) setprop net.hostname MYNAME Then restart your wi-fi. To see the change, type...

How does reverse SSH tunneling work?

I love explaining this kind of thing through visualization. ๐Ÿ™‚ Think of your SSH connections as tubes. Big tubes. Normally, you'll reach through these tubes to run a shell on a remote computer. The shell runs in a virtual terminal (tty). But you know this part...

Difference between database vs user vs schema

In Oracle, users and schemas are essentially the same thing. You can consider that a user is the account you use to connect to a database, and a schema is the set of objects (tables, views, etc.) that belong to that account. See this post on Stack Overflow:...

What’s the output of this code written in java?

//if you're using Eclipse, press ctrl-shift-f to "beautify" your code and make it easier to read int arr[] = new int[3]; //create a new array containing 3 elements for (int i = 0; i < 3; i++) { arr[i] = i;//assign each successive value of i to an entry in...

How safe are password managers like LastPass?

We should distinguish between offline password managers (like Password Safe) and online password managers (like LastPass). Offline password managers carry relatively little risk. It is true that the saved passwords are a single point of failure. But then, your...

Can anyone tell me why this program go to infinite times?

while (i <= 2) { while (i > 0) { a = a + b; i--; <- out the inner while loop when i = 0 } printf("%d", a); i++; <- at here, the i==0 each time, so infinity loop } Because your nested loop always restores the value of i to 0, And 0 <= 2 is always...

How to conditionally do something if a command succeeded or failed

How to conditionally do something if a command succeeded or failed That's exactly what bash's if statement does: if command ; then echo "Command succeeded" else echo "Command failed" fi Adding information from comments: you don't need to use the [ ... ] syntax...

How to turn JSON array into Postgres array?

Postgres 9.4 or newer Obviously inspired by this post, Postgres 9.4 added the missing function(s): Thanks to Laurence Rowe for the patch and Andrew Dunstan for committing! json_array_elements_text(json) jsonb_array_elements_text(jsonb) To unnest the JSON array....