Entity Framework open source, e agora? Como eu faço?

Agora o Entity Framework é open source. E o que podemos esperar disso?

O maior significado desta atitude é que o time de Entity Framework esta realmente interessado e esperando por nossas contribuições. O EF não é o primeiro produto da Microsoft a tornar-se open source. O ASP.Net MVC 4, ASP.Net Web API e Razor são projetos que também tornaram-se open source no último semestre.

O que significa ser open source? Open source é uma ideologia/filosofia que promove a distribuição livre e o acesso ao código fonte de um software/produto/projeto. O modelo open source também prevê a colaboração voluntária, a fim de melhorar o software disponibilizado, por meio do trabalho e do conhecimento de seus colaboradores voluntários.

ado_net_entity_framework

A Microsoft não irá diminuir os investimentos com o EF e não irá largar mão do projeto. Tudo continuará com antes (mesmos desenvolvedores, mesmos investimentos e o mesmo suporte garantido), exceto que agora a comunidade estará hábil a contribuir de forma mais concreta, não apenas ficar assistindo o progresso do projeto.

Agora, a comunidade esta apta a fazer download do código fonte, alterá-lo, contribuir e engajar-se em discussões sobre o seu modelo e implementação.

Tornar o EF open source é a escolha ideal para fazer com que se torne cada vez melhor.

Os passos necessários para fazer o download e compilação do projeto do EF são documentados neste link: http://entityframework.codeplex.com/documentation

– Por onde começar?

Se estiver interessado em ajudar, então saiba de uma coisa: você é muito bem vindo, todo o time de EF quer a sua ajuda. Se não souber por onde começar, então veja este link: http://entityframework.codeplex.com/workitem/list/basic. Neste link estão listados alguns bugs que devem ser corrigidos e sugestões de novas funcionalidades.

Agora, se deseja contribuir com algo maior do que a correção de um bug, então o ideal é entrar em contato por meio de uma discussão (algo que pode ser feito através deste link http://entityframework.codeplex.com/discussions), a discussão é importante para que a equipe possa colaborar com o design do nosso recurso que deseja implementar.

A equipe do EF realiza uma reunião semanal na qual aspectos sobre design e manutenção do código do EF são discutidos, os conteúdos destas reuniões podem ser acompanhado por aqui: http://entityframework.codeplex.com/wikipage?title=Design%20Meeting%20Notes.

– O código

O Entity Framework foi desenvolvido durante diversos anos, por diversos desenvolvedores, em uma grande companhia. O resultado disso, como afirma Arthur Vickers (desenvolvedor do time de EF) é “um código não tão claro quanto deveria ser”.

O EF esta dividido em três assemblies importantes, sendo eles:

  • EntityFramework.dll: este é o principal assembly e contém a maioria do código que fazia parte do assembly System.Data.Entity.dll, do .Net Framework.
  • EntityFramework.SqlServer.dll: este é o provider para o Microsoft SQL Server. Anteriormente o código deste assembly fazia parte do assembly System.Data.Entity.dll, mas foi separado dos demais para a versão do EF6, porque é independe dos demais códigos e apenas será utilizado para o SQL Server.
  • EntityFramework.SqlServerCompact.dll: este é o provider do EF para o Microsoft SQL Server Compact Edition.

No EF6, o ADO.Net e o Entity Framework serão menos acoplados. Graças a isso o EF pode tornar-se open source e construído em um assembly separado.

– Testando o código!

Se você vai escrever código para o Entity Framework, então é esperado que sejam escritos testes para este código, assim como é esperado que os testes existentes continuem funcionando.

Algumas considerações necessárias para construção dos testes:

  • É aceitável que alguns códigos sejam escritos com acesso internal, ao invés de private, para facilitar os testes;
  • Os testes unitários devem ser rápidos, não é apropriado que ações lentas estejam dentre os testes unitários;
  • Testes unitários devem estar organizados em namespaces e classes que correspondam aos namespaces e classes do Entity Framework. Por exemplo, testes para System.Data.Entity.DbConfiguration devem ser criados sob o namespace System.Data.Entity.DbConfigurationTests;
  • É esperado que toda alteração possua um teste unitário correspondente. Se for submetida uma contribuição sem 100% de cobertura, então, é quase certa, que a sua aceitação não será feita até que os testes estejam escritos corretamente.

testing

Testes funcionais são ideais para assegurar todo o bom funcionamento de uma funcionalidade. Teste funcional é um tipo de teste que exercita diversas unidades de código, a fim de assegurar que todas essas unidades de código funcionarão corretamente juntas, conforme o esperado. Um exemplo de teste funcional seria: abrir a conexão com o banco de dados, incluir um item em uma tabela, fechar a conexão com o banco de dados, abrir uma nova conexão com o mesmo banco de dados, consultar o item que foi salvo e fechar a conexão com o banco de dados. Note que neste exemplo foram executadas diversas unidades de código para assegurar que todas funcionam corretamente quando executadas juntas.

Alguns pontos que temos de ter em mente quando construirmos nossos testes funcionais:

  • Testes funcionais devem apenas fazer uso de métodos e classes públicas, objetos com visibilidade internal não devem participar destes testes. Isso é importante, pois através dos testes funcionais estaremos realmente testando no mesmo nível do usuário final.
  • Testes funcionais devem fazer coisas do “mundo real”, como: acessar bancos de dados, executar comandos, validar dados, etc. Então, espera-se que, ao contrário dos testes unitários, estes testes não sejam tão rápidos, pois dependem de recursos externos.
  • Testes funcionais devem ser agrupados por cenários, podem ser criadas classes de teste que agrupem os testes por cenário.

Muitas partes do código do Entity Framework, especialmente seu núcleo, não foram escritas para serem “testáveis”. Isso indica que, possivelmente, algum refactoring seja necessário para torna-lo “testável”.

Em suma, todo o código desenvolvido deve ser modelado para ser testável. Além disso, todas as contribuições devem ter testes unitários, assim como a maioria deve ter testes de funcionalidade.

– API Intuitiva

Uma grande meta, para o time de desenvolvedores do EF, é manter o uso do EF intuitivo, fácil de ser utilizado e agradável aos desenvolvedores. Muito tempo é gasto tratando estes aspectos e todo este trabalho tem a intenção de manter ou aperfeiçoar a experiência dos desenvolvedores que trabalham com o EF.

Isto significa que, dependendo da contribuição feita, se seu design não for aceitável ou se o seu uso não for adequado (criando um processo não intuitivo ou que interfira na experiência dos desenvolvedores), é provável que sua contribuição não seja aceita. Mas não pense que o time de desenvolvedores do EF irá rejeitar toda sua contribuição apenas por ela não estar de acordo com aquilo que o time acredita ser o ideal! Muito pelo contrário! O time de desenvolvedores irá entrar em contato para que sua contribuição seja modificada, de forma que se torne mais intuitiva e adequada à experiência dos desenvolvedores.

422562_3307083998630_1874029492_n

O objetivo deste post é detalhar como as contribuições para o projeto do Entity Framework devem ser feitas, e quais os requisitos necessários para que essas colaborações sejam aceitas.

Por
Fernando Henrique Inocêncio Borba Ferreira
Microsoft Most Valuable Professional – Data Platform Development

Referências
http://blog.oneunicorn.com/2012/07/19/so-you-want-to-contribute-to-ef-part-4-developer-experience/
http://blog.oneunicorn.com/2012/07/19/so-you-want-to-contribute-to-ef-part-3-testing/
http://blog.oneunicorn.com/2012/07/19/so-you-want-to-contribute-to-ef-part-2-the-code/
http://www.hanselman.com/blog/EntityFrameworkMagicUnicornAndMuchMoreIsNowOpenSourceWithTakeBacks.aspx

Anúncios

5 Responses to Entity Framework open source, e agora? Como eu faço?

  1. Parabéns! Como você sabe eu estava lendo sobre o EF para poder contribuir, e tem muita coisa espalhada por aí. Perfeita iniciativa de reunir e explicar os princípios básicos para quem quer ajudar.

    Parabéns

  2. welington says:

    Muito bom!

  3. Pingback: Descompilar para descomplicar | Vitor Mendes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: