From a5ac80c94e34479b51f1c798aff33d79aeabe805 Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Wed, 13 Apr 2022 11:55:02 -0500
Subject: [PATCH 01/43] init incident-response use case page
---
.../src/pages/use-cases/incident-response.tsx | 335 ++++++++++++++++++
1 file changed, 335 insertions(+)
create mode 100644 website/src/pages/use-cases/incident-response.tsx
diff --git a/website/src/pages/use-cases/incident-response.tsx b/website/src/pages/use-cases/incident-response.tsx
new file mode 100644
index 00000000000..e6fd6ecd34e
--- /dev/null
+++ b/website/src/pages/use-cases/incident-response.tsx
@@ -0,0 +1,335 @@
+import { Link, PageProps } from 'gatsby'
+import ClockTimeThreeOutlineIcon from 'mdi-react/ClockTimeThreeOutlineIcon'
+import WebIcon from 'mdi-react/WebIcon'
+import CrosshairsGpsIcon from 'mdi-react/CrosshairsGpsIcon'
+import React, { FunctionComponent, ReactNode } from 'react'
+
+import Layout from '../../components/Layout'
+import { BackButtonBold } from '../../components/BackButton'
+import { BlogListItem } from '../../components/BlogListItem'
+import { QuoteCarousel } from '../../components/QuoteCarousel'
+import CustomCarousel from '../../components/CustomCarousel'
+import { ContentSection } from '../../components/content/ContentSection'
+import { CustomerLogosSectionAnimated } from '../../components/product/CustomerLogosSectionAnimated'
+
+import styles from './useCases.module.scss'
+
+const CarouselItem: FunctionComponent<{ header: string; text: ReactNode }> = ({ header, text }) => (
+ <>
+
{header}
+ {text}
+ >
+)
+
+const items = [
+ {
+ buttonLabel: 'Respond to incidents faster',
+ text: (
+
+ No heroics required: Quickly understand all the context and dependencies around
+ your codebase with Code Search so you can find the
+ root cause of an incident with confidence and speed. Document work in progress
+ with Notebooks so teammates can get up to speed quickly.
+
+ }
+ />
+ ),
+ headerClass: 'active',
+ itemClass: 'd-block',
+ },
+ {
+ buttonLabel: 'Limit the impact of incidents',
+ text: (
+
+ Automate the deployment of fixes everywhere and at scale. With {' '}
+ Batch Changes, you can automate code changes and monitor
+ the merge status of each resulting PR. Refactor code to replace insecure functions, update
+ vulnerable packages, or modify container configurations across hundreds of repositories.
+
+ }
+ />
+ ),
+ itemClass: 'd-none',
+ },
+ {
+ buttonLabel: 'Track remediation progress',
+ text: (
+
+ Visualize fixes in progress and track their deployment. With{' '}
+ Code Insights, get visibility
+ into remediation efforts and share progress with team leaders and customers.
+
+ }
+ />
+ ),
+ itemClass: 'd-none',
+ },
+ {
+ buttonLabel: 'Monitor for the introduction of unsafe code',
+ text: (
+
+ Close the loop on your incident response efforts. After finding the root cause,
+ use code monitoring to track whether similarly unsafe
+ code is ever merged. Get alerts and stop incidents before they occur.
+
+ }
+ />
+ ),
+ itemClass: 'd-none'
+ },
+]
+
+const quoteCarouselItems = [
+ {
+ header: `Quantcast is confident it won't miss any affected code`,
+ quote: `Sourcegraph's search gave us confidence because we knew we wouldn't overlook anything: Sourcegraph returns all search results, it doesn't drop or elide them.`,
+ by: 'Simon Law, Staff Software Engineer, Quantcast',
+ logoImage: '/external-logos/quantcast-logo.svg',
+ linkText: 'Read the case study',
+ link: '/case-studies/quantcast-large-scale-refactoring',
+ logoAlt: 'Quantcast',
+ },
+ {
+ header: 'Nutanix proves the Log4j vulnerability no longer affects its codebase',
+ quote: `"Isn't it nice when you can just run a report and say, 'Here it is' or 'Here it isn't?' Much better than having to say, 'Well, boss, I think we got it all.'"`,
+ by: 'Jon Kohler, Technical Director of Solution Engineering, Nutanix',
+ logoImage: '/external-logos/nutanix-logo.svg',
+ linkText: 'Read the case study',
+ link: '/case-studies/nutanix-fixed-log4j-with-sourcegraph',
+ logoAlt: 'Nutanix',
+ },
+]
+
+const blogListItems = [
+ {
+ title: 'Log4j Log4Shell 0-day: find, fix, and track affected code',
+ description:
+ 'In the biggest security vulnerability incident since Heartbleed, Sourcegraph co-founder and CEO Quinn Slack shared how you can find affected code, automate fixes, and track progress.',
+ type: 'Blog post',
+ image: 'https://sourcegraphstatic.com/blog/log4j/log4j-blog-thumbnail.png',
+ href: '/blog/log4j-log4shell-0-day',
+ },
+ {
+ title: `The real weakest link in software supply chain security (it's not open source)`,
+ description:
+ 'Using open source code can jump-start development but it can also expose you to security vulnerabilities. In this post, learn how to design an effective vulnerability management process that can make dependencies visibile and mitigation less time-consuming.',
+ type: 'Blog post',
+ image: 'https://storage.googleapis.com/sourcegraph-assets/blog/third-party-open-source-vulnerabilities.png',
+ href: '/blog/real-weakest-link-in-software-supply-chain-security',
+ },
+ {
+ title: 'How to remove secrets from your codebase',
+ description:
+ `Back in early 2021, Sourcegraph stored infrastructure and service passwords in private repositories. Security engineer André Eleuterio moved every secret to a secure vault and used code search to ensure the move was successful and complete.`,
+ type: 'Blog post',
+ image: 'https://sourcegraphstatic.com/blog/securing-sourcegraph-eliminating-secrets.png',
+ href: '/blog/eliminate-secrets-from-codebase-with-universal-code-search',
+ },
+]
+
+const UseCasePage: FunctionComponent = props => (
+
+
+
+
+
+
+
Resolve incidents quickly and confidently
+
+ Identify the root cause of an incident, understand its potential impact
+ on other services, and fix the issue everywhere in your codebase so
+ it won't reoccur.
+
+
+
+ Request a demo
+
+
+ Try Sourcegraph now
+
+
+
+
+
+ >
+ }
+ >
+
+
+
+
+ Identify the root cause of an incident and fix it everywhere, fast
+
+
+
+
+
+
Assess incidents quickly
+
+ Pinpoint the code responsible for the incident and find the root
+ cause in your codebase. Understand the code's functionality to verify
+ the issue.
+
+
+
+
+
Plan your remediation
+
+ Reduce time to resolution by supplying response teams with actionable
+ details, like links to all affected code.
+
+
+
+
+
Execute your plan globally
+
+ Fix the root cause and confirm the same issue doesn't reoccur in other
+ areas by locating the code pattern and automating fixes across your
+ entire codebase.
+
+
+
+
+
+
+
+
+
+
+
+ Identifying & resolving security vulnerabilities is painful
+
+
+ Existing tooling doesn't enable teams to be agile and effective when responding to security
+ vulnerabilities. What does that mean for you?
+
+
+
Finding vulnerabilities scattered across codebases takes extra time and resources.
+
+ Following dependencies across your codebase is inefficient with IDEs that aren't
+ connected to all code or up to date.
+
+
+ Whether you're making changes to 50 or 5,000 repositories, tracking and managing PRs to
+ completion is a manual and spreadsheet-heavy process.
+
+
+ The vulnerability management and remediation process remains cumbersome, unclear, and
+ stressful for all involved.
+
+
+
+
+
+
Log4j was the tip of the iceberg
+
+ Log4j is a prime example of how challenging it is to create a cohesive response across
+ multiple teams in an org.
+
+
+ Sourcegraph enables companies like Nutanix to completely remediate Log4j vulnerabilities
+ across multiple build and artifact management systems, as well as a large monorepo with
+ many component branches and hundreds of git repositories, in under four days, and with
+ 100% certainty.
+
+
Learn how to use Sourcegraph to identify and resolve every instance of Log4j.
+
+ Read the blog post.
+
+
+
+
+
+
+
+
+
+
+
How Sourcegraph helps
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Get started with Sourcegraph
+
Respond to incidents with confidence and speed, and remediate issues at their root to ensure they don't reoccur.
- No heroics required: Quickly understand all the context and dependencies around
- your codebase with Code Search so you can find the
- root cause of an incident with confidence and speed. Document work in progress
- with Notebooks so teammates can get up to speed quickly.
+ No heroics required: Quickly understand all the context and dependencies around your codebase
+ with Code Search so you can find the root cause of an incident
+ with confidence and speed. Document work in progress with{' '}
+ Notebooks so teammates can get up to speed
+ quickly.
}
/>
@@ -47,9 +48,9 @@ const items = [
header="Limit the impact of incidents"
text={
- Automate the deployment of fixes everywhere and at scale. With {' '}
- Batch Changes, you can automate code changes and monitor
- the merge status of each resulting PR. Refactor code to replace insecure functions, update
+ Automate the deployment of fixes everywhere and at scale. With{' '}
+ Batch Changes, you can automate code changes and monitor the
+ merge status of each resulting PR. Refactor code to replace insecure functions, update
vulnerable packages, or modify container configurations across hundreds of repositories.
}
@@ -65,8 +66,8 @@ const items = [
text={
Visualize fixes in progress and track their deployment. With{' '}
- Code Insights, get visibility
- into remediation efforts and share progress with team leaders and customers.
+ Code Insights, get visibility into remediation efforts and
+ share progress with team leaders and customers.
}
/>
@@ -80,15 +81,15 @@ const items = [
header="Monitor for the introduction of unsafe code"
text={
- Close the loop on your incident response efforts. After finding the root cause,
- use code monitoring to track whether similarly unsafe
- code is ever merged. Get alerts and stop incidents before they occur.
+ Close the loop on your incident response efforts. After finding the root cause, use{' '}
+ code monitoring to track whether
+ similarly unsafe code is ever merged. Get alerts and stop incidents before they occur.
}
/>
),
- itemClass: 'd-none'
- },
+ itemClass: 'd-none',
+ },
]
const quoteCarouselItems = [
@@ -101,7 +102,7 @@ const quoteCarouselItems = [
link: '/case-studies/quantcast-large-scale-refactoring',
logoAlt: 'Quantcast',
},
- {
+ {
header: 'Nutanix proves the Log4j vulnerability no longer affects its codebase',
quote: `"Isn't it nice when you can just run a report and say, 'Here it is' or 'Here it isn't?' Much better than having to say, 'Well, boss, I think we got it all.'"`,
by: 'Jon Kohler, Technical Director of Solution Engineering, Nutanix',
@@ -131,8 +132,7 @@ const blogListItems = [
},
{
title: 'How to remove secrets from your codebase',
- description:
- `Back in early 2021, Sourcegraph stored infrastructure and service passwords in private repositories. Security engineer André Eleuterio moved every secret to a secure vault and used code search to ensure the move was successful and complete.`,
+ description: `Back in early 2021, Sourcegraph stored infrastructure and service passwords in private repositories. Security engineer André Eleuterio moved every secret to a secure vault and used code search to ensure the move was successful and complete.`,
type: 'Blog post',
image: 'https://sourcegraphstatic.com/blog/securing-sourcegraph-eliminating-secrets.png',
href: '/blog/eliminate-secrets-from-codebase-with-universal-code-search',
@@ -157,11 +157,12 @@ const UseCasePage: FunctionComponent = props => (
-
Resolve incidents quickly and confidently
+
+ Resolve incidents quickly and confidently
+
- Identify the root cause of an incident, understand its potential impact
- on other services, and fix the issue everywhere in your codebase so
- it won't reoccur.
+ Identify the root cause of an incident, understand its potential impact on other
+ services, and fix the issue everywhere in your codebase so it won't reoccur.
= props => (
Assess incidents quickly
- Pinpoint the code responsible for the incident and find the root
- cause in your codebase. Understand the code's functionality to verify
- the issue.
+ Pinpoint the code responsible for the incident and find the root cause in your codebase.
+ Understand the code's functionality to verify the issue.
Plan your remediation
- Reduce time to resolution by supplying response teams with actionable
- details, like links to all affected code.
+ Reduce time to resolution by supplying response teams with actionable details, like links to
+ all affected code.
Execute your plan globally
- Fix the root cause and confirm the same issue doesn't reoccur in other
- areas by locating the code pattern and automating fixes across your
- entire codebase.
+ Fix the root cause and confirm the same issue doesn't reoccur in other areas by locating the
+ code pattern and automating fixes across your entire codebase.
Ready to get started?
From 370d5ebf72916402a63d28221891050d872746a3 Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Wed, 13 Apr 2022 15:47:54 -0500
Subject: [PATCH 03/43] align styling with Figma wireframe, update meta
---
.../src/pages/use-cases/incident-response.tsx | 92 +++++++++----------
1 file changed, 46 insertions(+), 46 deletions(-)
diff --git a/website/src/pages/use-cases/incident-response.tsx b/website/src/pages/use-cases/incident-response.tsx
index e6fd6ecd34e..e5d3331327b 100644
--- a/website/src/pages/use-cases/incident-response.tsx
+++ b/website/src/pages/use-cases/incident-response.tsx
@@ -1,8 +1,9 @@
+import React, { FunctionComponent, ReactNode } from 'react'
+
import { Link, PageProps } from 'gatsby'
+import CrosshairsGpsIcon from 'mdi-react/CrosshairsGpsIcon'
import ClockTimeThreeOutlineIcon from 'mdi-react/ClockTimeThreeOutlineIcon'
import WebIcon from 'mdi-react/WebIcon'
-import CrosshairsGpsIcon from 'mdi-react/CrosshairsGpsIcon'
-import React, { FunctionComponent, ReactNode } from 'react'
import Layout from '../../components/Layout'
import { BackButtonBold } from '../../components/BackButton'
@@ -47,7 +48,7 @@ const items = [
header="Limit the impact of incidents"
text={
- Automate the deployment of fixes everywhere and at scale. With {' '}
+ Automate the deployment of fixes everywhere and at scale. With{' '}
Batch Changes, you can automate code changes and monitor
the merge status of each resulting PR. Refactor code to replace insecure functions, update
vulnerable packages, or modify container configurations across hundreds of repositories.
@@ -103,7 +104,7 @@ const quoteCarouselItems = [
},
{
header: 'Nutanix proves the Log4j vulnerability no longer affects its codebase',
- quote: `"Isn't it nice when you can just run a report and say, 'Here it is' or 'Here it isn't?' Much better than having to say, 'Well, boss, I think we got it all.'"`,
+ quote: `Isn't it nice when you can just run a report and say, 'Here it is' or 'Here it isn't?' Much better than having to say, 'Well, boss, I think we got it all.'`,
by: 'Jon Kohler, Technical Director of Solution Engineering, Nutanix',
logoImage: '/external-logos/nutanix-logo.svg',
linkText: 'Read the case study',
@@ -124,7 +125,7 @@ const blogListItems = [
{
title: `The real weakest link in software supply chain security (it's not open source)`,
description:
- 'Using open source code can jump-start development but it can also expose you to security vulnerabilities. In this post, learn how to design an effective vulnerability management process that can make dependencies visibile and mitigation less time-consuming.',
+ 'Using open source code can jump-start development but it can also expose you to security vulnerabilities. In this post, learn how to design an effective vulnerability management process that can make dependencies visible and mitigation less time-consuming.',
type: 'Blog post',
image: 'https://storage.googleapis.com/sourcegraph-assets/blog/third-party-open-source-vulnerabilities.png',
href: '/blog/real-weakest-link-in-software-supply-chain-security',
@@ -132,7 +133,7 @@ const blogListItems = [
{
title: 'How to remove secrets from your codebase',
description:
- `Back in early 2021, Sourcegraph stored infrastructure and service passwords in private repositories. Security engineer André Eleuterio moved every secret to a secure vault and used code search to ensure the move was successful and complete.`,
+ 'Back in early 2021, Sourcegraph stored infrastructure and service passwords in private repositories. Security engineer André Eleuterio moved every secret to a secure vault and used code search to ensure the move was successful and complete.',
type: 'Blog post',
image: 'https://sourcegraphstatic.com/blog/securing-sourcegraph-eliminating-secrets.png',
href: '/blog/eliminate-secrets-from-codebase-with-universal-code-search',
@@ -143,9 +144,9 @@ const UseCasePage: FunctionComponent = props => (
= props => (
-
+
Identify the root cause of an incident and fix it everywhere, fast
-
-
+
+
Assess incidents quickly
Pinpoint the code responsible for the incident and find the root
@@ -202,16 +203,16 @@ const UseCasePage: FunctionComponent = props => (
the issue.
-
-
+
+
Plan your remediation
Reduce time to resolution by supplying response teams with actionable
details, like links to all affected code.
-
-
+
+
Execute your plan globally
Fix the root cause and confirm the same issue doesn't reoccur in other
@@ -223,50 +224,49 @@ const UseCasePage: FunctionComponent = props => (
-
+
-
- Identifying & resolving security vulnerabilities is painful
+
+ Incident response is stressful and overwhelming
- Existing tooling doesn't enable teams to be agile and effective when responding to security
- vulnerabilities. What does that mean for you?
+ Current tools don't enable teams to quickly get to the root cause of an incident
+ and ensure it doesn't reoccur. What does that mean for you?
-
Finding vulnerabilities scattered across codebases takes extra time and resources.
-
- Following dependencies across your codebase is inefficient with IDEs that aren't
- connected to all code or up to date.
+
Outages and degraded performance persist while development teams look for causes,
+ leading to lost revenue and frustrated customers.
+
+
+ Incidents can reoccur if developers can't find the root cause, leaving your company
+ with a reputation for unreliability and missed SLAs.
-
- Whether you're making changes to 50 or 5,000 repositories, tracking and managing PRs to
- completion is a manual and spreadsheet-heavy process.
+
+ Incident response often relies on knowledge silos, which are neither scalable
+ nor sustainable.
-
- The vulnerability management and remediation process remains cumbersome, unclear, and
- stressful for all involved.
+
+ Company leaders struggle for visibility into incident response in progress and to
+ communicate timelines to stakeholders.
-
Log4j was the tip of the iceberg
-
- Log4j is a prime example of how challenging it is to create a cohesive response across
- multiple teams in an org.
-
+
Cloudflare quickly addresses root-cause incidents
- Sourcegraph enables companies like Nutanix to completely remediate Log4j vulnerabilities
- across multiple build and artifact management systems, as well as a large monorepo with
- many component branches and hundreds of git repositories, in under four days, and with
- 100% certainty.
+ Cloudflare engineers use Sourcegraph's code intelligence platform to refactor and
+ debug faster. With Sourcegraph, they can quickly identify out-of-date code libraries
+ by only searching certain repositories while excluding specific file types. And it's
+ easier to search for error logs. As a result, the team can feel confident they've
+ addressed each issue.
-
Learn how to use Sourcegraph to identify and resolve every instance of Log4j.
-
- Read the blog post.
+
+ Read the Cloudflare case study
+
Ready to get started?
From fdfefb45435f328b1db7ac5111da925eacc28ad2 Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Wed, 13 Apr 2022 15:54:05 -0500
Subject: [PATCH 04/43] cleanup
---
website/src/pages/use-cases/incident-response.tsx | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/website/src/pages/use-cases/incident-response.tsx b/website/src/pages/use-cases/incident-response.tsx
index e5d3331327b..5c2b06370f4 100644
--- a/website/src/pages/use-cases/incident-response.tsx
+++ b/website/src/pages/use-cases/incident-response.tsx
@@ -1,9 +1,8 @@
-import React, { FunctionComponent, ReactNode } from 'react'
-
import { Link, PageProps } from 'gatsby'
import CrosshairsGpsIcon from 'mdi-react/CrosshairsGpsIcon'
import ClockTimeThreeOutlineIcon from 'mdi-react/ClockTimeThreeOutlineIcon'
import WebIcon from 'mdi-react/WebIcon'
+import React, { FunctionComponent, ReactNode } from 'react'
import Layout from '../../components/Layout'
import { BackButtonBold } from '../../components/BackButton'
@@ -49,8 +48,8 @@ const items = [
text={
Automate the deployment of fixes everywhere and at scale. With{' '}
- Batch Changes, you can automate code changes and monitor
- the merge status of each resulting PR. Refactor code to replace insecure functions, update
+ Batch Changes, you can automate code changes and monitor
+ the merge status of each resulting PR. Refactor code to replace insecure functions, update
vulnerable packages, or modify container configurations across hundreds of repositories.
}
@@ -102,7 +101,7 @@ const quoteCarouselItems = [
link: '/case-studies/quantcast-large-scale-refactoring',
logoAlt: 'Quantcast',
},
- {
+ {
header: 'Nutanix proves the Log4j vulnerability no longer affects its codebase',
quote: `Isn't it nice when you can just run a report and say, 'Here it is' or 'Here it isn't?' Much better than having to say, 'Well, boss, I think we got it all.'`,
by: 'Jon Kohler, Technical Director of Solution Engineering, Nutanix',
@@ -244,7 +243,7 @@ const UseCasePage: FunctionComponent = props => (
with a reputation for unreliability and missed SLAs.
- Incident response often relies on knowledge silos, which are neither scalable
+ Incident response often relies on knowledge silos, which are neither scalable
nor sustainable.
Automate the deployment of fixes everywhere and at scale. With{' '}
- Batch Changes, you can automate code changes and monitor
- the merge status of each resulting PR. Refactor code to replace insecure functions, update
+ Batch Changes, you can automate code changes and monitor the
+ merge status of each resulting PR. Refactor code to replace insecure functions, update
vulnerable packages, or modify container configurations across hundreds of repositories.
}
@@ -231,20 +231,21 @@ const UseCasePage: FunctionComponent = props => (
Incident response is stressful and overwhelming
- Current tools don't enable teams to quickly get to the root cause of an incident
- and ensure it doesn't reoccur. What does that mean for you?
+ Current tools don't enable teams to quickly get to the root cause of an incident and ensure
+ it doesn't reoccur. What does that mean for you?
-
Outages and degraded performance persist while development teams look for causes,
+
+ Outages and degraded performance persist while development teams look for causes,
leading to lost revenue and frustrated customers.
- Incidents can reoccur if developers can't find the root cause, leaving your company
- with a reputation for unreliability and missed SLAs.
+ Incidents can reoccur if developers can't find the root cause, leaving your company with
+ a reputation for unreliability and missed SLAs.
- Incident response often relies on knowledge silos, which are neither scalable
- nor sustainable.
+ Incident response often relies on knowledge silos, which are neither scalable nor
+ sustainable.
Company leaders struggle for visibility into incident response in progress and to
@@ -256,16 +257,19 @@ const UseCasePage: FunctionComponent = props => (
Cloudflare quickly addresses root-cause incidents
- Cloudflare engineers use Sourcegraph's code intelligence platform to refactor and
- debug faster. With Sourcegraph, they can quickly identify out-of-date code libraries
- by only searching certain repositories while excluding specific file types. And it's
- easier to search for error logs. As a result, the team can feel confident they've
- addressed each issue.
+ Cloudflare engineers use Sourcegraph's code intelligence platform to refactor and debug
+ faster. With Sourcegraph, they can quickly identify out-of-date code libraries by only
+ searching certain repositories while excluding specific file types. And it's easier to
+ search for error logs. As a result, the team can feel confident they've addressed each
+ issue.
Automate the deployment of fixes everywhere and at scale. With{' '}
- Batch Changes, you can automate code changes and monitor
- the merge status of each resulting PR. Refactor code to replace insecure functions, update
+ Batch Changes, you can automate code changes and monitor the
+ merge status of each resulting PR. Refactor code to replace insecure functions, update
vulnerable packages, or modify container configurations across hundreds of repositories.
}
@@ -231,20 +231,21 @@ const UseCasePage: FunctionComponent = props => (
Incident response is stressful and overwhelming
- Current tools don't enable teams to quickly get to the root cause of an incident
- and ensure it doesn't reoccur. What does that mean for you?
+ Current tools don't enable teams to quickly get to the root cause of an incident and ensure
+ it doesn't reoccur. What does that mean for you?
-
Outages and degraded performance persist while development teams look for causes,
+
+ Outages and degraded performance persist while development teams look for causes,
leading to lost revenue and frustrated customers.
- Incidents can reoccur if developers can't find the root cause, leaving your company
- with a reputation for unreliability and missed SLAs.
+ Incidents can reoccur if developers can't find the root cause, leaving your company with
+ a reputation for unreliability and missed SLAs.
- Incident response often relies on knowledge silos, which are neither scalable
- nor sustainable.
+ Incident response often relies on knowledge silos, which are neither scalable nor
+ sustainable.
Company leaders struggle for visibility into incident response in progress and to
@@ -256,16 +257,19 @@ const UseCasePage: FunctionComponent = props => (
Cloudflare quickly addresses root-cause incidents
- Cloudflare engineers use Sourcegraph's code intelligence platform to refactor and
- debug faster. With Sourcegraph, they can quickly identify out-of-date code libraries
- by only searching certain repositories while excluding specific file types. And it's
- easier to search for error logs. As a result, the team can feel confident they've
- addressed each issue.
+ Cloudflare engineers use Sourcegraph's code intelligence platform to refactor and debug
+ faster. With Sourcegraph, they can quickly identify out-of-date code libraries by only
+ searching certain repositories while excluding specific file types. And it's easier to
+ search for error logs. As a result, the team can feel confident they've addressed each
+ issue.
Date: Tue, 19 Apr 2022 19:24:19 -0500
Subject: [PATCH 13/43] initial code health copy
---
website/src/pages/use-cases/code-health.tsx | 363 ++++++++++++++++++++
1 file changed, 363 insertions(+)
create mode 100644 website/src/pages/use-cases/code-health.tsx
diff --git a/website/src/pages/use-cases/code-health.tsx b/website/src/pages/use-cases/code-health.tsx
new file mode 100644
index 00000000000..9a62e95775d
--- /dev/null
+++ b/website/src/pages/use-cases/code-health.tsx
@@ -0,0 +1,363 @@
+import { Link, PageProps } from 'gatsby'
+import CrosshairsGpsIcon from 'mdi-react/CrosshairsGpsIcon'
+import ClockTimeThreeOutlineIcon from 'mdi-react/ClockTimeThreeOutlineIcon'
+import WebIcon from 'mdi-react/WebIcon'
+import React, { FunctionComponent, ReactNode } from 'react'
+
+import Layout from '../../components/Layout'
+import { BackButtonBold } from '../../components/BackButton'
+import { BlogListItem } from '../../components/BlogListItem'
+import { QuoteCarousel } from '../../components/QuoteCarousel'
+import CustomCarousel from '../../components/CustomCarousel'
+import { ContentSection } from '../../components/content/ContentSection'
+import { CustomerLogosSectionAnimated } from '../../components/product/CustomerLogosSectionAnimated'
+import { buttonStyle, buttonLocation } from '../../tracking'
+
+import styles from './useCases.module.scss'
+
+const CarouselItem: FunctionComponent<{ header: string; text: ReactNode }> = ({ header, text }) => (
+ <>
+
{header}
+ {text}
+ >
+)
+
+const items = [
+ {
+ buttonLabel: 'Find old versions easily',
+ text: (
+
+ Use Code Search to spot deprecated methods and APIs left in your code and share examples of how the latest versions are used.
+
+ }
+ />
+ ),
+ headerClass: 'active',
+ itemClass: 'd-block',
+ },
+ {
+ buttonLabel: 'Automate version updates and communications',
+ text: (
+
+ With Batch Changes, you can quickly update versions and send pull requests to all your repositories as a way of alerting repository owners that they need to upgrade.
+
+ }
+ />
+ ),
+ itemClass: 'd-none',
+ },
+ {
+ buttonLabel: 'Get everyone on the same page with living docs',
+ text: (
+
+ Create living, actionable documentation with Notebooks
+ that show your best practices with real-life examples you can share with your team.
+
+ }
+ />
+ ),
+ itemClass: 'd-none',
+ },
+ {
+ buttonLabel: 'Monitor for deprecated code',
+ text: (
+
+ Make sure deprecated endpoints don't sneak back into your code. Get alerts for new occurrences of deprecated methods or restricted patterns with
+ code monitoring.
+
+ }
+ />
+ ),
+ itemClass: 'd-none',
+ },
+ {
+ buttonLabel: 'Develop a data-driven relationship with your code',
+ text: (
+
+ Create dashboards to track mitigations, package use, version adoption, code smells, codebase size, and more to understand code health with
+ Code Insights.
+
+ }
+ />
+ ),
+ itemClass: 'd-none',
+ },
+]
+
+const quoteCarouselItems = [
+ {
+ header: 'Indeed improves code health at scale',
+ quote: 'The ability to automate downstream changes that Sourcegraph Batch Changes provides is a key capability for reducing the hidden burden of updates pushed across teams and enabling us to increase our engineering velocity.',
+ by: 'Jared Hodge, Senior Manager, Developer Experience at Indeed',
+ logoImage: '/external-logos/indeed-logo.svg',
+ linkText: 'Read the case study',
+ link: '/case-studies/indeed-accelerates-development-velocity',
+ logoAlt: 'Indeed',
+ },
+ {
+ header: 'Quantcast accelerates large-scale refactoring',
+ quote: 'Quantcast uses Sourcegraph to create burndown lists of issues and provide code owners links to Sourcegraph search results. Since Sourcegraph searches every repository, a single engineer can analyze thousands of repositories in only a few days rather than months.',
+ by: '',
+ logoImage: '/external-logos/quantcast-logo.svg',
+ linkText: 'Read the case study',
+ link: '/case-studies/quantcast-large-scale-refactoring',
+ logoAlt: 'Quantcast',
+ },
+ {
+ header: 'Workiva',
+ quote: `As an organization that values paying down tech debt, Workiva’s Client Platform team started using Sourcegraph to help them efficiently propagate updates to dependencies across all of their repositories without any ongoing maintenance.`,
+ by: '',
+ logoImage: '/external-logos/workiva-logo.svg',
+ linkText: 'Read the case study',
+ link: '/case-studies/workiva-automates-large-scale-code-changes',
+ logoAlt: 'Workiva',
+ },
+]
+
+const blogListItems = [
+ {
+ title: 'How not to break a search engine or: What I learned about unglamorous engineering',
+ description:
+ `When Sourcegraph switched to a new search query parser, you'd never know anything had changed. This is an account of the rigorous testing that happened behind the scenes to ensure a seamless transition.`,
+ type: 'Blog post',
+ image: '',
+ href: '',
+ },
+ {
+ title: 'How we migrated entirely to CSS Modules using codemods and Sourcegraph Code Insights',
+ description:
+ `Learn how Sourcegraph's Frontend Platform team overhauled our web application's design system and UI using codemods to automate a challenging global migration to CSS modules and Code Insights to track and communicate progress.`,
+ type: 'Blog post',
+ image: '',
+ href: '',
+ },
+ {
+ title: 'How we added backend integration testing to our CI pipeline',
+ description:
+ `Here's the story and the lessons learned from our work to remove all existing backend-related end-to-end tests and reliably run their corresponding unit and integration tests as part of our CI pipeline on all branches.`,
+ type: 'Blog post',
+ image: '',
+ href: '',
+ },
+]
+
+const UseCasePage: FunctionComponent = props => (
+
+
+
+
+
+
+
+ Healthy code, happy teams
+
+
+ Improve code health with large-scale changes and track key initiatives across your entire codebase.
+
+
+
+ Request a demo
+
+
+ Try Sourcegraph now
+
+
+
+
+
+ >
+ }
+ >
+
+
+
+
+ Track and improve code health across your entire codebase
+
+
+
+
+
+
Find unhealthy code
+
+ Build a healthier codebase by finding references to deprecated services, libraries, URL patterns, and more across all your repositories.
+
+
+
+
+
Remediate code health issues
+
+ Efficiently tackle refactoring efforts and tech debt from legacy systems and acquisitions with automated pull requests across your entire codebase.
+
+
+
+
+
Monitor code health initiatives
+
+ Stay on top of changes to your code health. Monitor and measure code health initiatives and get actionable insights into the impact of large-scale changes.
+
+
+
+
+
+
+
+
+
+
+
+ Improving code health can be daunting
+
+
+ Engineering teams need to track and measure code quality consistently to monitor code health across their entire codebase, but current tools don't make this easy. What does that mean for you?
+
+
+
+ Old versions, libraries, or funcitons are littered throughout your code, resulting in incidents and backward compatibility issues.
+
+
+ Unclear code ownership leads to unclear responsibility, making it hard for developers to find the right domain expert when they need help.
+
+
+ Engineering managers struggle to justify prioritizing and addressing tech debt because success is difficult to track and measure.
+
+
+
+
+
+
Lyft boosts code health and accelerates developer velocity
+
+ With the help of Sourcegraph, we were able to quickly look at all clients of an API and remove unused attributes that lived in different repositories, ultimately simplifying our APIs and speeding up developer iteration time.
+
+
+ Read the case study
+
+
+
+
+
+
+
+
+
+
+
+
+ How Sourcegraph helps
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Get started with Sourcegraph
+
+ Give your team the tools they need to build a healthier codebase.
+
Date: Wed, 20 Apr 2022 13:51:53 -0500
Subject: [PATCH 17/43] link to code health from use cases landing page
---
website/src/pages/use-cases/index.tsx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/website/src/pages/use-cases/index.tsx b/website/src/pages/use-cases/index.tsx
index c64def34ce0..8e032edf765 100644
--- a/website/src/pages/use-cases/index.tsx
+++ b/website/src/pages/use-cases/index.tsx
@@ -348,6 +348,9 @@ export default ((props: any) => (
>
Request a demo
+
+ Learn more
+
From c29c3696e8a51c25131faa040a6786ac97ef5772 Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Wed, 20 Apr 2022 13:52:28 -0500
Subject: [PATCH 18/43] add icons, copy, spacing to code health
---
website/src/pages/use-cases/code-health.tsx | 146 ++++++++++----------
1 file changed, 71 insertions(+), 75 deletions(-)
diff --git a/website/src/pages/use-cases/code-health.tsx b/website/src/pages/use-cases/code-health.tsx
index 9a62e95775d..b45cb880e1d 100644
--- a/website/src/pages/use-cases/code-health.tsx
+++ b/website/src/pages/use-cases/code-health.tsx
@@ -1,11 +1,12 @@
import { Link, PageProps } from 'gatsby'
-import CrosshairsGpsIcon from 'mdi-react/CrosshairsGpsIcon'
-import ClockTimeThreeOutlineIcon from 'mdi-react/ClockTimeThreeOutlineIcon'
-import WebIcon from 'mdi-react/WebIcon'
+import MagnifyIcon from 'mdi-react/MagnifyIcon'
+import WrenchOutlineIcon from 'mdi-react/WrenchOutlineIcon'
+import ClipBoardPulseOutlineIcon from 'mdi-react/ClipboardPulseOutlineIcon'
import React, { FunctionComponent, ReactNode } from 'react'
import Layout from '../../components/Layout'
import { BackButtonBold } from '../../components/BackButton'
+import { Blockquote } from '../../components/Blockquote'
import { BlogListItem } from '../../components/BlogListItem'
import { QuoteCarousel } from '../../components/QuoteCarousel'
import CustomCarousel from '../../components/CustomCarousel'
@@ -30,7 +31,8 @@ const items = [
header="Find old versions easily"
text={
- Use Code Search to spot deprecated methods and APIs left in your code and share examples of how the latest versions are used.
+ Use Code Search to spot deprecated methods and APIs left in your
+ code and share examples of how the latest versions are used.
}
/>
@@ -45,7 +47,9 @@ const items = [
header="Automate version updates and communications"
text={
- With Batch Changes, you can quickly update versions and send pull requests to all your repositories as a way of alerting repository owners that they need to upgrade.
+ With Batch Changes, you can quickly update versions and send
+ pull requests to all your repositories as a way of alerting repository owners that they need to
+ upgrade.
}
/>
@@ -59,8 +63,9 @@ const items = [
header="Get everyone on the same page with living docs"
text={
- Create living, actionable documentation with Notebooks
- that show your best practices with real-life examples you can share with your team.
+ Create living, actionable documentation with{' '}
+ Notebooks that show your best practices
+ with real-life examples you can share with your team.
- Make sure deprecated endpoints don't sneak back into your code. Get alerts for new occurrences of deprecated methods or restricted patterns with
+ Make sure deprecated endpoints don't sneak back into your code. Get alerts for new occurrences
+ of deprecated methods or restricted patterns with{' '}
code monitoring.
}
/>
),
itemClass: 'd-none',
- },
+ },
{
buttonLabel: 'Develop a data-driven relationship with your code',
text: (
@@ -89,8 +95,8 @@ const items = [
header="Develop a data-driven relationship with your code"
text={
- Create dashboards to track mitigations, package use, version adoption, code smells, codebase size, and more to understand code health with
- Code Insights.
+ Create dashboards to track mitigations, package use, version adoption, code smells, codebase
+ size, and more to understand code health with Code Insights.
}
/>
@@ -112,17 +118,15 @@ const quoteCarouselItems = [
{
header: 'Quantcast accelerates large-scale refactoring',
quote: 'Quantcast uses Sourcegraph to create burndown lists of issues and provide code owners links to Sourcegraph search results. Since Sourcegraph searches every repository, a single engineer can analyze thousands of repositories in only a few days rather than months.',
- by: '',
logoImage: '/external-logos/quantcast-logo.svg',
linkText: 'Read the case study',
link: '/case-studies/quantcast-large-scale-refactoring',
logoAlt: 'Quantcast',
},
{
- header: 'Workiva',
+ header: 'Workiva efficiently pays down tech debt',
quote: `As an organization that values paying down tech debt, Workiva’s Client Platform team started using Sourcegraph to help them efficiently propagate updates to dependencies across all of their repositories without any ongoing maintenance.`,
- by: '',
- logoImage: '/external-logos/workiva-logo.svg',
+ logoImage: '/external-logos/workiva-vector-logo.svg',
linkText: 'Read the case study',
link: '/case-studies/workiva-automates-large-scale-code-changes',
logoAlt: 'Workiva',
@@ -132,27 +136,24 @@ const quoteCarouselItems = [
const blogListItems = [
{
title: 'How not to break a search engine or: What I learned about unglamorous engineering',
- description:
- `When Sourcegraph switched to a new search query parser, you'd never know anything had changed. This is an account of the rigorous testing that happened behind the scenes to ensure a seamless transition.`,
+ description: `When Sourcegraph switched to a new search query parser, you'd never know anything had changed. This is an account of the rigorous testing that happened behind the scenes to ensure a seamless transition.`,
type: 'Blog post',
- image: '',
- href: '',
+ image: 'https://storage.googleapis.com/sourcegraph-assets/blog/how-not-to-break-a-search-engine-new.png',
+ href: '/blog/how-not-to-break-a-search-engine-unglamorous-engineering',
},
{
title: 'How we migrated entirely to CSS Modules using codemods and Sourcegraph Code Insights',
- description:
- `Learn how Sourcegraph's Frontend Platform team overhauled our web application's design system and UI using codemods to automate a challenging global migration to CSS modules and Code Insights to track and communicate progress.`,
+ description: `Learn how Sourcegraph's Frontend Platform team overhauled our web application's design system and UI using codemods to automate a challenging global migration to CSS modules and Code Insights to track and communicate progress.`,
type: 'Blog post',
- image: '',
- href: '',
+ image: 'https://storage.googleapis.com/sourcegraph-assets/blog/code-insights-ga-blogs/migrating-to-css-modules.png',
+ href: '/blog/migrating-to-css-modules-with-codemods-and-code-insights',
},
{
title: 'How we added backend integration testing to our CI pipeline',
- description:
- `Here's the story and the lessons learned from our work to remove all existing backend-related end-to-end tests and reliably run their corresponding unit and integration tests as part of our CI pipeline on all branches.`,
+ description: `Here's the story and the lessons learned from our work to remove all existing backend-related end-to-end tests and reliably run their corresponding unit and integration tests as part of our CI pipeline on all branches.`,
type: 'Blog post',
- image: '',
- href: '',
+ image: 'https://storage.googleapis.com/sourcegraph-assets/blog/backend-integration-testing/backend-integration-testing.png',
+ href: '/blog/integration-testing',
},
]
@@ -162,7 +163,7 @@ const UseCasePage: FunctionComponent = props => (
meta={{
title: 'Improve Code Health | Sourcegraph',
description:
- 'Tackle refactoring efforts and tech debt from legacy systems with automated pull requests across your entire codebase to boost code health. ',
+ 'Tackle refactoring efforts and tech debt from legacy systems with automated pull requests across your entire codebase to boost code health.',
image: 'https://about.sourcegraph.com/sourcegraph-og.png',
}}
className="use-cases-page"
@@ -174,11 +175,10 @@ const UseCasePage: FunctionComponent = props => (
-
- Healthy code, happy teams
-
+
Healthy code, happy teams
- Improve code health with large-scale changes and track key initiatives across your entire codebase.
+ Improve code health with large-scale changes and track key initiatives across your
+ entire codebase.
= props => (
-
+
Track and improve code health across your entire codebase
-
+
-
+
Find unhealthy code
- Build a healthier codebase by finding references to deprecated services, libraries, URL patterns, and more across all your repositories.
+ Build a healthier codebase by finding references to deprecated services, libraries, URL
+ patterns, and more across all your repositories.
-
-
+
+
Remediate code health issues
- Efficiently tackle refactoring efforts and tech debt from legacy systems and acquisitions with automated pull requests across your entire codebase.
+ Efficiently tackle refactoring efforts and tech debt from legacy systems and acquisitions
+ with automated pull requests across your entire codebase.
-
+
Monitor code health initiatives
- Stay on top of changes to your code health. Monitor and measure code health initiatives and get actionable insights into the impact of large-scale changes.
+ Stay on top of changes to your code health. Monitor and measure code health initiatives and
+ get actionable insights into the impact of large-scale changes.
- Engineering teams need to track and measure code quality consistently to monitor code health across their entire codebase, but current tools don't make this easy. What does that mean for you?
+
Improving code health can be daunting
+
+ Engineering teams need to track and measure code quality consistently to monitor code health
+ across their entire codebase, but current tools don't make this easy.{' '}
+ What does that mean for you?
- Old versions, libraries, or funcitons are littered throughout your code, resulting in incidents and backward compatibility issues.
+ Old versions, libraries, or functions are littered throughout your code, resulting in
+ incidents and backward compatibility issues.
- Unclear code ownership leads to unclear responsibility, making it hard for developers to find the right domain expert when they need help.
+ Unclear code ownership leads to unclear responsibility, making it hard for developers to
+ find the right domain expert when they need help.
- Engineering managers struggle to justify prioritizing and addressing tech debt because success is difficult to track and measure.
+ Engineering managers struggle to justify prioritizing and addressing tech debt because
+ success is difficult to track and measure.
-
-
-
Lyft boosts code health and accelerates developer velocity
-
- With the help of Sourcegraph, we were able to quickly look at all clients of an API and remove unused attributes that lived in different repositories, ultimately simplifying our APIs and speeding up developer iteration time.
-
Improve code health with large-scale changes and track key initiatives across your
entire codebase.
@@ -211,7 +211,7 @@ const UseCasePage: FunctionComponent = props => (
-
+
Track and improve code health across your entire codebase
- Company leaders struggle for visibility into incident response in progress and to
+ Company leaders struggle to gain visibility into in-progress incident responses and
communicate timelines to stakeholders.
diff --git a/website/src/pages/use-cases/incident-response.tsx b/website/src/pages/use-cases/incident-response.tsx
index 819e8af89b3..9703f5c8753 100644
--- a/website/src/pages/use-cases/incident-response.tsx
+++ b/website/src/pages/use-cases/incident-response.tsx
@@ -150,43 +150,43 @@ const UseCasePage: FunctionComponent = props => (
'Identify the root cause of an incident, understand its potential impact, fix the issue everywhere in your codebase. Incident response from Sourcegraph.',
image: 'https://about.sourcegraph.com/sourcegraph-og.png',
}}
- className="use-cases-page"
- heroAndHeaderClassName={`${styles.useCaseHeader} navbar-light`}
+ className="use-cases-page navbar-light"
hero={
<>
-
-
-
-
-
-
- Resolve incidents quickly and confidently
-
-
- Identify the root cause of an incident, understand its potential impact on other
- services, and fix the issue everywhere in your codebase so it won't reoccur.
-
-
-
- Request a demo
-
-
- Try Sourcegraph now
-
+
+
+
+
+
+
+ Resolve incidents quickly and confidently
+
+
+ Identify the root cause of an incident, understand its potential impact on other
+ services, and fix the issue everywhere in your codebase so it won't reoccur.
+
+
+
+ Request a demo
+
+
+ Try Sourcegraph now
+
+
diff --git a/website/src/pages/use-cases/index.tsx b/website/src/pages/use-cases/index.tsx
index dc6d6cb9247..7ee2cf49327 100644
--- a/website/src/pages/use-cases/index.tsx
+++ b/website/src/pages/use-cases/index.tsx
@@ -19,65 +19,70 @@ export default ((props: any) => (
'See how the most productive dev teams use Sourcegraph to build software you rely on. From remediating vulnerabilities to streamlining code reuse, our customers use Sourcegraph to solve big code problems.',
image: 'https://about.sourcegraph.com/sourcegraph-og.png',
}}
- heroAndHeaderClassName={styles.headerAndHero}
+ className="use-cases-page navbar-light"
hero={
-
-
-
-
Our customers move faster with Sourcegraph
-
- Companies of all sizes and in all industries use Sourcegraph universal code search to solve
- big code problems.
-
diff --git a/website/src/pages/use-cases/onboarding.tsx b/website/src/pages/use-cases/onboarding.tsx
index c0d344b222b..d2988c719f3 100644
--- a/website/src/pages/use-cases/onboarding.tsx
+++ b/website/src/pages/use-cases/onboarding.tsx
@@ -132,41 +132,41 @@ const UseCasePage: FunctionComponent = props => (
'Decrease time to first commit for new developers, help existing engineers master your codebase, and fast-track full codebase understanding.',
image: 'https://about.sourcegraph.com/sourcegraph-og.png',
}}
- className="use-cases-page"
- heroAndHeaderClassName={`${styles.useCaseHeader} navbar-light`}
+ className="use-cases-page navbar-light"
hero={
<>
-
-
-
-
-
-
Accelerate developer onboarding
-
- Decrease time to first commit for new developers, help existing engineers master your
- codebase, and fast-track full codebase understanding.
-
-
-
- Request a demo
-
-
- Try Sourcegraph now
-
+
+
+
+
+
+
Accelerate developer onboarding
+
+ Decrease time to first commit for new developers, help existing engineers master
+ your codebase, and fast-track full codebase understanding.
+
+
+
+ Request a demo
+
+
+ Try Sourcegraph now
+
+
diff --git a/website/src/pages/use-cases/vulnerabilities.tsx b/website/src/pages/use-cases/vulnerabilities.tsx
index af914bb0a18..14fa682c830 100644
--- a/website/src/pages/use-cases/vulnerabilities.tsx
+++ b/website/src/pages/use-cases/vulnerabilities.tsx
@@ -175,41 +175,43 @@ const UseCasePage: FunctionComponent = props => (
'Search across all your repositories to find and resolve vulnerabilities in minutes, not days.',
image: 'https://about.sourcegraph.com/sourcegraph-og.png',
}}
- className="use-cases-page"
- heroAndHeaderClassName={`${styles.useCaseHeader} navbar-light`}
+ className="use-cases-page navbar-light"
hero={
<>
-
-
-
-
-
-
Find and fix security vulnerabilities
-
- Search across all your repositories to find and resolve vulnerabilities in minutes, not
- days.
-
-
-
- Request a demo
-
-
- Try Sourcegraph now
-
+
+
+
+
+
+
+ Find and fix security vulnerabilities
+
+
+ Search across all your repositories to find and resolve vulnerabilities in minutes,
+ not days.
+
+
+
+ Request a demo
+
+
+ Try Sourcegraph now
+
+
From 2154e0ad6578e3b8bd2266fe056172963c8899de Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Tue, 26 Apr 2022 15:30:48 -0500
Subject: [PATCH 32/43] copy updates from marketing
---
.../src/pages/use-cases/incident-response.tsx | 19 +++++++++++--------
.../src/pages/use-cases/vulnerabilities.tsx | 5 ++++-
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/website/src/pages/use-cases/incident-response.tsx b/website/src/pages/use-cases/incident-response.tsx
index ff254e07e1e..8f017b0fd2b 100644
--- a/website/src/pages/use-cases/incident-response.tsx
+++ b/website/src/pages/use-cases/incident-response.tsx
@@ -1,5 +1,5 @@
import { Link, PageProps } from 'gatsby'
-import CrosshairsGpsIcon from 'mdi-react/CrosshairsGpsIcon'
+import MagnifyIcon from 'mdi-react/MagnifyIcon'
import ClockTimeThreeOutlineIcon from 'mdi-react/ClockTimeThreeOutlineIcon'
import WebIcon from 'mdi-react/WebIcon'
import React, { FunctionComponent, ReactNode } from 'react'
@@ -68,7 +68,7 @@ const items = [
Visualize fixes in progress and track their deployment. With{' '}
Code Insights, get visibility into remediation efforts and
- share progress with team leaders and customers.
+ share progress with team leaders and and all of your customers.
}
/>
@@ -79,7 +79,7 @@ const items = [
buttonLabel: 'Monitor for the introduction of unsafe code',
text: (
Close the loop on your incident response efforts. After finding the root cause, use{' '}
@@ -118,7 +118,7 @@ const blogListItems = [
{
title: 'Log4j Log4Shell 0-day: find, fix, and track affected code',
description:
- 'In the biggest security vulnerability incident since Heartbleed, Sourcegraph co-founder and CEO Quinn Slack shared how you can find affected code, automate fixes, and track progress.',
+ 'In the biggest security vulnerability incident since Heartbleed, Sourcegraph co-founder and CEO Quinn Slack shares how you can find affected code, automate fixes, and track progress.',
type: 'Blog post',
image: 'https://sourcegraphstatic.com/blog/log4j/log4j-blog-thumbnail.png',
href: '/blog/log4j-log4shell-0-day',
@@ -126,7 +126,7 @@ const blogListItems = [
{
title: `The real weakest link in software supply chain security (it's not open source)`,
description:
- 'Using open source code can jump-start development but it can also expose you to security vulnerabilities. In this post, learn how to design an effective vulnerability management process that can make dependencies visible and mitigation less time-consuming.',
+ 'Using open source code can jump start development, but it can also expose you to security vulnerabilities. In this post, learn how to design an effective vulnerability management process that can make dependencies visible and mitigation less time-consuming.',
type: 'Blog post',
image: 'https://storage.googleapis.com/sourcegraph-assets/blog/third-party-open-source-vulnerabilities.png',
href: '/blog/real-weakest-link-in-software-supply-chain-security',
@@ -134,7 +134,7 @@ const blogListItems = [
{
title: 'How to remove secrets from your codebase',
description:
- 'Back in early 2021, Sourcegraph stored infrastructure and service passwords in private repositories. Security engineer André Eleuterio moved every secret to a secure vault and used code search to ensure the move was successful and complete.',
+ 'In early 2021, Sourcegraph stored infrastructure and service passwords in private repositories. Learn how Sourcegraph Security Engineer André Eleuterio moved every secret to a secure vault and used Code Search to ensure the move was successful and complete.',
type: 'Blog post',
image: 'https://sourcegraphstatic.com/blog/securing-sourcegraph-eliminating-secrets.png',
href: '/blog/eliminate-secrets-from-codebase-with-universal-code-search',
@@ -203,7 +203,7 @@ const UseCasePage: FunctionComponent = props => (
-
+
Assess incidents quickly
Pinpoint the code responsible for the incident and find the root cause in your codebase.
@@ -239,7 +239,10 @@ const UseCasePage: FunctionComponent = props => (
Current tools don't enable teams to quickly get to the root cause of an incident and ensure
- it doesn't reoccur. What does that mean for you?
+ it doesn't reoccur.
+
Existing tooling doesn't enable teams to be agile and effective when responding to security
- vulnerabilities. What does that mean for you?
+ vulnerabilities.
+
+
+ What does that mean for you?
Finding vulnerabilities scattered across codebases takes extra time and resources.
From d212c68480e7fb0d23dd3ea35807cbc8ec40b8c7 Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Wed, 27 Apr 2022 11:47:28 -0500
Subject: [PATCH 33/43] center cloudflare logo
---
website/src/pages/use-cases/incident-response.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/website/src/pages/use-cases/incident-response.tsx b/website/src/pages/use-cases/incident-response.tsx
index 8f017b0fd2b..92eed79053e 100644
--- a/website/src/pages/use-cases/incident-response.tsx
+++ b/website/src/pages/use-cases/incident-response.tsx
@@ -279,7 +279,7 @@ const UseCasePage: FunctionComponent = props => (
>
Read the Cloudflare case study
-
+
Respond to incidents with confidence and speed, and remediate issues at their root to ensure
they don't reoccur.
@@ -329,7 +329,10 @@ const UseCasePage: FunctionComponent = props => (
-
+
+
+
+
From 56bc8c06bad28b0065caef582fc7e78560938741 Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Thu, 28 Apr 2022 12:52:33 -0500
Subject: [PATCH 39/43] swap in new CustomerLogos component
---
website/src/pages/use-cases/code-health.tsx | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/website/src/pages/use-cases/code-health.tsx b/website/src/pages/use-cases/code-health.tsx
index c096e7b2db1..dada5a692d1 100644
--- a/website/src/pages/use-cases/code-health.tsx
+++ b/website/src/pages/use-cases/code-health.tsx
@@ -11,9 +11,8 @@ import { BlogListItem } from '../../components/BlogListItem'
import { QuoteCarousel } from '../../components/QuoteCarousel'
import CustomCarousel from '../../components/CustomCarousel'
import { ContentSection } from '../../components/content/ContentSection'
-import { CustomerLogosSectionAnimated } from '../../components/product/CustomerLogosSectionAnimated'
+import { CustomerLogos } from '../../components/CustomerLogos'
import { buttonStyle, buttonLocation } from '../../tracking'
-
import styles from './useCases.module.scss'
const CarouselItem: FunctionComponent<{ header: string; text: ReactNode }> = ({ header, text }) => (
@@ -306,11 +305,11 @@ const UseCasePage: FunctionComponent = props => (
-
+
-
-
-
Get started with Sourcegraph
+
+
+
Get started with Sourcegraph
Give your team the tools they need to build a healthier codebase.
From 089f52e14692fe31251eb75a2cafa6be21b2360c Mon Sep 17 00:00:00 2001
From: Tim Zielonko
Date: Thu, 28 Apr 2022 14:47:00 -0500
Subject: [PATCH 40/43] qa feedback
---
website/src/pages/use-cases/code-health.tsx | 17 ++++++++++-------
.../src/pages/use-cases/incident-response.tsx | 2 +-
website/src/pages/use-cases/onboarding.tsx | 2 +-
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/website/src/pages/use-cases/code-health.tsx b/website/src/pages/use-cases/code-health.tsx
index dada5a692d1..ee8c7fd0cba 100644
--- a/website/src/pages/use-cases/code-health.tsx
+++ b/website/src/pages/use-cases/code-health.tsx
@@ -107,7 +107,7 @@ const items = [
const quoteCarouselItems = [
{
header: 'Indeed improves code health at scale',
- quote: 'The ability to automate downstream changes that Sourcegraph Batch Changes provides is a key capability for reducing the hidden burden of updates pushed across teams and enabling us to increase our engineering velocity.',
+ quote: `On average, I'd say that for every automated merge request that we're able to merge we save an hour…if we are doing several thousand automated merges in a year, we're saving several employee's worth of time.`,
by: 'Jared Hodge, Senior Manager, Developer Experience at Indeed',
logoImage: '/external-logos/indeed-logo.svg',
linkText: 'Read the case study',
@@ -124,7 +124,7 @@ const quoteCarouselItems = [
},
{
header: 'Workiva efficiently pays down tech debt',
- quote: `As an organization that values paying down tech debt, Workiva’s Client Platform team started using Sourcegraph to help them efficiently propagate updates to dependencies across all of their repositories without any ongoing maintenance.`,
+ quote: `As an organization that values paying down tech debt, Workiva's Client Platform team started using Sourcegraph to help them efficiently propagate updates to dependencies across all of their repositories without any ongoing maintenance.`,
logoImage: '/external-logos/workiva-vector-logo.svg',
linkText: 'Read the case study',
link: '/case-studies/workiva-automates-large-scale-code-changes',
@@ -217,7 +217,7 @@ const UseCasePage: FunctionComponent = props => (
-
+
Find unhealthy code
@@ -225,7 +225,7 @@ const UseCasePage: FunctionComponent = props => (
patterns, and more across all your repositories.
-
+
Remediate code health issues
@@ -233,7 +233,7 @@ const UseCasePage: FunctionComponent = props => (
with automated pull requests across your entire codebase.
Engineering teams need to track and measure code quality consistently to monitor code health
- across their entire codebase, but current tools don't make this easy.{' '}
- What does that mean for you?
+ across their entire codebase, but current tools don't make this easy. What does that mean
+ for you?
diff --git a/website/src/pages/use-cases/incident-response.tsx b/website/src/pages/use-cases/incident-response.tsx
index 15188bd5d4d..f5de90737b7 100644
--- a/website/src/pages/use-cases/incident-response.tsx
+++ b/website/src/pages/use-cases/incident-response.tsx
@@ -201,7 +201,7 @@ const UseCasePage: FunctionComponent = props => (
Identify the root cause of an incident and fix it everywhere, fast
-
+
Assess incidents quickly
diff --git a/website/src/pages/use-cases/onboarding.tsx b/website/src/pages/use-cases/onboarding.tsx
index 5d30ad364a6..fcf0c824c04 100644
--- a/website/src/pages/use-cases/onboarding.tsx
+++ b/website/src/pages/use-cases/onboarding.tsx
@@ -180,7 +180,7 @@ const UseCasePage: FunctionComponent = props => (
Make your codebase accessible for your entire team
- Efficiently tackle refactoring efforts and tech debt from legacy systems and acquisitions
- with automated pull requests across your entire codebase.
+ Tackle refactoring efforts and tech debt from legacy systems and acquisitions with automated
+ pull requests across your entire codebase.
Monitor code health initiatives
- Stay on top of changes to your code health. Monitor and measure code health initiatives and
- get actionable insights into the impact of large-scale changes.
+ Stay on top of code health changes. Monitor and measure code health initiatives and get
+ actionable insights into the impact of large-scale changes.