Skip Links

Network World

Mark Murphy

Lowering the threshold, part one

By Mark Murphy on Mon, 05/25/09 - 12:06pm.
Newsletter Signup

Android is a modern, capable, perhaps even "sexy", mobile operating system. However, you can say the same thing about iPhone and Palm's upcoming WebOS. What distinguishes Android from those two is being open source. In theory, Android should be able to add more capabilities more quickly via having more people contributing to its development.

In practice, contributing to Android is far from easy. The simple things (e.g., contributing to documentation) are hard, and the hard things (e.g., overhauling built-in applications like the media player) are byzantine.

The "Lowering the threhold" series will be where I brainstorm ways to help make it easier for people to figure out what needs to be done and how best to do them. Most of these ideas could be implemented by anyone in the Android community — they are certainly not something solely the core Android team can accomplish.

And, since I'm a book author and publisher, let's start with a book.

We need more documentation on how to contribute to Android. This could come in the form of articles, or AndMob wiki pages, or blog posts. However, I suspect there is more than enough material to warrant a book, covering topics like:

  • The Life and Times of Patches: Make a patch to Java code, and to C code, and walk through every step of the process, from initial concept to Gerrit submission to review and acceptance or rejection.

  • Explain how best to work on changes to built-in applications like the media player: how can you use Eclipse? How can you package your changes for local testing? How can you make substantial changes yet still wind up with a series of bite-sized patches that might get approved?

  • Describe the minimum set of steps necessary to contribute documentation changes. In all likelihood, the "minimum set of steps" will still be pretty nasty for somebody who is not a developer — more ideas on how to address that little issue in a future article in this series.

  • How can you "hook into" the overall review and contribution system if you are a specialist, such as a tester, or a translator, or a security expert?

  • How can you contribute changes to things that are not part of the firmware itself, such as development tools?

  • What are the tools that the core Android team uses (e.g., code coverage) that those contributing code should also use? How do you use those tools for the Android code?

  • If your contributions are tied to new hardware, such as new drivers, or ports to new chipsets, how does the contribution process change? In other words, how do you port Android and get the port to "stick" as part of the Android source code, versus forevermore being a set of patches you need to apply on each Android release?

  • If you are creating custom firmware, such as an Android "remix" blending the Android OS and other applications, how best do you package up such a thing? How might you distribute it, either to customers or to the public?

  • How best does one build firmware images, for emulators or devices, out of specific branches in the repository?

The Android source code site is very sparse on all of those things, and more. Their focus is on the bits and bytes of contributing changes (e.g., what are the proper command options to give to repo). We need to document more of the human side of contributing, to go along with the technical details. In the end, we need people to feel comfortable and confident in their ability to navigate the contribution process. The simpler we can make contributions, the more we will likely get, the more powerful Android can be.

I do not claim any proprietary rights in the book concept outlined above. If some author and some publisher wish to create such a title, more power to them. For anyone interested in potentially collaborating on such a book, though, drop me a line (mmurphy \at\ commonsware \dot\ com).

Good outline

0

Thanks again, Mark- good outline.

Besides documentation, another idea would be for someone to provide a pre-configured virtual machine for development. E.g. if there was an Amazon EC2 image that had all the source, tools etc. already loaded and configured, it would be easier for folks to try it out.

Another, related but more involved idea for building community and growing apps would be providing a standard build engine and app publishing pipeline, as I outlined in my lightning talk at Google I/O:

http://neal.mcburnett.org/blog/2009/05/28/android-open-source-app-support/

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You can use BBCode tags in the text.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <p> <strong> <i> <br /> <br> <ul> <ol> <li> <dl> <dt> <dd> <blockquote>

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Welcome, visitor. Register Log in
About Android Angle
Mark Murphy is the founder of CommonsWare and the author of The Busy Coder's Guide to Android Development. A three-time entrepreneur, his experience ranges from consulting on open source and collaborative development for the Fortune 500 to application development on just about anything smaller than a mainframe. A polished speaker, Murphy has delivered conference presentations and training sessions on a wide array of topics internationally. Outside of CommonsWare, Murphy has an avid interest in how the Internet will play a role in citizen involvement with politics and government.