Go Native, Go Big, and Go Deep

Android software development at a crossroads

Apps have to get bigger and more ambitious. A key question for the developer community is how do you create big, integrated, multi-functional, configurable apps for the mobile enterprise? Curiously, Facebook is providing some answers by not using HTML5 and not attempting to make a cross-platform app. Go native, go big, and go deep.

Facebook Home is a harbinger of serious mobile apps

Facebook Home has earned positive reviews—in many cases from reviewers who had tired of Facebook and the intrusiveness of Facebook’s privacy policies and practices. Facebook Home is an example of a new kind of Android software development. It spans a variety of functions as a suite of cooperating software. It uses Android’s intent filters, high-level interprocess communication (IPC), shared databases (ContentProvider components) and remote APIs to bond together a software product that replaces many of the standard parts of Android—as they are meant to be replaced.

Facebook Home isn’t some kind of rogue hack, nor is it a “fork” of AOSP, as Kindle Fire is. Facebook Home is a tour de force of correct Android application architecture. It takes over your phone, interface by interface, always playing by the rules, and it does so for justifiable reasons: for putting Facebook’s functionality everywhere you want to perform communications and social media functions.

Going native

Moreover, Facebook Home simply can’t be done on iPhone. iOS has a specific vision of apps that is separate from system software, while Android’s frameworks are the basis of both applications and system software. Facebook Home was built with this difference in mind: It replaces key elements of the Android system user experience. It is a suite of communicating apps. The word “app” doesn’t sufficiently describe it.

That’s important because too many Android apps are iOS “shovelware”—apps designed for iOS and where an Android port was let out to the lowest bidder. Facebook Home is the harbinger of a new kind of mobile software.

It’s time for a new class of Android software
How is Facebook Home an indicator of what’s going to happen in enterprise software? Enterprise application software is about making the parts of a system work together. Making those parts work together now often means stitching together various RESTful interfaces into a useful and unified whole. That’s fine for limited goals of presenting information in response to queries, but that design sense has to penetrate deep into the client software architecture. That’s what Facebook has done: It is more than a collection of clients that talk to Facebook server APIs (update stream, presence, messaging, etc.)

Those client components talk to each other and to standard APIs in Android. They also act as service interfaces that can replace or augment the standard parts of Android. And, as wearable devices and sensors are more widely used to augment the user experience, these, too, will be interfaces to enterprise device software.

Think, for example, of an ERP suite designed in the same spirit as Facebook Home. How far can you go beyond isolated, monolithic apps? Can you bring an enterprise “dashboard” to the Home screen? Can the whole device become an instrument for enacting each user’s role in the enterprise? Can you make the user’s work flow from one app to another—from an order tracking activity to a Google+ hangout with the customer’s decision-makers?

If your software is at the center of a major part of enterprise workers’ toolset for getting their work done, that software should be at least as deeply integrated into their mobile devices as an enthusiastic Facebook user wants Facebook integrated into their mobile user experience.

What can I do as a developer?

Here are some of the considerations to take into account in designing suites of apps for Android:

  • Does my app access different kinds of databases?
  • Does my app contain disparate functions, like communication and location services, as well as presents data from RESTful services?
  • Is my app’s data a good candidate for sync, for example, to enable offline operation? Can it take advantage of other Android capabilities?
  • Am I handling data types that are part of the Android system, like contacts, images, voice recordings, etc.?
  • Do users of my system have different roles, where different modules would be emphasized, or different configurations of software loaded on different users’ devices?
  • Can my app “borrow” UI from other apps using the startAcitivityForResult method?
  • Can I provide a user interface for other apps to “borrow” by creating an intent filter matching one or more of the standard set of intent parameters?
  • Can I use intent filters to replace parts of the operating system?
  • Can my app act before the user interacts? Can it infer and anticipate the information the user needs? Can it acquire information without user intervention, by location, sensors, and by communicating with wearable devices?

If you answer several of these questions “yes,” then you can think of your development project as a suite of cooperating apps and components rather than as a monolith. Instead of piling more features into one app, modularize along functional lines. Then you’ll have an app that communicates about the relevant subject matter; an app that applies knowledge of location in a way that’s relevant to the problem; and an app that weaves together data from multiple RESTful interfaces to break down silos and recombine enterprise information. Notifications make the user aware of your apps when important events occur. Appwidgets enable the Home screen to be configured. Take a look at what Facebook did. You may find in Facebook Home the future of many types of applications, especially big, ambitious suites of functionality aimed at enterprise users.

If you, your employer, or your clients own a major ecosystem in media, technology, services, or enterprise software, you need to start thinking of app architecture the way Facebook is thinking about it. If you have complex workflows, specialized roles, and a large workforce that can benefit from stronger coordination, putting that enterprise information and communication frontmost in your workers’ mobile devices will help you accomplish enhanced productivity.

tags: , , , , , ,

Get the O’Reilly Programming Newsletter

Weekly insight from industry insiders. Plus exclusive content and offers.