Emulation is often a terrible idea

by Volker Weber

I have been around for a while. I started programming in the seventies, educated students in the eighties, and then helped building systems in the nineties. And I have seen a particular anti-pattern fail time and gain:

  1. When IBM split with Microsoft over OS/2, they built a new 32-bit version called OS/2 2.0. That was capable of running native 16-bit Windows apps in an emulation layer called WinOS2. IBM sold it as "Better Windows than Windows". While that was technically true, it never really worked so well, because Windows felt alien when embedded in OS/2. I had customers running OS/2 hosting only Windows apps. OS/2 apps never really came along, and Windows itself eventually went 32-bit with Windows NT. By the time Windows 95 came out, OS/2 had failed.
  2. When BlackBerry, as many others, were disrupted by the iPhone, they eventually built a new platform called BBX, which was quickly renamed BlackBerry 10. BBX was BlackBerry on QNX. BlackBerry created a multitude of programming stacks to develop apps for the new platform, and none of them really succeeded. Much like OS/2 failed to attract developers. And they added an Android player based on AOSP, the Android Open Source Project. In order to provide a higher level of security they first required Android apps to be repackaged for the BlackBerry App Store. Later they incorporated the Amazon app store that never got any traction, because the Amazon Fire Phone bombed. Now they quit the silly emulation game and go full Android with Google.
  3. Microsoft has an app gap problem of their own and they created four bridges for developers to port apps from the web, from iOS, from Win32 and from Android. Packaging web apps as Windows 10 apps is the easy one. The iOS bridge lets developers create (Intel) Windows 10 apps from within Objective-C. Both are out already. The Win32 bridge is delayed until next year. And the Android bridge never was a bridge. It was another emulation layer built with AOSP. And evidence is mounting that Microsoft is learning from the mistakes of others. Microsoft's Android player seems to be put in the fridge. It was poised to run unmodified Android apps on Windows 10 Mobile, and Windows 10 Mobile only. Even if they could make it work, it would just lead to the same result that IBM and BlackBerry got: hardly any native apps.

If you can't get developers to write to your platform, you are toast. Emulating somebody else's platform will not do you any good.

Comments

Amen.

Armin Auth, 2015-11-16

Good point.

What about Virtual Machines, though? Aren't those also emulators, just closer to the metal?

And.. Do any of you remember MacCharlie, a hardware monstrosity which basically bolted a PC onto the Apple Hardware.

Andrew Magerman, 2015-11-16

Both BB and MS should have thrown money on developers.

Martin Kautz, 2015-11-16

Martin Kautz... maybe.

Lets say MS and/or BB offered 100% of revenue for the first 2 years, maybe some hardware, maybe some education, maybe some advertising. I'd think these things would be pretty easy and surprisingly cheap to do.

My feeling though is that throwing money at developers would only really attract smaller/indie developers. Larger app houses look and plan long term. Shifting teams of people onto platforms with unknown returns are generally not sort the plan you take to your CFO.

I can see the end result of a strategy like my example would be an increased collection of low quality apps. Oh... hang on....

Ian Bradbury, 2015-11-16

@Andrew: VMs are not emulators in the sense of "porting some API onto an alien platform". They provide a hardware API on a not-so-alien hardware platform.

Robert Dahlem, 2015-11-16

Martin, BlackBerry was throwing money at developers: https://developer.blackberry.com/builtforblackberry/documentation/overview/10kterms.html. Ian, they were giving away hardware for free to developers. Neither of these two things helped to close the app gap.

Abdelkader Boui, 2015-11-16

@Robert: Wouldn't you say that the concept is the same, though? You're making a container where the containee thinks he is somewhere else. I'm astonished at how well virtual machines work.

Upon re-reading I think Volker is making another point, though. He's not making the point 'It's difficult to make an emulator that works well' - which is what I understood at first. He's making the point 'emulating a competitor's platform is a stop-gap measure at best to try and solve the issue of your own platform not being cool enough'.

Volker, I suppose this falls under the bigger category of 'if you're copying things, you're inevitably not leading'

Andrew Magerman, 2015-11-16

The only place where I see this type of emulation doing anything is in the Xbox360 emulation on Xbox One. This just launced and that's not making huge waves either.

http://www.engadget.com/2015/11/11/xbox-one-update-windows-10-back-compat/

http://www.engadget.com/2015/06/18/xbox-one-backward-compatibility-how-it-works/

Craig Wiseman, 2015-11-16

Andrew, do not try to emulate my thinking. ;-) Your virtualization vector was wrong as Robert explained. So is your second attempt to save the first.

It does not have to do with a competing company. You also should not emulate your own other platform. Look how Apple managed the transition from 68000 to x86. No emulation.

Volker Weber, 2015-11-17

@Andrew: I once rebuilt a zapped MacPlus using a MacSE motherboard (hacked the back of the case so it would fit) and a PC powersupply (hacked the analog board to remove the zapped powersupply) and a fan and an internal harddisk.
Also featured an E-Machines Big picture 17inch slow-glow monitor. Killer combo for word processing, years ahead of the competition, since I was running this in 1991...

Lars Berntrop-Bos, 2015-11-17

@Volker: "Look how Apple managed the transition from 68000 to x86. No emulation."

I'm not sure what you mean by "no emulation". There was a 68K emulator when Apple moved to the PowerPC. It was originally written for Apple's abortive attempt to move to the 88K and then re-targeted for PowerPC. This emulator was used for a few years as Apple rewrote its OS and apps for PowerPC. In a similar vein, there was Rosetta which performed dynamic translation of PowerPC instructions to x86. Without these, Apple would not have been able to have smooth transition from 68K --> PowerPC --> Intel.

Bob Congdon, 2015-11-17

You are right. My memory was failing me. I also meant PowerPC to Intel not 68k to PowerPC. And I simply forgot about Rosetta. I thought they had universal apps with two codestreams for PowerPC and Intel.

Volker Weber, 2015-11-17

Craig is write about the XBox One - they are emulating the XBox 360 for the new backwards compatability feature. They are using a hyper-visor instance of the 360 OS and running the game in full emulation mode. its is a complete seperate memory instance so it cant mess with the xbox one. having just played around with it in the preview, its actually better in emulation than running native in the xbox 360. it's funny how big a hardware jump there is between the versions. damn that console lock in.

John Head, 2015-11-17

Volker, your memory is correct, universal binaries had double the size and code for both CPUs. Rosetta was needed for PPC apps, that were (or could) not be recompiled.

Jörg Hermann, 2015-11-18

Old vowe.net archive pages

I explain difficult concepts in simple ways. For free, and for money. Clue procurement and bullshit detection.

vowe

Paypal vowe