The GitHub Training Team recently caught up with Jake Wharton, legendary Android developer, OSS contributor, and codemonkey at Square. He's a friend of GitHubber Kevin Sawicki, who has used Jake's APIs in the development of our own GitHub and Gaug.es Android apps.
Back in 2011, Jake got started on a work project to manage a large number of virtual machine images from a mobile app. That project never saw the light of day, but while building it, Jake had to code on some UI components he needed to make the app as awesome as he wanted it to be. Happily Jake was able to open-source that code. Unsurprisingly, that very open-sourcing was pivotal to their success.
Action Bar Sherlock
ActionBarSherlock is an Android library for applying the Action Bar UI element—which is available in the Android 3.0 and later—to earlier versions of the OS using the same API as the official Honeycomb API. ActionBarSherlock has been trucking along pretty well, having seen its 4.0 release as of March 2012.
View Pager Indicator
The ViewPagerIndicator project is a similar UI component for managing paged displays. The native Android ViewPager widget allows developers to expose UI elements that are too large to fit on a single device screen, but can be paged back and forth with a swipe or other input. Android doesn't natively make it very clear with any visual idiom that this paged model is in use—or which page is currently displayed—so Jake had some more work to do.
Like the best open source APIs, ViewPageIndicator was written to solve a problem the author encountered in the process of solving some other problem, but it soon gained a sizable community and is now being tested and used on many devices at many different screen sizes and resolutions.
Open Source FTW
Jake talked to us about how his kind of code is particularly well-suited to an open source model. UI enhancements, he explained, are a big time sink for one developer—it's just really hard code to get right—and it offers very little individual benefit in comparison to the effort expended. Having a uniform ActionBar implementation or a properly visualized ViewPager "just gets you up to the 'looks like everyone else' level--and there's no fun in that." No fun indeed, if you're doing it all alone.
A solitary developer is unlikely to make that kind of investment, especially in the Android space where an effective UI component has to be tested on a massive number of devices and screen sizes that no one but the largest development shops is going to have all in once place. But Jake wasn't alone. He had a lot of help.
These two projects together tell the canonical open-source success story: one talented developer scratches his own itch, then provides a little bit of project leadership while a large community of others contribute hundreds or thousands of additional hours of improvement. The result is a UI component usable by any Android dev without duplicating the effort of building the component, allowing that dev to concentrate on how he or she can build a more awesome app that serves its users better than it otherwise would have. And this is what writing software is all about.
Our hats are off to you, Jake! Thanks for your contributions, and thanks for hosting them on GitHub.