There is a fair bit of controversy on Mono, the free software implementation of Microsoft's .NET stack. See, for example, RMS and Ubuntu position statement for two contradicting opinions.

To me, the patent issue is moot. All interesting software violates some patent, I am sure, since the USPTO and EPO conspire to ruin innovation by granting ridiculous patents to megacorporations and patent trolls. Basically, anything and everything can be patented, even if it is patented already.

(The reality is better than that, but not in a significant way.)

The real problem with Mono is that it implements .NET, and needs to be compatible with .NET. This means it needs to follow what Microsoft does, and cannot innovate freely.

Microsoft leads, free software follows. That is not the way to go.

I'm personally fine with people writing software using Mono, and with those apps being included in Linux distributions by default. I think it's stupid to do that, but not so stupid it needs to be stopped, as long as only very few important programs are using Mono. What we cannot allow is to make Mono an essential part of the free software experience, with much of the software requiring it.

That's why I won't write any software in Mono myself, and why I'm wary of using any such software.