In my opinion it's not the problem of software but the problem of hardware. You can more easily write software then produce phone hardware. From consumer perspective it's quite easy to make custom computer and use custom os on it cause most of drivers are open and you can see there are plenty of computer operating systems in the world, on the other hand most of phones hardware and os is proprietary what was not an issue when we were using it for calling not using it as alternative to traditional computer. So first we need to define what is broken, from my perspective broken is phone hardware.