This link has been bookmarked by 137 people . It was first bookmarked on 19 Jul 2006, by Kevin Wen.
-
23 Oct 15
-
23 Jan 15
-
How Microsoft Lost the API War
-
"Microsoft is finished. As soon as Linux makes some inroads on the desktop and web applications replace desktop applications, the mighty empire will topple."
-
Microsoft has an incredible amount of cash money in the bank and is still incredibly profitable
-
It has a long way to fall. It could do everything wrong for a decade before it started to be in remote danger, and you never know... they could reinvent themselves as a shaved-ice company at the last minute.
-
Well, guess what. Mainframes are still with us, nothing happened on January 1, 2000, and IBM reinvented itself as a big ol' technology consulting company that also happens to make cheap plastic telephones.
-
Microsoft's crown strategic jewel, the Windows API, is lost
-
he cornerstone of Microsoft's monopoly power and incredibly profitable Windows and Office franchises, which account for virtually all of Microsoft's income and covers up a huge array of unprofitable or marginally profitable product lines
-
he Windows API is no longer of much interest to developers.
-
he goose that lays the golden eggs is not quite dead, but it does have a terminal disease, one that nobody noticed yet.
-
Developers, Developers, Developers, Developers
-
The logical conclusion of this is that if you're trying to sell operating systems, the most important thing to do is make software developers want to develop software for your operating system.
-
hat's why Steve Ballmer was jumping around the stage shouting "Developers, developers, developers, developers."
-
It's so important for Microsoft that the only reason they don't outright give away development tools for Windows is because they don't want to inadvertently cut off the oxygen to competitive development tools vendors (well, those that are left) because having a variety of development tools available for their platform makes it that much more attractive to developers
-
But they really want to give away the development tools.
-
Through their Empower ISV program you can get five complete sets of MSDN Universal (otherwise known as "basically every Microsoft product except Flight Simulator") for about $375
-
Command line compilers for the .NET languages are included with the free .NET runtime... also free. The C++ compiler is now free. Anything to encourage developers to build for the .NET platform, and holding just short of wiping out companies like Borland.
-
Why Apple and Sun Can't Sell Computers
-
"nobody" I really mean "fewer than 10,000,000 people," and so on and so forth.)
-
Why? Because Apple and Sun computers don't run Windows programs, or, if they do, it's in some kind of expensive emulation mode that doesn't work so great
-
emember, people buy computers for the applications that they run, and there's so much more great desktop software available for Windows than Mac that it's very hard to be a Mac user.
-
The Two Forces at Microsoft
-
The Raymond Chen Camp and The MSDN Magazine Camp.
-
Raymond Chen is a developer on the Windows team at Microsoft
-
He's been there since 1992, and his weblog The Old New Thing is chock-full of detailed technical stories about why certain things are the way they are in Windows, even silly things, which turn out to have very good reasons.
-
The most impressive things to read on Raymond's weblog are the stories of the incredible efforts the Windows team has made over the years to support backwards compatibility:
-
I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away
-
They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
-
his was not an unusual case. The Windows testing team is huge and one of their most important responsibilities is guaranteeing that everyone can safely upgrade their operating system, no matter what applications they have installed, and those applications will continue to run, even if those applications do bad things or use undocumented functions or rely on buggy behavior that happens to be buggy in Windows n but is no longer buggy in Windows n+1.
-
Raymond Chen writes, "I get particularly furious when people accuse Microsoft of maliciously breaking applications during OS upgrades. If any application failed to run on Windows 95, I took it as a personal failure. I spent many sleepless nights fixing bugs in third-party programs just so they could keep running on Windows 95."
-
A lot of developers and engineers don't agree with this way of working. If the application did something bad, or relied on some undocumented behavior, they think, it should just break when the OS gets upgraded.
-
The developers of the Macintosh OS at Apple have always been in this camp
-
t's why so few applications from the early days of the Macintosh still work. For example, a lot of developers used to try to make their Macintosh applications run faster by copying pointers out of the jump table and calling them directly instead of using the interrupt feature of the processor like they were supposed to.
-
To contrast, I've got DOS applications that I wrote in 1983 for the very original IBM PC that still run flawlessly, thanks to the Raymond Chen Camp at Microsoft
-
I know, it's not just Raymond, of course: it's the whole modus operandi of the core Windows API team
-
But Raymond has publicized it the most through his excellent website The Old New Thing so I'll name it after him.
-
That's one camp. The other camp is what I'm going to call the MSDN Magazine camp, which I will name after the developer's magazine full of exciting articles about all the different ways you can shoot yourself in the foot by using esoteric combinations of Microsoft products in your own software.
-
he MSDN Magazine Camp is always trying to convince you to use new and complicated external technology like COM+, MSMQ, MSDE, Microsoft Office, Internet Explorer and its components, MSXML, DirectX (the very latest version, please), Windows Media Player, and Sharepoint... Sharepoint!
-
The technical name for this is DLL Hell. It works here: why doesn't it work there?
-
he Raymond Chen Camp believes in making things easy for developers by maki
-
easy to write once and run anywhere (well, on any Windows box)
-
The MSDN Magazine Camp believes in making things easy for developers by giving them really powerful chunks of code which they can leverage, if they are willing to pay the price of incredibly complicated deployment and installation headaches, not to mention the huge learning curve
-
Microsoft Lost the Backwards Compatibility Religion
-
Inside Microsoft, the MSDN Magazine Camp has won the battle.
-
The first big win was making Visual Basic.NET not backwards-compatible with VB 6.0
-
This was literally the first time in living memory that when you bought an upgrade to a Microsoft product, your old data (i.e. the code you had written in VB6) could not be imported perfectly and silently
-
It was the first time a Microsoft upgrade did not respect the work that users did using the previous version of a product.
-
And the sky didn't seem to fall, not inside Microsoft. VB6 developers were up in arms, but they were disappearing anyway, because most of them were corporate developers who were migrating to web development anyway. The real long term damage was hidden.
-
With this major victory under their belts, the MSDN Magazine Camp took over.
-
Suddenly it was OK to change things. IIS 6.0 came out with a different threading model that broke some old applications
-
I was shocked to discover that our customers with Windows Server 2003 were having trouble running FogBugz.
-
Then .NET 1.1 was not perfectly backwards compatible with 1.0
-
nd now that the cat was out of the bag, the OS team got into the spirit and decided that instead of adding features to the Windows API, they were going to completely replace it.
-
Instead of Win32, we are told, we should now start getting ready for WinFX: the next generation Windows API. All different. Based on .NET with managed code. XAML. Avalon. Yes, vastly superior to Win32, I admit it. But not an upgrade: a break with the past.
-
utside developers, who were never particularly happy with the complexity of Windows development, have defected from the Microsoft platform en-masse and are now developing for the web
-
Paul Graham, who created Yahoo! Stores in the early days of the dotcom boom, summarized it eloquently:
-
There is all the more reason for startups to write Web-based software now, because writing desktop software has become a lot less fun.
-
If you want to write desktop software now you do it on Microsoft's terms,
-
calling their APIs and working around their buggy OS
-
And if you manage to write something that takes off, you may find that you were merely doing market research for Microsoft."
-
Microsoft got big enough, with too many developers, and they were too addicted to upgrade revenues, so they suddenly decided that reinventing everything was not too big a project
-
WinFS, advertised as a way to make searching work by making the file system be a relational database, ignores the fact that the real way to make searching work is by making searching work. Don't make me type metadata for all my files that I can search using a query language.
-
Just do me a favor and search the damned hard drive, quickly, for the string I typed, using full-text indexes and other technologies that were boring in 1973.
-
Automatic Transmissions Win the Day
-
he biggest advantage of .NET is the fact that it has automatic memory management.
-
A lot of us thought in the 1990s that the big battle would be between procedural and object oriented programming, and we thought that object oriented programming would provide a big boost in programmer productivity.
-
Object oriented programming is handy dandy, but it's not really the productivity booster that was promised.
-
he real significant productivity advance we've had in programming has been from languages which manage memory for you automatically
-
It can be with reference counting or garbage collection;
-
it can be Java, Lisp, Visual Basic (even 1.0), Smalltalk, or any of a number of scripting languages
-
your programming language allows you to grab a chunk of memory without thinking about how it's going to be released when you're done with it, you're using a managed-memory language, and you are going to be much more efficient than someone using a language in which you have to explicitly manage memory
-
Whenever you hear someone bragging about how productive their language is, they're probably getting most of that productivity from the automated memory management, even if they misattribute it.
-
automatic memory management is superior to manual memory management and results in far greater programmer productivity.
-
If you were developing desktop applications in the early years of Windows, Microsoft offered you two ways to do i
-
writing C code which calls the Windows API directly and managing your own memory
-
or using Visual Basic and getting your memory managed for you.
-
These are the two development environments I have used the most, personally, over the last 13 years or so, and I know them inside-out, and my experience has been that Visual Basic is significantly more productive
-
ften I've written the same code, once in C++ calling the Windows API and once in Visual Basic, and C++ always took three or four times as much work. Why? Memory management
-
In any case, simple operations like opening a file, writing a string, and closing it using the raw Windows API can take a page of code. In Visual Basic similar operations can take three lines.
-
Visual Basic was (and probably remains) the number one bestselling language product of all time and developers preferred it over C or C++ for Windows development, although the fact that "Basic" was in the name of the product made hardcore programmers shun it even though it was a fairly modern language with a handful of object-oriented features and very little leftover gunk
-
he other problem with VB was that deployment required shipping a VB runtime, which was a big deal for shareware distributed over modems, and, worse, let other programmers see that your application was developed in (the shame!) Visual Basic.
-
One Runtime To Rule Them All
-
And along came .NET. This was a grand project, the super-duper unifying project to clean up the whole mess once and for all
-
t would have memory management, of cours
-
nd best of all, the new Visual Basic/C hybrid would be called Visual C#, so you would not have to tell anyone you were a "Basic" programmer any more
-
One runtime to rule them all. It was beautiful. And they pulled it off, technically. .NET is a great programming environment that manages your memory and has a rich, complete, and consistent interface to the operating system and a rich, super complete, and elegant object library for basic operations.
-
And yet, people aren't really using .NET much.
-
Oh sure, some of them are.
-
But the idea of unifying the mess of Visual Basic and Windows API programming by creating a completely new, ground-up programming environment with not one, not two, but three languages (or are there four?) is sort of like the idea of getting two quarreling kids to stop arguing by shouting "shut up!" louder than either of them
-
It only works on TV. In real life when you shout "shut up!" to two people arguing loudly you just create a louder three-way argument.
-
By the way, for those of you who follow the arcane but politically-charged world of blog syndication feed formats, you can see the same thing happening over there. RSS became fragmented with several different versions, inaccurate specs and lots of political fighting, and the attempt to clean everything up by creating yet another format called Atom has resulted in several different versions of RSS plus one version of Atom, inaccurate specs and lots of political fighting
-
When you try to unify two opposing forces by creating a third alternative, you just end up with three opposing forces.
-
ou haven't unified anything and you haven't really fixed anything.)
-
So now instead of .NET unifying and simplifying, we have a big 6-way mess, with everybody trying to figure out which development strategy to use and whether they can afford to port their existing applications to .NET.
-
No matter how consistent Microsoft is in their marketing message ("just use .NET—trust us!"), most of their customers are still using C, C++, Visual Basic 6.0, and classic ASP, not to mention all the other development tools from other companies. And the ones that are using .NET are using ASP.NET to develop web applications, which run on a Windows server but don't require Windows clients, which is a key point I'll talk about more when I talk about the web.
-
Oh, Wait, There's More Coming!
-
Now Microsoft has so many developers cranking away that it's not enough to reinvent the entire Windows API: they have to reinvent it twice.
-
t last year's PDC they preannounced the next major version of their operating system, codenamed Longhorn, which will contain, among other things, a completely new user interface API, codenamed Avalon, rebuilt from the ground up to take advantage of modern computers' fast display adapters and realtime 3D rendering.
-
And personally I still haven't had time to learn .NET very deeply, and we haven't ported Fog Creek's two applications from classic ASP and Visual Basic 6.0 to .NET because there's no return on investment for us.
-
It's just Fire and Motion as far as I'm concerned: Microsoft would love for me to stop adding new features to our bug tracking software and content management software and instead waste a few months porting it to another programming environment, something which will not benefit a single customer and therefore will not gain us one additional sale, and therefore which is a complete waste of several months, which is great for Microsoft, because they have content management software and bug tracking software,
-
too, so they'd like nothing better than for me to waste time spinning cycles catching up with the flavor du jour, and then waste another year or two doing an Avalon version, too, while they add features to their own competitive software. Riiiight.
-
No developer with a day job has time to keep up with all the new development tools coming out of Redmond, if only because there are too many dang employees at Microsoft making development tools!
-
It's Not 1990
-
Microsoft grew up during the 1980s and 1990s, when the growth in personal computers was so dramatic that every year there were more new computers sold than the entire installed base
-
hat meant that if you made a product that only worked on new computers, within a year or two it could take over the world even if nobody switched to your product
-
That was one of the reasons Word and Excel displaced WordPerfect and Lotus so thoroughly: Microsoft just waited for the next big wave of hardware upgrades and sold Windows, Word and Excel to corporations buying their next round of desktop computers (in some cases their first round).
-
So in many ways Microsoft never needed to learn how to get an installed base to switch from product N to product N+1.
-
When people get new computers, they're happy to get all the latest Microsoft stuff on the new computer, but they're far less likely to upgrade. This didn't matter when the PC industry was growing like wildfire, but now that the world is saturated with PCs most of which are Just Fine, Thank You, Microsoft is suddenly realizing that it takes much longer for the latest thing to get out there.
-
When they tried to "End Of Life" Windows 98, it turned out there were still so many people using it they had to promise to support that old creaking grandma for a few more years.
-
Unfortunately, these Brave New Strategies, things like .NET and Longhorn and Avalon, trying to create a new API to lock people into, can't work very well if everybody is still using their good-enough computers from 1998.
-
Even if Longhorn ships when it's supposed to, in 2006, which I don't believe for a minute, it will take a couple of years before enough people have it that it's even worth considering as a development platform. Developers, developers, developers, and developers are not buying into Microsoft's multiple-personality-disordered suggestions for how we should develop software.
-
Enter the Web
-
But there's a price to pay in the smoothness of the user interface. Here are a few examples of things you can't really do well in a web application:
-
- Create a fast drawing program
- Build a real-time spell checker with wavy red underlines
- Warn users that they are going to lose their work if they hit the close box of the browser
-
Update a small part of the display based on a change that the user makes without a full roundtrip to the server
-
Create a fast keyboard-driven interface that doesn't require the mouse
-
Let people continue working when they are not connected to the Internet
-
These are not all big issues. Some of them will be solved very soon by witty Javascript developer
-
-
Which means, suddenly, Microsoft's API doesn't matter so much. Web applications don't require Windows.
-
romising new technologies like HTAs and DHTML were stopped in their tracks
-
The Internet Explorer team seems to have disappeared; they have been completely missing in action for several years.
-
There's no way Microsoft is going to allow DHTML to get any better than it already is: it's just too dangerous to their core business, the rich client.
-
The big meme at Microsoft these days is: "Microsoft is betting the company on the rich client.
-
"Avalon, and Longhorn in general, is Microsoft's stake in the ground, saying that we believe power on your desktop, locally sitting there doing cool stuff, is here to stay. We're investing on the desktop, we think it's a good place to be, and we hope we're going to start a wave of excitement..."
-
The trouble is: it's too late.
-
I'm a Little Bit Sad About This, Myself
-
o me the Web is great but Web-based applications with their sucky, high-latency, inconsistent user interfaces are a huge step backwards in daily usability.
-
I love my rich client applications and would go nuts if I had to use web versions of the applications I use daily: Visual Studio, CityDesk, Outlook, Corel PhotoPaint, QuickBooks. But that's what developers are going to give us. Nobody (by which, again, I mean "fewer than 10,000,000 people") wants to develop for the Windows API any more
-
Venture Capitalists won't invest in Windows applications because they're so afraid of competition from Microsoft. And most users don't seem to care about crappy Web UIs as much as I do.
-
nd here's the clincher: I noticed (and confirmed this with a recruiter friend) that Windows API programmers here in New York City who know C++ and COM programming earn about $130,000 a year, while typical Web programmers using managed code languages (Java, PHP, Perl, even ASP.NET) earn about $80,000 a year.
-
icrosoft Consulting Services about this they admitted that Microsoft had lost a whole generation of developers
-
The reason it takes $130,000 to hire someone with COM experience is because nobody bothered learning COM programming in the last eight years or so, so you have to find somebody really senior, usually they're already in management, and convince them to take a job as a grunt programmer, dealing with (God help me) marshalling and monikers and apartment threading and aggregates and tearoffs and a million other things that, basically, only Don Box ever understood, and even Don Box can't bear to look at them any more.
-
Much as I hate to say it, a huge chunk of developers have long since moved to the web and refuse to move back. Most .NET developers are ASP.NET developers, developing for Microsoft's web server. ASP.NET is brilliant; I've been working with web development for ten years and it's really just a generation ahead of everything out there
-
But it's a server technology, so clients can use any kind of desktop they want. And it runs pretty well under Linux using Mono.
-
The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.
-
-
19 Nov 14
-
02 Nov 14
-
However, there is a less understood phenomenon which is going largely unnoticed: Microsoft's crown strategic jewel, the Windows API, is lost. The cornerstone of Microsoft's monopoly power and incredibly profitable Windows and Office franchises, which account for virtually all of Microsoft's income and covers up a huge array of unprofitable or marginally profitable product lines, the Windows API is no longer of much interest to developers. The goose that lays the golden eggs is not quite dead, but it does have a terminal disease, one that nobody noticed yet.
-
-
26 Sep 14
lono__The Windows API: what it is, why it’s Microsoft’s most important strategic asset, and how they lost it.
-
27 May 14
-
11 Aug 13
-
25 Aug 12
-
23 Apr 12
-
Microsoft's crown strategic jewel, the Windows API, is lost
-
the Windows API is no longer of much interest to developers
-
if you're trying to sell operating systems, the most important thing to do is make software developers want to develop software for your operating system
-
I think .NET is a great development environment
-
The biggest advantage of .NET is the fact that it has automatic memory management
-
The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically
-
Web applications are easier to deploy, while rich clients offer faster response time enabling much more interesting user interfaces
-
Web Applications are easier to deploy because there's no installation involved. Installing a web application means typing a URL in the address bar.
-
You can use any programming environment you want because you only have to get it up and running on your own server. Your application is automatically available at virtually every reasonable computer on the planet. Your customers' data, too, is automatically available at virtually every reasonable computer on the planet.
-
a few examples of things you can't really do well in a web application:
-
Microsoft's API doesn't matter so much. Web applications don't require Windows.
-
It's not that Microsoft didn't notice this was happening
-
The trouble is: it's too late.
-
developing for Microsoft's web server. ASP.NET is brilliant; I've been working with web development for ten years and it's really just a generation ahead of everything out there. But it's a server technology, so clients can use any kind of desktop they want.
-
The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing
-
-
25 Mar 12
-
27 Sep 11
-
31 Jul 11
-
And along came .NET. This was a grand project, the super-duper unifying project to clean up the whole mess once and for all. It would have memory management, of course. It would still have Visual Basic, but it would gain a new language, one which is in spirit virtually the same as Visual Basic but with the C-like syntax of curly braces and semicolons. And best of all, the new Visual Basic/C hybrid would be called Visual C#, so you would not have to tell anyone you were a "Basic" programmer any more.
-
So now instead of .NET unifying and simplifying, we have a big 6-way mess, with everybody trying to figure out which development strategy to use and whether they can afford to port their existing applications to .NET.
-
-
26 May 11
-
19 May 11
-
04 Apr 11
-
20 Apr 10
-
The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically
-
Similarly in software development: in almost every case, automatic memory management is superior to manual memory management and results in far greater programmer productivity.
-
-
03 Apr 10
-
22 Mar 10
-
The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically.
-
in software development: in almost every case, automatic memory management is superior to manual memory management and results in far greater programmer productivity.
-
- Create a fast drawing program
- Build a real-time spell checker with wavy red underlines
- Warn users that they are going to lose their work if they hit the close box of the browser
- Update a small part of the display based on a change that the user makes without a full roundtrip to the server
- Create a fast keyboard-driven interface that doesn't require the mouse
- Let people continue working when they are not connected to the Internet
Here are a few examples of things you can't really do well in a web application:
-
The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.
-
-
17 Mar 10
-
Microsoft's crown strategic jewel, the Windows API, is lost. The cornerstone of Microsoft's monopoly power and incredibly profitable Windows and Office franchises, which account for virtually all of Microsoft's income and covers up a huge array of unprofitable or marginally profitable product lines, the Windows API is no longer of much interest to developers. The goose that lays the golden eggs is not quite dead, but it does have a terminal disease, one that nobody noticed yet.
-
It's so important for Microsoft that the only reason they don't outright give away development tools for Windows is because they don't want to inadvertently cut off the oxygen to competitive development tools vendors (well, those that are left) because having a variety of development tools available for their platform makes it that much more attractive to developers. But they really want to give away the development tools.
-
Anything to encourage developers to build for the .NET platform, and holding just short of wiping out companies like Borland.
-
I know you love your Mac. I know it runs everything you need. I love you, you're a Pepper, but you're only 2.3% of the world, so this article isn't about you
-
You bought programs X, Y and Z. You then upgraded to Windows XP. Your computer now crashes randomly, and program Z doesn't work at all. You're going to tell your friends, "Don't upgrade to Windows XP. It crashes randomly, and it's not compatible with program Z." Are you going to debug your system to determine that program X is causing the crashes, and that program Z doesn't work because it is using undocumented window messages? Of course not. You're going to return the Windows XP box for a refund.
-
The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
-
In fact if you poke around in the AppCompatibility section of your registry you'll see a whole list of applications that Windows treats specially, emulating various old bugs and quirky behaviors so they'll continue to work.
-
The developers of the Macintosh OS at Apple have always been in this camp. It's why so few applications from the early days of the Macintosh still work.
-
The other camp is what I'm going to call the MSDN Magazine camp, which I will name after the developer's magazine full of exciting articles about all the different ways you can shoot yourself in the foot by using esoteric combinations of Microsoft products in your own software. The MSDN Magazine Camp is always trying to convince you to use new and complicated external technology like COM+, MSMQ, MSDE, Microsoft Office, Internet Explorer and its components, MSXML, DirectX (the very latest version, please), Windows Media Player, and Sharepoint... Sharepoint! which nobody has;
-
The MSDN Magazine Camp believes in making things easy for developers by giving them really powerful chunks of code which they can leverage, if they are willing to pay the price of incredibly complicated deployment and installation headaches, not to mention the huge learning curve.
-
The MSDN Magazine Camp needs to keep churning out new gigantic pieces of technology that nobody can keep up with.
-
Inside Microsoft, the MSDN Magazine Camp has won the battle.
-
IIS 6.0 came out with a different threading model that broke some old applications.
-
Instead of Win32, we are told, we should now start getting ready for WinFX: the next generation Windows API. All different. Based on .NET with managed code. XAML. Avalon. Yes, vastly superior to Win32, I admit it. But not an upgrade: a break with the past.
-
Outside developers, who were never particularly happy with the complexity of Windows development, have defected from the Microsoft platform en-masse and are now developing for the web.
-
For example, WinFS, advertised as a way to make searching work by making the file system be a relational database, ignores the fact that the real way to make searching work is by making searching work. Don't make me type metadata for all my files that I can search using a query language. Just do me a favor and search the damned hard drive, quickly, for the string I typed, using full-text indexes and other technologies that were boring in 1973.
-
It turns out we were wrong. Object oriented programming is handy dandy, but it's not really the productivity booster that was promised. The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically. It can be with reference counting or garbage collection; it can be Java, Lisp, Visual Basic (even 1.0), Smalltalk, or any of a number of scripting languages. If your programming language allows you to grab a chunk of memory without thinking about how it's going to be released when you're done with it, you're using a managed-memory language, and you are going to be much more efficient than someone using a language in which you have to explicitly manage memory
-
Often I've written the same code, once in C++ calling the Windows API and once in Visual Basic, and C++ always took three or four times as much work. Why? Memory management.
-
And if you're developing a Windows GUI app today using Microsoft's "official" latest-and-greatest Windows programming environment, WinForms, you're going to have to start over again in two years to support Longhorn and Avalon. Which explains why WinForms is completely stillborn. Hope you haven't invested too much in it.
-
Microsoft would love for me to stop adding new features to our bug tracking software and content management software and instead waste a few months porting it to another programming environment, something which will not benefit a single customer and therefore will not gain us one additional sale, and therefore which is a complete waste of several months, which is great for Microsoft, because they have content management software and bug tracking software, too, so they'd like nothing better than for me to waste time spinning cycles catching up with the flavor du jour, and then waste another year or two doing an Avalon version, too, while they add features to their own competitive software. Riiiight.
-
So in many ways Microsoft never needed to learn how to get an installed base to switch from product N to product N+1. When people get new computers, they're happy to get all the latest Microsoft stuff on the new computer, but they're far less likely to upgrade. This didn't matter when the PC industry was growing like wildfire, but now that the world is saturated with PCs most of which are Just Fine, Thank You, Microsoft is suddenly realizing that it takes much longer for the latest thing to get out there. When they tried to "End Of Life" Windows 98, it turned out there were still so many people using it they had to promise to support that old creaking grandma for a few more years.
-
The big meme at Microsoft these days is: "Microsoft is betting the company on the rich client." You'll see that somewhere in every slide presentation about Longhorn. Joe Beda, from the Avalon team, says that "Avalon, and Longhorn in general, is Microsoft's stake in the ground, saying that we believe power on your desktop, locally sitting there doing cool stuff, is here to stay. We're investing on the desktop, we think it's a good place to be, and we hope we're going to start a wave of excitement..."
-
Venture Capitalists won't invest in Windows applications because they're so afraid of competition from Microsoft. And most users don't seem to care about crappy Web UIs as much as I do.
-
: I noticed (and confirmed this with a recruiter friend) that Windows API programmers here in New York City who know C++ and COM programming earn about $130,000 a year, while typical Web programmers using managed code languages (Java, PHP, Perl, even ASP.NET) earn about $80,000 a year.
-
The reason it takes $130,000 to hire someone with COM experience is because nobody bothered learning COM programming in the last eight years or so, so you have to find somebody really senior, usually they're already in management, and convince them to take a job as a grunt programmer
-
The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.
-
-
16 Feb 10
-
17 Dec 09
-
04 Nov 09
-
02 Nov 09
-
The cornerstone of Microsoft's monopoly power and incredibly profitable Windows and Office franchises, which account for virtually all of Microsoft's income and covers up a huge array of unprofitable or marginally profitable product lines, the Windows API is no longer of much interest to developers.
-
if you're trying to sell operating systems, the most important thing to do is make software developers want to develop software for your operating system
-
It's so important for Microsoft that the only reason they don't outright give away development tools for Windows is because they don't want to inadvertently cut off the oxygen to competitive development tools vendors
-
Remember, people buy computers for the applications that they run,
-
The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
-
few applications from the early days of the Macintosh still work
-
The MSDN Magazine Camp is always trying to convince you to use new and complicated external technology like COM+, MSMQ, MSDE, Microsoft Office, Internet Explorer and its components, MSXML, DirectX (the very latest version, please), Windows Media Player, and Sharepoint...
-
The Raymond Chen Camp believes in making things easy for developers by making it easy to write once and run anywhere (well, on any Windows box). The MSDN Magazine Camp believes in making things easy for developers by giving them really powerful chunks of code which they can leverage, if they are willing to pay the price of incredibly complicated deployment and installation headaches, not to mention the huge learning curve. The Raymond Chen camp is all about consolidation.
-
Inside Microsoft, the MSDN Magazine Camp has won the battle.
The first big win was making Visual Basic.NET not backwards-compatible with VB 6.0.
-
"There is all the more reason for startups to write Web-based software now, because writing desktop software has become a lot less fun.
-
The old Microsoft, the Microsoft of Raymond Chen, might have implemented things like Avalon, the new graphics system, as a series of DLLs that can run on any version of Windows and which could be bundled with applications that need them. There's no technical reason not to do this. But Microsoft needs to give you a reason to buy Longhorn, and what they're trying to pull off is a sea change, similar to the sea change that occurred when Windows replaced DOS. The trouble is that Longhorn is not a very big advance over Windows XP
-
WinFS, advertised as a way to make searching work by making the file system be a relational database, ignores the fact that the real way to make searching work is by making searching work. Don't make me type metadata for all my files that I can search using a query language. Just do me a favor and search the damned hard drive, quickly, for the string I typed, using full-text indexes and other technologies that were boring in 1973.
-
Object oriented programming is handy dandy, but it's not really the productivity booster that was promised. The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically.
-
And best of all, the new Visual Basic/C hybrid would be called Visual C#, so you would not have to tell anyone you were a "Basic" programmer any more.
-
In real life when you shout "shut up!" to two people arguing loudly you just create a louder three-way argument.
-
No matter how consistent Microsoft is in their marketing message ("just use .NET—trust us!"), most of their customers are still using C, C++, Visual Basic 6.0, and classic ASP, not to mention all the other development tools from other companies. And the ones that are using .NET are using ASP.NET to develop web applications, which run on a Windows server but don't require Windows clients, which is a key point I'll talk about more when I talk about the web.
-
And personally I still haven't had time to learn .NET very deeply, and we haven't ported Fog Creek's two applications from classic ASP and Visual Basic 6.0 to .NET because there's no return on investment for us. None.
-
No developer with a day job has time to keep up with all the new development tools coming out of Redmond, if only because there are too many dang employees at Microsoft making development tools!
-
Microsoft grew up during the 1980s and 1990s, when the growth in personal computers was so dramatic that every year there were more new computers sold than the entire installed base.
-
That was one of the reasons Word and Excel displaced WordPerfect and Lotus so thoroughly: Microsoft just waited for the next big wave of hardware upgrades and sold Windows, Word and Excel to corporations buying their next round of desktop computers (in some cases their first round). So in many ways Microsoft never needed to learn how to get an installed base to switch from product N to product N+1.
-
Web applications don't require Windows.
-
There's no way Microsoft is going to allow DHTML to get any better than it already is: it's just too dangerous to their core business, the rich client.
-
The reason it takes $130,000 to hire someone with COM experience is because nobody bothered learning COM programming in the last eight years or so, so you have to find somebody really senior, usually they're already in management, and convince them to take a job as a grunt programmer, dealing with (God help me) marshalling and monikers and apartment threading and aggregates and tearoffs and a million other things that, basically, only Don Box ever understood, and even Don Box can't bear to look at them any more.
-
The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.
-
-
13 Oct 09
-
06 Sep 09
-
24 Jul 09
-
24 Jun 09
-
28 Apr 09
-
15 Nov 08
-
01 May 08
craignicolGreat article on APIs, backwards compatibility, software design, the history of windows. Read it a while ago, but always worth re-reading.
API architecture article microsoft programming windows software development web business coding computing professional history future interesting interface opensource os politics tech technology from:delicious
-
14 Apr 08
-
07 Apr 08
-
19 Mar 08
Sébastien SAUVAGEUn article du toujours très intéressant Joel Spolsky.
-
18 Mar 08
-
17 Mar 08
-
26 Feb 08
-
01 Feb 08
-
16 Jan 08
-
09 Jan 08
-
Most .NET developers are ASP.NET developers, developing for Microsoft's web server. ASP.NET is brilliant; I've been working with web development for ten years and it's really just a generation ahead of everything out there. But it's a server technology, so clients can use any kind of desktop they want. And it runs pretty well under Linux using Mono.
None of this bodes well for Microsoft and the profits it enjoyed thanks to its API power. The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.
-
-
27 Dec 07
-
12 Oct 07
-
19 Sep 07
-
30 May 07
-
23 May 07
-
18 May 07
aminggsThe Web won because inside microsoft The Raymond Chen Camp lost to The MSDN Magazine Camp. That is to say, Microsoft stopped caring about backward compatibility.
document article blog joelonsoftware joel-spolsky microsoft windows api web raymond-chen backwardcompatibility paul-graham memorymanagement import:delicious
-
06 May 07
-
30 Apr 07
-
25 Apr 07
-
03 Apr 07
-
A lot of us thought in the 1990s that the big battle would be between procedural and object oriented programming, and we thought that object oriented programming would provide a big boost in programmer productivity. I thought that, too. Some people still think that. It turns out we were wrong. Object oriented programming is handy dandy, but it's not really the productivity booster that was promised. The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically.
-
Sidebar
Why does automatic memory management make you so much more productive? 1) Because you can writef(g(x)) without worrying about how to free the return value from g, which means you can use functions which return interesting complex data types and functions which transform interesting complex data types, in turn allowing you to work at a higher level of abstraction. 2) Because you don't have to spend any time writing code to free memory or tracking down memory leaks. 3) Because you don't have to carefully coordinate the exit points from your functions to make sure things are cleaned up properly. -
And yet, people aren't really using .NET much.
-
-
15 Mar 07
-
01 Jan 07
Arun MAAPI doesn't matter so much. Web applications don't require Windows.
It's not that Microsoft didn't notice this was happenin -
13 Nov 06
-
Why does automatic memory management make you so much more productive? 1) Because you can write
f(g(x)) without worrying about how to free the return value from g, which means you can use functions which return interesting complex data types and functions which transform interesting complex data types, in turn allowing you to work at a higher level of abstraction. 2) Because you don't have to spend any time writing code to free memory or tracking down memory leaks. 3) Because you don't have to carefully coordinate the exit points from your functions to make sure things are cleaned up properly.
-
-
07 Oct 06
-
06 Sep 06
-
31 Jul 06
-
09 Jun 06
-
06 Jun 06
-
21 May 06
Avinash MeetooHere'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."
-
13 Apr 06
-
03 Apr 06
-
28 Nov 05
-
09 Jul 05
-
13 Jun 05
Asteris Masouras"predictions of the Redmond company's demise are, to say the least, premature [..] but Microsoft's crown strategic jewel, the Windows API, is lost"
-
22 Mar 05
David CorkingJoel is really angry - developers are moving from the Windows API to the web because Microsoft scared them away.
-
And if you're developing a Windows GUI app today using Microsoft's "official" latest-and-greatest Windows programming environment, WinForms, you're going to have to start over again in two years to support Longhorn and Avalon. Which explains why WinForms is completely stillborn. Hope you haven't invested too much in it.... And here's the clincher: I noticed (and confirmed this with a recruiter friend) that Windows API programmers here in New York City who know C++ and COM programming earn about $130,000 a year, while typical Web programmers using managed code languages (Java, PHP, Perl, even ASP.NET) earn about $80,000 a year.
-
-
12 Jan 05
-
10 Nov 04
Ric ParksGood article about how Microsoft has effectively managed their API.
-
However, there is a less understood phenomenon which is going largely unnoticed: Microsoft's crown strategic jewel, the Windows API, is lost.
-
-
03 Aug 04
-
20 Jul 04
-
17 Jul 04
-
12 Jul 04
-
08 Jul 04
Christian StockerJoel on Software
-
07 Jul 04
-
02 Jul 04
-
24 Jun 04
-
22 Jun 04
-
21 Jun 04
-
20 Jun 04
-
urban sheepInteresting take on misguided strategy and (!) a look at web interface world from the POV of the mostly off-line developer
-
19 Jun 04
-
18 Jun 04
luistxoDon't make me type metadata for all my files that I can search using a query language. Just do me a favor and search the damned hard drive, quickly, for the string I typed, using full-text indexes and other technologies that were boring in 1973.
-
17 Jun 04
-
-
The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.
-
-
Tom SeppExcellent!
-
16 Jun 04
-
-
Much as I hate to say it, a huge chunk of developers have long since moved to the web and refuse to move back. Most .NET developers are ASP.NET developers, developing for Microsoft's web server. ASP.NET is brilliant; I've been working with web development for ten years and it's really just a generation ahead of everything out there. But it's a server technology, so clients can use any kind of desktop they want. And it runs pretty well under Linux using Mono. None of this bodes well for Microsoft and the profits it enjoyed thanks to its API power. The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.
-
Page Comments
Would you like to comment?
Join Diigo for a free account, or sign in if you are already a member.