[G1 Android Development] rich0:
Well, to some extent stable is whatever you want to call it.

However, in most contexts stable means that the software in question has been tested extensively and found to be reliable. It can also imply that it has few changes from the last version that was considered stable, or that those changes have received extensive testing.

I think that Android as a whole is a bit immature for any mods to be considered truly stable, so it tends to just be a relative term. In the linux world managing coherence and stability tends to be the job of a distro. The android source is also a real pain to manage (lots of stuff coming from lots of places with lots of binary blobs being copied in).

CM has been good enough for my purposes so far. It isn't what I'd truly consider stable - but it is the closest of any of the mods. The OTA updates are stable, but very stale. Stable doesn't have to be stale, but it can't be cutting-edge almost by definition.

If CM releases included build instructions or tagging in a SCM repository of some kind (including indicating what binary bits came from where and are installed in what order / etc), then that would open the way to have truly stable versions of CM released by third parties. These releases would target particularly stable versions of CM a week or two after they are released, and they'd include bugfix backports (so if Cyanogen releases 1.2.3 and then fixes a bug and changes the contacts module in 1.2.4, the stable version would release a 1.2.3.1 with the bugfix but the old contacts). There would also be a testing branch vs a stable branch. The only rushed changes would be security fixes.

That kind of stuff takes time and effort, and it tends not to involve kernel hacking/etc, so it isn't always the most popular thing for devs to do.

The main issue I see doing this with CM is that it isn't at all clear what the source to any particular version of CM actually is. The changelog is fairly general, and Cyanogen has about 38 branches of stuff going on github. No doubt all his sources are there, but trying to actually recreate it all is an exercise of building lots of different things and figuring out which branches of which products went in to the final release. If somebody just wants to tweak his contacts application or whatever that isn't a big deal - just unzip the update, download just his branches for the contacts app, and then rebuild or whatever and substitute one piece. The problem is that you have to scale this up 100X to do the whole thing.

A lot of this is due to this is really just Cyanogen's one-man hobby (with lots of small contributions from others), and there is nothing wrong with that. The project isn't really organized like a distro or something where it is intended that lots of people contribute and generally there isn't one person who announces/compiles new releases. CM doesn't even have build instructions - the closest I could find are instructions on how to build your own kernel, but that is only a small part of the whole thing.

Give it a little time - I suspect we'll see android start to mature a bit more. AOSP can potentially fill this gap, but their biggest issue is all the proprietary blobs and dealing with Google code dumps. Perhaps if Google slows down a bit at some point they can catch up - or if enough devs contribute to make AOSP fully functional they could just say no to the Google dumps and just go their own way (leading to one android on new phones, and a completely different codebase on mods - in theory that can work but the biggest issue there will be drivers and software compatibility). The kernel team has already been giving Google a hard time about its contributions so android is essentially running on a forked kernel unless something has changed.

Bottom line is that it would help if Google ran Android as more of a community effort...