Code intelligence team
Vision
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.
Strategy
- 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
Video walkthrough
Members
- María Craig, Product Manager
- Owen Convey, Engineering Manager, Code Intelligence
- Eric Fritz, Software Engineer
- Noah Santschi-Cooney, Software Engineer
- Ólafur Páll Geirsson, Software Engineer, Code Intelligence
- TJ DeVries, Software Engineer
- Chris Wendt, Software Engineer on Code Intelligence
- Cesar Jimenez, Software Engineer on Code Intelligence
- Varun Gandhi, Software Engineer
- Sara Lee, Product Designer
- Alex Isken, Product Marketing Manager
How we work
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-intel
.
Streams
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.
Language Tools
- Slack channel: #language-tools-internal
- GitHub board: https://github.com/orgs/sourcegraph/projects/211/views/51
Current members
- Olaf
- TJ
- Varun
Focus and ownership
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:
- Precise navigation
- SCIP
- SCIP indexers
- LSIF indexers
- Community indexer contributions
- Auto-inference behavior for indexing projects
- Syntax highlighting (including the syntect service)
- Package integrations (Maven, npm, PyPI, Crates)
Language Platform
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
Current members
- Eric
- Noah
- Chris
- Cesar
Focus and ownership
- Code Intelligence backend
- Unified Intelligence API
- Executors & Auto-indexing
- Code Intel DB
- Code Intelligence observability
- Symbol generation
- Rockskip
- Symbols service
- Code Intel extensions/code intellify
Code Navigation
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
Current members
- Olaf
Primary focus
- Blob view (also known as the file view)
- Reference panel
- Popover
- Fuzzy finder
- Sidebar
- Directory tree
- Symbols sidebar
- Admin and metadata pages
- Telemetry
- Accessibility
How we do technical hiring
How to reach us
- On GitHub, mention or assign issues to team/code-intelligence
- On GitHub, view our backlog of work.
- On Slack, use the #code-intel channel or tag the @codeintel team.
What we own
-
GitHub repositories:
-
GitHub organizations:
-
Buildkite builds:
On-call
Glossary
We have a glossary for which covers terms commonly used in the context of code intelligence.