Inside NPR.org

Mobile

The NPR Android App: A Bazaar Beginning

Earlier this week, when our Washington office was closed and buried under two feet of snow, we compiled and released our first Android app to the Market, Android's version of the iTunes app store. Within seconds, the app was live to the world. There was no lengthy approval process, no request that the app more closely conform to the UI conventions of the operating system, not even a quiet suggestion from Google for how we might make our app perform faster. For a piece of software built by an old-media company, it was a bazaar beginning.

Coder-philosophers out there might have already caught my allusion to Eric Raymond's essay, The Cathedral and the Bazaar, the seminal work on the intellectual underpinnings of the open source software movement. Raymond's essay challenges the old notion that "the most important software...needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time." Rather, developers should "release early and often, delegate everything you can, be open to the point of promiscuity" and rely on a developer community that resembles "a great babbling bazaar of differing agendas and approaches."

When I compare the iPhone to the Android, I feel as though I am handling the tangible instantiations of these two abstract ideas. The iPhone is an exquisite cathedral, a bastion of controlled design, where everything functions with over-wrought precision. The Android is, of course, the bazaar. Managed by the Open Handset Alliance, the Android operating system comprises the collective contributions of carriers, handset manufacturers and software developers. In many ways, the battle between the Android and the iPhone is more than a battle for market-share; it is a battle of ideas.

NPR chose to approach these two philosophically-opposed operating systems in kind. Our iPhone app was a work for hire, built by a specialist app developer recommended to us by Apple. The code remains proprietary, and we have no plans to open this code to the world. Our Android app, in contrast, was built by Google developer Michael Frederick as a 20% project, as Google allows its engineers to spend 20% of their time on projects they're passionate about. This was not only a gift to NPR, but a gift to the world: in the next few weeks, our Android code will be open-sourced under the Apache license. That means that anyone in the world can steal our code and use it, in part or in total, in whatever project they want.

And there are some really good things to steal here. I'll let you be the judge of where the most valuable code resides (just search for 'NPR News' in the Android Market), but my favorite part of the app is the player tray, the slide-up tool bar that allows you to see what's playing and interact with it, no matter where you are in the app. That was Michael's idea, and it seems unlikely that we would have landed on that idea had we taken the top-down 'cathedral' approach to designing this app.

To be sure, this is not the iPhone app: there are no live streams from stations, no program guide showing you what's playing on stations right now, no sharing tools. With the iPhone app, we tried to release perfection. With the Android, we were more concerned with creating tight code. Tight code means lightweight development, a virtue that will support the open source community that we hope to build around the app. In short, our plan was to build the kernel and leave plenty of room for growth.

We hope you enjoy our work in progress and, if you really like it, we hope you'll progress our work.

Comments

 

Please keep your community civil. All comments must follow the NPR.org Community rules and terms of use, and will be moderated prior to posting. NPR reserves the right to use the comments we receive, in whole or in part, and to use the commenter's name and location, in any medium. See also the Terms of Use, Privacy Policy and Community FAQ.

Inside NPR.org
Support comes from: