The Code Intelligence team builds tools and services that provide contextual information around code, taking into account its lexical, syntactic, and semantic structure. This includes:
An API to provide fast, comprehensive, and accurate answers to important code navigation queries such as Go to Definition and Find References
A powerful and flexible language-agnostic model of dependency relationships across projects, repositories, and languages
Robust, extensible, and scalable infrastructure to index code across all languages, keep those indexes up-to-date, and efficiently resolve code navigation queries against all indexed code.
- We see Code intelligence as the glue that sticks the product together, providing a platform for features from navigation to precise powered searches, compiler-accurate batch changes and insights. We aim to provide support for all widely used languages and for the ones we don’t, provide a platform for any developer to add and test their own indexers.
- In the near term we want code navigation to provide seamless, out-of-the-box, precise code navigation for languages that cover 90% of the market usage.
- We want our code navigation to reach IDE feature parity, while offering the option of plugging into developers’ favorite IDEs.
- In the longer term, we envision building a global knowledge graph that accurately maps the entire code universe.
- Our complete strategy is available at Code intelligence strategy
- María Craig, Product Manager
- Owen Convey, Engineering Manager, Code Intelligence
- Sara Lee, Product Designer
- Alex Isken, Product Marketing Manager
On Slack, use the
#code-intel channel, tag
@code-intel-support for any help or use the
@codeintel handle to notify the whole team. As detailed below in the streams section we do have several additional internal rooms however we expect almost all questions and conversations with external teams/departments to take place in
Code Intelligence comprises a wide cognitive domain. To be effective and feel high ownership over a wide area is difficult. To tackle this we as a team have adopted the concept of streams (also known as ‘soft-teams’). A stream is a smaller set of members from within the wider team usually centered around a specific skill set or cognitive space. Each stream owns a distinct area.
The aim is for streams to have the following characteristics:
- Long lived, these are not ephemeral groupings.
- Allow deep technical ownership and collaboration.
- Building technical roadmaps with a view on the long term.
- Firm but not brittle boundaries (people can operate across many streams when needed).
- Allow us in the future to scale and create distinct teams with minimal overhead.
- People feel 100% supported to comment, help and collaborate across the whole team.
There is no “that’s not my responsibility” with the use of streams, we just have certain areas that are best filled by specific skill sets.
- Slack channel: #language-tools-internal
- GitHub board: https://github.com/orgs/sourcegraph/projects/211/views/51
The Language Tools stream focus on tooling specific to programming languages and their counterpart ecosystems to provide the best precise code navigation experience. The aim is to have a symbiotic relationship with the Language Platform team in that, Language Tools will provide the specific logic per problem (think syntax highlighting) whilst Language Platform will expose an agnostic/programatic way to scale this. Specific areas of ownership include:
Language Platform’s focus is split into two distinct areas, the creation of data (invoking SCIP indexers via Executors or generating symbols) and the productionalization of said data (exposing the data in a queryable, performant and scalable way). Language Platform aims to empower two users, providing a programatic/pluggable system for the Language Tools stream and for downstream clients to build on top of the Code Graph data (the Code Navigation stream and also additional product teams).
- Slack channel: #language-platform-internal
- Github board –> https://github.com/orgs/sourcegraph/projects/211/views/48
- Code Intelligence backend
- Unified Intelligence API
- Executors & Auto-indexing
- Code Intel DB
- Code Intelligence observability
- Symbol generation
- Symbols service
- Code Intel extensions/code intellify
Code Navigation owns the UI/UX customer facing code navigation experience predominately focusing on the file view.
- Slack channel: #code-navigation-internal
- GitHub board: https://github.com/orgs/sourcegraph/projects/211/views/21
- Blob view (also known as the file view)
- Reference panel
- Fuzzy finder
- Directory tree
- Symbols sidebar
- Admin and metadata pages
We have a glossary for which covers terms commonly used in the context of code intelligence.