The Impact of Operating System Fragmentation on Software Development Strategy

King Solomon said that there was "Nothing new under the sun".  Taking a look at what seems to be happening with operating systems, it seems he was right, even when it comes to technology.

I know that I will be showing my age with this post, but I remember the days in the 1980's (I was still a child) at the start of the personal computing boom.  It seemed as if every one of my friends family's had a computer, but they were all different, there were Commodores, Ataris, Spectrums and a whole host of others.  It was great because it was all new and different, but it was hard to share games, and other software.  It meant that my friends were always better at their games than I was.

Then things started to change, there was the introduction of the Apple Macintosh, and more importantly, cheap IBM clone PCs.  Within a short space of time it seemed like decks had cleared to create a simpler world,  creative and arty types had Apple computers, uber-geeks were running some form of unix-like operating systems, and most of the rest of the world had PC clones running some form of either MS-DOS or MS Windows.  And so the world opened up.  You could share files, games, software from machine to machine.  Suddenly, I could be as good as, or even beat my friends at their favourite computer games.

From a software development perspective, things became quite clear.  Depending on who your target users were, you developed for one of those platforms.  If you wanted a cross-platform system you either wrote it in Java or you effectively rewrote it for each platform.


The Broad Band Watershed


Then there was the next watershed, achingly slow dial up internet was joined by its big brother - broad band.  Its didn't take long for developers to realise that it could make the problems of cross-platform development go away.  You did still have problems of browser compatibility (shall I even dare to mention IE6?), but that was a much smaller challenge.  In more recent times, even this problem has gone away with the introduction of cross-browser javascript libraries such as Prototype, jQuery, and YUI.

Mobile computing has been around for a while, burbling along innocuously in the background.  It came in essentially three forms, laptop computers running fully fledged operating systems, industrial devices running Symbian, Windows CE and the like, and gadgets/commercial/professional tools running Pocket PC, Palm, or Symbian.  However, apart from laptops (which often replaced the home computer due to being less bulky and obtrusive) these devices did not really gain much ground with the consumer market.

In recent years the mobile computing market has extended more with the introduction of a new form factor - the net book.  Most of these betrayed their heritage as runts of the laptop litter by being shipped with slimmed down versions of the operating systems commonly used on laptops.  Once again, widespread consumer adoption failed to materialise, their most common use seemingly by commuters with long journeys.


The Mobile Computing Phase Shift


Then we come to now.  We have seen a big phase shift in the computing world with the introduction of the iPhone.  This did not exactly spring onto the market unheralded.  With the benefit of 20:20 hindsight we can see that it is a natural evolution of the iPod in its various forms, through to the iPod touch, then to the iPhone itself.  If we look beyond Apple, we can see that it was more than one manufacturer taking the lead and everyone else copying.  There is a proliferation of smartphones, and smart phone application markets for Android, iPhone, Windows, WebOS, Nokia, and Blackberry.  While some of these are later to market than others, and some are clearly riding on Apples coat tails, the speed with which a number of viable options appeared shows that it was a common emergent thread of development that was already well under way in a number of quarters.

Almost suddenly, as software developers, we now find ourselves in a world with a plethora of operating systems which we may need to target, rather than the 2+ we had become accustomed to.  More than that, there is now a new breed of software application, the 'mobile app'.  Free, or cheap enough, these small single purpose applications make the most of the "Long Tail" principle.  The application does not have be fantastic, or unique, just useful, and amoung the thousands of people who have access to it through some form of application market, some are bound to adopt it.  Developers no longer need the weight of a corporation behind them to produce software people will actually use.  They now have easily accessible distribution channels and all they have to do is upload their application.  "Mohammed does not have to go to the mountain, the mountain will come to him."

These mobile apps have also solved the problem of mobile data access.  Accessing information from web sites and web applications is often a slow experience on a mobile device.  With every round trip, the browser not only has to fetch the data, but also presentation information, and then use an 'under-powered' processor to format and display it.  The mobile application solves this problem by using the internet solely as a transportation mechanism, with presentation and interaction controlled by the application itself.

Interestingly, this is an approach employed by Microsoft Silverlight, Adobe AIR, and Macromedia Flash.  The internet becomes a distribution and data transport mechanism.  Applications effectively become customised browsers for defined data sets, and the usefulness of a generic web browser starts to decrease.  And now we come full circle.  We can no longer rely on web applications as a 'one size fits all approach'.  We have to create a specific version for each operating system or platform.

The vote is still out on the Tablet form-factor currently being pushed by Apple's iPad, with other late comers following in its foot steps.  Certainly I can see a role for more ruggedised versions replacing some of the other mobile devices used by companies with a mobile workforce such as couriers.


The New Technology Landscape


Either way, the technology landscape has changed.  We no longer have to sit at a desk to use a computer.  We also have them in our purses, jacket pockets and under our arms.  And if we want to remove barriers for our consumers, we can no longer complacently target our software for a single platform.  We can expect things to settle down somewhat in the future.  I think we will see something similar to what happened with the desktop landscape: there will be a few widespread mobile operating systems, with some additional options around the edges for non-conformists/innovators.

There is one thing that could stifle all of this - the demise of unlimited data contracts for mobile devices.  Without being 'always-on' and having data flowing to our devices, the mobile computing revolution may be stopped in it's tracks.

But for now, we face the same question, "What is the best platform for us to develop this application for?"  Unfortunately the answer is nowhere near as straightforward as it has been.

Comments