July 13th, 2010

App Inventor for Android


Whoa. Yesterday morning Google took the wraps off App Inventor, a visual development environment for the Android mobile OS. I'm still trying to slurp from the firehose, even though I'm finding that all the hoses have basically the same information, and in truth not a great deal of that. But I'll tell you right now: It stopped me in my tracks on the iPad decision. As of yesterday morning, I wanted something that runs Android. The new search is on.

You know me. I'm the Visual Developer guy, and the fact that my magazine's been dead for ten years doesn't change that. I still believe that visual metaphors for programming are not only useful but necessary, if certain kinds of software development are to happen at all. (More on this below.)

If you haven't looked into App Inventor at all yet, a very good place to start would be Jason Kincaid on TechCrunch. He's got a good overview and some screenshots (including the one I show above) that will give you a sense for what Google's cooking up. I'll summarize here. App Inventor has two major subsystems:

  • The Designer is basically a form designer, not conceptually different from that in Delphi, VB, and many other more recent environments. You drag UI components from a palette and arrange them on a form.
  • Far cooler (if less proven in its approach) is the Blocks Editor. Here's where program logic happens, and it happens by snapping together logic blocks that look literally like jigsaw puzzle pieces. Clusters of blocks become event handlers. You connect a cluster to an event generated by a component on the form, and the blocks in that cluster execute.

(This may not be the correct jargon. Please understand that I don't have an instance to play with yet, so all I can do is relay what I've read from the fortunate few who were given early copies.)

I knew what the major problem was going to be before Jason told me: In any system like this, you're limited by the selectable elements on your palette. He didn't mention where the blocks come from (I assume they're written in Java using some relative of the MIT Open Blocks technology) nor whether user-created blocks will be importable into the product as shipped. I'm a lot less worried than he seems to be about this, because Google isn't stupid, and they know damned well that the system lives or dies by the richness of the set of available logic blocks from which the apps are generated. If it's anything like an open system, there will be an explosion in third-party blocks once a few Java guys get the system and figure out how to do it.

Jason provides some screenshots with his article, and I borrowed one above to get your attention. Here's another page with a description of a more complex app, with a much more representative Blocks Editor display.

There's not a lot more that I can say about App Inventor itself, at least until I can get a workable instance installed here. But it's been interesting seeing all the dorks in the comments to the news stories, dumping on the system for its simplicity, and for the (frightening) possibility that the hoi-polloi will be able to use it to write their own software. They scream the obvious: You can't write a word processor with a tool like this!

Fersure. And that's not what it's for. I'll respond with something that should be equally obvious: The mobile phone environment is fundamentally different from the desktop environment. From the beginning, it's been about smallish apps that do one or two things of interest, and no more. Mobile phone computing for the most part is about getting in, doing something with a few quick clicks, perhaps reading the screen, and getting out. The apps are very focused and often extremely specialized. Some are obviously going to be a lot more difficult to write than others, but a useful mobile app does not necessarily require man-years of development time.

And if it ever did, it won't anymore once App Inventor hits its stride.

I think that I'll use App Inventor for the same reasons that I use Delphi: To play with ideas, see how things work, and gen up one-time test apps that may lead in useful directions. I'm guessing that App Inventor will enable people to create apps for an audience of one--themselves--and not have to spend six months of free time to do it. Companies may experiment with different approaches to mobile computing without having to commit millions of dollars in dev costs to any one approach, just to see if it's useful or even doable.

I have never had a smart phone, and I've been waiting for my current cell provider contract to expire early next year before getting one. I may have to accelerate the schedule a little. This thing's making me itch in places I haven't itched in for a long time.