Não uso mono comercialmente, mas uso-o em particular, porque trabalho em uma empresa Windows, mas sou um usuário Linux em particular (para poder reutilizar o que faço no trabalho).
No geral, concordo com Miguel de Icaza, que diz:
- 25% dos aplicativos .NET funcionam imediatamente com mono
- outros 25% podem funcionar dentro de um dia ou menos
- mais 25% podem funcionar dentro de uma semana
- Os últimos 25% exigem uma reescrita completa do aplicativo (WinForms / COM)
Mono funciona razoavelmente bem, mas existem alguns problemas:
- Suporte VB.NET apenas para .NET <= 2.0
- Autenticação do Windows não implementada
- WPF não implementado
- Suporte WCF incompleto
- Entity Framework não implementado e nenhum plano para implementar
- "ASP.NET Web Parts" não implementado
- Sem suporte de interoperabilidade COM
- A conexão Sybase para a versão 15.5 (mais recente) não funciona
- Erros e incompletude na biblioteca de classes C # (por exemplo, XML estava com erros em mono <2.6)
- O controle do navegador da web Linux requer GTK #
Então os pequenos problemas:
- O Windows Forms funciona, mas nem sempre é renderizado corretamente
- O MonoDevelop não pode criar formulários do Windows
- A depuração 'passo a passo' do MonoDevelop não funciona realmente
- O serviço mono falha após 5 horas ...
Forme o que posso dizer:
- WebServices funcionam excelentemente
- Se você executar um WebApplication, ele funcionará bem (se não usar WebParts).
- Se você executar o WindowsForms, nem sempre será muito bom (para dizer o mínimo).
- Não existe um equivalente funcional para o Microsoft Reporting Service (o relatório de EF é o mais próximo, mas é lento, com erros e muito incompleto, além de nenhuma atividade há mais de um ano)
- Você terá problemas se precisar criar documentos do Word ou Excel.
Se você deseja desenvolver o .NET no Linux
- Você pode desenvolver o ASP.NET lá (a depuração e o passo a passo funcionam muito mal)
- Você não pode realmente desenvolver o WinForms no Linux
- Você precisa usar o GTK # em vez do WinForms
Em outras palavras:
- O Mono ocupa seu lugar na execução de aplicativos Web e WebServices e MailServers.
- Mas não é viável executar aplicativos WindowsForms, você precisa escrever aplicativos com GTK #
- Falta uma solução de relatório e suporte ao formato de arquivo MS (ou bibliotecas funcionando, portanto)
Editar (atualização de 2015):
Eu gostaria de acrescentar que, a depuração 'passo a passo' funciona excelentemente, e você pode usar o MonoDevelop para desenvolver aplicativos da Web no Linux, mesmo com as dependências do nuGet. O problema com as bibliotecas do Excel e do Word também desapareceu, e a estrutura da entidade agora é de código aberto. O resto é praticamente "como está" (não sei se o serviço mono é fixo, mas eu espero que sim).
O que melhorou também é que agora você pode ter pacotes atuais para sua distribuição, o que significa que você não precisa esperar até o próximo lançamento, digamos Debian / Ubuntu, até obter a versão mono mais recente (sem precisar compilá-los por conta própria) ) Esta é uma grande economia de tempo.
Além disso, com o lançamento do Roslyn, o suporte ao VB.NET deve melhorar muito no futuro próximo.