I grew up — meaning learned to program — in the halcyon days of Apple versus Microsoft. In those days, as developers, we spoke about developing for an operating system platform. You either wrote Microsoft/DOS software or Apple II/DOS software. You either wrote Mac OS software or Windows software. And all devices that used each of those operating systems basically worked the same. Write software for the Apple IIc and it runs flawlessly on the Apple IIe. Write software for a Dell computer with Windows XP and it runs exactly the same as the HP equivalent.
When I started Infinity Softworks (15 years ago this month!) that mentality translated to the mobile world. You wrote for Palm OS or Windows Mobile. There were multiple devices that used each operating system. Palm OS was included on devices from Palm and Sony and Garmin. Windows Mobile was on devices from Compaq and HP and Dell. We didn’t write for Sony CLIE devices; we wrote for Palm OS. We didn’t write for HP iPaq’s; we wrote for Windows Mobile.
It’s easy to continue thinking in these terms. Today, you can write for iOS or Android or Windows Phone. But I’m not convinced that that paradigm of writing for an operating system is an appropriate choice even today.
The fragmenting of Android is clearly pushing us in that direction. With the news that Samsung now controls 55% of all Android smartphone sales, does it continue to make sense to support all Android smartphones or focus specifically on Samsung smartphones? The only non-iPad worth even discussing is the Amazon Fire. Why should I write for all Android tablets if only the Fire is selling?
Even in the iOS world this has increasingly become the case. The iPad — in its interaction models and bigger screen — is clearly a different beast than writing for an iPhone or iPod touch. I think about its capabilities differently and, in many cases, even use device-specific apps that are not available for the other device.
This doesn’t mean there isn’t significant underlying code that can be “ported” from device-to-device. powerOne shares upwards of 85% of its code between the iPhone/iPod and iPad versions. But in the end the way I think about presenting on each platform is completely different and it’s conceivable in the future that we could provide features for iPad that we don’t supply for iPhone (or vice-a-versa).
As we move ahead, I think these operating system changes are going to impact all mobile development. Screen size differences will be a major driver. But so will themes and skins and device-specific customizations. I won’t write for Apple TV the same way I write for iPhone. It just doesn’t make sense.
To me, the device manufacturer and product family is starting to take precedence over operating system in my development decisions.