Nobody is really competing because nobody can build a complete product. So there's less pressure to fix the little irritations. Users are mostly satisfied, and problems get worse slowly enough that for the average user they don't notice right away how bad it's getting. So they stay because it's too hard or completely impossible to leave.
If you're dependent on updating your OS for security fixes and basic compatibility, you are also forced to update the things you may not want to. It's all bundled together.
How many times have you launched something only to find the UI had been redone, some feature was now gone or changed, something that worked was now broken, etc.
But it's fine, you see, because we have telemetry and observability and robust CI/CD.
Users and their work are nothing more than ephemeral numbers on a metrics dashboard