Thursday, November 29, 2007

Microsoft and Innovation

The commenter's on Jeff Atwoods latest post tend to fall into two camps. On one side you have the people who make their living with Microsoft products, most of them are also open source advocates, without being mouth breathing fan boys.

On the flip side, you have the Anti-Microsoft trolls. These people are often there just to take potshots at Microsoft. Ironically, most of them can not agree on what technology they do endorse, considering the amount of flame that goes around on the popular open source haunts.

It is the latter camp that prompted Chris Pratley (A project manager for Microsoft Office) to write this on his blog:

I've been a little gun-shy of blogging about Word for fear of being inundated by what are as far as I can tell a gang of "net thugs" who roam the net making outrageous claims about Microsoft and its behavior, motives, etc in every public forum they find (little of which information they are privy to or have evidence for, and which I find personally offensive, not to mention incorrect - since they often are implicitly about me if the talk is about Office and therefore I for one know them to be incorrect). But enough about that - let's just dive in and see what happens. Hopefully the net-dwelling paranoid delusional conspiracy theorists won’t descend upon me… :-)

It doesn't take much wit to see past the trolls weak arguments, but I was particular struck be a reoccurring theme on Jeff comments.

This theme in a nutshell was:
"Microsoft does not Innovate, they only copy."

While this statement is laughably ridiculous, I thought I'd try to think of a handful of innovations that have come directly from Microsoft. Here, in no particular order, are just a few thing that the "evil empire" came up with first.

The Taskbar

Popularized with Windows 95, the taskbar was actually a feature of Windows 1.0. A crude representation of active tasks laid were represented in a horizontal bar on the bottom of the screen. This was two years early than the Acorn Author operating environment that many Anti-Microsoft people cite as the first task bar. The taskbar was gone from Windows until Windows 95.

In the early 90's, I had a chance to tour the Microsoft Redmond campus, and play with what was then known as Cairo. While Cairo never saw the light of day, its unique user interface was carried over for Windows 95.

Real Time Spell Checking

This was first featured in Microsoft Word 6.0, and has since been incorporated into every word processing program on the planet.

Rapid Application Development

RAD was a hugely popular industry buzzword during the 90's, and it was born with Microsoft Visual Basic.

Introduced in 1991, Visual Basic was a innovative new way to rapidly develop applications and it turned the programming industry on its head. The closest competitor to Visual Basic (Borland Delphi) was not released until 1995.

OLE and COM

OLE was originally designed by Microsoft in 1990 by the Microsoft Office team out of necessity. It was used to allow real time embedding of Excel documents into Word, and vice versa. This paved the way for what became known as COM (Component Object Model) a technology that allowed any COM compliant object to be used by any application. COM allowed reuse of objects with no knowledge of their internal implementation because it provided interfaces that are separate from implementation.

COM is heavily adopted and is used in nearly every windows application even to this day and was actually imitated by the open source movement with CORBA.

.NET and the Microsoft CLR (and DLR)

The CLR (Common Language Runtime) was not the first JIT compiling virtual machine, but it was innovative because it allowed an application to be built in any .NET language (or a combination of them) with seamless integration. Want to use VB for the front end, C# for the database layer, and C++ for some intensive graphics calculations? No problem!

The DLR continues this practice by creating a platform for dynamically typed languages such as Ruby and Python.

Active Desktop

Introduced with IE 4.0 and Windows 98 and powered by COM/ActiveX technology, Active Desktop was Microsoft's vision of integrating desktop applications with web applications.

Litigation kept Microsoft from fully leveraging the concept, but the idea lives on now in many open source projects :)

XMLHTTPRequest and AJAX

Believe it or not, the radical technology that changed the web and the technology that powers Gmail was stuck into IE 4.0 without any fanfare.

The Microsoft Outlook team needed a way to communicate behind the scenes on their new Microsoft Web Mail client, so they built an ActiveX component for IE 4.0. This little component remained under the radar for several years, before the rest of the world discovered its power and AJAX was born.

I wonder if Google has ever said "thank you".

Windows Powershell

Powershell is the long awaiting replacement for the default windows shell and is different from any scripting shell environment ever created.

Scripting is fully object oriented by leveraging the .NET CLR. Objects (known as cmdlets) can have their output piped with a single keystroke. If you have not had a chance to check out PowerShell yet, check it out. It is amazing.

This is just the tip of the iceberg on Microsoft innovations. Microsoft employs some of the brightest minds in the industry, and they and throw out more innovations every day than any of the Anti-Microsoft trolls have ever come up with.

So, regardless of what operating system you are reading this post on. Next time you visit an AJAX enabled website, or correct your spelling in a document, remember that Microsoft innovation is the reason you have it, and perhaps give them a the credit they do deserve.

18 comments:

Ceesaxp said...

While I would not go as far as to say that Microsoft does not innovate, I would not necessarily agree that many of the items you list are "innovation."

Windows 1.0 has not come from nowhere, it was based on what was available back then -- be it Mac, or Alto, or Amiga, or GEM. Windows borrowed much, if not most, of it from there. Comparing Task Bar of WIndows 95 to an "iconbox" is a bit stretchy. Also, while the configuration as a narrow strip showing some representation of running applications is nice, you can see lots of GUI usability studies that would point out that Task Bar is quite worthless at that.

Whether VB was first truly RAD tool -- I would not go as far either. In UNIX world, Tcl/Tk predates it, and speed of developing and deploying a Perl script would bit it as well. In Windows world, VB may have been the breakthrough, but innovation in a narrow field (which also happens to be your home turf) is hardly Innovation.

Active Desktop -- hmm... Tricky, that is. It was possible to embed bits and pieces of apps into X11 desktop before AD, it may not been as easy -- but it also was and is a lot more flexible.

I am not as certain about merits of the other innovations you list, but a few of them don't really strike any cords as things that were breakthroughs. At least not in the ways that make your heart pound faster.

Anonymous said...

.NET is a rip-off of Java: there's almost nothing innovative about it. Certainly not the concept of multiple languages targeting the same virtual machine. The first edition of
The Java Virtual Machine Specification, written in 1996, said,"any language with functionality that can be expressed in terms of a valid class file can be hosted by the Java Virtual Machine. Attracted by a generally available, machine-independent platform, implementors of other languages are turning to the Java Virtual Machine as a delivery vehicle for their languages." JPython came along in 1997 and Kawa in 1998, well before .NET.

Anonymous said...

While I certainly wouldn't go as far as trying to lump Perl in the same class as Visual Basic when it comes to RAD, I'm not sure that it was the first. I think that the NeXT OS had GUI RAD tools before Visual Basic came along.

And even though they were not officially supported by Sun, there were a whole boatload of languages running on the JVM, years before .NET was even released.

redsolo said...

I dont understand the innovation of the power shell. Is the best feature that it is scriptable? Im only seeing it as a copy of bash or any other shell because administrator became tired of going around and doing the tedious gui operation on all computers.

Ole and com? Sorry, MS has already lost a case for this. Search for "excel patent" and you will find many links describing that MS didnt innovate this as they were trespassing on a patent.

Jonathan Holland said...

Radsolo:

Windows Shells have always been scriptable (Both with batch files first, and then the WSH later).

Powershell is the first shell to run on a virtual machine and be truly object oriented.

As far as the Excel Patent infringement, that patent was only for connecting a spreadsheet to a database, and not for the whole concept of OLE. They did not even use the underlying technology.

COM is much much much more than object embedding, and is entirely a Microsoft product.

AaronZ said...

Yeah! Microsoft hasn't dun nuthin' fer nobody! You all ripped off papyrus and the abacus!

Get a clue! You're not a real programmer unless you write in assembler, or my language du jour. I wrote this entire reply in BINARY! You are all fools to have to use a translator to read it. The only way to write software is using a patchwork of 15 different technologies used by .0000001% of the developers out there.

There...is that ridiculous enough? Do I get in the 20%alpha club now? I want my decoder ring.

Jonathan Holland said...

Aaron: Your decoder ring is in the mail.

Super Programmers Unite!

chad said...

I think people are confusing 'invention' with 'innovation'.

Invention, which it seems most people are talking about, is truly rare. Yes, in this regard, Microsoft has done very little. But then, so has just about every other company. Java is not invention, it was based on a bunch of other previously built technologies and ideas.

Java was an INNOVATION. It combined other technologies together in a new an INNOVATIVE way.

.NET, likewise, was an improvement upon Java and a few other features/inventions/innovations and presented them in yet another NEW and INNOVATIVE way.

Real-time spell checking is another example of INNOVATION.

'Innovate' means 'to do something in a new way', whereas 'invention' means 'to produce something new through imagination'.

Microsoft innovates. They do *some* invention, but not much. Innovation is very important, in fact almost MORE important than invention.

The XmlHttpRequest might be considered an 'invention', but it wasn't really used much. AJAX is an INNOVATION based on XmlHttpRequest. AJAX uses XmlHttpRequest in a new way to achieve dynamicism that hadn't been possible earlier.

Jonathan Holland said...

@Chad:

The XmlHttpRequest might be considered an 'invention', but it wasn't really used much. AJAX is an INNOVATION based on XmlHttpRequest. AJAX uses XmlHttpRequest in a new way to achieve dynamicism that hadn't been possible earlier.

I don't know if you ever used the Exchange Web Mail client, but it used XmlHTTPRequest to perform what later become known as AJAX. Of course, back then we called it Windows Remoting.

Trant said...

Next Interface Builder was released in 1998 and was superior to VB in many respects. Of course like most of our modern technologies GUI interface builders came out of Xerox Parc in 1981... along with Ethernet, network printing, object oriented programming, the gui...

[)amien

Ceesaxp said...

@jonathan holland: Yes, Windows and DOS were always scriptable. but the pains of DOS/Win scripting compared to (ba)sh/(t)csh/ksh/zsh is unbearable. So, in a way it is a welcome thing that they've come up with something much more robust than crappy old BATs. I have always questioned the merits of trying to merry C# and shell script -- it's just too much overhead where none was needed.

OLE is cancer, IMHO. At least in the way that it was designed and implemented by Microsoft.

VK said...

I think this really goes to perception. People View Microsoft as the "Evil Empire" because they thnk that what happens is People writing Office walkdown the hall to the OS people and say, "By the way we're introducing X,Y,Z so could you tweak it so that Windows will let our competition work with Z but obscure how X & Y actually function?" I'm not saying that's what happens but it's a perception. My own personal choice is to not use MS products unless Iabsolutely have to; mainly because I view Microsoft as a OS vendor and I'd much prefer they concentrated on thier OS then trying to feed me software that real-time spell-checking in a Word processor that I don't use half the features in.

Fred Said said...

Sorry I have to call you out on this one:- As far as I can determine the first check-as-you-type spell checking was Spellmaster from Computer Concepts (now Xara) in 1987. It worked with all the major BBC word processors of the time including Inter-word and Wordwise. It was phenomenally successful throughout the UK and the commonwealth countries where Acorn computers had tremendous traction.

The taskbar in Arthur (as the Archimedes operating system was then known) operated very differently from that in Windows.

Anonymous said...

VB wasn't first truly RAD tool. Look at Clarion (from Wikipedia: Clarion is historically notable as being one of the first computer languages for MS-DOS that provided a 4GL screen painter, report writer and native database access.)

And one interesting fact about TopSpeed compilers:
All the TopSpeed compilers, including Pascal, C, C++ and Modula 2, created compatible binary code, so you could mix and match languages within a single application (a capability .NET would make mainstream a few decades later).

Macedonczyk said...

Visual Basic - This is not Microsoft invention. They have bought it and expand - see here: http://www.johnsmiley.com/visualbasic/vbhistory.htm

Net - Copy of Java and Delphi. Hejlsberg (main architect of .Net) was creator of Delphi. Microsoft had to pay 100 milions $ to Borland for stolen technology.

I like microsoft products but they are not great in inovation.
They are the best in coping and adopting.

Shanx said...
This post has been removed by the author.
Shanx said...

Give me a break. Visual Basic is VERY much a true and outstanding innovation. Yes MS acquired an old competitor, and what do you expect but laments from an original owner (why the heck did the tech sell in the first place?) who couldn't quite make it what VB now is.

It's among the top RAD platforms out there to reach a huge population of computer users, both personal and enterprise. Only Powerbuilder and Delphi came close, with Visual C++ for the truly mission critical apps, the world of which is a bit smaller.

Yes, there may be a couple of UNIX examples but the likes of GTK still suck rocks after all these years. Yes, there may have been that esoteric Pascal thing. Where is it? What did it do? Anyone can claim a superlative technology in their garage, there's no dearth of these claims. The biggest point is to make them viable for actual use, to influence real lives, real development, real communication and so on.

The definition of "innovation" is in fact incremental and substantial innovations. A true seminal change comes along only once in a very magenta moon.

ASP, Windows Remoting (now AJAX), etc are all original MS endeavors, whether developed through scratch or through acquisition, and copied or owned shamelessly by competitors. Talk to a JSP developer and ask him if he knows where Sun got its inspiration? ASP 1.0 was functional in 1996, when the Java camp was playing around with applets in little hats.

Finally, there's nothing wrong with acquiring a technology to make it better. One, it's a regular business practice, it's not like MS is the only one doing it. Even the "open source" technologies of today, such as MySQL, are doing it all the time. And secondly, I would think it pretty stupid for a technology company in this day and age of reuse of code to build everything from scratch. Why should it? Google, Yahoo, Siebel, Sun...everyone acquires and makes it better and marketable. So what? Get over this silly fanboyism.

Anonymous said...

Maybe it all gets down to semantics, but here's how I see it...

Microsoft rarely innovates. They have a very successful history of implementing other people's innovations, to often/usually include enhancing them.

To me, "innovate" implies that you came up with the idea. MS really doesn't do this. Someone else comes up with an idea, and then they buy it, or imitate it, or even (in some legally proven cases) steal it.

For every case of MS actually coming up with an idea that would generally be considered a true innovation, there are dozens or hundreds of instances of innovations that they implemented but did not originate.

They are fantastic at combining ideas from many places into one product, whether it's an OS or application or underlying technology, and for that they have been handsomely and appropriately rewarded.

They are just not really innovators. How many patents do they have (that they filed for as opposed to purchasing) in relation to other software producers? I don't know, but I'm betting they don't compare to the software patents of any of a number of other companies. And you can't say it's due to a lack of legal talent on staff.