Fog Creek Software
Discussion Board

"Never rewrite", applied to APIs

Interesting article. However, I have the impression that it's basically making the same point than the one Joel wrote years ago about "never rewriting your apps from scratch", only applied this time to APIs.

The truly ironic thing is that people have trashed Microsoft during years for being technically inferior, and now that they are actually trying to innovate and come up with something exciting (like them or not, .NET and XAML do sound very interesting from a technical POV), they are going to lose the war and leave the market open to web-based apps with crappy UIs. Truly another example of "Worse Is Better".

Wednesday, June 16, 2004

OK, I admit it -- .NET violated the Never Rewrite From Scratch rule. Microsoft got away with it because they had two things. First, they had the world's best language designer, the man who was responsible for 90% of the productivity gains in software ...

Joel, himself, thought the law of Physics does not appy to Microsoft.  But I guess he has now discovered there is something else called the theory of Special Relativity which only works in massively huge matter.

Wednesday, June 16, 2004

"and now that they are actually trying to innovate and come up with something exciting (like them or not, .NET and XAML do sound very interesting from a technical POV)"

.NET is a huge step forward in many ways (and humorously makes writing great web apps much easier), however let's be real -- it is merely the Microsoft version of Java (though how many Microsoft Monkeys criticized Java until the day .NET appeared as a future wet dream, at which point everything Java pioneered and .NET now offered was the salvation of software development. On a similar theme, the Oracle Filesystem now must appear to be the greatest thing since sliced bread given the enthusiasm over WinFS).

XAML deserves special mention because the fawning, gaping-open mouth enthusiasm over it just belies any rational wisdom - it's resource files in XML form, but now with intermixed code (oh, but it brought the word "declarative" to the VB vernacular, so I suppose that's good). That's about as revolutionary as slicing bread diagonally, and it's laughable to see the belief that this somehow bridges the gap between a Windows app and a Web app.

In my day persona I am a huge .NET advocate (if you're in a Microsoft shop it is simply the best choice, as is it if you're open to serving your web apps on IIS), but the zombie-like acceptance of everything Microsoft unveils as revolutionary and innovative, even when the ground has been well trodden and ignored for years before, rightly deserves contempt and criticism.

Dennis Forbes
Wednesday, June 16, 2004

Let us not forget that Joel is "talking his book" here.  It's in Joel's best interest for future versions of Windows to remain backward-compatible because then he won't have to spend 2 months making his software compatible every time a new version of Windows is released. 

The lack of backwards-compatibility means that small developers like Joel will now be forced to move their apps to the web.  Microsoft must know this.  I don't believe this was some willy-nilly decision within Microsoft to drop backwards-compatibility due to the influence of MSDN magazine.

I believe this decision was made by Microsoft for two reasons: (1) Upgrade the APIs and operating system so that Microsoft itself can develop some whizbang new applications.  MS will have a jump on all its competitors because the apps will be developed in coordination with the APIs.  (2) Force all but the biggest developers of applications off the Windows platform.  This will get rid of competition and allow that massive army of developers to "take over" development of those promising apps that are discontinued by the small frys.

Joel and other small developers for the Windows platform need Microsoft's cooperation a lot more than Microsoft needs theirs.  I predict that small developers like Joel will be much less likely to survive this strategic shift by Microsoft than the Great Mother Borg itself.


the real world
Wednesday, June 16, 2004

real, no one is saying that Longhorn won't be backwards compatible (well, apart from a couple of cultists that think that the only way to advocate .NET is to present it as the only option going forward) -- Microsoft will fully support every app going back to DOS, with complete certainty.

What people are saying is that the new platform technologies of Longhorn will be Longhorn alone -- if you decide to use WinFS, or Avalon, in your app, you will be targeting _only_ the Longhorn [and above] platform (a platform that first home adopters won't pick up until the earliest 2006, and most corporations won't have deployed to their workforce until probably 2008-2011), because the guy running Windows 2000 can't just install the Avalon or WinFS patch like he could install DirectX 9 (historic note: To try to sell Windows 2000, one of the Microsoft mouthpieces proclaimed that the next version of DirectX, 5 or 7 or whatever, would _only_ run on Windows 2000. This plan was quickly shoved under the carpet and erased from the historic record when they discovered that zero game vendors were willing to develop for a small market to help Microsoft's marketshare). Let's keep it in perspective that .NET, available for some 3 years now, is installable on everything from Windows 98 to Windows Server 2003, yet there are close to zero client .NET applications, and it has primarily invaded the corporate space.

Dennis Forbes
Wednesday, June 16, 2004

"no one is saying that Longhorn won't be backwards compatible"

I suspect that Loghorn will run win32 apps in VM, easily done with their Connectix technology.  Does anybody know if anything concrete has been said?

Ged Byrne
Thursday, June 17, 2004

"I suspect that Loghorn will run win32 apps in VM, easily done with their Connectix technology.  Does anybody know if anything concrete has been said?"

I think people are grossly overestimating the amount of change in Longhorn. You can download a technology preview, by the way.

Longhorn is Windows XP but with a new explorer.exe (written primarily in managed code apparently) that makes use of the 3D subsystem, as well as a couple of new services (WinFS, etc) written in managed code. This is not a wholesale rewrite of the operating system, and really is taking the "gloss" of XP and continuing down that road.

Dennis Forbes
Thursday, June 17, 2004

Dennis, when I talked about Microsoft's "innovations" I should have added "in mainstream computing use". Yeah, I know that none of what they're adding in Longhorn is truly "new", I know that BeOS already had a journaling filesystem back in 1994. Tell me how many people used Be as opposed to Windows.

(So yes, I'm making the mistake of ignoring anything non-MS in the world of computing... but OTOH, out there in the Real World everbody uses Windows, so whatever innovations get invented won't be enjoyed by the vast majority of users until they make it into Windows).

Oh, and ".NET the MS version of Java"? You could even go further and say that .NET is the MS version of the Lisp Machine. Philip Greenspun wrote once "the Lisp Machine was something truly remarkable; it did things in 1978 that, if we are lucky, will be announced by MS as innovations in 2005". Well, guess what, he was off only by one year or so.

Thursday, June 17, 2004

*  Recent Topics

*  Fog Creek Home