A recurring meme in Android-space is fragmentation. One source of such fragmentation fear is the current triad of Android versions in public use: Android 1.5, 1.6, and 2.0. That situation should improve with time, as 1.5 vanishes, most devices move to 2.0, and 1.6 is perhaps used for some devices.
However, the other area of perceived fragmentation comes when device manufacturers or developers “coloring outside the lines”, by which meaning that they do not follow the contract set forth in the form of the Android SDK. Whenever one side or the other fails to pay attention to what is in (and not in) the SDK, compatibility becomes an issue, which may add to the fragmentation fears.
A device manufacturer “colors outside the lines” when it modifies Android to suit its fancy yet does so in a way that breaks public APIs. For example, device manufacturers will frequently wish to revise the Contacts application, so they can add their own value to their devices (e.g., offering a blend of traditional contacts and ones imported from social networks). Making such modifications is fine...so long as the public APIs still work. Alas, that is not always the case.
When a device manufacturer breaks the public APIs, applications that depend on those APIs will break as well. Users who try to use these apps may start by blaming the app as being “buggy”, but over time the pattern will become obvious, indicating that the device itself is “buggy”. This is unlikely to help the device manufacturer's sales in the near term.
Similarly, developers “color outside the lines” when they attempt to dive past the public APIs contained in the SDK and use facilities not ready for such use. For example, most of the SMS add-on apps on the Market today do so in violation of the SDK, because the SMS content provider is not part of that SDK. Device manufacturers are given specific latitude to change up things that do not impact the SDK, and the core Android team itself may change how things like SMS work in the future.
Developers who rely on undocumented capabilities run the risk of eventually “getting caught”, because either Android evolves or a new device shows up that changes those capabilities. Once again, users will grouse about these apps being “buggy”, which in this case is technically accurate.
If too many developers or device manufacturers “color outside the lines”, Android device users will eventually conclude that Android applications are not trustworthy. Think of such buggy apps and devices as pollution that degrades Android as a whole, even if any individual application or device problem has minor incremental impact.
Open source and open markets mean there is less enforcement of the SDK as a contract. Instead, it is up to all actors to behave responsibly and help steer miscreants back to compliance. While there is always room for growth, Android as a platform is rich enough to create a wide range of applications and compelling devices — breaking Android to try to one-up the competition is a bad move tactically for you and a worse move strategically for Android.