Uber's moat is its network. Can't get any drivers if there are no riders and can't get riders if there are no drivers. This means you need to start by offering drivers more money than you make in order for them to use the app. An open source solution wouldn't be able to get off the gorund.
The direct fix for this (which I believe has happened in some countries) is to ban them from asking drivers to enter into exclusivity or minimum volume agreements with them. Then drivers can work for multiple networks.
Yes - I believe Uber used to have a number of terms which made that difficult in practice (eg restrictions on numbers of rides rejected/accepted per day, etc). In at least some countries though competition authorities have banned these.