Eles disseram que o .NET estava morto: como a Microsoft virou o jogo com o open source

Como o .NET quase foi esquecido, abraçou o open source e voltou a disputar espaço com Java, Node.js e outras plataformas modernas.

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Houve um tempo em que escolher .NET significava aceitar grilhões invisíveis. Você ganhava o poder da CLR, do C# e do Visual Studio, mas, em troca, ficava preso ao Windows, a licenças caras e a servidores físicos que não se encaixavam no mundo das startups que nasciam direto na nuvem, em Linux e com pilhas Open Source.

Enquanto isso, o resto do ecossistema avançava. O Java dominava o enterprise, o Node.js explodia nas startups, Python ganhava espaço em data science, e o discurso “Microsoft é coisa de empresa velha” ecoava em fóruns de desenvolvedores.

Por volta do início da década de 2010, a pergunta que muitos faziam era simples e brutal:
“Será que o .NET vai morrer?”

Esta é a história do .NET que quase foi um obituário tecnológico, mas virou um case de reinvenção radical. Uma virada conduzida por uma mudança de cultura dentro da Microsoft, por líderes como Satya Nadella e Scott Hunter, e por uma decisão que parecia impensável poucos anos antes: abraçar o open source e o Linux para salvar a própria plataforma.

O gigante preso no Windows

Quando o .NET Framework chegou no início dos anos 2000, ele era o orgulho da Microsoft. Um runtime moderno (a CLR), uma linguagem elegante (C#), uma biblioteca padrão gigantesca e um IDE extremamente produtivo. Para empresas que viviam de aplicações Windows e servidores IIS em datacenters próprios, fazia todo sentido.

O problema é que o mundo mudou mais rápido do que o framework.

Na primeira metade dos anos 2010, o cenário era outro:

  • Servidores Linux baratos rodando Java, PHP e, cada vez mais, Node.js.
  • Startups construindo APIs e microsserviços em Ruby on Rails, Django, Express.
  • A cultura de GitHub, pull requests e pacotes via npm crescendo em velocidade absurda.

O .NET Framework, em contraste, tinha algumas características que começaram a pesar:

  • Era essencialmente Windows-only.
  • Estava profundamente acoplado ao sistema operacional, o que dificultava evoluções quebrando menos compatibilidade.
  • Tinha um ciclo de release lento, alinhado a grandes versões de Windows e Visual Studio.

Existiam iniciativas paralelas, como o Mono, que desde 2001 tentava levar .NET para Linux de forma open source, muito antes da própria Microsoft abraçar essa ideia. Mas, na prática, o mainstream da plataforma continuava preso ao Windows.

Resultado: enquanto o .NET seguia forte em corporações que já tinham investido pesado em Windows, ele estava perdendo a guerra da mente dos novos desenvolvedores. Em meetups e hackathons, se você falasse que queria começar um projeto novo em .NET, a reação muitas vezes era um misto de estranhamento e pena.

O gigante estava vivo, mas preso.

Antes da virada: as primeiras rachaduras no muro

A história do .NET não virou do dia para a noite. Antes da ruptura de 2014, havia sinais de que algo estava mudando na cultura da Microsoft.

Alguns exemplos:

  • O próprio ASP.NET MVC nasceu como resposta ao sucesso do Ruby on Rails e foi um dos primeiros projetos com desenvolvimento mais aberto, com discussões públicas e mais transparência.(Medium)
  • O código de partes do .NET Framework passou a ser disponibilizado como “reference source”, permitindo depuração passo a passo dentro das bibliotecas da Microsoft.
  • Iniciativas como o Mono e, depois, a Xamarin, mostravam que .NET podia viver em outras plataformas e em dispositivos móveis, ainda que parcialmente à margem da estratégia oficial da empresa.

Mas tudo isso ainda era tímido frente ao dogma interno de décadas: Windows é o centro do universo.

Faltava alguém com poder suficiente para dizer: “se o mundo ama Linux e open source, então nós também vamos amar”.

A decisão radical de 2014

Em fevereiro de 2014, Satya Nadella assume o cargo de CEO da Microsoft. Ele vinha da área de cloud e enterprise, acostumado a olhar para servidores, data centers e, principalmente, para o rumo que os desenvolvedores estavam tomando.

Poucos meses depois, a mensagem que simbolizaria a nova era é cristalina:
“Microsoft ❤ Linux”.

No mesmo período, uma decisão estratégica explode como bomba no mundo .NET: em novembro de 2014, a Microsoft anuncia que .NET Core será Open Source e cross-platform, incluindo o runtime e as bibliotecas, desenvolvido abertamente no GitHub.

Em 2016, chega o lançamento oficial do .NET Core 1.0, com suporte a Windows, macOS e Linux, apresentado inclusive em eventos focados em tecnologias de código aberto como o DevNation da Red Hat.

Para quem viveu a era em que Linux era tratado como “concorrente a ser esmagado”, ver a Microsoft:

  • publicar o código de .NET no GitHub,
  • rodar o runtime oficialmente em distribuições Linux,
  • colaborar com Red Hat e outras empresas do ecossistema open source,

foi uma quebra de paradigma comparável a uma empresa de petróleo anunciando que vai liderar a energia solar.

Dentro da Microsoft, essa decisão teve um papel central na tal “guerra invisível”: a disputa entre a mentalidade antiga, centrada em Windows, e a nova visão, centrada em cloud, dev-first e open source.

Reescrevendo o motor com o avião no ar

Anunciar .NET Core era a parte fácil. O difícil era fazê-lo funcionar, sem quebrar o mundo já construído em cima do .NET Framework.

Do ponto de vista de arquitetura, o desafio era brutal. O Framework original tinha sido pensado como um bloco único, otimizado para Windows. Agora, a equipe precisava:

  • Torná-lo modular, com pacotes menores, atualizáveis via NuGet.
  • Permitir múltiplas versões lado a lado, para que uma aplicação pudesse usar uma versão e outra, outra.
  • Rodar bem em Linux, respeitando particularidades de filesystems, redes e modelo de processos.
  • Manter o máximo possível de compatibilidade de APIs, para não obrigar todo mundo a reescrever tudo.

Na prática, era como trocar o motor de um avião em pleno voo.

O .NET Core 1.0, lançado em junho de 2016, é muitas vezes lembrado como uma espécie de “prova de conceito em produção”: limitado em APIs, com lacunas significativas em comparação ao Framework tradicional, mas já mostrando o futuro da plataforma.

Para tentar organizar o caos de versões e APIs, surge o famoso .NET Standard, uma especificação de conjunto mínimo de APIs que diferentes runtimes deveriam implementar. A intenção era boa, mas a execução gerou confusão:

  • Tínhamos .NET Framework, .NET Core, Xamarin/Mono e .NET Standard, cada um com versões diferentes.
  • Desenvolvedores gastavam tempo tentando descobrir “para qual profile compilar” ou por que um pacote funcionava em um projeto e quebrava em outro.

Essa fase caótica faz parte importante da história do .NET porque mostra que a virada não foi mágica. Houve medo, atrito, código legado, bibliotecas presas em versões antigas e muita frustração nas primeiras migrações.

Ao mesmo tempo, um novo herói técnico surgia: o servidor web Kestrel, construído para ser enxuto e absurdamente rápido, servindo de base para o ASP.NET Core e aparecendo cada vez melhor nos TechEmpower Benchmarks, que comparam performance entre frameworks web.

Enquanto a equipe lidava com compatibilidade, também travava outra batalha silenciosa: mostrar que .NET podia ser moderno, rápido e cross-platform, não só “um framework legado da era Windows”.

A guerra invisível para reconquistar desenvolvedores

Se por fora parecia “só” um rebranding, por dentro era claramente uma guerra de reconquista.

De um lado, Java, Node.js, Go, Python e tantos outros.
Do outro, uma Microsoft tentando convencer o mundo de que .NET merecia uma segunda chance.

Aqui entram personagens como Scott Hunter, diretor de Program Management da equipe .NET, que passou a aparecer com frequência em conferências, blogs e entrevistas, explicando a visão por trás do .NET Core: múltiplas versões instaladas lado a lado, CLI-first, open source, cross-platform, com foco em cloud e microservices.

A estratégia para reconquistar devs tinha vários pilares:

  1. Open Source de verdade
    O time passou a trabalhar diretamente no GitHub, com issues abertas, PRs da comunidade e decisões técnicas públicas. Isso não era só marketing, era um convite explícito: “venha construir o .NET conosco”.
  2. Ferramentas gratuitas e multiplataforma
    O Visual Studio Code surge como editor leve, multiplataforma, com suporte excelente a C# via extensões, quebrando a ideia de que .NET exigia “Windows + Visual Studio caro”.
  3. Cloud e Linux como cidadãos de primeira classe
    Desde o início, .NET Core foi pensado para rodar em containers e Linux, com suporte oficial em distros de enterprise como Red Hat Enterprise Linux e OpenShift.
  4. Performance como arma de marketing e de engenharia
    A cada release, blogs da Microsoft destacavam ganhos de performance em ASP.NET Core, Entity Framework Core e no runtime em geral, muitas vezes mostrando comparações diretas com versões anteriores e resultados melhores nos benchmarks TechEmpower.

Pouco a pouco, os resultados aparecem. Em 2019, 2020 e 2021, a família .NET passa a aparecer como o framework mais amado nas pesquisas anuais da Stack Overflow, algo que a própria Microsoft destaca orgulhosamente na sua página oficial de .NET.

A mesma plataforma que muitos consideravam “morta” dez anos antes agora era listada como aquela com a qual os devs mais queriam continuar trabalhando.

O renascimento open source: .NET 5 em diante

Em 2019, a Microsoft publica um post decisivo com um título que, por si só, já é uma declaração de intenções: “.NET Core is the future of .NET”.

Na prática, isso significava:

  • A linha .NET Framework entraria em modo de manutenção, focada em compatibilidade para aplicações antigas em Windows.
  • Toda a inovação futura aconteceria no “lado Core” da força.

O passo seguinte vem em 2020, com o lançamento do .NET 5. Ele não é apenas “mais uma versão”, mas o ponto em que a marca “Core” é aposentada na embalagem. A partir dali, o nome oficial volta a ser simplesmente “.NET”, agora unificado em torno da base que nasceu como .NET Core.

As versões seguintes (.NET 6, .NET 7, .NET 8…) consolidam essa visão:

  • Releases regulares com foco pesado em performance, onde ASP.NET Core aparece constantemente entre os frameworks mais rápidos em benchmarks independentes.
  • Suporte expandido a cenários como containers, gRPC, WebAssembly via Blazor, IoT e muito mais.
  • Uma história de desenvolvimento coerente: CLI, SDK unificado, templates, ferramentas modernas de observabilidade.

No ecossistema mais amplo, a plataforma passa a ser descrita não mais como “framework de Windows”, mas como:

“um ambiente de desenvolvimento moderno, inovador e open source, amado por desenvolvedores e usado para construir aplicações de alta performance em diversos sistemas operacionais”.

É o tipo de frase que seria impensável na Microsoft dos anos 2000, mas que sintetiza bem a fase atual da história do .NET.

Lições da história do .NET

Se você olhar essa trajetória como um todo, a história do .NET parece roteiro de documentário:

  • Um império tecnológico que nasce dominante, mas fecha demais o ecossistema.
  • Um período de negação, enquanto o mundo muda para Linux, nuvem e open source.
  • Uma crise de relevância, em que a narrativa “.NET está morto” ganha força.
  • Uma virada estratégica ousada, abrindo o código e abraçando o antigo “inimigo”.
  • Uma reconquista gradual de respeito, performance e amor da comunidade.

Há algumas lições claras aqui:

  1. Ninguém é grande demais para ficar irrelevante
    O fato de o .NET estar em milhões de aplicações Windows não o protegeu de perder mindshare entre novas gerações de devs.
  2. Open Source não é caridade, é sobrevivência estratégica
    Quando a Microsoft decidiu abrir o código de .NET, ela não fez isso apenas por “bondade”, mas porque era a única forma realista de manter a plataforma viva em um mundo dominado por código aberto.
  3. Tecnologia é importante, mas cultura é decisiva
    Sem a mudança cultural simbolizada por Satya Nadella e executada por líderes como Scott Hunter, provavelmente veríamos apenas rebranding e marketing, não uma transformação tão profunda.
  4. Nunca subestime uma plataforma que consegue se reinventar
    Hoje, o .NET está entre as plataformas mais usadas e admiradas, incluindo developers que nem eram nascidos quando o .NET Framework 1.0 saiu.

A guerra invisível pela mente e pelo coração dos desenvolvedores continua, claro. Mas uma coisa é certa:
o .NET não só escapou da extinção, como escreveu um dos casos de reinvenção mais interessantes da história recente da tecnologia.

Compartilhe este artigo
Nenhum comentário