Overnight, I received yet another request to deliver training on Android internals: how to create Android devices, work with Android firmware, and the like. While I offer training related to Android, it's only on application development, as kernels and device drivers are not my cup of tea.
I get one of these training requests every month or two. I would love to steer these interested parties towards people offering such training. Clearly, there are some people outside of the Open Handset Alliance who know how to do this sort of thing — witness the ROM modders and homebrew device makers. I haven't found any of them who have decided to “go pro” and start teaching others what they know.
This, however, points to a larger issue with Android: long-term maintenance.
In most open source projects, the maintainability and survivability of the project is tied to the number of people who know how to muck with the internals. They are the ones who will keep the project going, even if some fall off over time. They are the ones who will create forks to meet certain audience interest if the main group turns tone deaf or goes off in another direction. And they are the source of many bug fixes that keep the project vibrant during its peak period.
Right now, the bulk of the people with these skills belong to the major players in the Android ecosystem: Google, HTC, Motorola, Samsung, et. al. That's all fine and well, but it keeps that knowledge closely held.
It is this knowledge distribution, as much as anything, that is at the heart of the Linux kernel patch issue I covered last week. Open source devotees know that closely-held knowledge can get too easily lost if those holding the knowledge drop off the project. If Google decides to drop Android someday (e.g., in favor of Chrome OS), who's to say that the handset manufacturers won't follow suit? The result is a pile of code making an interesting technology that few know how to manipulate. One way to get more people familiar with the code base is to mainstream it, such as getting patches integrated into the Linux kernel.
Now, that's not the only way, and perhaps not the best way, of ensuring a wide range of people know how to work with the Android internals. However, there are very few ways that Google seems to be promoting that knowledge dissemination, so seeing one of them go up in smoke was disappointing.
In the end, I don't expect Google to change its stance here. That is why I encourage people who have learned how to work with the internals by dint of hard work to find ways to share that knowledge, in ways that independent and corporate developers can leverage.
And, if the training inquiries I get are any indication, there's a market for professionally sharing that knowledge.