2. I also negotiate contract terms. Uber drivers cannot do this.
3. Uber drivers are penalized for not taking rides, which is more akin to refusing a paid opportunity than building a feature. Again as a contractor I do negotiate the work I can and want to do.
4. For this point I agree with you. I can also terminate the contract on my end.
The main difference I see is the imbalance of power. As a self-employed software engineer I can decide who I work with and negotiate almost everything with them. I have my business, they have theirs, and we discuss to try to reach agreements or not. Uber drivers are not in this position. Uber can dictate everything they want, drivers can only decide to stay or leave.