Nous pensons souvent que l'informatique moderne est divisée entre le code et les données. Fonctionnellement, cela a du sens lorsque nous examinons une application donnée. Mais lorsque nous examinons une architecture de microservices standard, l'étendue et la profondeur du code lui-même représentent plus que quelques fichiers de texte - il devient un ensemble de données à part entière. Notre capacité à gérer les bases de code est limitée par notre compréhension de celles-ci, et il est temps pour nous d'utiliser les outils conçus pour le Big Data et de les appliquer à l'ère du Big Code.
L'outil Big Data le plus célèbre est la recherche. La puissance de la recherche permet de gagner un temps précieux. Le co-fondateur et directeur de la technologie de Sourcegraph, Beyang Liu, l'a compris lorsqu'il a décidé de le présenter au monde des développeurs. Il connaissait la douleur d'entrer dans une nouvelle entreprise et d'apprendre une nouvelle base de code.
Comprendre les opinions et les styles de code de différentes personnes peut être écrasant, et les bases de code se développent au fil du temps de manière imprévisible et déroutante. Alors Liu a construit Sourcegraph , un outil pour aider les développeurs à être plus productifs. C'est essentiellement un moteur de recherche de code.
Sachant que le big code est le big data, nous pouvons utiliser la puissance des graphes de connaissances pour nous aider à rechercher et à comprendre n'importe quelle base de code dans le monde.
J'ai récemment parlé avec Liu de son parcours avec Sourcegraph et de ses objectifs à long terme (pour entendre l'intégralité de la conversation, écoutez le podcast Open Source Data ).
Sourcegraph est une technologie open source gratuite qui vous permet d'effectuer des recherches dans l'ensemble de votre base de code. Son objectif principal est d'aider à aborder la partie la plus importante du travail d'un ingénieur logiciel : comprendre le code existant.
Il le fait en :
"Pour la plupart des ingénieurs en logiciel, la plus grande partie de votre travail n'est pas d'écrire un nouveau code. Cela a du sens et comprend tout le code qui existe déjà », a déclaré Liu.
Il existe deux composants fondamentaux de Sourcegraph : le composant de recherche et le graphique de référence global .
Comme la plupart des moteurs de recherche, le composant de recherche de Sourcegraph prend une requête et présente les meilleurs résultats. Supposons qu'un développeur recherche des tâches dans un référentiel spécifique. Le développeur peut entrer une requête de recherche comme celle-ci repo:facebook/react content:TODO
et il recherchera toutes les tâches dans le répertoire spécifié. Vous pouvez voir un exemple réel de recherche dans le référentiel natif de Facebook React ici . L'une des technologies clés pour rendre cela possible est un format d'index optimisé pour la recherche de code.
Alors qu'il était ingénieur stagiaire au sein de l'équipe backend de Google Apps en 2010, Liu a été inspiré par son utilisation de Google Code Search . C'est ce qui l'a amené à utiliser le format d'index. Une autre chose qui a attiré son attention était le travail de Russ Cox sur la mise en œuvre initiale de la recherche de code interne de Google et sa réimplémentation par Han-Wen Nienhuys sous la forme d'une bibliothèque open source appelée Zoekt .
"La pièce maîtresse de cette expérience était ce moteur de recherche de code qui indexait tous les codes de Google et le rendait accessible à tous les développeurs, que vous soyez un stagiaire ou un ingénieur très expérimenté de niveau Jeff Dean", a déclaré Liu.
Le graphique de référence global vous aide à comprendre la base de code et à exécuter des fonctions telles que "aller à la définition" et trouver des références, ce qui nécessite de cartographier l'ensemble de la base de code pour vous emmener au bon endroit.
Sourcegraph utilise une gamme de bibliothèques de compilateurs et de protocoles ouverts pour y parvenir et possède ses propres protocoles, tels que Source Lib et SCIP , qui sont plus adaptés aux exigences de Sourcegraph.
"Il s'agit de fournir cette interface indépendante du langage à ces indexeurs spécifiques au langage qui utilisent les connaissances du compilateur pour créer le graphe de référence global", a déclaré Liu.
Sourcegraph a commencé lorsque Liu a obtenu son premier emploi après l'école, chez Palantir Technologies . Il a été confronté à l'un des problèmes que tout le monde a rencontrés lors du démarrage d'un nouvel emploi en tant qu'ingénieur logiciel :
"J'ai été livré directement dans cette base de code volumineuse et complexe qui était passée par plusieurs propriétaires", se souvient Liu. "C'était un peu désordonné, et je me souviens, à la fin de ce premier mois environ, en regardant en arrière et en me demandant : 'Qu'ai-je accompli ici ? J'ai passé tout mon temps à essayer de donner un sens à ce qui se passe dans ce code et à comprendre pourquoi il est écrit ainsi. Il semble qu'une plus grande partie de mon travail consiste simplement à explorer le code existant et à déterminer comment la partie relativement petite que j'essaie d'ajouter s'intègre dans cette image plus large.
Le temps passé par Liu chez Google l'a exposé à une suite d'outils de développement internes, dont l'un était Google Code Search, qui a rendu tout le code de Google accessible. Cette expérience, ainsi que la difficulté d'intégration chez Palantir, ont poussé Liu à créer quelque chose qui aiderait d'autres ingénieurs en logiciel à éviter les mêmes problèmes.
Les conversations avec Quinn Slack , un collègue de Liu chez Palantir, sur la création d'un outil de recherche de code universel se sont transformées en action, d'où est sorti SourceGraph.
En 2011, Marc Andreessen a écrit sur la façon dont les logiciels dévorent le monde . Les panneaux sont partout : de la nourriture que vous commandez, à la réservation d'un trajet, en passant par le contrôle du chauffage de votre maison.
Mais Liu pense que nous ne voyons que la pointe de l'iceberg. Il a dit que comprendre le code deviendrait une chose quotidienne.
Il l'a comparé à l'alphabétisation, en disant : "Nous vivions autrefois dans un monde où la capacité de lire et d'écrire était limitée à une très petite partie de l'élite de la société, limitant la mesure dans laquelle la civilisation humaine pouvait progresser".
Lorsque le code alimente presque tout dans notre vie, le comprendre deviendra une exigence universelle, a déclaré Liu. Cette pensée est ce qui a alimenté la passion de Liu pour la création de Sourcegraph. La création d'un moteur de recherche de code permettra aux utilisateurs d'accéder au vaste écosystème open source, le tout avec une simple requête de recherche.
Par Sam Ramji, DataStax
Sam Ramji est directeur de la stratégie de DataStax. Vétéran de 25 ans sur les scènes technologiques de la Silicon Valley et de Seattle, Sam a contribué à la création de deux marchés de plusieurs milliards de dollars (la gestion des API chez Apigee et le bus de services d'entreprise chez BEA Systems) et a redéfini la stratégie open source et Linux de Microsoft de « éteindre » à « adopter ." Il est passionné par l'open source, l'économie des plates-formes, le middleware et le cloud computing, en mettant l'accent sur l'expérience des développeurs et les logiciels d'entreprise.
Également publié ici