Hacker News new | ask | show | jobs
by 51Cards 5584 days ago
One thing I have always admired Microsoft for is the huge effort they put into maintaining backwards compatibility. This may come largely from my days watching business clients forced to run old legacy apps that had been around forever. Despite Window's many (many) shortcomings, whenever I hear people complain about the time it takes to roll a new version out I try to point out the task at hand. The broad hardware support (try to find PC hardware Windows won't work on), the ability to run (until 64bit OSs recently) 16bit apps from 1993, virtualized XP, etc. Windows certainly hasn't been perfect but for the above I will always applaud Microsoft's dev team. I feel for the Mac IT guys this change is going to affect.
7 comments

Personally, I am going to argue the other direction.

Windows is a pain to program for and use largely because it's filled with assumptions and code that date back to the eighties. It is very difficult to innovate with the boat anchor of the past shackled to your ankle.

Think how much easier it would be for Microsoft to improve security if, for example, they could remove the assumption that it's okay for apps to blithely write stuff to the \Windows directory. Well, Mac OS X has done exactly that. Most of its system directories are tightly locked down.

In fact, Apple has completely chucked their entire operating system from the eighties and started over. The result is a much more modern OS that is far more pleasant to use. Yes, there was a real fear there that, since people had to chuck OS9, they might move to something else entirely, but that didn't happen, for the most part.

Think about it this way. Which customers would you rather have: the people who are willing to buy new computers and software every few years, or the guy who is stubbornly holding on to his DBASE app from 1984? For me, the choice is obvious.

Back in 1999, at the start of my career, I did a bit of "catch all IT" for a company, which included help desk and desktop support.

There was one fellow who hemmed and hawed at having to use Windows 2000. He wanted to stick with Windows 95. He ended up migrated, but he spent a furious amount of time getting the Windows 3.1 File Manager working. Apparently on his Windows 95 laptop he had brought it over as well.

He also was using a release of SideKick from 1992.

-----

How is this relevant? I recently talked to someone who does provide IT support for that same company. That same person? Still running SideKick. Still complains about not having File Manager. Also is hemming and hawing about having to upgrade from Windows XP to Windows 7.

Company is also still on 10Mbps networking. The owner still refuses to use copper, since they're a fiber optic distributor (multimode fiber is run to each and every desk).

For the most part, I'd say Apple's compatibility efforts have been equally impressive:

* 'Classic' support enabled Mac OS 9 apps to run on OS X for many years.

* Rosetta allowed for apps written for a completely different processor architecture to run on Intel (until 10.7, aparently).

Apple also made these moves before the bulk of 3rd-party applications were running natively on the new systems/architectures. The fact that Apple has been able to change low-level OS & processor architectures over the past 10 years is quite a feat.

And don't forget what I think is the most impressive, the transition from 68k to PowerPC. When they first did this, parts of the kernel were still compiled for 68k.

http://en.wikipedia.org/wiki/Mac_68K_emulator

The flip side is that maintaining that backwards compatibility comes at a major cost.

Product quality tends to degrade (sometimes significantly) because more often than not it's necessary to compromise design, which in turn complicates code and causes more bugs. It has an engineering cost because it takes longer to develop the product. And perhaps most importantly, it can severely restrict how aggressively you can push your platform forward in each new version.

Having the freedom to move OS X (and iOS) forward aggressively is an important reason why Apple focuses its business model on selling products to consumers. Consumers tend to be looking for the latest and greatest, and each individual consumer makes her own buying decision. On the other hand, if an IT manager can't keep his VB6 internal clunkware running on your new OS, he's not going to buy 10,000 seats.

First of all i don't think Apple has done that bad with backwards-compatibility. The jump from OS 9 to OS X was extremely easy thanks to Classic and Carbon support, and then the jump from PPC to Intel was easy because of Rosetta. But admittedly this is not on the same level as being able to run 16-bit Windows 3.1 applications on Windows 7.

That said:

Microsoft's backwards-compatibility policies are great for businesses, who naturally have many special considerations when it comes to legacy applications.

Apple's policies, on the other hand, seem to be more geared towards improving the experience for the user. They deprecate libraries and functions of the OS that are no longer relevant to how computing gets done (or how they want it to get done) on the Mac. This helps to ensure that applications keep up with the times.

Microsoft don't have this philosophy at all, and so Windows 7 often feels like an arbitrary mash-up of the last 25 years of PC operating systems. There are many many applications in W7, for example, where buttons and interface elements still have a Windows 95-ish feel to them, because they haven't been updated to the new system themes. A famous example in Vista (corrected now in W7) was the 'Add Font' dialogue, which had been exactly the same since Windows 3.1. Another example is mIRC, where (if i remember right) some decades-old Unicode work-around forces the application to use non-Aero title bars.

At the risk of sounding like a snob, the whole experience -- to a consumer who appreciates good user interfaces -- just feels kind of amateur-ish, really.

Devs have had 5 years to make their apps universal binary--to run better, on more machines. That's half a decade. Not unreasonable.
My first Mac was an iBook G4 running OS X 10.3, and I was marvelled by the fact that I could run software written in the 80s on a brand new 2005 laptop out of the box.

I'm not sure where Apple got this reputation for poor backward compatibility. They've jumped platforms multiple times and have gone to heroic lengths to preserve backward compatibility as well as cross-platform and cross-architecture compatibility.

That said, the removal of Rosetta support seems uncharacteristically premature for Apple.

They probably have data on how often Rosetta was downloaded for Snow Leopard to justify the decision.

Apple does go through heroic lengths to preserve backward compatibility, but only for as long as it makes sense. If the backwards compatibility is going to harm moving the OS forward, then they are prepared to drop it, as in this case. Microsoft has always been too afraid to drop backwards compatibility (mostly because as soon as they do, many users will probably jump switch to Mac OS if they are forced to upgrade everything anyway), forcing them to remain stuck with legacy Windows code while Apple has continued to push forward. The jump from Mac OS 9 to OS X was a huge one that Microsoft still hasn't been able to take, even with Windows 7.

>"Apple does go through heroic lengths to preserve backward compatibility

Hardly. They could easily provide backward compatibility if desktop versions of OSX were easily virtualized and doing so officialy supported - which is the primary route by which Microsoft has provided backward compatibility (i.e code dependent on 16 bit libraries under x64 and legacy applications under Vista and 7).

Microsoft is virtualising Windows XP on top of Windows 7 on the x86 platform. That is for their XP mode that is available in Windows 7.

Microsoft in Windows 7 for legacy applications allow the users to select a target OS, at that point it is not virtualising that OS but having certain system calls act like they would in those older versions of Windows. As far as I am aware as a developer nothing gets "virtualised", it is a compatibility shim. See this wikipedia article:

http://en.wikipedia.org/wiki/Windows_on_Windows

This is how Windows provided support for 16 bit on Windows 32 bit, and how Windows provides support for 32 bit on Windows 64. Clever piece of code.

What you are suggesting is almost impossible on Mac OS X without also emulating an entire different instruction set ALA qemu. Running OS9 on x86 just isn't in the cards, Rosetta provided support for PowerPC on x86, and Apple apparently has looked at the download stats for Rosetta and figured it was time to let it go. Most apps have been PowerPC + Intel for a long time now.

Until about 2006 I could run programs written for the 68000 under System 7 on my Mac OS X machine. That's fairly heroic.
> try to find PC hardware Windows won't work on

Sure, any ARM NetBook or tablet. But they're fixing that.