Muitas vezes pensamos que a computação moderna está dividida entre código e dados. Funcionalmente, isso faz sentido quando olhamos para qualquer aplicativo. Mas quando olhamos para uma arquitetura de microsserviços padrão, a amplitude e a profundidade do código em si são mais do que alguns arquivos de texto — ele se torna um conjunto de dados próprio. Nossa capacidade de gerenciar bases de código é limitada por nossa compreensão delas, e é hora de usarmos as ferramentas criadas para big data e aplicá-las à era do big code.
A ferramenta de big data mais famosa é a pesquisa. O poder da pesquisa economiza um tempo precioso. O cofundador e diretor de tecnologia da Sourcegraph, Beyang Liu, entendeu isso quando decidiu apresentá-lo ao mundo dos desenvolvedores. Ele conhecia a dor de entrar em uma nova empresa e aprender uma nova base de código.
Compreender as opiniões e estilos de código de diferentes pessoas pode ser esmagador, e as bases de código crescem ao longo do tempo de maneiras imprevisíveis e confusas. Então Liu criou o Sourcegraph , uma ferramenta para ajudar os desenvolvedores a serem mais produtivos. É essencialmente um mecanismo de busca de código.
Com a percepção de que big code é big data, podemos usar o poder dos gráficos de conhecimento para nos ajudar a pesquisar e entender qualquer base de código no mundo.
Recentemente, conversei com Liu sobre sua jornada com o Sourcegraph e seus objetivos de longo prazo (para ouvir a conversa completa, ouça o podcast Open Source Data ).
Sourcegraph é uma tecnologia gratuita e de código aberto que permite pesquisar em toda a sua base de código. Seu objetivo principal é ajudar a lidar com a parte mais significativa do trabalho de um engenheiro de software: entender o código existente.
Ele faz isso por:
“Para a maioria dos engenheiros de software, a maior parte do seu trabalho não é escrever um novo código. É fazer sentido e entender todo o código que já existe”, disse Liu.
Existem dois componentes fundamentais no Sourcegraph: o componente de pesquisa e o gráfico de referência global .
Como a maioria dos mecanismos de pesquisa, o componente de pesquisa do Sourcegraph faz uma consulta e apresenta os melhores resultados. Digamos que um desenvolvedor esteja procurando tarefas em um repositório específico. O desenvolvedor pode inserir uma consulta de pesquisa como esta repo:facebook/react content:TODO
e procurará por qualquer tarefa no diretório especificado. Você pode ver um exemplo real de pesquisa no repositório nativo do Facebook React aqui . Uma das principais tecnologias para tornar isso possível é um formato de índice otimizado para pesquisa de código.
Enquanto era estagiário de engenharia na equipe de back-end do Google Apps em 2010, Liu foi inspirado pelo uso do Google Code Search — foi o que o levou a empregar o formato de índice. Outra coisa que chamou sua atenção foi o trabalho de Russ Cox na implementação inicial da pesquisa de código interno do Google e a reimplementação de Han-Wen Nienhuys na forma de uma biblioteca de código aberto chamada Zoekt .
“A peça central dessa experiência foi esse mecanismo de pesquisa de código que indexou todos os códigos no Google e os tornou acessíveis a todos os desenvolvedores, seja você um estagiário ou um engenheiro sênior de nível Jeff Dean”, disse Liu.
O gráfico de referência global ajuda você a entender a base de código e executar funções como “ir para definição” e encontrar referências, o que requer o mapeamento de toda a base de código para levá-lo ao lugar certo.
Sourcegraph usa uma variedade de bibliotecas de compiladores e protocolos abertos para conseguir isso e tem seus próprios protocolos, como Source Lib e SCIP , que são mais adequados para os requisitos do Sourcegraph.
“Trata-se de fornecer essa interface independente de linguagem para esses indexadores específicos de linguagem que usam o conhecimento do compilador para construir o gráfico de referência global”, disse Liu.
A Sourcegraph começou quando Liu conseguiu seu primeiro emprego depois da escola, na Palantir Technologies . Ele enfrentou um dos problemas que todos enfrentam ao iniciar um novo trabalho como engenheiro de software:
“Fui enviado diretamente para essa base de código grande e complexa que passou por vários proprietários”, lembrou Liu. “Foi um pouco confuso, e eu me lembro, no final daquele primeiro mês, olhando para trás e me perguntando: 'O que eu conquistei aqui? Tenho gasto todo o meu tempo apenas tentando entender o que está acontecendo neste código e descobrindo por que ele está escrito dessa maneira. Parece que mais do meu trabalho é apenas explorar o código existente e descobrir como a parte relativamente pequena que estou tentando adicionar se encaixa nesse quadro mais amplo.'”
O tempo de Liu no Google o expôs a um conjunto de ferramentas internas para desenvolvedores, uma das quais era o Google Code Search, que tornava todo o código do Google acessível. Essa experiência, juntamente com a dor de integração na Palantir, levou Liu a criar algo que ajudaria outros engenheiros de software a evitar os mesmos problemas.
Conversas com Quinn Slack , colega de Liu na Palantir, sobre a criação de uma ferramenta para busca de código universal transformada em ação, da qual surgiu o SourceGraph.
Em 2011, Marc Andreessen escreveu sobre como o software está comendo o mundo . Os sinais estão por toda parte: desde a comida que você pede, passando pela reserva de uma carona, até o controle do aquecimento da sua casa.
Mas Liu acha que estamos vendo apenas a ponta do iceberg. Ele disse que a compreensão do código se tornará uma coisa cotidiana.
Ele comparou isso com a alfabetização, dizendo: “Já vivemos em um mundo onde a capacidade de ler e escrever era limitada a uma parcela muito pequena e de elite da sociedade, limitando a extensão em que a civilização humana poderia avançar”.
Quando o código comandar quase tudo em nossa vida, entendê-lo se tornará um requisito universal, disse Liu. Esse pensamento foi o que alimentou a paixão de Liu por construir o Sourcegraph. A criação de um mecanismo de pesquisa para código concederá às pessoas acesso ao vasto ecossistema de código aberto - tudo com uma simples consulta de pesquisa.
Por Sam Ramji, DataStax
Sam Ramji é diretor de estratégia da DataStax. Um veterano de 25 anos nas cenas de tecnologia do Vale do Silício e Seattle, Sam ajudou a construir dois mercados multibilionários (gerenciamento de API na Apigee e barramento de serviços corporativos na BEA Systems) e redefiniu a estratégia de código aberto e Linux da Microsoft de "extinguir" para "abraçar ." Ele é nerd sobre código aberto, economia de plataforma, middleware e computação em nuvem com ênfase na experiência do desenvolvedor e software empresarial.
Também publicado aqui