The extremely complex nature of modern software and its ability to offer unparalled distribution advantage is nothing like the world has ever seen. The ability of Google to push something like a chrome browser comes not only from its galleons of highly paid engineers, but also its ability to advertise/support it for free for decades to come. There simply does not exist another sustainable model to finance a complex product like an internet browser and provide it for free to consumers for decades.
The bigger problem is what is the form of regulation that could be applied to such behemoths. Its extremely hard to regulate it by a case-to-case basis, similar to what happenned in telecom, simply because the business models are too complex and different products monetize differently.
I think a line of thought which might yield some regulatory possibilities is to limit these companies manpower. No single company should be allowed to employ more than X number of engineers. If they go above, they should be required to spin of into multiple entities, each of which do no more than X number of engineers. I dont know what X is - but that is open for deliberation.
The impact that something like this could have on say Google is that Google is forced to split apart its search business with the ads business. This further allows the search business to collaborate with more ad providers to find the best fit. And on the other side, it allows its ads business to experiment with more search providers and open up a market for profitable search engines.
This is not something I have completely thought through, but whatever little I have, this seems to be the cleanest approach to fix tech.