Ironically, with Android, Google made the same compromise that Microsoft made with Windows, that is make the core OS, but outsource hardware to a million different OEMs, in order to get your software running on a greater ecosystem of machines, unlike the Apple model of controlling both the hardware, and the software, as is the case with Macs and iPhone.
Except, now Google has run into the same issues Microsoft ran into with Windows, namely now they have to either a) support a million different hardware configurations, or b) drop support for "legacy" hardware with every new version of their OS.
Except of course there's a third party involved, the telecomm companies that are responsible for providing OTA updates at their whim, whereas Microsoft never had that problem. If anything, they dictated the upgrade schedule for OEMs, leading to the infamous
$2,100 email machine.
So Android is a real conundrum, on the hand, it's open source, but on the other, very few phones actually get the latest release installed, and that's if the telecomms don't cripple the software by installing crapware on it. And there's just enough closed-source binary blobs on the phones that you can't really install your own version either.
My advice, get a nexus, or don't get an android phone.