Sourcegraph: Recherche de code universelle et intelligence

La quantité de code dans le monde explose. Alors que le logiciel devient le moteur fondamental de l'innovation dans presque tous les secteurs, les développeurs de logiciels se trouvent confrontés à des bases de code plus vastes et plus interdépendantes. La plupart des organisations établissent chaque jour de nouveaux records pour la taille de leur base de code.

Dans ce monde, les outils de développement traditionnels tels que les éditeurs et les IDE sont insuffisants. Ils ont été conçus pour des développeurs individuels travaillant sur des morceaux de code individuels, plutôt que pour des équipes de logiciels développant de grandes bases de code à grande échelle. Dans les organisations de logiciels modernes, la recherche dans des bases de code massives, la compréhension de code inconnu et le partage des connaissances institutionnelles deviennent des préoccupations de premier ordre. Les équipes logicielles ont besoin d'un outil qui permette cette intelligence universelle du code.

La recherche de code doit être universelle pour être efficace. Elle doit englober toutes les langues, tous les référentiels, tous les hôtes de code et tous les fichiers de configuration. Une recherche limitée uniquement à Python ou uniquement à GitHub est comme Google indexant uniquement les sites Web créés avec Ruby on Rails ou Apache HTTP Server, une solution non-démarreur pour les équipes de développement qui travaillent dans l'univers moderne du code.

Des entreprises technologiques de premier plan telles que Uber, Lyft et Yelp utilisent Sourcegraph pour lutter contre cet univers de code. Des entreprises comme Google et Facebook ont ​​dépensé des centaines de millions de dollars pour créer des outils internes similaires à Sourcegraph. GitLab, la société d'hébergement de code et de développement, a récemment annoncé un partenariat avec Sourcegraph pour intégrer nativement certaines fonctionnalités de Sourcegraph dans l'interface utilisateur de GitLab.

Principales raisons d'utiliser Sourcegraph

Sourcegraph est une plateforme de développement conçue pour s'attaquer aux problèmes rencontrés par les équipes logicielles modernes. Sourcegraph aborde les problèmes critiques ressentis par les ingénieurs logiciels et les chefs de file en ingénierie.

Pour les développeurs individuels, voici les principales raisons d'utiliser Sourcegraph:

  1. Restez en mouvement, évitez la mort par mille changements de contexte
  2. Trouvez l'aiguille dans la botte de foin de la base de code
  3. Rendre les révisions de code rapides, approfondies et moins pénibles - plus de TL; DR
  4. Apprenez par l'exemple au lieu d'une documentation médiocre ou inexistante
  5. Rendre les grands refacteurs et les changements de code traitables
  6. Partagez et discutez facilement du code, en particulier avec des collègues distants
  7. C'est open source

Et voici les raisons les plus courantes pour lesquelles les responsables de l'ingénierie introduisent Sourcegraph dans leur organisation:

  1. Boostez la productivité au quotidien de l'équipe
  2. Encouragez le partage des connaissances
  3. Favoriser l'adoption de nouveaux outils à l'échelle de l'organisation
  4. Accélérez l'intégration de nouveaux ingénieurs
  5. Réduisez le temps de réponse aux incidents
  6. Maintenir et diffuser les normes de qualité du code
  7. Créez de meilleurs outils de développement internes avec l'API code-as-data
  8. Il est facile à déployer et évolutif avec votre équipe et votre base de code

Restez en mouvement

La productivité de la programmation meurt souvent par mille changements de contexte. Un scénario familier est celui où un développeur est en train d'implémenter une fonctionnalité ou un correctif de bogue, mais doit soudainement sauter dans une partie différente de la base de code. Peut-être ont-ils besoin de rechercher une certaine fonction de bibliothèque ou de savoir comment l'utiliser. Peut-être qu'un collègue a une question sur un autre morceau de code. Maintenant, le développeur doit ouvrir ces fichiers dans son IDE et, ce faisant, détruire leur état de fonctionnement actuel, qui devra être douloureusement rappelé et reconstruit plus tard.

Ces interruptions sont destructrices, car elles sortent le développeur de l'état de flux et l'impact négatif sur la productivité est significatif. L'interface de recherche et d'exploration de code basée sur le navigateur de Sourcegraph permet à un développeur de maintenir l'état de son éditeur tout en explorant d'autres parties du code. Cette préservation de l'état de fonctionnement rend les changements de contexte beaucoup moins coûteux, permettant aux développeurs individuels d'en faire plus avec moins d'aggravation.

Sourcegraph

Trouvez les aiguilles dans la botte de foin

Une tâche courante dans l'ingénierie logicielle au jour le jour consiste à rechercher une chaîne ou un modèle spécifique dans le code. Il peut s'agir d'un message d'erreur qui apparaît dans les journaux de production, d'un anti-modèle à supprimer ou simplement d'une chaîne unique que le développeur associe à un point d'intérêt particulier dans le code source.

Sourcegraph

Trouver ces aiguilles est souvent douloureux. Les IDE ont des capacités de recherche, mais le code en question peut exister en dehors de ce que l'EDI a ouvert. Les outils de ligne de commande n'ont pas non plus accès au code en dehors du système de fichiers local et peuvent être fastidieux à utiliser. Les hôtes de code recherchent uniquement sur le code qu'ils hébergent et souvent cette recherche est lente ou de mauvaise qualité. La recherche de code doit être universelle pour être efficace.

Avec Sourcegraph, les développeurs ont une recherche de code qui couvre tout leur univers de code, avec une prise en charge complète des expressions régulières et des correspondances de modèles plus avancées comme la syntaxe Comby. Le moteur de recherche de Sourcegraph est optimisé pour le code source, il est donc incroyablement rapide. Il a également été conçu de A à Z pour les grandes bases de code et organisations. Certaines organisations ont des centaines de milliers de référentiels et Sourcegraph les met tous à la portée de tous les développeurs.

Une syntaxe de recherche expressive et puissante permet à l'utilisateur de filtrer les résultats par fichier, langue, référentiel et une myriade d'autres attributs. Sourcegraph est également conscient de la sémantique du code et permet de rechercher directement des symboles.

Sourcegraph

Apprenez par l'exemple

"Comment utiliser ceci?" est une question que les développeurs posent des dizaines de fois par jour. Le plus souvent, la meilleure documentation est un exemple d'utilisation. La fonctionnalité globale de recherche de références de Sourcegraph permet à un développeur de rechercher des exemples d'utilisation dans l'univers du code, même si l'exemple d'utilisation idéal existe dans un autre référentiel. Cela est particulièrement utile dans les bases de code qui sont anciennes, inconnues ou mal documentées.

Rendre les révisions de code rapides et approfondies

Une boutade courante sur la révision du code dit que si vous soumettez un ensemble de modifications de 10 lignes, vous obtiendrez 10 commentaires, mais si vous soumettez un ensemble de modifications de mille lignes, vous n'obtiendrez aucun commentaire et une approbation automatique.

Les révisions de code de qualité sont souvent douloureuses et lentes, car les outils traditionnels manquent de nombreuses fonctionnalités essentielles pour aider le réviseur à comprendre rapidement les changements de code. Sourcegraph ajoute une navigation de code et des info-bulles de type IDE au flux de travail de révision de code existant des développeurs.

Les info-bulles de survol de Sourcegraph permettent au réviseur de consulter rapidement les définitions de fonctions et la documentation sans avoir à extraire l'ensemble de modifications dans un IDE local. Sans quitter l'interface de révision de code, Sourcegraph vous permet d'accéder à une définition pour mieux comprendre le fonctionnement d'un morceau de code référencé.

Sourcegraph

Sourcegraph intègre ces fonctionnalités de navigation de code directement dans l'interface utilisateur des outils de révision de code populaires tels que les requêtes d'extraction GitHub, les requêtes de fusion GitLab et Phabricator, de sorte que l'expérience des développeurs s'améliore sans aucun coût de commutation.

De meilleures révisions de code réduisent les bogues, respectent les normes de qualité du code et augmentent la diffusion des connaissances institutionnelles au sein de l'organisation d'ingénierie.

Sourcegraph Sourcegraph

Rendre les gros refactors traitables

À mesure que les bases de code se développent, les refactors à grande échelle deviennent un goulot d'étranglement inévitable pour améliorer la qualité du code et implémenter de nouvelles fonctionnalités. Par exemple, l'API d'une bibliothèque partagée peut avoir besoin d'être mise à jour pour prendre en charge une nouvelle fonctionnalité, mais cela peut nécessiter des mises à jour de dizaines, voire de centaines de dépendants en aval. Le nombre d'emplacements dans le code qui doivent changer suite à la mise à jour d'une dépendance partagée peut facilement atteindre des milliers de points répartis sur différents composants appartenant à différentes équipes.

Sourcegraph aide non seulement les développeurs à comprendre l'impact d'un refactor (en leur permettant de rechercher et de découvrir tous les endroits où une fonction de bibliothèque particulière est utilisée), il fournit également un appareil pour exécuter le refactor et gérer la campagne d'ensembles de modifications et de révisions de code. Sourcegraph Campaigns est le premier outil du genre accessible à toutes les entreprises de logiciels. Comme la recherche de code Sourcegraph, Campaigns prend en charge la nouvelle syntaxe de correspondance de modèle Comby, qui est plus conviviale et plus expressive que les expressions régulières.

Sourcegraph

Encouragez le partage des connaissances au sein de votre organisation

Les équipes logicielles modernes collaborent pour partager les connaissances institutionnelles du code. Mais discuter du code est souvent difficile pour ces raisons:

  • Vous ne pouvez pas partager les hyperliens vers les fichiers que vous avez ouverts dans votre IDE
  • Les outils de visualisation de code de navigateur traditionnels n'ont pas une bonne navigation dans le code

Sourcegraph offre le meilleur des deux mondes: une navigation de code précise et précise dans une interface Web. Cela facilite à la fois le partage de liens et permet au destinataire de commencer à explorer et à comprendre immédiatement le code lié au code, sans les tracas et les frictions liés à son extraction dans un IDE local.

Sourcegraph

Le partage de lien de code devient encore plus important pour les équipes d'ingénierie à distance. Les liens Sourcegraph sont partagés des centaines de fois par jour sur le chat, sur les traqueurs de problèmes et dans la documentation officielle et les wikis. Celles-ci deviennent des canaux de connaissances indispensables surtout lorsqu'il est impossible d'appeler un collègue à son bureau.

C'est open source

Sourcegraph est un logiciel open source. Le suivi des problèmes est public et l'équipe est très réactive aux rapports de bogues et aux demandes de fonctionnalités. Les développeurs de logiciels modernes devraient favoriser les outils ouverts pour les mêmes raisons qu'ils préfèrent les bibliothèques open source: les connaissances de base sur lesquelles votre logiciel et votre équipe sont construits doivent être ouvertes à tous, afin que tous puissent comprendre comment cela fonctionne et que tous puissent contribuer à l'améliorer.

Boostez la productivité globale de votre équipe

Comment un projet logiciel prend-il un an de retard? Un jour à la fois. Sourcegraph aide votre équipe à rester en avance sur les délais en rationalisant les tâches quotidiennes. Il permet aux développeurs de minimiser l’impact des changements de contexte, de rester en phase, de réviser plus rapidement le code et de trouver la réponse à des questions telles que «Comment puis-je l’utiliser?» qui sont posées des dizaines de fois par jour. Ces gains d'efficacité s'additionnent rapidement. 

Favoriser l'adoption de nouveaux outils à l'échelle de l'organisation

La plupart des utilisateurs de Sourcegraph l'utilisent plusieurs fois par jour, mais de nombreux outils de développement sont utilisés beaucoup moins fréquemment. Il peut être difficile pour les DSI et les directeurs de la productivité des développeurs de stimuler l'adoption de nouveaux outils.

Moniteurs d'observabilité et de performance, traceurs d'applications distribuées, analyseurs de couverture de code: ce sont tous des outils qui peuvent ne pas être facilement détectables ou accessibles par tous les membres de votre équipe.

Sourcegraph

L'API d'extension de Sourcegraph permet à des outils tiers d'ajouter des annotations dans l'interface utilisateur Web Sourcegraph et l'interface utilisateur des hôtes de code tels que GitHub et GitLab. Il existe des extensions pour des outils standard tels que Codecov, Datadog et Sentry, et les équipes d'outils de développement internes peuvent également créer des extensions privées pour les outils internes.

Accélérez l'intégration de nouveaux ingénieurs

Il peut être difficile d'intégrer de nouveaux ingénieurs, surtout si l'organisation d'ingénierie ou la base de code est importante. Sourcegraph réduit le temps entre la date de début et le premier commit en permettant une compréhension plus rapide du code existant. Les nouvelles recrues passent souvent la majorité de leur temps à parcourir des parties inconnues de la base de code pour construire un modèle mental du code de l'organisation. La navigation universelle dans le code de Sourcegraph leur permet d'explorer l'intégralité de la base de code avec un changement de contexte minimal, et la possibilité de partager des liens leur permet de poser des questions spécifiques qui ne font pas perdre le temps aux ingénieurs seniors.

Réduisez le temps de réponse aux incidents

Chaque minute compte pour répondre à un incident de production. La recherche de code Sourcegraph réduit le temps nécessaire pour provoquer un problème en facilitant la localisation des messages d'erreur dans le code source. Souvent, le message d'erreur provient d'une dépendance en amont et est donc difficile à trouver à l'aide d'un IDE ou d'un outil de recherche en ligne de commande. Sourcegraph indexe tout le code pertinent pour votre organisation et rend les messages d'erreur instantanément détectables.

L'API d'extension Sourcegraph permet également l'intégration des outils devops dans Sourcegraph. Par exemple, l'extension Sentry affiche le nombre d'alertes de production qu'une ligne particulière de code d'instrumentation génère. Cela fournit des connaissances contextuelles précieuses lors du débogage des incidents.

Sourcegraph

Maintenir et diffuser les normes de qualité du code

Sourcegraph permet aux organisations de maintenir et de diffuser des normes de qualité de code à travers quelques vecteurs:

  • Une révision du code efficace mais approfondie, avec la navigation dans le code Sourcegraph et les info-bulles, empêche la fusion de code de mauvaise qualité.
  • Des vérificateurs de qualité de code automatisés (par exemple, Codecov) peuvent être intégrés dans la révision de code via l'API d'extension Sourcegraph. Sourcegraph ajoute ces annotations à l'outil de révision de code existant.
  • Le partage de lien de code et la navigation de code dans le navigateur permettent aux développeurs de référencer des exemples de modèles à émuler et de décourager les anti-modèles.

Exposez votre base de code en tant qu'ensemble de données via l'API

Sourcegraph expose une puissante API GraphQL. L'API est utilisée par les équipes d'outils de développement internes pour créer des outils internes qui exploitent les fonctionnalités de Sourcegraph telles que la recherche de code universelle, la navigation de code et les statistiques de code. Les jetons d'accès permettent aux outils de confiance de s'authentifier auprès de Sourcegraph en toute sécurité. Sourcegraph est livré avec un explorateur d'API interactif, ce qui facilite l'apprentissage et l'expérimentation de l'API.

Sourcegraph