Sure, patents put developers of Mono applications and Mono itself at risk. But even if there weren't any patents in Mono using it for writing opensource applications is, to say the least, not smart.

.Net is an application development/runtime environment for Windows. period. The whole discussion whether it is good or not to write Linux applications using .Net is irrelevant because there is no .Net for Linux. Not even a binary blob.

Mono may look like a viable alternative but unless Microsoft starts developing it on par with the rest of the .Net platform it's always going to be a crippled cousin of its Windows counterpart. Incompatible, unfinished, patent ridden solution.

Now, free software mean also freedom of writing software for any platform - including proprietary ones. No one is ever going to forbid it. However, doing this we should be aware that we are actively undermining free platforms and free software in general. In a long term we would be better off promoting our solutions (like Python or Java) and pushing them to proprietary platforms. The difference is subtle but very important - our platform is then the "first class solution" instead of always being the "secondary/tertiary/..." one.