Thursday, January 13, 2005

Re: Did Microsoft lose the API war ?

Any of you used Google's Desktop search. Amazing desktop app which starts a web server locally. I really wonder how they made the app !! Will more
apps be developed in this way?

I haven't downloaded it (yet) because first, I don't have so much stuff that I can't find it using Explorer and second, I read some bad reviews about it - mostly having to do with making your system slow to a crawl. My dad has it on his PC and he's said its been quite sluggish of late. I can't confirm if Google Desktop search is the culprit, but the timing seems more than just coincidental.

Anyway, desktop search became the hot new thing end of last year. Every big major "search" company and his brother released beta software for searching your hard drive. Most look to do the same thing. I guess they all create some sort of continual index of your drive. That's why they must hog system resources. Google presents its results in the browser using the same UI as it's website. I think Microsoft's solution is a Windows app (big suprise right?). Are you sure Google is starting a local web server? Why would they need to?

Also we discussed a bit on Rich Internet Applications before. It is easy to develop those such apps in a manner independent of the OS.. read flash. So that was one very valid point of the future apps being more internet oriented. That should hurt MS a lot.

I somehow just can't see Flash ever being taken seriously as a development platform. It's fine for animation, cartoons, cards, movies etc... but for actual applications, I'm skeptical. I have read about and seen demos/prototypes of potential applications that could be developed with Flash MX+, but no real apps. To me it feels quite unnatural inside of a browser. So I don't see Flash specifically as a huge threat to Microsoft. We have discussed this before and I know you disagree.

What the author mentioned, and I agree with, is that the Web as a platform is a threat. A few years ago, people didn't take HTML, CSS, Javascript, DHTML etc... seriously. It could not compete with the "richness" of Windows apps. And it is true today, but as he says, people have become tolerant of it. The web is not just a place to publish documents anymore... its become a development platform.

It's ironic that it turned that way because during 96-98 period, when Netscape was still leading, Microsoft threw everything they could at IE. It was a really great browser back then (much much better than Netscape). And I'm not talking about UI or security etc..., I'm talking about support for DHTML, CSS, (X)DOM, XML, XSL within the browser. Plus they introduced Iframes, DHTML behaviors, XML data islands and XMLHttpRequest in IE 5. It's just that since these wasn't standards back then, no one ever bothered to use them. Now, afer 5-6 years, when the major browsers support them, things like GMail are coming out which look quite revolutionary. Now suddenly you can replicate some "rich" functionality within the browser and you don't NEED a Windows app.

The author mentioned about Windows and Office being the main money-earners for MS. I had heard that before. But there other apps must be profitable too!! Any of you have an idea on the other hot-selling MS apps?

I dunno what the current numbers are but a couple years back, Windows and Office made something like 60-70% of their revenue. The other businesses weren't doing very well. In recent years, they've had some success with their Servers (SQL, Sharepoint, Biztalk etc...), development tools and MSN, but it seems like a drop in the bucket compared to the big two.

Its funny how the author mentioned Apple and Sun. Apple has just had a great year selling iPods and hope to translate that to better sales of
other products.

Yup, iPod is the best thing that could happen to Apple. It's the "cool" thing everyone wants. I think it's completely overpriced. You can get similar products from Creative and others at half the price. Plus, I think Apple is making a huge mistake (same that they made with their computer business), in only being compatible with their AAC format. So far it hasn't hurt them, but imagine if you want your existing music (which mostly likely has been illegally downloaded and is in MP3 format) to play on an iPod? You have to convert everything to AAC. Why would you want to when others can play them? Right now it's all about the coolness factor.

MS obviously is out there promoting the WMA format. It's not a standard but they are big and bad enough to get everyone else to support them (Check out playsforsure - Isn't it the dumbest name ever?). Sound familiar? Almost an exact repeat of what they did to Apple with Windows. So lets see what happens this time.

BEA is a Java company which make application servers and lots of very high end server stuff. They are the largest competitiors of IBM on a lot of Java apps. The reason given was simple. Kids don't get to play with BEA software. Seriously!! Devs were not exposed to BEA tools till in the co. and so were a little averse to learning new stuff. Why MS has has such a large developer community was that a lot of kid used MS. So that is an advantage for Java and Linux today. Java is being taught in a lot of courses and Linux has taken a lot of devs' mind share and "heart share".

Great point. I would actually say that MS is not that big with kids. Their languages aren't taught in (good) CS curriculums - Java is. Java is seen more of a standard and a good "academic" language/platform. If MS gets any exposure it's through C++. They are a big player with VC++. You won't see .NET anywhere. But they are doing something about it. The only reason I have Visual Studio .NET is because I got it for 30 bucks at my University computer store. They have some deal with Microsoft for students. The .NET framework and C# compiler are free.

As I must have mentioned a zillion times before, parts of the Java API which are changed to newer versions are not removed. Just marked as deprecated, but can still be used. Mohn had mentioned about a break wrt .NET 1.0 and 1.1. I was of the opinion that the .NET style of newer releases was better but the blog changed my views on the topic (but not completely).

From what I understand, the .NET method is the same. Nothing is removed. It is just marked deprecated. Everything you write with v1 will work with v2 of the framework - like Java. What I was confused about was backward compatibility vs forward compatibility. Backward is where older code works on newer framework. Forward is where newer code works on older framework. Forward is hard to accomplish 100% because if you add new things in v2, it will obviously NOT work on v1. With generics I think Java is trying to accomplish this (Can Rahul confirm this?). .NET generics is adding new types which WON'T work on v1.

I hope I haven't confused matters further - Check this page out on .NET backward/forward compatibility. They explain it nicely - about what a breaking change means and also about configuration files.

The Java camp was stagnating before .NET came into the
scene. Java 5.0 was released very fast to fix the imbalance, but still has
a long way to go.

Java 5.0 has made up a lot of ground. I don't see it as being a huge feature gap anymore. The one place maybe that they are lacking is ASP.NET like functionality. It seems they haven't come out with anything to counter that. Any work going on towards that? At the same time you can say that Java is leading with newer things like AOP etc... Maybe not as a standard from JCP, but it's there. I haven't read anything about it from the .NET side.

In defence of MS, how long is it possible to stretch an API without a fresh start? They must have had some minimum years to support. MS needed a
new API, to deliver the next generation OS. But some degree of backward
compatibility is a must. Mohn - could you clarify the degree to which the
backward compatibility will/will not be supported?

In another defense of MS, it has to be said that they bend over backwards to make Windows backwards compatible. Even with Longhorn, all your .NET, Win32, VC++, VB and even older apps will work fine. In a demo they showed VisiCalc running on an early build.

And another thing is that the "MSDN camp" are not Windows developers. Guys in the "Raymond Chen camp" are developing Windows and they will do everything to remain backwards compatible. The "MSDN camp" are writing about all the greatest bleeding edge things that sit on top on Windows. There are no API's invoved there.

And you raise another interesting point - How long can MS just keep on developing Win32? It's not like they didn't have anything better to do, so they decided to develop .NET and now Longhorn (XAML etc...). They were getting killed by Java. It was much superior to anything they had. .NET was a necessity for them to be able to compete and stop developers from jumping onto the Java bandwagon.

And yet anothing thing to mention about backwards compatibility. They have something called "Interop" in .NET where you can call all the Win32 API's without doing anything special (as in Java where you need special wrappers?). So when you are writing .NET apps, the entire Win32 library is available if necessary. Plus you can interact with your VB and VC++ apps through COM wrappers if needed.

They might lose the API war, but you can't say it was because they weren't backwards compatible.

In conclusion .NET defeated Java (as of today), but MS MAY have lost to MS.

I would say, .NET is good competition for Java, but MS will loose to the Web platform.

MS has a dilema. They want developers to use their platform (IE, ASP.NET) to develop for the web, but at the same time they want to protect Windows. So what it comes down to at the end is that MS is trying for the best of both worlds. They want the convenient development methods of the web but want developers to write Windows apps. These are contradictory strategies and I think this is what will hurt them in the end.

So I blurted a lot more!

No comments: