Wednesday, January 12, 2005

Did Microsoft lose the API war ?

I'll just discuss a few things in the blog "How Microsoft Lost the API
War" by Joel Spolsky at http://www.joelonsoftware.com.



Here's a theory you hear a lot these days: "Microsoft is finished. As soon
as Linux makes some inroads on the desktop and web applications replace
desktop applications, the mighty empire will topple."

However, there is a less understood phenomenon which is going largely
unnoticed: Microsoft's crown strategic jewel, the Windows API, is lost.



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? 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.


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?


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. Sun on the other hand is going to go ahead with (what i
suppose is) the biggest risk ever!! So the entire arena is really hotting
up. I don't remember where I read about why BEA will not being able to
really sell a lot. 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.
And so obviously used that as a platform OS to develop on. With IBM the
argument is different because they are also a huge services company. Some
other arguments were also made. 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".


The Raymond Chen Camp and The MSDN Magazine Camp section was amazing. Some
very valid arguments were made wrt the break in the Win API. There are a
few points in this regard.


Like all other blogs, I'll converge to Java vs .NET. 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. That a lot of devs feel is not very good. It does ensure
backward compatibilty but isn't that beautiful.


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).


MS may have lost the API war wrt to Win32 but they have really taken the
fight to Java. 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.


At this moment I think .NET is leading compared to Java. I have actually
advised guys to try out .NET rather than Java if they are not interseted
in the politics. Features like STL.NET which Mohn mentioned about should
really attract C++ devs. Dinesh is a good test case for this. Dinesh -
Will you prefer to use .NET or Java? Dinesh has been coding a lot in Java
for different reasons but it will be intersting to know what he would
personally prefer. I have heard about .NET code being written for custom
apps. How much is being used for apps for the general market I do not
know.


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?


So is the Linux API (if it exists) a valid alternative? Firstly they do
not have a large user base now and should take quite some time for a
feasible user bas to be set up. The sub components in Linux distro's are
changed too often. With rapid development cycle's I do not think backward
compatibility is given high priority. Hrishi - could you clarify/comment
on this? Wrt open-source Java, guys like me say that compatibility,
platform independence may be broken. Open source guys say that the newer
broken Java if good, will cause automatic adoption, something that I do
not totally agree. So overall I do not think that Linux is viable for
desktop apps??


So the future seems the Web. And don't host your application on your own.
Give it to Sun.


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


So blurted a lot. What d'you all think?



No comments: