Fragmentation
The term fragmentation generally refers to the proliferation of
diverging variants. Linux is particularly susceptible to this concept,
Linux' modularity and open license practically drives the OS forward.
However, a situation where many custom versions of a software platform
emerge and coexist can easily turn problematic. This fragmentation can
weaken interoperability; apps built for one variant might not work on
the other.
Android
With the nature of Android and the rapid growth of the Android OS,
questions are raised concerning the fragmentation issue. More and more
Android devices emerge (over 60 models, selling 100,000 units a day)
and every single one of these devices contain heavy software
customizations.
Google's approach on the issue
Google's solution is the Android compatibility definition. This
document sets the standard every vendor conforms with. This effectively
ensures compatibility through all Android models and OS versions that
are intended to run third-party applications.
Furthermore, most Android apps are compiled into bytecode that is
executed by Google's Java runtime engine. It's because of this the
software can work seamlessly across multiple processor architectures.
This solves quite a few binary compatibility issues, which you'd have
with C# for example. Only drawback is you're using Java.
All and all, Google has taken the necessary steps to prevent
fragmentation from ever getting a hold on the system. That's why
Google's Android compatibility program manager Dan Morrill has the
following to say about fragmentation:
"Stories on 'fragmentation' are dramatic and they drive traffic to
pundits' blogs, but they have little to do with reality.
'Fragmentation' is a bogeyman, a red herring, a story you tell to
frighten junior developers. Yawn."
The Ars Technica article:
http://arstechnica.com/open-source/news/2010/06/ars-explains-android-fragmentation.ars
Android Devver blog about fragmentation:
http://android-developers.blogspot.com/2010/05/on-android-compatibility.html
Compatibility guide for Android:
http://developer.android.com/guide/practices/compatibility.html