Cyanogen is a non-corporate, open source, fully voluntarily staffed version of the Android smart phone/tablet operating system.

The volunteers behind it were in SF for Google I/O, and kindly gave up their time to talk to about 400 people at the Yelp office.

Notes from the presentation:

1) An overview on Cyanogen: 2.5 million users (out of something like 300 million Android devices sold), 500K users of the 'overnights' (i.e. very active users). 100 devices supported (which is roughly equal to the number of unique Android models, though not clear whether the number of devices supported includes all variants for carriers)

2) While Android is open source, the reality of open source is not as clear as the hype.

In particular, the kernel of Android is Linux. What this means is that the license for the kernel requires that all updates and modifications to the Linux core be made open and available to all. This is the classic definition of 'open'.

However, Android beyond the Linux kernel is under the Apache license. Under the Apache license, modifications and updates are not required to be open.

Thus Android is 'open' in one sense, but not open in another very real sense. More on this later

3) Beyond the above licensing distinctions, Android on smartphone/tablet also adds additional blurriness to 'open'ness:

HAL: no, not the 2001 computer, but the Hardware Abstraction Layer. This is how Android software interacts with specific smartphone's hardware. The HAL is constantly changing - manufacturers are continuously extending and modifying this. The HAL components are unsurprisingly 100% proprietary.

RIL: Radio Interface Layer - this is how Android interacts with the radio and GPS portions of the smartphone, and in turn function on the various carriers. Another fully proprietary portion which is heavily customized and constantly in flux.

Similar interfaces exist for audio I/O and video/camera I/O.

4) The size. Android requires something like 16 gigabytes of RAM to compile. The net effect is that a major release on Android takes a long, long time to be understood even though the code is 'open'.

The versions available to outsiders like the Cyanogen folks also are deliberately stripped of multi-device support. For example, the EVO series of smartphones from HTC has not only carrier variants, but also generations ranging from the original EVO 4G, to the EVO Shift, to the EVO Desire, 3D, etc.

A given download for code not only has all comments removed, it also would be only for one of the variants above.

Note that the above is with only 2 primary chipset makers: Qualcomm and TI. There are several new entrants into the mobile chipset field: nVidia, Rockchip, allwinter (?)

Interesting that even having such a relatively small number of base chipsets, filtered through a larger number of manufacturers, causes such difficulty for support. In contrast the monopolized standardization in the PC world, despite the driver issues, seems simple in comparison albeit without an open source to work from.

All in all, kudos to the Cyanogen team for their dedication.