DevSecOps

16 abr, 2014

Microsoft Open Source

Publicidade

microsof_openness-template

É curioso e fascinante notar a diversidade de sentidos que as palavras podem transportar. O poder de mapear coisas em pensamentos faz da Linguagem a mais poderosa ferramenta computacional em uso ininterrupto pela nossa espécie nos últimos 100 mil anos. “Open”, em Inglês e sua tradução para o português, “aberto”, são referências a uma vasta gama de significados.

“Podem entrar, estamos abertos!” – diz o dono de um estabelecimento para seus clientes. Ou então: “Open your mind!” – diz o professor para um aluno relutante em desfazer-se de velhos paradigmas. Ou ainda: “Este é um assunto que foi deixado em aberto.” – diz o pesquisador que busca novas perguntas. Mesmo sendo palavras que podem apontar para diversos significados, algo em comum é compartilhado nesse universo semântico: elas implicam em alguma coisa na qual se pode literalmente entrar e sobre a qual podemos construir algo, pois não foi colocado nenhum ponto final nessa ideia.

Pensando no contexto de gestão de Tecnologia da Informação, o que realmente significa ser uma empresa aberta?

E mais: o que significa, na prática, ter soluções abertas e oferecer espaço para a interoperabilidade?

Open Standards

Com o objetivo de responder essas questões, convido os leitores a me acompanhar em uma breve viagem na história recente da tecnologia para, juntos, refletirmos sobre as várias conotações que o termo “Open” possui na nossa área.

No início da década de 70, as recém introduzidas redes de computadores precisavam de algum mecanismo que permitisse que redes construídas em determinada arquitetura de tecnologia pudessem trocar informações com outras, desenvolvidas sobre diferentes componentes. Naquele momento, um protocolo utilizado há alguns anos pela agência de pesquisa do departamento de defesa dos EUA (DARPA) foi adaptado de modo a permitir a comunicação entre redes heterogêneas de algumas universidades americanas e, posteriormente, ampliado para outras instituições acadêmicas no Reino Unido e na Noruega. O TCP/IP foi o primeiro protocolo que permitiu a interoperabilidade entre diferentes arquiteturas de redes físicas em larga escala. Dessa ação de interoperabilidade resultou um backbone batizado de internet e realmente nada mais precisa ser dito sobre esse assunto.

O que eu gostaria de ressaltar aqui é que o TCP/IP é um protocolo baseado em padrões abertos. Qualquer desenvolvedor de software pode seguir sua especificação muito bem definida pelo IETF (Internet Engeneering Task Force) nas RFCs 768 (UDP), 791 (IP) e 793 (TCP). O TCP/IP é um caso de extremo sucesso de open standards. Todos os sistemas operacionais utilizados hoje em dia, sejam para PCs, dispositivos móveis, celulares, geladeiras, carros ou máquinas de café utilizam o TCP/IP e baseiam-se nas suas especificações. Este é um primeiro uso do termo “Open” que eu gostaria de ressaltar. E, nesse contexto, “Open” não implica necessariamente em abrir o código fonte, mas em apenas seguir especificações abertas, públicas e consensuadas. Chamo atenção aqui para o consenso. A adoção desse protocolo por todos os fabricantes de software deveu-se essencialmente ao sucesso da sua implementação. Todos os desenvolvedores de sistemas operacionais utilizam os padrões abertos do TCP/IP para criar seu stack de protocolos.

Open Source

Outra onda de uso do termo “Open” ocorreu em meados da década de 80, onde o downsizing era a palavra de ordem nas organizações. A arquitetura de computadores de grande porte (mainframes) da IBM deu lugar à descentralização dos sistemas na plataforma cliente-servidor baseada em PCs. A prioridade à época era deixar a plataforma fechada dos mainframes e partir para a plataforma “Open” do PC em rede. Nesse contexto, o termo referia-se a arquitetura de hardware que poderia ser replicada na produção de componentes por diversos fabricantes.

A onda de descentralizar entrou com força total no mercado, impulsionada fortemente por um novo software que tomou conta de todos os PCs: o sistema operacional MS-DOS, de uma pequena empresa de Redmond, nos EUA, recém fundada, chamada Microsoft. Mais ou menos nessa mesma época, no Massachussetts Institute of Technology – MIT, um desenvolvedor de softwares descontente com drivers de impressão da Xerox decidiu enveredar por um caminho ousado: reescrever o sistema operacional UNIX, utilizado em computadores de arquitetura proprietária e sob a patente da AT&T, baseando-se apenas nos parâmetros de entrada e nos resultados gerados pelas system calls de seu kernel. Um duro trabalho de engenharia reversa, diga-se de passagem. O desenvolvedor era Richard Stallman e este trabalho deu origem ao projeto GNU. O diferencial fundamental que Stallman introduziu foi deixar os códigos fontes desses programas abertos. “Open sourced”, embora o termo não fosse usado na época.

No início da década de 90, a maior parte das funções de mais alto nível que chamariam as system calls para os serviços prestados pelo kernel já haviam sido reescritas por Stallman e seus companheiros, além de vários utilitários e softwares básicos. A biblioteca de funções, por exemplo, foi chamada de glibc, com um carinhoso “g” de GNU anexado à tradicional libc do UNIX. Nesse momento, faltava apenas um kernel, o núcleo básico de funções do sistema operacional, como gerenciamento de processos, um subsistema de IO e outras funções elementares. Foi aí que um estudante finlandês trouxe a peça final desse quebra-cabeça. Linus Torvalds escreveu o kernel faltante, atribuindo a ele o nome de Linux e usou a glibc para possibilitar que os serviços prestados fossem invocados pelos processos. Em 1998, o termo “Open Source”, referindo-se a disponibilização do código fonte dos programas foi oficialmente cunhado por Erick Raymond e Bruce Perens, que fundaram a Open Source Initiative.

Microsoft OpenTech

Durante todo esse período, a Microsoft sempre utilizou Open Standards em seus produtos, mas nunca havia realmente abraçado a comunidade Open Source. Até então, era uma empresa que baseava sua estratégia em softwares que seguiam padrões abertos, porém com um modelo de desenvolvimento proprietário. A partir dos anos 2000, a Microsoft mudou radicalmente essa visão. Além de continuar primariamente desenvolvendo softwares proprietários baseados em padrões abertos, a empresa passou a abraçar a comunidade Open Source de uma maneira muito singular: por meio de uma iniciativa batizada com o nome de Microsoft Openness, a Microsoft criou um núcleo de desenvolvimento de softwares Open Source (Open Source Technology Center) e recentemente, em 2012, abriu uma nova subsidiária chamada Microsoft Open Technologies, Inc. com o único objetivo de produzir códigos Open Source e participar ativamente da comunidade de desenvolvedores de forma colaborativa. A empresa criou também duas licenças Open Source, a Microsoft Public License e a Microsoft Reciprocal License, além de um site na Internet para servir como repositório de projetos Open Source, chamado CodePlex.

Dentre os projetos desenvolvidos pela Microsoft Open Tech, posso citar:

– Apache Cordova: Cordova é um projeto Open Source, desenvolvido sob a tutela da Apache Software Foundation, que possibilita aos desenvolvedores de aplicações para dispositivos móveis construir seus códigos usando HTML5 para a maior parte dos aparelhos disponíveis no mercado. O projeto implementou uma série de ferramentas e um framework para encapsular os códigos web em aplicativos nativos, que podem ser disponibilizados em lojas de software online de diferentes fabricantes. Através da Microsoft Open Tech, a Microsoft contribui ativamente para o projeto Cordova, ajudando na portabilidade para os dispositivos Windows.

– Pointer Events: Esse é um novo padrão produzido pelo W3C para definir um modelo unificado de input para dispositivos (mouse, canetas e touch) usando diversos navegadores. A Microsoft Open Tech contribui ativamente com correções de erros (patches) para as engines Mozilla e Blink, e está ampliando seu uso criando um protótipo de utilização para o WebKit, uma engine Open Source utilizada por diversos navegadores.

– Dash.js: O DASH Industry Forum tem como objetivo neste projeto criar uma API JavaScript que seja independente de CODECs e navegadores para disponibilizar streaming de vídeo em navegadores com a melhor experiência possível, que se adapte dinamicamente às variações da qualidade do link de comunicações utilizado. A Microsoft Open Tech é membro atuante deste projeto Open Source com várias contribuições.

Para conhecer todos os projetos Open Source com participação ativa da Microsoft Open Tech, visite http://msopentech.com.

No Brasil, existem diversas universidades que participam do Núcleo de Desenvolvimento Open Source e Interoperabilidade – NDOS, patrocinado pela Microsoft Brasil com investimentos e apoio tecnológico, como a Universidade Estadual de Campinas e a Universidade Federal do Rio Grande do Sul, dentre outras. No NDOS, são reunidas ideias, pessoas e projetos voltados à disseminação da cultura do software de código aberto e livre, independentemente de plataformas operacionais. Dentre outras coisas, esse projeto visa a criação dehandbooks e white papers sobre interoperabilidade e coexistência de plataformas. Esse projeto também procura incentivar outras iniciativas onde o código aberto e a interoperabilidade sejam o foco. Para mais informações, visite http://www.codeplex.com/ndos.

Cloud

Nos dias atuais, vivemos outro momento de ruptura dos modelos vigentes na história da computação: a migração das soluções baseadas em softwares e hardwares utilizados on-premise para a arquitetura de cloud. Esse momento, assim como os demais períodos citados anteriormente, trará novos significados sobre o que é ser “Open”.

A Microsoft acredita que uma plataforma de Cloud Computing verdadeiramente aberta deve implementar algumas características básicas para possibilitar a migração em larga escala dos sistemas atuais para serviços em nuvem, a saber:

– Suporte a diversos tipos de sistemas operacionais: O Windows Azure suporta sistemas operacionais LINUX e todo o tipo de aplicativo instalado em suas máquinas virtuais. Isso é válido para a nuvem pública ou privada, incluindo a migração das máquinas virtuais entre essas plataformas.

– Open Standards em cloudComo em todos os momentos da sua história, a Microsoft defende fortemente a criação de padrões abertos para serviços de computação em nuvem, de modo que os usuários desses serviços tenham a opção de usar diferentes tecnologias ou fornecedores e que a interoperabilidade e a migração entre diferentes provedores sejam possíveis. O Brasil, através da ABNT, é participante do subcomitê internacional de normas técnicas de computação em nuvem e mantém uma comissão ativa de discussões das normas em desenvolvimento, que conta com a participação da Microsoft.

– Migração fácil e automatizada entre nuvens públicas e privadas: A possibilidade de mover máquinas virtuais entre nuvens públicas e privadas deve ser algo a ser oferecido como recurso natural para os usuários de cloud. Dessa forma, cabe aos clientes decidir em que momento um servidor deverá estar hospedado em suas próprias instalações e quando essa máquina deve ser transferida para um provedor de serviços. Esse recurso pode ser extremamente útil em situações onde a sazonalidade de picos de processamento exerce grande influência.

– Transparência sobre armazenamento e propriedade dos dados: O provedor de serviços de computação em nuvem deve deixar claro para seus clientes onde seus dados podem ser armazenados e que a propriedade e direito sobre esses dados é plenamente dos usuários.

Nessa história que estamos construindo juntos, é muito importante ressaltar também a ampliação do conceito de abertura dos códigos fontes para os dados em si. Essa inclusão dos dados impacta diretamente na sociedade, com os conceitos de Open Data e Open Government.

Open Data refere-se a uma especificação simples para tornar públicos dados relevantes para a sociedade, como informações sobre orçamentos de esferas governamentais, dados de engenharia de trânsito, oscilações de marés, estatísticas de criminalidade, senso populacional e qualquer outro tipo de informação que os governos ou entidades possam gerar que sirvam como base para a construção de serviços de extrema relevância para as pessoas.

Para que as iniciativas de conversão de dados internos a uma organização para Open Data sejam efetivas, é necessário um catálogo que indique onde os dados estão sendo disponibilizados.

O projeto “Open Government Data Initiative – OGDI”, desenvolvido pela Microsoft em parceria com a comunidadeOpen Source, baseado na plataforma Drupal e disponibilizado no repositório do Codeplex, provê uma maneira efetiva e de baixo custo para organizações que buscam oferecer aos cidadãos acesso a dados governamentais, além de dar aos desenvolvedores de softwares a capacidade de buscar esses mesmos dados através de APIs baseadas em padrões abertos. O catálogo permite ainda que sistemas governamentais ou funcionários públicos possam facilmente publicar dados de interesse da população. Os custos da esfera pública para manter este catálogo (que exige grande capacidade de processamento) podem ainda ser reduzidos, movendo sua estrutura para a nuvem, caso isso seja de interesse dessas instituições.

Dentre as regiões que já implementam o OGDI como repositório para seus dados públicos (Open Data), destacam-se:

  • Colômbia, com seu portal nacional de Open Data baseado em Windows Azure;
  • Portugal, com uma versão customizada do OGDI para catalogar seus dados abertos;
  • Cidade de Regina, no Canadá, com um portal Open Data usando OGDI em Azure;
  • Ministério da Saúde na Itália, com OGDI DataLab v5 em Azure;
  • além da região de Provence e as cidades de Versailles, Saône et Loire na França dentre outras iniciativas similares em outras regiões no mundo.

 

Para ser capaz de processar essa magnitude de dados, a Microsoft portou para sua plataforma de nuvem uma série de recursos que possibilitam a manipulação de “Big Data”, como as tradicionais versões de SQL Server em clusters computacionais e ainda as mais recentes implementações Open Source de serviços como oHDInsight, o qual permite trabalhar com Hadoop tanto na Nuvem Pública da Microsoft, o Windows Azure, quanto em sua plataforma Windows Server, além de ambientes computacionais de intensa capacidade baseados em bancos de dados MySQL.

Esses serviços podem ser utilizados como Platform as a Service – PaaS no Windows Azure, evidenciando mais uma vez a maneira como a Microsoft abraçou as iniciativas Open Source. Aliás, qualquer solução on-premisebaseada em softwares Open Source pode facilmente ser disponibilizada no Windows Azure como infraestrutura ou plataforma de serviços.

Esse é um passo histórico na interoperabilidade entre arquiteturas proprietárias e Open Source, pois na nuvem, a oferta de serviços torna quase transparente essa dualidade para o usuário final.

Ainda na linha de ofertas de serviços de alta relevância para a sociedade baseados em padrões abertos e interoperáveis, a Microsoft recentemente lançou uma iniciativa global para gestão de serviços urbanos chamada CityNext, onde as pessoas e os governos podem trabalhar de forma integrada e criar uma nova maneira de lidar com questões urgentes a todo grande centro. Visite o site do CityNext para maiores detalhes:

Conclusão

Muito mais ainda pode ser explorado sobre este tema, de modo que possamos nos perguntar o que significa ser aberto de uma maneira mais ampla e profunda, tocando em questões como ética, cidadania e comprometimento com a verdade. Como empresa, a Microsoft orgulha-se de pautar-se por uma relação clara e sólida com seus parceiros e clientes, seguindo a legislação dos países onde atua da mesma forma como qualquer outra empresa nacional, fornecendo mais do que tecnologia; soluções únicas para que as pessoas e organizações possam desenvolver todo o seu potencial. Essa é a missão da empresa, que fica ainda mais fortalecida pela sua constante capacidade de se reinventar. O mundo real é misto e heterogêneo e a interoperabilidade é fator crítico de sucesso para que as pessoas possam usar os softwares como aceleradores de crescimento. A Microsoft enxerga isso claramente, colocando a coexistência entre tecnologias distintas como um de seus carros-chefes na sua estratégia corporativa.

Foi por isso que escolhi a Microsoft como empresa para trabalhar. Para poder fazer a diferença em grande escala e tentar ajudar a levar ao mercado e à sociedade a mensagem de que precisamos erguer (ou seria desenvolver?) mais pontes entre as plataformas computacionais. E quem sabe no futuro, por essas pontes virtuais possam passar aqueles que ainda insistem em viver em suas ilhas.

Esperamos vocês chegarem ou nos convidarem a ir até o outro lado.

Estamos abertos.