Archive: May 28, 2005

<<< May 27, 2005


May 29, 2005 >>>


Saturday,  05/28/05  11:10 AM

This is going to be a long post.  I can tell.  I have all these thoughts, jumbled together, and it is going to take a lot of words to get it all out.  Sorry.

The subject is Windows.  I am a student of Windows; I have used it since Windows 2.0, and I have programmed for it since Charles Petzold first made writing SDK programs doable (shortly after Windows 2.0).  I remember Windows 386 (do you?), and Windows 3.0, and 3.1, and 3.11, and 95, and 95b, and 98, and 98SP.  And ME.  I remember NT 3.1 (do you?), and NT 4, and Windows 2000.  Now we have XP and 2003.  All through this evolution, Windows has solved three main problems, or should I say, has provided to software developers the means to create solutions for three main problems.  First, it enables development of reasonable and consistent graphical user interfaces.  Second, it enables multiple large programs to be run concurrently.  And third, it enables machines to be networked together.  Everything else - device management, multimedia, security, etc. - is peripheral.  (That ought to get me some email!)

So how well does Windows solve these three problems?  Well, it does a great job with GUIs.  Mac aficionados may beg to differ, but on balance, Windows has succeeded because it provides a nice GUI, and because developers can create reasonable and consistent GUIs.  It does a so so job with enabling multiple large programs to be run concurrently.  Multitasking is now a solved problem, as is multithreading, but storage management is still klunky and slow.  Windows has the worst paging algorithms of any OS in general use.  And it does a crummy job with networking.  Windows computers can easily join TCP/IP networks, but file sharing is a great mystery, domain management is difficult and idiosyncratic, and providing network services in applications is complicated.

Which brings me to my main point.  Microsoft has now spent four years building Longhorn, the "next" version of Windows, and it looks to be spending two more years at least.  When Longhorn is released, it will have been at least six years since XP came out.  That is a long time in computer years.  What will we get?  If it were up to me, Microsoft would stick to its knitting, and instead of trying for more and more functionality - which is properly the province of application software anyway - it would fix paging and fix networking.  Do the things Windows should do well.  I won't get my wish, but that's what I want.

In fact, the whole way Microsoft has approached Longhorn is flawed.  In the fall of 2003 I attended the MS Professional Developer's Conference.  This was where Longhorn was first unveiled to the public.  The conference itself was great, but at that time I opined that "there's a lot less here than it would at first appear".  MS appeared to be trying to change everything with the intent of providing a lot of new functionality, but actually it was just making things slower and harder.

What Microsoft should do, instead of this incredible six-years-in-the-making grand new version, is it should release a simple upgrade to XP/2003 which is faster, and which has a few new features.  You could call this Shorthorn.  Fix paging.  It is past time Windows had a decent implementation of virtual storage.  Fix networking.  It is about time for Windows to have a simple computer-to-computer communication mechanism.

I am the CTO of a company which builds medical imaging software for Pathologists.  These applications use a lot of RAM.  They would love it if virtual storage actually worked, but in practice as soon as you start paging under Windows, your performance goes out the window.  Meanwhile the same applications on a Mac can page easily with only slight degradation in performance, and the degradation occurs gradually.  Paging is a solved problem.

Have you ever had two computers sitting next to each other, and tried to transfer files from one to the other over a network?  Not easy, is it?  How many people have multiple computers in their homes?  How many can easily share files, or printers?  How many small businesses struggle to setup file and print servers?  How many people understand Windows domains, and active directory?  You need a PhD just to connect a few computers together.  The situation is ridiculous, especially since good solutions have been out there for years.

Imagine you are a developer king, sitting at your desk.  You have a state of the art PC and every possible development tool.  You have the entire Windows source tree.  You can do anything you want, build anything, change anything, fix anything.  What would you do to create value for all Windows users?  Would you implement some new multimedia features?  No.  Would you rewrite the presentation layer to use vector graphics?  No.  Would you implement some new security layer?  No.  Well, maybe you would, but I wouldn't.  Now imagine you made paging twice as fast, and made it degrade gracefully instead of falling off a cliff.  That would be cool.  It would benefit 100% of all Windows users, and it would be entirely upside, with no incompatibility, nothing to re-learn.  Just pure greatness.  Now imagine you made networking computers easy.  That would be cool.  It would benefit nearly 100% of all Windows users, and it would be entirely upside.

That's the technical view, but what about the business view?  Well, let's see.  For Windows there are two parts to the market, new machines, and upgrades.  You get the new machine market automatically; basically everybody who buys a computer buys a copy of Windows.  They don't particularly care or even know whether it is Windows XP or LH or SH or whatever.  (Corporate IT departments do know and care, but they still take what you give them.)  What about the upgrade market?  We have these millions of computers out there.  If you release Longhorn, with lots of spiffy new features but which makes everyone's machine slower, will they buy it?  I don't think so.  They might have to buy a new computer just to run it.  They might be afraid of the incompatibilities.  If you think this wouldn't happen, check how many people are still running Windows 2000.  On the other hand, if you release Shorthorn, with fewer spiffy new features but which makes everyone's machine faster, will they buy it?  Of course.  They won't have to buy a new computer, and they won't have to worry about incompatibilities.  If you think this wouldn't happen, check what happens in the Mac market.  Everyone upgrades from Jaguar to Panther to Tiger, because each release is faster, and they are all compatible.  Sure there are cool new features, but that's secondary.

The fact that each new release of Windows is slower than the previous one has opened the door for Linux, too.  The usual story behind any Linux box is that it's an old computer which couldn't run the latest version of Windows, so it was loaded with Debian and now runs just fine as a webserver or mail server or file server or whatever.  For example, this website is running on a seven-year-old Pentium 2 @ 233MHz, on Red Hat; no way I could do that with XP or 2000.

I would bag 50% of the code created for Longhorn.  Just trash it.  Make Shorthorn a smaller release, with fewer new features, with some key performance enhancements, and get it out there.  Release the spiffy new features as add-ons, when they're ready.

If you think Avalon is cool (the new vector-based presentation layer), great, release it.  If you think XAML is cool (the new non-procedural XML-based presentation description technology), great, release it.  If you think WinFS is cool (the new file system technology incorporating a metadata database), great, release it.  If you think Indigo is cool (the new web services -based communication technology), great, release it.  Just make these things optional, please!

Actually there are signs Microsoft is doing this; they've already tossed the WinFS bags from the balloon, and now we see that Longhorn won't be written in C# after all.  I think they discovered that GUIs are fine in .NET, but low level drivers are not.  There is a performance price to be paid, and the cost is too high.

Please, don't get me started on .NET.  Just don't, okay?  It doesn't make any sense.  Why create a virtual machine when you only run on one machine architecture anyway?  Just to copy Java?  Just to make things slower?  I don't get it.  So don't get me started.

As enlightened users, we should do all we can to accelerate this trend.  Post to your blog.  Write to your local Microsoft blogger.  You know there is panic in the halls at Redmond.  They did not plan to spend six years building a new OS, just so they could cut everything back.  They do not want Longhorn to be a disaster.  If we all - and I mean all - encourage Microsoft to release Shorthorn instead, maybe they'll do it.  They can claim the change in strategy is because they're listening to their users, and it will be true.


Return to the archive.