Friday, June 4, 2010

One of the fundamental considerations when designing a rugged mobile computing solution is the choice of the handheld computer’s operating system. To be sure, there are many choices available in today’s market, but the choices can be quickly whittled down with some basic questions about what solution you are trying to deliver to your customer and a fundamental knowledge of the features and roadmaps of the operating systems themselves.

What are the OS choices and where did they come from?
As we all know, the smartphone market has really exploded, and continues to expand with Android® being released last year and iPhone® and Blackberry® still leading the way with increasing market share of the consumer and enterprise markets respectively. One might think that the Operating System solutions for handhelds are a relatively new thing, but this is not the case. Those of you with a penchant for technology history will remember the 1993 Apple Newton® as the first PDA. In fact it was Apple’s then CEO John Scully who fashioned the term “Personal Digital Assistant”. The PDA soon became ubiquitous with Palm(recently purchased by HP®), HP, Psion®, IBM® and many others getting into the market through the 90’s and into the mid 2000’s. RIM entered the market with a two way pager device in 1996, but the now famous email and voice platform, Blackberry, was released in 2002.
Microsoft® entered the handheld OS market with Windows® CE in 1996 and then added a consumer layer to CE with Pocket PC® in 2000. This year, Microsoft announced a new consumer mobile OS, Windows Phone 7 Series (based upon CE 6.0 R3) being released for the holiday season and more directly competing with the likes of iPhone® and Android®.
An early mobile Operating System, not really for a smartphone at the time, was EPOC which later become Symbian® with a partnership of Psion and several mobile phone handheld manufacturers. Nokia® now owns the technology and has made it an open source license as of this year.

How do you select an OS for development?
Many criteria exist for the choice of an OS on a handheld. The ones that I cover here are focused on the use of the handheld as part of the entire system that an end-user will utilize.
Are you delivering a solution or an application?

The first and primary question to ask is if your product is a solution and by solution I mean is the software/hardware product that you will provide being used throughout an end-users workday as the means by which they accomplish their tasks. If the end-user will only use your product periodically, such as looking up inventory or checking the status of an order, and the rest of the time the main use of the hardware is as a phone, calendar, and contacts, then this is an application.

If your focus is on the application, then you really should consider consumer level products such as Android, iPhone, Blackberry, Windows Phone Classic/7 Series and the like. There may be some exceptions (see the rest of the questions below) which may drive you more toward another environment, but by and large these systems will deliver the required robustness and overall usefulness as a tool for the end-user. Your support will primarily be for your application and the carrier will most likely provide the needed phone/email support.

However, if your focus is as a solution, you definitely should read on and consider the rest of the system…

Are there special peripherals that must be used?
The second question to resolve is, does the user require any data collection, communications systems or maybe special imaging solutions that “regular” hardware does not provide? Peripherals such as bar-code scanners, RFID readers, custom radios, sensors, biometric readers, mag-stripe readers, true digital still cameras, and precision GPS systems are not available from consumer hardware providers and even “gluing them on” can be difficult and unreliable.
Typically, if you are looking to integrate a “special” peripheral, an industrial OS such as Windows CE is your best bet; the drivers and system integration can be tightly coupled to the Operating System. In most cases the Operating System is extended by the hardware provider to take special advantage of the peripherals key features.

Do you/your customers require a long product life?
IT investment is not cheap at the onset, and typically the deployment costs such as training, support and setup can be largest dollar cost item of a project. So, given that, it is important to understand and manage the field disruption and cost due to obsolescence or OS “upgrades” which may cause issue with your solution.

In general, consumer phone Operating Systems are controlled by the carrier, which means that your application and contingent support are at the mercy of their OS update schedule and content. These Operating Systems are also routinely and rapidly updated to take advantage of new features and services (or issues). Generally this is not always an issue with your application running on the “new” OS, but when it is you may very well be limited to the actions you can take. An OS roll-back is not always practical (or available), so that leaves you having your engineers scramble to develop a work-around/fix “right now”.

These types of issues can usually be mitigated by using Windows CE or even Linux derived OS products which hardware manufacturers can “lockdown” to a specific revision level once your application solution is developed. In many cases CE is almost ideal as Microsoft defines the basic standard, but provides the hardware companies with vast amounts of source code to allow them to support/improve and debug the OS.

When dealing with a proprietary OS you really are under the control of the manufacturer. Should their business be purchased (PALM) then you hope that someone will continue supporting (and selling) those devices.

Open Source generally will not have an issue with long life as the source code is open to compilation as long as compilers are available (forever in practical terms). Who created your OS, and its sustainability in terms of support and security are another, more complicated issue, which is being grappled with by many markets in general.

What about security?
This is a key subject on most people’s minds (and fundamental in some), from end-users, through to IT departments and developers. There is no such thing as a “totally” secure system, but generally speaking , the more restricted that access is to that system, the less likely that a security threat can enter.

The perennial Windows Mobile (aka Phone Classic) and Symbian are prime examples of consumer Operating Systems which have the target of viruses, malware and security issues almost since their inception. It is the nature of their “openness” and freely available connected systems which allow for this to happen.

Of interest is Android, iPhone and webOS which have had very few reports of security issues. Generally this is due to the nature of the OS and the delivery/update methods employed.
Lastly there is Windows CE. Since CE is the basis for Windows Mobile/Phone, you would logically think it would be as susceptible to viruses, and you would be right in terms of the technical nature of the product. However in the systemic scope of the deployed product, CE solutions are usually much more focused on an application and thereby do not have an “all user access” component to their features. Also CE hardware manufacturers have the ability to lock-down the OS in a form by which it cannot be tampered with and is easily verified as to its “uniqueness”, which makes it VERY difficult to embed a virus.

Who will be providing support to the end-users?This question really goes back to the original solution/application discussion. If you are providing a product which is an application only and the hardware really has other “general purpose” features which the user will routinely (or mostly) use, then those applications/features need a support/update/maintenance system which can leverage very general knowledge… A consumer OS will be a great choice to consider.

On the other hand, when you are delivering a solution, the support staff really needs to be focused on that end-user getting that job performed in an efficient and reliable manner. Phone, email and “general purpose” applications/uses will not be the primary (or in many cases allowed) feature of the product. In that case a more customizable OS, such as CE or Linux can provide a great platform.

What if the mobile application is just one part of my solution?In many, if not most, products the mobile component is just one part of a whole range of IT “views” into the whole solution. There other views may be a web portal, a desktop application even a TV application (think xBOX® or Playstation® type interfaces). Your development likely will need to leverage known development environments, APIs and toolsets throughout the product’s offerings to minimize the diversity of skills required and lower the risk and time of knowledge acquisition. Time to market (with a quality product) is everything.
Traditionally mobile applications were “on there own” meaning that the OS and the hardware were so limited that it really required a special skill set and experience to program for it. While that is still the case with some environments (Symbian, Android and iPhone come to mind), others have really opened up.

Microsoft has integrated the .NET and Silverlight® platforms across the entire development environment from Desktop and Server through to the Windows Phone 7 Series and Windows CE. This is means that while developers still need to understand their “views” audience and scope of hardware “portal features” they no longer need to be totally retrained or be total “specialists” in each area.

Java also has long promised “platform independent” development. By and large it also meets this requirement with the Java™ Runtime Environment (JRE) being ported to most operating systems. The issue to resolve is generally the lack of hardware manufacturer support for Java. Even the Android SDK, while using a Java like syntax and structure, really is its own language and system.

Conclusions?
I think you’ll agree that no one Operating System solves everyone’s problems or concerns. In general, there are even more factors to consider that are specific to your solution and business.
If you are developing a product with specific peripherals and the requirement for a long product life, the solution is pretty straight forward with Windows CE.
However, if your product is an application that really only uses a keyboard (or touch screen) with no need of other peripherals, then a consumer OS is probably your better choice.
If your product is somewhere in the middle of the two scenarios above, then you really need to focus on levels of support, security and your development roadmap to understand which will be best for you.

Thoughts? Comments? It would be a pleasure to gain your insight. Scroll down to leave a comment, reach me a 2e@2t.com or join us on Facebook.