Sourcegraph 3.8: Search UI improvements, monitoring tools, Automation, and LSIF-based code intelligence

Written by Christina Forney


Sourcegraph is the standard developer platform for code search and navigation at many of the largest and most advanced technology companies. With Sourcegraph, every company has access to the same kind of tools that Google and Facebook developers use every day.

We're excited to announce Sourcegraph 3.8. This release contains lots of behind the scenes work, both foundational and forward-looking.

Deploy or upgrade: Local | AWS | DigitalOcean | Kubernetes cluster

Introducing Automation: first steps toward supporting large-scale code modification

View on Vimeo

Soon, you can use Sourcegraph to automate large-scale code changes to remove legacy code, fix critical security issues, and pay down tech debt across all of your repositories.

Watch the Automation screencasts to see it in action. Automation is in private beta and you can apply by requesting a demo.

Beta release of fast and precise LSIF-based code intelligence

LSIF code intelligence comparison

Each Sourcegraph instance ships with basic code intelligence that provides jump to definition and find references for every language. Basic code intelligence works well for many of our customers, but some customers have been asking for more precise code intelligence. Language servers provide precise code intelligence, but they are complex to configure, require separate deployment, and are slow to initialize, so we have added support for LSIF based code intelligence.

Our solution to fast and precise code intelligence is with LSIF. We first wrote about LSIF (Language Server Index Format) in code intelligence using LSIF. This blogpost gives an overview of what LSIF is, and why we are working to support it.

In Sourcegraph 3.8, LSIF-backed code intelligence is available for beta testing by early adopters. The currently supported languages (ones with LSIF indexers) are TypeScript, Go, Python, and C/C++. Check out the documentation for details on how to try it out on your code.

Search result tabs for improved result type discoverability

View on Vimeo

Many users were not aware of the different search result types that are supported by Sourcegraph, such as diff or symbol results. We have added tabs to the search results page to surface the different result types and make it quick and easy to navigate between them.

Out of the box monitoring of your Sourcegraph instance

View on Vimeo

Sourcegraph 3.8 introduces out of the box access to monitoring tools for admins to keep tabs on the health of your Sourcegraph instance. Sourcegraph now ships with Grafana and Prometheus built-in, and some basic dashboards for better debugging of your instance. We will continue to work on improving the dashboards and metrics surfaced in the next release, with the goal of providing an accurate view of the health of your instance.

Behind the scenes: Even more benchmarking, automated testing, and QA

Over the last few releases we have worked on improving Sourcegraph’s performance at scale for customers with 30k+ repositories, and we continue to do so. With each major improvement we make to search, we’re now running even more extensive end-to-end load tests to verify our improvements. These load tests enable us to quickly gather and analyze approximately one million search API requests, and automatically generate reports we can interpret and learn from:

search performance benchmarks

We now have greater confidence rolling out search performance improvements. For example, in just the past two Sourcegraph releases we’ve used this same methodology to validate and roll out changes that have resulted in:

We’ve also been hard at work automating even more of our internal testing and QA process that we perform as part of each release. If you haven’t upgraded recently and seen these major improvements, there is no better time than now!

Quickly toggle the browser extension on/off

View on Vimeo

You can now toggle the browser extension on and off without having to fully disable the extension. This was added to make testing and personal workflows easier for users to quickly opt in and out of the extension capabilities.

Changelog

3.8.0

Added

  • A toggle button for browser extension to quickly enable/disable the core functionality without actually enable/disable the entire extension in the browser extension manager.
  • Tabs to easily toggle between the different search result types on the search results page.

Changed

  • A hardTTL setting was added to the Bitbucket Server authorization config. This setting specifies a duration after which a user's cached permissions must be updated before any user action is authorized. This contrasts with the already existing ttl setting which defines a duration after which a user's cached permissions will get updated in the background, but the previously cached (and now stale) permissions are used to authorize any user action occuring before the update concludes. If your previous ttl value is larger than the default of the new hardTTL setting (i.e. 3 days), you must change the ttl to be smaller or, hardTTL to be larger.
  • Sourcegraph now receives pings on which extensions are activated from Sourcegraph.com.

Removed

  • The statusIndicator feature flag has been removed from the site configuration's experimentalFeatures section. The status indicator has been enabled by default since 3.6.0 and you can now safely remove the feature flag from your configuration.

3.7.2

Added

Fixed

  • Fixed an issue where some repositories with very long symbol names would fail to index after v3.7.
  • We now retain one prior search index version after an upgrade, meaning upgrading AND downgrading from v3.6.2 <-> v3.7.2 is now 100% seamless and involves no downtime or negated search performance while repositories reindex. Please refer to the v3.7+ migration guide for details.

3.7.1

Fixed

  • When re-indexing repositories, we now continue to serve from the old index in the meantime. Thus, you can upgrade to 3.7.1 without downtime.
  • Indexed symbol search is now faster, as we've fixed a performance issue that occurred when many repositories without any symbols existed.
  • Indexed symbol search now uses less disk space when upgrading directly to v3.7.1 as we properly remove old indexes.

The changelog for this and previous releases is available on GitHub.

Thank you

Thank you to the many people who contributed to Sourcegraph since the last release!

Deploy or upgrade: Local | AWS | DigitalOcean | Kubernetes cluster

From the entire Sourcegraph team (@srcgraph), happy coding!