Sunday, February 24, 2013

The Changing Mobile OS Landscape

As we begin 2013, and to nobody's surprise, there are two dominant smart phone operating systems, Android and iOS.

Recent data in Business Insider states that as of Q3 2012 Android and iOS account for over 70% of the market share, with Android  accounting for about 75% of that share. In Q4 2012 alone BGR states that worldwide iOS and Android phones made up over 90% of the smartphone shipments.

But after digging a little deeper it becomes apparent that change is on the horizon for 2013.

Most of us are familiar with Windows 8 mobile handsets and Blackberry's recently announced Blackberry 10 handsets -- but lesser known are the 6 or so additional OSs that are in the works, including FirefoxOS, Jolla, Tizen and Ubuntu.

Though these oncoming options are good news for innovation and competition, I suspect our lives as mobile developers will be getting a bit more challenging.

To Reuse Firmware or Not to Reuse

Sometimes on new embedded development projects I am presented the option of repurposing firmware that has already been developed for the intended platform.

At first glance, repurposing seems a no-brainer because of its potential for saving time and effort, but a closer look at the risks involved paints a different picture.

Risks of repurposing firmware include unknown bugs, uncorrected known bugs, poor programming practices, and "fragile" software that becomes unstable after change. And sometimes even though the software is well-written it just doesn't achieve its intended purpose.

Here are some criteria I find helpful when evaluating if I can reuse a firmware code base:

  • Documentation: Does it exist and is it current? (Specifically, I ask for design documentation and test procedures.)

  • Understandability: Simply read through the source code. Does the style and format conform to your standards?

  • Testability: Has the code been unit tested? Can you duplicate the results?

  • Availability of original developer: Can you contact the programmer(s) should you run into problems?

  • Version and source control: Is the software under active management and control?

Unfortunately I have not found a failproof system to make this decision. However if more than half of the above points are answered in the negative I choose to start from scratch.