Crappy developers usually means: uneducated developers.
They can get simple things done without understanding the whole system. That deliver something that sort of works. This makes them cheap labor.
Why do we need cheap labor, because of competition and a race to the bottom driven by consumer buying decisions.
In a talk by Gabe Newell from Valve said that a free game got you 10x more users and 3x more profit (they for example get some money from people selling items inside the game). Not that they use cheap labor, they actually do the exact opposite. But it is just to illustrate how price is important.
So free like the above is a profitable model, free and ad-supported might actually not be as profitable. I don't know how much money companies get for selling personal information. I assume it is more than the ads.
So how do you solve that.
I see a few possible ways:
- create good open source libraries that prevent most of the bad things and cheap developers want to use.
Now comes the kicker:
Do you think HTML5-apps without any permissions by default on phones would be a better model ? :-)
Actually, I do, but then again I actually do use a FirefoxOS phone to see what it is like.
A lot of the time the hardware is bit underpowered so it can be sold in countries that currently still have a large number of feature phones or people not willing/able to pay for more expensive hardware.
But still pretty impressive what they can get out of that cheaper hardware.