|« Microsoft Word Crash and Burn: It's not a bug, it's a (mis)feature!||Problems with Microsoft Word, and why I use Word Perfect »|
There has been this huge "comment churn" (some commenter called it "link-bait", in which someone writes an article that makes a really ridiculous claim in order to get other people to link to that article from theirs), making, in effect, claim that Paul is dead, err, I mean Microsoft is dead. And like the claim about the former Beatle, I think the correct response is (to paraphrase Mark Twain), "The rumors of Microsoft's death are clearly exaggerated." (Twain may have said "premature" rather than "exaggerated" but it works either way.)
I guess it starts with Paul Graham's article Microsoft is dead, which has "so many errors I don't know where to begin." First, that Google is a significant threat, (Google is a huge company, but I think it's about 1/10th the size or revenues of Microsoft); that Windows-based computers are irrelevant because what he's seeing is all Macintosh usage in the startups his vulture capital firm is funding (Apple has less than 10% of the market for computers running its operating systems vs. over 80% for Microsoft), and that Web 2.0 is going to overtake the desktop (I answer that canard later in this article.)
The article in Slashdot that pointed out the above mentioned another link "People Hate Making Desktop Apps?? Since When!? in which he links to articles by Don Dodge who points out that Microsoft will earn about US$50 billion this year and will grow about $4 billion [or to put it another way, Microsoft will increase in revenue this year equivalent to almost twice Adobe's entire yearly income); and that now the spinmeisters are saying Graham didn't mean that Microsoft was dead, only that it isn't feared any more, [despite that Graham's exact words were "Microsoft is dead"]), and he looked at comments by Ryan Stewart about Why Do People Hate Building Desktop Applications? which also has a number of errors.
When I wrote the article you are now reading as a comment on Slashdot, I originally titled it 'It's like claiming Linux is "Better than Windows"' partially because Slashdot doesn't allow titles as long as I'd like. So I'll give that as the "subtitle" of this article, before I go on to the main points.
First, on the issue of Linux vs Windows: Windows sells more because Microsoft got there first, and there is tremendous inertia (we still use the same QWERTY keyboard layout created more than 120 years ago even though there are better alternatives that would be less trouble to use) plus, until recently, there wasn't that much available (in the range of software running on personal computers) that wasn't an application running on Microsoft software. As someone has said, the stuff using Open Source is almost as good as a lot of the proprietary stuff and is getting better over time. But, it ain't there yet; the usability of X Windows over Microsoft Windows still has some cracks that need to be filled. Visicalc was the "killer app" for the Apple II. Lotus 1-2-3 was for the IBM-PC. Where is the Linux "killer app," the must-have application that is only available on Linux and provides a huge benefit or improvement in productivity?
And I'll give you one that would have done it: the original Napster, the one that scared the excrement out of the recording industry and changed the face of music. Had (the Original) Napster been a Linux-only application it would have pushed take-up of that operating system among the general public "faster than Grant took Richmond" (or "faster that Slashdot fanboys can bash Redmond.")
I think I agree with a comment someone (or more than one person) said in the various comments linked around this whole comment churn, in which I'll paraphrase, "Anyone who thinks Microsoft is dead or that Web Applications are better than desktop ones has been sucking down way too much of the Web 2.0 Kool-Aid."
My own opinions are that the tools for implementing Web-based applications are far too primitive. Like with pushing Linux over Windows: it isn't (they aren't) there yet. As has been noted, prior to PHP you had to design a CGI application (usually in C++) in which you wrote a regular program and then stuck on "a bag on the side" (an expression from Tracy Kidder's The Soul of a New Machine to indicate putting a kluge in to accomplish a function) to make it run as a web service.
Having done both, I am fully aware that a web-based application is harder to develop than a desktop one. A Linux desktop application is harder to develop than a Windows desktop application. Despite the cracks people make about Visual Basic, it's miles ahead of anything else for developing GUI-based applications, and for doing simple applications a Basic interpreter outshines just about anything except maybe a spreadsheet. Some of the stuff developed on PCs and on Unix-based machines have been stunning; the first time I saw Make and discovered that you could simply have it know which parts of your application had been changed, and only recompile those, it blew me away and made me realize how mainframe application programming I'd been doing in Fortran and Cobol was old technology by comparison.
Given the choice, I would like to be able to implement something on a web browser if I can get equivalent functionality. Given the reality, it's easier and actually more pleasant and enjoyable to develop an application on a desktop. Where is the equivalent of Visual Basic for desktop applications in the field of Web Development? Look at the application running this blogging software and tell me where are the tools to do something like that, developing the functionality it provides other than coding it all by hand? Where is the drag-and-drop component-based functionality that was available even ten years ago in Visual Basic 3, CA-Realizer, Turbo Pascal for Windows (3.1) or Delphi?
A text-based application is about equal in complexity on either Windows or Linux (actually, it's probably easier to do text-based applications on Linux than on Windows but Free Basic has made them probably about equal), but it's a hell of a lot easier to develop even a simple non-gui desktop application than anything running as a served application through a browser. I've looked at the code for Original Adventure in Fortran, implementing something like that in a web browser, even if all the app does is send HTML and retrieve commands, is going to be a lot of work, a lot more than it is at the desktop level. It would be less trouble to port Original Adventure from Fortran to Visual Basic than it would be even to take an existing C translation of the game and convert it to, say, PHP and have it run in a web browser. The tools for web development are less powerful and harder to use than those available for desktop development.
The tools for web development are different from the ones for desktop development and are not as powerful as the ones for desktops. And it's more expensive, both in terms of operational requirements (you have to have a hosting site and the user running the app has to have a fast pipe), and in terms of development requirements (it's a lot more work to secure a web app than a desktop app.)
And you have hardware issues. I had noticed that I was losing the ability to access the Internet from time to time, which would be fixed after rebooting. I figured it was Netscape (I stopped using Internet Explorer more than two years ago because of security problems) locking up, but then I'd try Firefox and it would fail. Then I'd use IE for back-checking and it would fail too. I have DSL with a dedicated IP address, so it's a true "always-on" connection, so it ain't the dialup software. So I'd try pinging the firewall and discovered it's unreachable. So, basically, rebooting the firewall (a $30 wireless router) and doing a renew of the DHCP lease causes my access to the Internet to work again.
It's a small hardware problem on my end, and basically, for the Internet to work in any situation, everything from the user to the end site must be operational. All that is required for a local app to work is the computer be functioning. (You have to have that as a minimum to access the Internet anyway.)
Also, the response time for web apps is never going to be the same as local desktop applications. IBM figured this out decades ago with the development of the 3270 terminal, which did the editing of user data-entry locally on the terminal, then sent a whole screen back to the application; if the IBM 370 mainframe had had to do line editing, response times would have been attrocious. And people who were writing screen applications running on the CICS transaction platform (think of Windows 3.1 without the GUI), discovered that it was to their advantage to discover ways to reduce the data transmitted by using various hardware and software speedups to not resend stuff that is already on the screen.
The real question that should always be asked is, can the web application do the job? Can it provide the functionality equivalent to a desktop application? For some things, yes, quite possibly a web application can do the job as well as a fat client on the desktop. For others, it can't. Maybe 50-80% of what people do in an office can be implemented in a web browser; we did a hell of a lot of stuff as mainframe-hosted applications back in the 1970s-1980s. But some things aren't suitable to run in a browser.
If all you have to do is edit documents, work spreadsheets, respond to e-mail and maybe a few other things which are text-based and don't send a lot of data at once up and down the pipe (or you're running them on an office intranet on a 100Mbps lan), you can probably do a large number of things as web-based. But for a number of people, their work will not work adequately in a browser. And that's possibly a good chunk of the stuff people want to use.
So what we are able to do satisfactorily over the Internet is the "low hanging fruit" of applications that would probably still be even easier to do locally than to do over an Internet connection. (At least maybe until the tools for implementing web apps got easier.) But some things "just ain't gonna work" in a web browser.
I shudder to think what a web-based image editor would look like or what the (probably abysmal) response time would be. Or a sound editor running through a browser instead of something like Audacity. (Now there - sound editing - is an example where an open-source application is comparable to proprietary apps.) Now, having an application use the web to save and retrieve the files so you can use any computer, that might not be a bad idea if the save and load capability works quickly. But for responsiveness, some things require desktop operations, remote connectivity won't cut it.
So, to paraphrase myself, "the stuff using web-based applications is almost as good as a lot of the desktop stuff and is getting better over time. But, it ain't there yet."
 Paul McCartney, not me.