Meanwhile, a three year old phone (iPhone 4) can run iOS 7 and run it well, albeit without fancy animations and parallax effect. I don’t know of any three year old Android phones that run Android 4.4.
its trivial to solve. test the os update on old devices and don't push os updates to old phones if it destroys the user experience. i'm not going to condemn them for not ruining my user experience...
my issue is the fact that they change their tools and processes to make it impossible to support e.g. iPhone 1 if you want to. My app will run lovely on an iPhone 1 or 3G, but I can not make a version that runs on these phones as well as an iPhone 5. This is a choice, not a technical constraint or avoiding maintenance costs - I'm very sure its /more/ expensive to do this than not.
i'm fairly sure that its part of their strategy to encourage you to use the latest devices. lots of apple consumers seem to be aware that 'apple don't give a crap about you if you use their old stuff' - i've heard this opinion unprovoked from very un-tech-savvy types much more often than once.
if you work with the apple tech much yourself its an obvious recurring theme - they all but explicitly tell you not to support old devices and then do make it actually impossible beyond a certain point.
this is just not the case for android or even windows or any other platform/os except for perhaps games consoles which are special - if i want i can make an app run across all android versions and have one entry in google play and supporting old versions of windows is trivial work usually. apple have the worst ecosystem for this by miles and miles - nobody else comes close
...and actually old android phones do run 4.4 - you have to put it there manually perhaps, but this is at least possible. it actually has performance benefits on older phones too... which is how it should be. the fact that each ios release is significantly slower isn't down to new features or niceness its programmer sloppiness.
> I don’t know of any three year old Android phones that run Android 4.4.
I don't know either (not saying there aren't any). But the (lack of) support isn't Android vs. iOS. It's Apple vs Samsung vs Motorola vs Sony vs ...
For example i own Goog, err.. Motorola phone about as old as iPhone 4 and the most recent version it runs is 2.2 (AKA unusable crap). I use 2.3 via CM and there are 4.x builds available. On the other hand, Sony phones from 2011 (perhaps only some) received update to 4.1. This is just two manufacturers, out of many.
Perhaps you are just noticing the difference between a phone with a processor 1/4th the power of the latest model.
there is also the general phenomenon of people being afraid to update (wrongly) their iPhone 4 or 4S based on their previous experiences with a 1, 3G or 3GS
EDIT: also see other testimonials in this page of comments...
For example on an old phone the chances are you are still using the latest versions of apps, which are now coded for faster models. So trying them on your 3GS means they use more memory, crash more and slow down the OS. Taking a vanilla install I don't think you would see much difference in common tasks.
some of it is certainly OS features though. the framerate on animations can be quite poor - like slideshow poor - when launching an app, swiping at notifications or bringing up the status bar. the onscreen keyboard on the 3G is something i remember as being particularly terrible from when I had access to such a device... it would lose input entirely in some situations. some of this is probably also apps in the background, but its also the OS management of those apps...
ultimately though i think the real thing is that apple don't test in real world usage cases (like you describe) - or have a very low quality bar on what is acceptable on older devices. if the way most users use their OS makes it slow then it just is the OS developers fault imo...
EDIT: i would point out that as an app developer its definitely not the speed of the hardware - its the difference between os versions that i see - nothing else changed.
Those issues were caused by the anemic processor and 128mb of RAM in the original 3G. The 3G was arguably unusable with iOS 4.2 but the same situation really hasn't repeated itself with more recent devices.