I’m going to start with a post about mobility, specifically the disconnect between the terms “mobile” and “wireless”. They’re often used interchangeably, but they’re not the same, and that can lead to some confusion. Let’s see if we can distinguish them from each other.
Mobile != Wireless
Mobile refers to the concept of mobile computing — the ability to use computer applications from portable computing devices. Mobility is really an attribute (and a need) of the user, not of the device, even though you’ll see the devices referred to as “mobile devices”.
Wireless refers to network connectivity that is free of physical connections — there is no wire connecting the computing device to the broader network. Wireless is an attribute of the device, not the user.
When you distinguish the two terms this way, you can see that they are not the same and in fact they combine together in different ways:
- Mobile Wireless: What people generally consider to be “mobile” or “wireless” — a mobile user with wireless connectivity, think iPhone email on the go.
- Mobile Non-Wireless: A mobile user without wireless connectivity, like the meter readers collecting utility usage information.
- Non-Mobile Wireless: A non-mobile user with wireless connectivity, like a desktop computer in the family room connected to the Internet via a wireless router.
- Non-Mobile Non-Wireless: A non-mobile user with physical connectivity, like a desktop computer connected directly to the cable/DSL router.
The combinations of interest for this discussion are mobile wireless and mobile non-wireless. Both have their challenges.
The Early Days: Disconnectivity
When we released SQL Anywhere’s UltraLite mobile database technology in the late 1990s, mobile non-wireless devices like the original PalmPilot were dominant. These very limited portable computing devices only had network connectivity when they were tethered to a desktop computer, typically by “cradling” them into a special-purpose connector (the “cradle” — since replaced with USB cables) that also recharged the device’s batteries.
Because such devices were normally disconnected from the network (we called them occasionally connected devices), applications had to be written to work in a network vacuum. Tracking and safeguarding on-device data was paramount, because you wouldn’t want any data to be lost or corrupted while the device was disconnected. And when the device was reconnected to the network, you needed a way to get that data off the device and into the databases and other backend systems your company used. By creating a fully relational database system with transactions and integrity checking and supporting the robust MobiLink data synchronization model, UltraLite was perfectly suited for building data-intensive mobile applications for disconnected devices.
The Wireless Trap
Nowadays, most mobile devices include wireless connectivity, but the need for technologies like UltraLite and MobiLink hasn’t diminished. Just because you can stay connected to the network doesn’t mean you want to use that connection, for the following reasons:
- It costs you money — when your data plan charges by the kilobyte, you want to keep data transfers to a minimum.
- It uses the battery — the more often you use a wireless connection, the sooner you’ll have to recharge the device.
- The network is slow — even the latest 4G networks won’t perform as fast as you’d expect.
That last reason brings up an important point: what happens to your application when there’s no network coverage available? Don’t scoff, it’s not an unusual situation: if a worker is moving in and out of buildings or driving out into rural areas, data connectivity may be very erratic.
Always Working
This is why we still find there’s value in taking disconnected application operation into account when designing applications for mobile devices. AJAX-style local user interface logic isn’t enough.
Unless your application is truly an online-only application (and those certainly exist), it’s best to plan for disconnected operation right from the start. Use wireless connectivity when it’s available, and when it makes sense. But ask yourself this question: will the application still work when there’s no network?
That’s the real disconnect between “mobile” and “wireless”: people think they need a mobile wireless solution when in fact they need a mobile non-wireless solution with optional wireless connectivity. They need an application that always works, with or without the network. It’s harder to write applications that work without network access, but I can assure you that retrofitting a wireless-only solution to work in a disconnected manner is even harder.
Is there a disconnect in your mobile application strategy? We’ll revisit this topic in the future when we look at mobile application architectures.