Publicado por Mads Torgersen, arquiteto principal de C # na MicrosoftProjeto RoslynRoslyn é o nome de código que foi atribuído ao compilador de código-fonte aberto para C # e Visual Basic.NET. O projeto começou nas trevas mais profundas da última década da vida corporativa da Microsoft - e terminou como um projeto de código aberto, um mecanismo universal público de plataforma cruzada para C # (e VB, que tomarei como garantido no restante deste artigo).
A primeira conversa sobre o projeto, que mais tarde ficou conhecida como Roslyn, já estava em andamento quando entrei para a Microsoft em 2005 - pouco antes do lançamento do .NET 2.0. Falou-se em reescrever C # para C #. Essa é uma prática normal para linguagens de programação - prova da maturidade da linguagem. Mas havia uma motivação mais prática e importante: nós, criadores do C #, não programamos em C #, programamos em C ++! Se você programa diariamente em C #, muda de idéia: o grande poder de trabalhar na ferramenta que está desenvolvendo (dogfooding).
Os usuários dependem do comportamento do novo compilador, assim como o antigo. Escrever um novo compilador para C # é uma tentativa de encontrar uma correspondência bug a bug.
A dificuldade de reescrever o compilador, que tem sido usado ativamente há vários anos, é que os usuários dependem do comportamento do novo compilador, assim como o antigo. Escrever um novo compilador para C # é uma tentativa de encontrar uma correspondência bug a bug. E estou falando não apenas de bugs conhecidos, mas também de erros desconhecidos e formas indesejáveis de comportamento que os desenvolvedores encontraram e usam, muitas vezes sem saber.
Por muitos anos, a escala desse problema nem nos permitiu iniciar o projeto.
Embora os desenvolvedores do grupo de idiomas da Microsoft tenham recebido muitos benefícios do novo compilador C # escrito em C #, o valor para os usuários finais não era tão óbvio: como o novo compilador os beneficiará? Talvez as únicas pessoas que se importam que o compilador C # seja escrito em C # sejam os próprios desenvolvedores do compilador.
Ao mesmo tempo, outro problema se manifestava cada vez mais: duplicação de esforços entre diferentes ferramentas executadas no código C #. Além do compilador, outra equipe trabalhou no suporte ao IDE para C # no Visual Studio e também precisou escrever muito código (na época também em C ++) para entender a sintaxe e a semântica do C #.
Ao mesmo tempo, o número de ferramentas da Microsoft e de outras empresas, como StyleCop, CodeRush etc., estava crescendo: todas elas deveriam implementar um processamento significativo do código C #. Cada um desses programas possui seus próprios erros ligeiramente diferentes, diferentes níveis de entendimento, vários compromissos e concessões. E todos eles gastariam muito esforço para chegar a um entendimento comum do código.
E decidimos uma proposta importante: garantir que haja apenas uma base de código no mundo - uma base única para todas as ferramentas que funcionam com código C #!
O valor dessa proposta decorre de um aumento no número de ferramentas disponíveis e, principalmente, de uma melhoria na qualidade das ferramentas existentes. Todos os requisitos para a correção e desempenho do idioma são atribuídos a uma única base de código. Basta um esforço para criar uma base de qualidade estelar e grande versatilidade. Vamos criar um mecanismo real para o idioma! API aberta e unificada para código C #. Vamos dar uma nova definição ao conceito de "compilador".
Obviamente, depois de criar uma API para a comunidade C # mais ampla, não é preciso dizer que ela deve ser uma API .NET implementada em C #. Portanto, o sonho de longo prazo de escrever C # em C # ocorre quase como um efeito colateral aleatório.
Assim, Roslyn nasceu de uma mentalidade aberta: compartilhando o funcionamento interno do C # para uso programático pelo mundo. Isso por si só foi uma proposta ousada para a cultura corporativa ainda bastante fechada da Microsoft.
Compartilharemos propriedade intelectual de graça? Vamos capacitar ferramentas que competem conosco?
Na discussão corporativa, fomos ajudados a ganhar argumentos sobre o fortalecimento do ecossistema e a criação de uma linguagem com as melhores ferramentas do planeta. Tratava-se do crescimento de longo prazo de C # e .NET comparado à monetização e proteção de curto prazo dos ativos da Microsoft. Assim, mesmo sem mencionar o código-fonte aberto, apostar em Roslyn foi uma grande e ousada jogada para a Microsoft.
Obviamente, desenvolver algo assim não pode ser fácil. As perspectivas para Roslyn eram muito ambiciosas e cheias de problemas técnicos, e levamos cinquenta anos para lidar com tudo. Mas isso é outra história.
Durante a maior parte do desenvolvimento inicial, Roslyn permaneceu um projeto de código fechado.
Desde o início de um trabalho sério no projeto em 2009, tínhamos idéias para abrir os compiladores, mas a Microsoft ainda não estava pronta.
A Microsoft tem uma cultura de desenvolvimento fechado e proteção de patentes de código-fonte desde a década de 1970. Embora as mudanças estivessem no ar, elas foram mais lentas do que nossa equipe esperava.
De fato, durante algum tempo parecia que a empresa estava indo na direção completamente oposta.
O projeto Windows 8 afetou bastante a empresa inteira. Graças ao novo modelo de programação, seus tentáculos penetraram profundamente nas equipes de desenvolvimento de ferramentas e linguagens, e tudo foi coberto com extremo sigilo, não apenas do lado de fora, mas mesmo dentro da empresa. Como exemplo, a função assíncrona que estávamos desenvolvendo na época era coordenada e combinada com o modelo de programação do Windows 8, e eu não ousaria publicar notas sobre seu design, mesmo dentro da empresa, por medo de vazar acidentalmente informações sobre o Windows 8 e problemas na minha cabeça ! Isso criou um clima terrível para a inovação e, é claro, não nos permitiu confiar no compilador C # de código aberto.
No entanto, no final, quando o Windows 8 seguiu seu próprio caminho, a empresa começou a se transformar e encontrou uma nova direção, uma nova liderança e uma filosofia completamente diferente - a Microsoft que conhecemos hoje. O código aberto agora está se espalhando rapidamente na Microsoft.
O F # foi lançado em 2010 com uma licença aberta e sua própria organização -
F # Software Foundation . Uma comunidade notável foi formada ao seu redor, que logo se tornou a inveja de todos nós. Nossa equipe insistiu teimosamente em obter uma licença gratuita para Roslyn - e, finalmente, a infraestrutura corporativa permitiu que isso fosse feito.
Em 2012, a Microsoft criou a organização Microsoft Open Tech, focada especificamente em projetos de código aberto. Roslyn ficou sob seu controle e se tornou oficialmente um projeto de código aberto. Roslyn estava bastante madura para isso: todos os recursos de desenvolvimento eram internos e conhecidos, e o projeto em si não sofria de um grande número de dependências que poderiam dar origem a conflitos de licenciamento.
Em abril de 2014, na Build Developers Conference em San Francisco, Anders Halesberg apresentou o
Roslyn como um projeto de código aberto , e o próprio código-fonte foi publicado em 3 de abril no CodePlex (a antiga plataforma da Microsoft para repositórios) sob a licença Apache 2.0.

Ao mesmo tempo, o
.NET Foundation foi declarado a base para projetos .NET, incluindo Roslyn.
Este lançamento se tornou uma verdadeira lufada de ar fresco! Começamos a colher os benefícios da abertura já no CodePlex e, em seguida, os obstáculos processuais restantes para o código aberto na Microsoft foram removidos. Portanto, hoje o código aberto é uma parte natural e integral de como trabalhamos em muitas de nossas equipes.
Não vemos mais o GitHub como um local para publicar código-fonte - é apenas o local em que trabalhamos.
Em outras frentes, a empresa também percebeu que não era necessário se esforçar para controlar tudo. Tornou-se claro que não havia boas razões para o CodePlex existir - e Roslyn, juntamente com outros projetos, migrou para o GitHub, na época a principal plataforma de fato para projetos de código aberto. Não apenas o código em si, mas também o processo de sua criação é conduzido no GitHub: não consideramos mais o GitHub como um local para publicar códigos-fonte - este é apenas o local do nosso trabalho.

O design da linguagem C # e a implementação do compilador agora são processos completamente abertos, com envolvimento significativo de terceiros. Eles criam incluindo funções de linguagem inteira. O valor do C # simplesmente passa para o lado não apenas devido à escala dos esforços na escrita de funções e correção de erros, mas também à compreensão e correção do curso, que produzimos graças ao ciclo instantâneo de feedback diário com a comunidade.
Foi uma jornada longa e louca, e para mim simboliza as tremendas mudanças pelas quais a Microsoft passou na última década. Roslyn Nugget nasceu no escuro, mas cresceu com as idéias de abertura - e hoje explodiu em um milhão de usos diferentes, graças ao poder do código aberto.
Aprenda Roslyn e C # Language Design:Roslyn on githubC # no GitHub