├── .editorconfig ├── .envrc ├── .github ├── ISSUE_TEMPLATE │ ├── handbook-content.md │ └── handbook-website.md └── workflows │ ├── build-handbook.yml │ ├── codenotify.yml │ ├── data-validation.yml │ ├── large-files.yml │ ├── link-check.yml │ ├── notion-migration.yaml │ ├── pr-title.yml │ ├── prettier.yml │ ├── stale.yml │ └── update-branches.yml ├── .gitignore ├── .idea ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── codestream.xml ├── handbook.iml ├── inspectionProfiles │ └── Project_Default.xml ├── modules.xml ├── vcs.xml └── workspace.xml ├── .prettierignore ├── .tool-versions ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── .yarnrc ├── Dockerfile ├── LICENSE ├── README.md ├── content ├── benefits-pay-perks │ ├── benefits-perks │ │ ├── benefits.md │ │ ├── celebrate.md │ │ ├── index.md │ │ ├── leave-of-absence.md │ │ ├── mental-health │ │ │ ├── index.md │ │ │ └── modern-health.md │ │ ├── nomad-life.md │ │ ├── parental-leave.md │ │ ├── spending-company-money.md │ │ ├── time-off │ │ │ ├── index.md │ │ │ └── submitting-time-off.md │ │ └── travel │ │ │ ├── Navan.md │ │ │ ├── index.md │ │ │ └── sample-team-offsites.md │ ├── index.md │ └── pay-expenses │ │ ├── compensation │ │ ├── compensation-change-approvals.md │ │ ├── equity-faq.md │ │ ├── equity-timing.md │ │ ├── fy24-cody-spiff.md │ │ ├── index.md │ │ ├── leveling-guide.md │ │ └── total-rewards.md │ │ ├── expenses │ │ ├── expenses-through-deel.md │ │ └── index.md │ │ ├── index.md │ │ └── invoices.md ├── company-info-and-process │ ├── CODENOTIFY │ ├── about-sourcegraph │ │ ├── general-office-info.md │ │ └── index.md │ ├── communication │ │ ├── 1-1.md │ │ ├── announcements.md │ │ ├── asynchronous-communication.md │ │ ├── code_of_conduct.md │ │ ├── company_meeting.md │ │ ├── conflicts.md │ │ ├── content_guidelines │ │ │ ├── actionable_language.md │ │ │ ├── index.md │ │ │ ├── style_and_mechanics.md │ │ │ ├── terminology_guidelines.md │ │ │ └── voice_and_tone.md │ │ ├── convercent.md │ │ ├── customer_ethics.md │ │ ├── index.md │ │ ├── onepager-async.svg │ │ ├── retrospectives.md │ │ ├── rfcs │ │ │ ├── hubspot-results.png │ │ │ ├── hubspot-search.png │ │ │ ├── index.md │ │ │ └── link-sharing.png │ │ ├── seeking-and-giving-feedback.md │ │ ├── team_chat.md │ │ ├── working-group.md │ │ └── zoom.md │ ├── community │ │ ├── code_of_conduct.md │ │ ├── faq.md │ │ └── index.md │ ├── equality-of-opportunity.md │ ├── gender-diversity.md │ ├── index.md │ ├── mentorship │ │ └── index.md │ ├── onboarding │ │ ├── git-intro │ │ │ └── github-notifications │ │ │ │ ├── custom-routing.png │ │ │ │ ├── gmail-apply-filter-to-matching-conversations.png │ │ │ │ ├── gmail-filter-github-label.png │ │ │ │ ├── gmail-filter-skip-inbox.png │ │ │ │ ├── index.md │ │ │ │ ├── participating.png │ │ │ │ ├── real-time.png │ │ │ │ └── watching.png │ │ ├── glossary.md │ │ └── product-onboarding-videos.md │ ├── personal-pronouns.md │ ├── policies │ │ ├── acceptable-use-policy.md │ │ ├── access-control-policy.md │ │ ├── asset-management-policy.md │ │ ├── business-continuity-policy.md │ │ ├── cloud-security-policy.md │ │ ├── data-management-policy.md │ │ ├── data-sharing.md │ │ ├── index.md │ │ ├── information-security-policy.md │ │ ├── information-security-risk-management-policy.md │ │ ├── information-security-roles-and-responsibilities.md │ │ ├── secure-development-policy.md │ │ └── third-party-management-policy.md │ ├── queer.md │ ├── remote │ │ ├── index.md │ │ ├── remote_hackathons.md │ │ ├── teammate-recommended_productivity_hacks.md │ │ └── tips.md │ ├── respectful-workplace-policy.md │ ├── values │ │ └── index.md │ └── working-at-sourcegraph │ │ ├── career-frameworks.md │ │ ├── holidays.md │ │ ├── index.md │ │ ├── switching-teams.md │ │ ├── teammate-development │ │ ├── addressing-underperformance.md │ │ ├── index.md │ │ └── training │ │ │ ├── compliance │ │ │ ├── index.md │ │ │ └── preventing-harassment-and-discrimination.md │ │ │ └── tools │ │ │ ├── index.md │ │ │ └── loom.md │ │ └── thanks-and-recognition ├── departments │ ├── ceo-team │ │ ├── ceo-shadow-program.md │ │ └── index.md │ ├── cloud │ │ ├── cloud-cost.md │ │ ├── cloud-rca.md │ │ ├── github-projects-beta.md │ │ ├── grooming-and-estimation-process.md │ │ ├── index.md │ │ ├── launch-process.md │ │ ├── onboarding.md │ │ ├── technical-docs │ │ │ ├── audit-logs │ │ │ │ └── index.md │ │ │ ├── cost_estimation.md │ │ │ ├── custom_domain.md │ │ │ ├── index.md │ │ │ ├── managed-smtp │ │ │ │ └── index.md │ │ │ ├── multi-region │ │ │ │ └── index.md │ │ │ ├── observability │ │ │ │ ├── index.md │ │ │ │ └── operations.md │ │ │ ├── oidc_site_admin.md │ │ │ ├── private-code-hosts │ │ │ │ └── index.md │ │ │ ├── private-registry │ │ │ │ └── index.md │ │ │ ├── scalability_testing.md │ │ │ └── v2.0 │ │ │ │ ├── break_glass_process.md │ │ │ │ ├── creation_process.md │ │ │ │ ├── delete_process.md │ │ │ │ ├── disaster_recovery_process.md │ │ │ │ ├── index.md │ │ │ │ ├── migrate_db_process.md │ │ │ │ ├── onprem_data_migration.md │ │ │ │ ├── restore_process.md │ │ │ │ └── upgrade_process.md │ │ ├── trial_mi.md │ │ └── working-agreements.md │ ├── cto │ │ ├── community │ │ │ ├── becoming_a_sourcegraph_champion.md │ │ │ ├── content-strategy.md │ │ │ ├── index.md │ │ │ ├── oss_community_pages.md │ │ │ └── public_projects_using_sourcegraph.md │ │ └── index.md │ ├── data-analytics │ │ ├── amplitude.md │ │ ├── analyses-projects.md │ │ ├── architecture.md │ │ ├── cody_analytics.md │ │ ├── customer-data-policy.md │ │ ├── data-transformations.md │ │ ├── documentation.md │ │ ├── enablement.md │ │ ├── event-level-data.md │ │ ├── faq.md │ │ ├── how-to-airgap-disable-telemetry.md │ │ ├── how-to.md │ │ ├── index.md │ │ ├── looker.md │ │ ├── planning.md │ │ ├── product-led-growth.md │ │ ├── reports.md │ │ ├── search_analytics.md │ │ ├── sfdc-architecture.md │ │ ├── sources-of-truth.md │ │ ├── stakeholder-mgmt.md │ │ ├── testing.md │ │ ├── tools.md │ │ ├── user-definitions.md │ │ └── web-analytics.md │ ├── engineering │ │ ├── CODENOTIFY │ │ ├── bi-weekly-updates.md │ │ ├── cross-team-collab.md │ │ ├── demo-day.md │ │ ├── design │ │ │ └── templates │ │ │ │ └── brand-XL-template.md │ │ ├── dev │ │ │ ├── CODENOTIFY │ │ │ ├── career-development │ │ │ │ ├── CODENOTIFY │ │ │ │ ├── framework.md │ │ │ │ ├── index.md │ │ │ │ └── successful-engineers.md │ │ │ ├── distribution │ │ │ │ ├── faq.md │ │ │ │ ├── gitlab_native_local.md │ │ │ │ ├── internal_infrastructure.md │ │ │ │ ├── k8s_admin_custom_policy.md │ │ │ │ ├── metrics_dumps.md │ │ │ │ ├── rollbacks.md │ │ │ │ ├── separate_website.md │ │ │ │ ├── tech_stack.md │ │ │ │ └── tokens.md │ │ │ ├── education │ │ │ │ └── library.md │ │ │ ├── hiring │ │ │ │ ├── early-career-engineers.md │ │ │ │ ├── engineering-leadership.md │ │ │ │ ├── hm_intro_call.md │ │ │ │ ├── index.md │ │ │ │ ├── software-engineer-code-review-exercise.md │ │ │ │ ├── software-engineer-coding-exercise.md │ │ │ │ └── software-engineer-pairing-exercise.md │ │ │ ├── index.md │ │ │ ├── onboarding │ │ │ │ ├── engineering-manager-onboarding.md │ │ │ │ ├── index.md │ │ │ │ └── software-engineer-onboarding.md │ │ │ ├── policies │ │ │ │ ├── cloud-access-control-policy.md │ │ │ │ ├── index.md │ │ │ │ └── vulnerability-management-policy.md │ │ │ ├── process │ │ │ │ ├── cloud_processes.md │ │ │ │ ├── contributor-license-agreement.md │ │ │ │ ├── customer_calls_shadowing.md │ │ │ │ ├── deployments │ │ │ │ │ ├── azure_devops.md │ │ │ │ │ ├── debugging │ │ │ │ │ │ ├── index.md │ │ │ │ │ │ └── tutorial.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── instances.md │ │ │ │ │ ├── kubernetes.md │ │ │ │ │ ├── playbooks.md │ │ │ │ │ ├── postgresql.md │ │ │ │ │ ├── security.md │ │ │ │ │ └── testing.md │ │ │ │ ├── engineering_iam_model.md │ │ │ │ ├── engineering_ownership.md │ │ │ │ ├── escalation-engineer-rotation.md │ │ │ │ ├── external_contributions.md │ │ │ │ ├── gcp_access_process.md │ │ │ │ ├── incidents │ │ │ │ │ ├── 330_incident_retro.md │ │ │ │ │ ├── extensibility_repo_name_log.md │ │ │ │ │ ├── incident-flow-chart.png │ │ │ │ │ ├── index.md │ │ │ │ │ ├── on_call.md │ │ │ │ │ └── playbooks │ │ │ │ │ │ ├── ci.md │ │ │ │ │ │ ├── dotcom_deleted_entirely.md │ │ │ │ │ │ └── index.md │ │ │ │ ├── index.md │ │ │ │ ├── licenses.md │ │ │ │ ├── principles-and-practices.md │ │ │ │ ├── pull-requests.md │ │ │ │ ├── pullrequest-compliance.md │ │ │ │ ├── releases │ │ │ │ │ ├── index.md │ │ │ │ │ └── procedure.md │ │ │ │ └── tracking_issues.md │ │ │ ├── roles │ │ │ │ └── index.md │ │ │ └── tools │ │ │ │ ├── backport.md │ │ │ │ ├── continuous_releasability.md │ │ │ │ ├── engineering-management.md │ │ │ │ ├── ghe-feeder-dashboard.jpg │ │ │ │ ├── ghe_feeder.md │ │ │ │ ├── grpc.md │ │ │ │ ├── grpc_cs_enablement.md │ │ │ │ ├── grpc_faq.md │ │ │ │ ├── index.md │ │ │ │ ├── infrastructure │ │ │ │ ├── ci │ │ │ │ │ └── index.md │ │ │ │ ├── dev.md │ │ │ │ ├── gcp.md │ │ │ │ ├── ghe.md │ │ │ │ ├── gitlab.md │ │ │ │ └── index.md │ │ │ │ ├── observability │ │ │ │ ├── disk-metrics.md │ │ │ │ ├── dotcom.md │ │ │ │ ├── index.md │ │ │ │ ├── learning_resources.md │ │ │ │ ├── monitoring.md │ │ │ │ ├── monitoring_architecture.excalidraw │ │ │ │ ├── monitoring_architecture.md │ │ │ │ └── monitoring_pillars.md │ │ │ │ ├── resources_report.md │ │ │ │ ├── scaletesting.md │ │ │ │ └── slackgenie.md │ │ ├── guilds │ │ │ └── frontend-crew.md │ │ ├── index.md │ │ ├── infrastructure │ │ │ ├── CODENOTIFY │ │ │ ├── aws.md │ │ │ ├── index.md │ │ │ ├── on-call.md │ │ │ ├── ship_okr_square.png │ │ │ └── weekly-reports.md │ │ ├── linear-trial.md │ │ ├── managed-services │ │ │ ├── build-tracker-prod.svg │ │ │ ├── build-tracker.md │ │ │ ├── cloud-ops-dev.svg │ │ │ ├── cloud-ops-prod.svg │ │ │ ├── cloud-ops.md │ │ │ ├── cloud-relay-prod.svg │ │ │ ├── cloud-relay.md │ │ │ ├── cody-analytics-dev.svg │ │ │ ├── cody-analytics-prod.svg │ │ │ ├── cody-analytics.md │ │ │ ├── entitler-prod.svg │ │ │ ├── entitler.md │ │ │ ├── gatekeeper-prod.svg │ │ │ ├── gatekeeper.md │ │ │ ├── index.md │ │ │ ├── msp-testbed-robert.svg │ │ │ ├── msp-testbed-test.svg │ │ │ ├── msp-testbed.md │ │ │ ├── pings-prod.svg │ │ │ ├── pings.md │ │ │ ├── releaseregistry-dev.svg │ │ │ ├── releaseregistry-prod.svg │ │ │ ├── releaseregistry.md │ │ │ ├── sams-dev.svg │ │ │ ├── sams-prod.svg │ │ │ ├── sams.md │ │ │ ├── sourcegraph-accounts-dev.svg │ │ │ ├── sourcegraph-accounts-prod.svg │ │ │ ├── sourcegraph-accounts.md │ │ │ ├── support-integration-prod.svg │ │ │ ├── support-integration.md │ │ │ ├── telemetry-gateway-dev.svg │ │ │ ├── telemetry-gateway-prod.svg │ │ │ └── telemetry-gateway.md │ │ ├── product-planning.md │ │ ├── sdlc.md │ │ ├── submitting-a-bug-report.md │ │ ├── teams │ │ │ ├── app │ │ │ │ ├── analytics.md │ │ │ │ ├── app-faq.md │ │ │ │ └── index.md │ │ │ ├── code-intelligence │ │ │ │ ├── CODENOTIFY │ │ │ │ ├── code-walkthrough.md │ │ │ │ ├── glossary.md │ │ │ │ └── index.md │ │ │ ├── code-search │ │ │ │ ├── batch-changes │ │ │ │ │ ├── ce-onboarding.md │ │ │ │ │ ├── go-to-market │ │ │ │ │ │ ├── index.md │ │ │ │ │ │ └── server-side │ │ │ │ │ │ │ ├── index.md │ │ │ │ │ │ │ ├── local-run.svg │ │ │ │ │ │ │ └── server-side-run.svg │ │ │ │ │ ├── metrics.md │ │ │ │ │ ├── onboarding.md │ │ │ │ │ └── supporting-batch-changes.md │ │ │ │ ├── code-insights │ │ │ │ │ ├── go_to_market.md │ │ │ │ │ ├── index.md │ │ │ │ │ └── maintenance-handoff.md │ │ │ │ └── index.md │ │ │ ├── cody-strat │ │ │ │ └── index.md │ │ │ ├── cody │ │ │ │ ├── about-cody-faq.md │ │ │ │ ├── cody-exceptions.md │ │ │ │ ├── cody-gateway │ │ │ │ │ ├── index.md │ │ │ │ │ └── using.md │ │ │ │ ├── cody-marketing.md │ │ │ │ ├── index.md │ │ │ │ └── llm-proxy │ │ │ │ │ └── index.md │ │ │ ├── core-services │ │ │ │ ├── CODENOTIFY │ │ │ │ ├── google-front-end │ │ │ │ │ └── index.md │ │ │ │ ├── index.md │ │ │ │ ├── managed-services │ │ │ │ │ ├── incidents.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── pings.md │ │ │ │ │ ├── platform.md │ │ │ │ │ ├── rollout.md │ │ │ │ │ └── telemetry-gateway.md │ │ │ │ └── sams │ │ │ │ │ ├── index.md │ │ │ │ │ └── token_scope_specification.md │ │ │ ├── devinfra │ │ │ │ ├── index.md │ │ │ │ ├── newsletter.md │ │ │ │ └── processes.md │ │ │ ├── devops │ │ │ │ ├── deploy-code-change.md │ │ │ │ ├── disaster-recovery.md │ │ │ │ ├── dns.md │ │ │ │ ├── dotcom-postgres.md │ │ │ │ ├── gcp-slack-notification-terraform.md │ │ │ │ ├── index.md │ │ │ │ ├── onboarding.md │ │ │ │ ├── opsgenie-routing.md │ │ │ │ ├── opsgenie.md │ │ │ │ ├── persistent-disk-backup-schedule.md │ │ │ │ ├── resize-disks-in-statefulset.md │ │ │ │ ├── silencing-alerts.md │ │ │ │ ├── sourcegraph_cloud.png │ │ │ │ └── update_sg_website_config.md │ │ │ ├── graph │ │ │ │ └── index.md │ │ │ ├── index.md │ │ │ ├── own │ │ │ │ └── index.md │ │ │ ├── release │ │ │ │ ├── CODENOTIFY │ │ │ │ ├── customers │ │ │ │ │ ├── index.md │ │ │ │ │ └── replicas.md │ │ │ │ ├── guides │ │ │ │ │ └── k8s.md │ │ │ │ ├── index.md │ │ │ │ ├── onboarding.md │ │ │ │ ├── processes.md │ │ │ │ └── team │ │ │ │ │ └── index.md │ │ │ ├── search-platform │ │ │ │ ├── CODENOTIFY │ │ │ │ ├── guiding_principles_core.md │ │ │ │ ├── index.md │ │ │ │ ├── onboarding.md │ │ │ │ └── perf.md │ │ │ └── source │ │ │ │ ├── how-gitserver-works.md │ │ │ │ ├── how-repo-updater-works.md │ │ │ │ ├── index.md │ │ │ │ ├── strategy.md │ │ │ │ └── support_rotation.md │ │ ├── tech-lead.md │ │ └── working-with-issues.md │ ├── finance │ │ ├── Gtmopsreview.md │ │ ├── arr-definitions.md │ │ ├── deal-desk │ │ │ ├── deal-desk-faqs.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── multi-sku-arr.md │ │ ├── process │ │ │ ├── Captivate.md │ │ │ ├── ap.md │ │ │ ├── ar.md │ │ │ ├── collections.md │ │ │ ├── collectionsclassmatrix.md │ │ │ ├── commissions.md │ │ │ ├── index.md │ │ │ └── payables.md │ │ └── topline-definitions.md │ ├── index.md │ ├── legal │ │ ├── index.md │ │ └── process │ │ │ ├── ContractReviewandSignatureAuthorityPolicy.md │ │ │ └── index.md │ ├── marketing │ │ ├── CODENOTIFY │ │ ├── blog.md │ │ ├── career-development │ │ │ ├── comms-framework.md │ │ │ ├── index.md │ │ │ └── product-marketing-framework.md │ │ ├── comms │ │ │ ├── field marketing.md │ │ │ └── index.md │ │ ├── creative-ops.md │ │ ├── index.md │ │ ├── marketing_rapid_response_process │ │ │ └── index.md │ │ ├── process │ │ │ ├── Platform positioning.png │ │ │ ├── adding_screenshots_screen_recording.md │ │ │ ├── atlassian_fisheye_vs_sourcegraph.md │ │ │ ├── bitbucket_cloud_vs_sourcegraph.md │ │ │ ├── bitbucket_server_vs_sourcegraph.md │ │ │ ├── blog_post_help.md │ │ │ ├── github_vs_sourcegraph.md │ │ │ ├── gitlab_vs_sourcegraph.md │ │ │ ├── google_cloud_source_repositories_vs_sourcegraph.md │ │ │ ├── hound_vs_sourcegraph.md │ │ │ ├── index.md │ │ │ ├── livegrep_vs_sourcegraph.md │ │ │ ├── messaging.md │ │ │ ├── opengrok_vs_sourcegraph.md │ │ │ ├── personas.md │ │ │ ├── phabricator_vs_sourcegraph.md │ │ │ ├── positioning.md │ │ │ ├── product_documentation.md │ │ │ └── value-drivers.md │ │ ├── product-marketing │ │ │ ├── gtm_hub.md │ │ │ ├── index.md │ │ │ ├── launch-activity-list.md │ │ │ ├── marketing_launch_tiers.md │ │ │ ├── naming_guide.md │ │ │ ├── notebooks_gtm.md │ │ │ └── product-marketing-bios.md │ │ ├── starship.md │ │ └── swag.md │ ├── people-talent │ │ ├── Required-posting-page.md │ │ ├── Required-workplace-postings.md │ │ ├── ada.md │ │ ├── background-check-policy.md │ │ ├── buddy-program.md │ │ ├── e-verify.md │ │ ├── email-changes.md │ │ ├── emergency-support.md │ │ ├── equity-refresh-program.md │ │ ├── family-support.md │ │ ├── git-intro.md │ │ ├── index.md │ │ ├── learning-and-development.md │ │ ├── new-hire-videos.md │ │ ├── onboarding-feedback-milestones.md │ │ ├── onboarding-for-hiring-managers.md │ │ ├── onboarding-mentor.md │ │ ├── onboarding-reviews.md │ │ ├── onboarding │ │ │ └── index.md │ │ ├── outside-employment.md │ │ ├── people-ops │ │ │ ├── process │ │ │ │ ├── Leaving_Sourcegraph_resources_for_managers.md │ │ │ │ ├── anti-corruption.md │ │ │ │ ├── compensation-and-leveling │ │ │ │ │ ├── compensation-role-changes.md │ │ │ │ │ ├── equity-internal.md │ │ │ │ │ ├── index.md │ │ │ │ │ └── preparing-for-calibrations.md │ │ │ │ ├── employment_verification.md │ │ │ │ ├── giving-feedback.md │ │ │ │ ├── how-we-engage-talent-outside-the-us │ │ │ │ │ ├── deel.md │ │ │ │ │ ├── index.md │ │ │ │ │ └── temporary-contractors.md │ │ │ │ ├── impact_review_infographic.svg │ │ │ │ ├── leaving.md │ │ │ │ ├── moving.md │ │ │ │ ├── name-changes.md │ │ │ │ ├── onboarding.md │ │ │ │ └── teammate-sentiment │ │ │ │ │ ├── culture-meetings.md │ │ │ │ │ ├── engagement-survey.md │ │ │ │ │ ├── exit-survey.md │ │ │ │ │ ├── impact-reviews │ │ │ │ │ ├── delivering-impact-reviews.md │ │ │ │ │ └── index.md │ │ │ │ │ └── pulse-survey.md │ │ │ └── tools │ │ │ │ ├── bamboohr.md │ │ │ │ ├── internal-compliance.md │ │ │ │ ├── internal-employment-verification.md │ │ │ │ ├── internal-offboarding.md │ │ │ │ ├── internal-onboarding.md │ │ │ │ ├── internal-swag.md │ │ │ │ ├── manager-guide.md │ │ │ │ ├── peo.md │ │ │ │ └── people-ops-faqs.md │ │ ├── people-talent-resources.md │ │ ├── resources-for-managers.md │ │ ├── resources-for-new-hires │ │ │ ├── index.md │ │ │ └── new-teammate-setup.md │ │ ├── resources_for_candidates.md │ │ ├── swag.md │ │ ├── talent │ │ │ ├── index.md │ │ │ ├── internship │ │ │ │ ├── index.md │ │ │ │ └── internship-recruiting-and-offers.md │ │ │ ├── process │ │ │ │ ├── after_the_offer.md │ │ │ │ ├── candidate-rejection-reasons.md │ │ │ │ ├── engineering_interview_process.md │ │ │ │ ├── engineering_interview_process_candidates.md │ │ │ │ ├── evaluating_values.md │ │ │ │ ├── extending_an_offer.md │ │ │ │ ├── hacker-news-who-is-hiring.md │ │ │ │ ├── headcount_changes.md │ │ │ │ ├── how_to_be_a_sourcer_at_sourcegraph.md │ │ │ │ ├── identifying_candidates.md │ │ │ │ ├── index.md │ │ │ │ ├── interview_process.md │ │ │ │ ├── linkedin.md │ │ │ │ ├── opening_a_new_job.md │ │ │ │ ├── recruitment_branding.md │ │ │ │ ├── reference_check_questions.md │ │ │ │ ├── scenarios_and_escalation_process.md │ │ │ │ ├── talent_metrics.md │ │ │ │ └── types_of_interviews.md │ │ │ └── tools │ │ │ │ ├── guide_to_using_brighthire.md │ │ │ │ ├── guide_to_using_greenhouse.md │ │ │ │ ├── guide_to_using_talentwall.md │ │ │ │ ├── index.md │ │ │ │ ├── interview_training.md │ │ │ │ └── resources_for_recruiting_operations.md │ │ ├── teamalignment.md │ │ ├── total-rewards.md │ │ ├── total-rewards │ │ │ └── mental-health.md │ │ └── wellness.md │ ├── product │ │ ├── CODENOTIFY │ │ ├── career-development │ │ │ └── framework.md │ │ ├── design │ │ │ ├── artifacts │ │ │ │ └── index.md │ │ │ ├── brand_guidelines │ │ │ │ ├── brand-platform-diagram.svg │ │ │ │ ├── brand-platform.md │ │ │ │ ├── color.md │ │ │ │ ├── color │ │ │ │ │ ├── color_misuse_ada.svg │ │ │ │ │ ├── color_misuse_ada_ui.svg │ │ │ │ │ ├── color_misuse_contrast.svg │ │ │ │ │ ├── color_misuse_new_colors.svg │ │ │ │ │ ├── color_misuse_saturate.svg │ │ │ │ │ ├── color_misuse_too_many_colors.svg │ │ │ │ │ ├── color_use_1.svg │ │ │ │ │ └── color_use_2.svg │ │ │ │ ├── colors.scss │ │ │ │ ├── how_we_express_our_brand.svg │ │ │ │ ├── index.md │ │ │ │ ├── interactive-color-palette.js │ │ │ │ ├── logo.md │ │ │ │ ├── logo │ │ │ │ │ ├── history │ │ │ │ │ │ ├── 2013.svg │ │ │ │ │ │ ├── 2014.svg │ │ │ │ │ │ ├── 2015.1.svg │ │ │ │ │ │ ├── 2015.2.svg │ │ │ │ │ │ ├── 2017.svg │ │ │ │ │ │ └── 2020.svg │ │ │ │ │ ├── logo_allowable_placement_1.svg │ │ │ │ │ ├── logo_allowable_placement_2.svg │ │ │ │ │ ├── logo_allowable_placement_3.svg │ │ │ │ │ ├── logo_placement.svg │ │ │ │ │ ├── logo_preferred_placement.svg │ │ │ │ │ ├── minimum_digital_logo_size.svg │ │ │ │ │ ├── minimum_print_logo_size.svg │ │ │ │ │ └── versions │ │ │ │ │ │ ├── Sourcegraph_Logo_1c_black.svg │ │ │ │ │ │ ├── Sourcegraph_Logo_1c_white.svg │ │ │ │ │ │ ├── Sourcegraph_Logo_FullColor_dark.svg │ │ │ │ │ │ ├── Sourcegraph_Logo_FullColor_light.svg │ │ │ │ │ │ ├── Sourcegraph_Logomark_BLK.svg │ │ │ │ │ │ ├── Sourcegraph_Logomark_Color.svg │ │ │ │ │ │ ├── Sourcegraph_Logomark_WHT.svg │ │ │ │ │ │ └── Sourcegraph_Wordmark_BLK.svg │ │ │ │ ├── typography.md │ │ │ │ └── what-how-why-diagram.svg │ │ │ ├── career-development.md │ │ │ ├── design-and-engineering-collaboration.md │ │ │ ├── design-and-interaction-guidelines.md │ │ │ ├── design_collaboration_review │ │ │ │ └── index.md │ │ │ ├── documents_templates │ │ │ │ └── index.md │ │ │ ├── external_resources │ │ │ │ └── index.md │ │ │ ├── icons-example.png │ │ │ ├── index.md │ │ │ ├── large-margin-example.png │ │ │ ├── margins-example.png │ │ │ ├── product_design_principles.md │ │ │ ├── research │ │ │ │ ├── compensating-research-participants.md │ │ │ │ ├── conducting-evaluative-research.md │ │ │ │ ├── index.md │ │ │ │ ├── recruiting-research-participants.md │ │ │ │ ├── sourcegraph-research-panel.md │ │ │ │ ├── usability-metrics.md │ │ │ │ ├── usability-testing-how-to.md │ │ │ │ ├── useful-testing-activities.md │ │ │ │ ├── user-research-instance.md │ │ │ │ ├── user-testing-com.md │ │ │ │ └── using-dovetail-to-document-insights.md │ │ │ ├── signup-example.png │ │ │ ├── software_systems │ │ │ │ ├── index.md │ │ │ │ ├── marketing-dls.md │ │ │ │ ├── templates │ │ │ │ │ ├── design-research-spike.md │ │ │ │ │ ├── extra-large-template.md │ │ │ │ │ ├── extra-small-template.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── large-template.md │ │ │ │ │ ├── medium-template.md │ │ │ │ │ └── small-template.md │ │ │ │ └── wildcard_design_system │ │ │ │ │ ├── index.md │ │ │ │ │ ├── user-interface-patterns.md │ │ │ │ │ ├── using-components.md │ │ │ │ │ └── using-figma.md │ │ │ ├── team_rituals │ │ │ │ └── index.md │ │ │ ├── visual_design_checklist.md │ │ │ └── ways_of_working │ │ │ │ └── index.md │ │ ├── index.md │ │ ├── onboarding │ │ │ ├── index.md │ │ │ └── recommended_reading.md │ │ ├── process │ │ │ ├── feedback │ │ │ │ ├── product_feedback_monitoring.md │ │ │ │ ├── surfacing_product_requests.md │ │ │ │ └── user_stakeholder_feedback.md │ │ │ ├── gtm │ │ │ │ ├── licensing.md │ │ │ │ ├── new_feature_legal_questionnaire.md │ │ │ │ ├── pricing.md │ │ │ │ ├── release_blog_post_template.md.txt │ │ │ │ └── rollout_process.md │ │ │ ├── index.md │ │ │ ├── prioritize_and_build │ │ │ │ ├── deprecation_process.md │ │ │ │ ├── index.md │ │ │ │ └── prioritizing.md │ │ │ ├── product_learning.md │ │ │ └── user_research │ │ │ │ ├── index.md │ │ │ │ ├── user_journey_maps.md │ │ │ │ ├── user_research_candidates_from_data.md │ │ │ │ ├── user_research_compensation.md │ │ │ │ ├── user_research_observer.md │ │ │ │ └── user_research_participant.md │ │ ├── product-design-sync.md │ │ ├── roles │ │ │ ├── index.md │ │ │ ├── interviews │ │ │ │ ├── hm_intro_call.md │ │ │ │ ├── index.md │ │ │ │ ├── initial_screen.md │ │ │ │ ├── product_designer │ │ │ │ │ ├── index.md │ │ │ │ │ ├── pd_design_working_session.md │ │ │ │ │ └── pd_portfolio_review.md │ │ │ │ └── product_manager │ │ │ │ │ ├── index.md │ │ │ │ │ └── pm_rfc_project.md │ │ │ └── product_manager_engineering_manager_responsibilities.md │ │ ├── team │ │ │ ├── index.md │ │ │ └── product_teams.md │ │ └── tools │ │ │ ├── deployment_options.md │ │ │ ├── feature_compatibility.md │ │ │ └── index.md │ ├── sales │ │ ├── CODENOTIFY │ │ ├── career-development │ │ │ ├── ae-competencies.md │ │ │ ├── ae-framework.md │ │ │ ├── index.md │ │ │ ├── sdr-competencies.md │ │ │ └── sdr-framework.md │ │ ├── demand-gen │ │ │ ├── account_based_experience.md │ │ │ ├── ad_conversion_flows.md │ │ │ ├── adam-readme.md │ │ │ ├── digital_marketing_programs.md │ │ │ ├── erica-readme.md │ │ │ ├── greg-readme.md │ │ │ ├── index.md │ │ │ ├── jake-readme.md │ │ │ └── sarah-readme.md │ │ ├── hiring │ │ │ └── index.md │ │ ├── index.md │ │ ├── onboarding │ │ │ ├── ae-onboarding-mentor.md │ │ │ ├── data_onboarding.md │ │ │ ├── index.md │ │ │ ├── joining_customer_calls.md │ │ │ ├── quiz.md │ │ │ └── transition-ae-onboarding-mentor.md │ │ ├── process │ │ │ ├── forecasting.md │ │ │ ├── index.md │ │ │ ├── saleslegal.md │ │ │ └── salessecurity.md │ │ ├── roles │ │ │ └── index.md │ │ ├── sales-enablement │ │ │ ├── contentmanagement.md │ │ │ ├── deployment-methods-and-products.md │ │ │ └── index.md │ │ ├── sales-ops │ │ │ ├── index.md │ │ │ ├── marketing-ops.md │ │ │ ├── onboarding.md │ │ │ └── prospecting.md │ │ ├── sales-performance-goals.md │ │ ├── sdrteam │ │ │ ├── Recommended Reads │ │ │ └── index.md │ │ ├── smb │ │ │ ├── cloud_instances.md │ │ │ ├── index.md │ │ │ └── smb-handoff.md │ │ └── tools │ │ │ ├── GCP_Marketplace_Guidance.md │ │ │ ├── common_customer_questions.md │ │ │ ├── index.md │ │ │ ├── records.md │ │ │ ├── referral_and_reseller_policy.md │ │ │ ├── salesforce.md │ │ │ └── salesresources.md │ ├── security │ │ ├── CODENOTIFY │ │ ├── admin-access-internal-instances.md │ │ ├── appsec-walkthrough.md │ │ ├── cody-guidelines.md │ │ ├── continuous-code-review-process.md │ │ ├── cryptography-policy.md │ │ ├── governance-risk-compliance │ │ ├── img │ │ │ ├── continuous-code-reviews.png │ │ │ └── sharing-with-1password.png │ │ ├── index.md │ │ ├── infrastructure │ │ │ ├── index.md │ │ │ └── playbooks.md │ │ ├── knowledge-base │ │ │ ├── AWS-CLI-MFA.md │ │ │ ├── broken-access-control.md │ │ │ ├── index.md │ │ │ ├── using-iap.md │ │ │ └── yubikey-faq.md │ │ ├── poker-planning.md │ │ ├── repo-policies.md │ │ ├── reporting-vulnerabilities.md │ │ ├── safebase-account-manager-user-guide.md │ │ ├── secret-sharing-policy.md │ │ ├── secure-code-review.md │ │ ├── secure-code-training.md │ │ ├── security-incident-response-process.md │ │ ├── security-incident-response.md │ │ ├── security-onboarding.md │ │ ├── security-risk-management-process.md │ │ ├── security-support-rotation.md │ │ ├── security-trust-center.md │ │ ├── tooling │ │ │ ├── checkov.md │ │ │ ├── entitle.md │ │ │ ├── entitle_cloudflare.md │ │ │ ├── entitle_github.md │ │ │ ├── entitle_request.md │ │ │ ├── index.md │ │ │ ├── push-protection.md │ │ │ ├── semgrep.md │ │ │ ├── terraform-cloud.md │ │ │ └── trivy │ │ │ │ ├── 3-43-0.md │ │ │ │ ├── 3-43-1.md │ │ │ │ ├── 3-43-2.md │ │ │ │ ├── 4-0-0.md │ │ │ │ ├── 4-0-1.md │ │ │ │ ├── 4-1-0.md │ │ │ │ ├── 4-1-1.md │ │ │ │ ├── 4-1-2.md │ │ │ │ ├── 4-1-3.md │ │ │ │ ├── 4-2-0.md │ │ │ │ ├── 4-2-1.md │ │ │ │ ├── 4-3-0.md │ │ │ │ ├── 4-3-1.md │ │ │ │ ├── 4-4-0.md │ │ │ │ ├── 4-4-1.md │ │ │ │ ├── 4-4-2.md │ │ │ │ ├── 4-5-0.md │ │ │ │ ├── 4-5-1.md │ │ │ │ ├── 5-0-0.md │ │ │ │ ├── 5-0-1.md │ │ │ │ ├── 5-0-2.md │ │ │ │ ├── 5-0-3.md │ │ │ │ ├── 5-0-4.md │ │ │ │ ├── 5-0-5.md │ │ │ │ ├── 5-0-6.md │ │ │ │ ├── 5-1-0.md │ │ │ │ ├── 5-1-1.md │ │ │ │ ├── 5-1-2.md │ │ │ │ ├── 5-1-3.md │ │ │ │ ├── 5-1-4.md │ │ │ │ ├── 5-1-5.md │ │ │ │ ├── 5-1-6.md │ │ │ │ ├── 5-1-7.md │ │ │ │ ├── 5-1-8.md │ │ │ │ ├── 5-1-9.md │ │ │ │ ├── 5-2-0.md │ │ │ │ ├── 5-2-1.md │ │ │ │ ├── 5-2-2.md │ │ │ │ ├── 5-2-3.md │ │ │ │ ├── 5-2-4.md │ │ │ │ ├── 5-2-5.md │ │ │ │ ├── 5-2-6.md │ │ │ │ ├── 5-2-7.md │ │ │ │ ├── 5-3-0.md │ │ │ │ ├── 5-3-1.md │ │ │ │ ├── 5-3-2.md │ │ │ │ ├── 5-3-3.md │ │ │ │ └── index.md │ │ ├── vulnerability-management-process.md │ │ └── what-we-do.md │ ├── tech-ops │ │ ├── index.md │ │ ├── process │ │ │ ├── application_access_request.md │ │ │ ├── buyback.md │ │ │ ├── index.md │ │ │ ├── internal-security │ │ │ │ ├── computer-standards.md │ │ │ │ ├── index.md │ │ │ │ ├── passwords.md │ │ │ │ ├── phishing-spoofing.md │ │ │ │ └── traveling.md │ │ │ ├── team_device_usage_privacy.md │ │ │ ├── vendor-request.md │ │ │ └── vendor-reviewer-guide.md │ │ └── tools │ │ │ ├── Okta │ │ │ ├── main.md │ │ │ ├── okta-activation-steps.md │ │ │ └── okta-verify-troubleshooting-steps.md │ │ │ ├── computer-setup.md │ │ │ ├── drive.md │ │ │ ├── endpoint-antivirus.md │ │ │ ├── googlegroups.md │ │ │ └── index.md │ └── technical-success │ │ ├── ce │ │ ├── career-growth │ │ │ ├── cemgr-candidates-internal.md │ │ │ └── index.md │ │ ├── cte │ │ │ ├── index.md │ │ │ └── roadmap.md │ │ ├── demo │ │ │ ├── cody.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── onboarding │ │ │ ├── ce-onboarding-mentor.md │ │ │ ├── deployment-methods.md │ │ │ ├── education.md │ │ │ ├── enterprise-vs-oss.md │ │ │ └── index.md │ │ ├── process │ │ │ ├── Cloud-Migration-for-Onprem-Customers.md │ │ │ ├── create-new-license.md │ │ │ ├── demo-repo-contribution.md │ │ │ ├── leaving-insiders-build.md │ │ │ ├── license_keys.md │ │ │ ├── security-reviews.md │ │ │ └── tech-win-process.md │ │ ├── team-culture │ │ │ ├── index.md │ │ │ ├── team-norms.md │ │ │ └── working-with-customers.md │ │ └── tools │ │ │ ├── demo_instances.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── ps │ │ ├── index.md │ │ ├── process │ │ │ ├── ie-process.md │ │ │ ├── impl-strategies.md │ │ │ ├── implementation-cross-team-collaboration.md │ │ │ ├── implementation-prerequisites.md │ │ │ └── implementation-ta-handoff.md │ │ ├── ps-offerings.md │ │ ├── reference-sandboxes.md │ │ └── tpm │ │ │ └── index.md │ │ ├── support │ │ ├── career-growth │ │ │ ├── cs-career-framework.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── onboarding │ │ │ ├── cs-onboard-mentor.md │ │ │ ├── customer-support-manager-onboarding.md │ │ │ ├── customer-support-onboarding.md │ │ │ └── index.md │ │ ├── process │ │ │ ├── business-continuity-plan.md │ │ │ ├── case-transitions.md │ │ │ ├── ce-faq.md │ │ │ ├── cloud-maintenance-window.md │ │ │ ├── collaboration-time.md │ │ │ ├── customer-exceptions.md │ │ │ ├── customer-support-triaging.md │ │ │ ├── enablement │ │ │ │ ├── debugging-tips.md │ │ │ │ ├── docker-compose-migrations.md │ │ │ │ ├── eng-support-learn-from-eachother.md │ │ │ │ ├── gcp-sg-k8s.md │ │ │ │ ├── high-level-overview-index.md │ │ │ │ ├── index.md │ │ │ │ ├── k8-migration.md │ │ │ │ ├── k8s-resources.md │ │ │ │ ├── keeping-up-with-resolved-issues.md │ │ │ │ ├── minikube-helm.md │ │ │ │ ├── minikube.md │ │ │ │ ├── pgsql-guide.md │ │ │ │ ├── shape-your-voice.md │ │ │ │ ├── support-values-enablement.md │ │ │ │ └── zendesk-ticket-exporter.md │ │ │ ├── engaging-other-teams.md │ │ │ ├── foqal.md │ │ │ ├── how-to-tickets.md │ │ │ ├── index.md │ │ │ ├── k8-migration.md │ │ │ ├── knowledge-base.md │ │ │ ├── known-issues.md │ │ │ ├── managing-cs-k8s.md │ │ │ ├── moving-tickets-based-on-timezone.md │ │ │ ├── non-support-emails.md │ │ │ ├── p4-enablement.md │ │ │ ├── permanently_deleting_user_data.md │ │ │ ├── product-feedback-process.md │ │ │ ├── product-gap-process.md │ │ │ ├── releases.md │ │ │ ├── serving-as-a-messenger-during-incidents.md │ │ │ ├── support-agent-customer-slack-channels.md │ │ │ ├── support-capacity-levels-and-contingencies.md │ │ │ ├── support-managed-instances.md │ │ │ ├── support-prioritization.md │ │ │ ├── support-schedule.md │ │ │ ├── support-time-off-guidelines.md │ │ │ └── support-workflow.md │ │ ├── team-culture │ │ │ └── index.md │ │ ├── team │ │ │ ├── alex-readme.md │ │ │ ├── assigned-app-eng.md │ │ │ ├── enrique-readme.md │ │ │ ├── gabe-readme.md │ │ │ ├── index.md │ │ │ ├── jason-readme.md │ │ │ ├── jon-readme.md │ │ │ ├── marc-readme.md │ │ │ ├── mariam-readme.md │ │ │ ├── michael-readme.md │ │ │ ├── morgan-readme.md │ │ │ ├── rakesh-readme.md │ │ │ ├── shawntee-readme.md │ │ │ ├── stompy-readme.md │ │ │ ├── team-meeting-norms.md │ │ │ └── warren-readme.md │ │ └── tools │ │ │ ├── debugging-cheat-sheet.md │ │ │ ├── index.md │ │ │ └── support-logging-guide.md │ │ └── ta │ │ ├── digital-success │ │ ├── index.md │ │ └── team-culture │ │ │ ├── digital-success-program.md │ │ │ ├── processes.md │ │ │ └── team-norms.md │ │ ├── enterprise-success │ │ ├── career-growth │ │ │ ├── ta-career-development.md │ │ │ └── tamgr-candidates-internal.md │ │ ├── index.md │ │ ├── onboarding │ │ │ └── ta-onboarding.md │ │ ├── ta-playbooks │ │ │ ├── ta-cadence.md │ │ │ └── ta-scenarios.md │ │ └── team-culture │ │ │ ├── account-management-activities.md │ │ │ ├── customer-journey.md │ │ │ ├── playbooks.md │ │ │ ├── processes.md │ │ │ ├── team-norms.md │ │ │ └── working-with-the-sourcegraph-graphql-api.md │ │ ├── index.md │ │ └── scaled-success │ │ ├── index.md │ │ └── team-resources │ │ ├── index.md │ │ ├── scaled-ta-program-overview.md │ │ └── team-norms.md ├── handbook │ ├── editing │ │ ├── add-yourself-to-team-page.md │ │ ├── adding-new-files.md │ │ ├── announcing-handbook-updates.md │ │ ├── changes-after-pr.md │ │ ├── content-generation.md │ │ ├── delete-a-page.md │ │ ├── edit-a-single-file.md │ │ ├── handbook-check-failures.md │ │ ├── handbook-content-best-practices.md │ │ ├── handbook-edit-faqs.md │ │ ├── handbook-images-video.md │ │ ├── hiding-the-sidebar.md │ │ ├── index.md │ │ ├── linking-within-handbook.md │ │ ├── markdown-resources.md │ │ ├── move-a-page.md │ │ ├── multiple-changes-single-pr.md │ │ ├── reviewing-a-proposal.md │ │ └── run-a-local-preview.md │ ├── handbook-tips.md │ └── index.md ├── index.md ├── strategy-goals │ ├── index.md │ ├── msem.md │ └── strategy │ │ ├── app │ │ └── index.md │ │ ├── batch-changes │ │ └── index.md │ │ ├── code-exploration │ │ └── index.md │ │ ├── code-insights │ │ └── index.md │ │ ├── code-intelligence │ │ └── index.md │ │ ├── cody │ │ └── index.md │ │ ├── devinfra │ │ └── index.md │ │ ├── index.md │ │ ├── own │ │ └── index.md │ │ ├── platform │ │ ├── graph.md │ │ ├── search_platform.md │ │ └── source.md │ │ ├── release │ │ └── index.md │ │ └── search │ │ ├── core.md │ │ ├── index.md │ │ └── product.md └── team │ ├── ceo │ ├── index.md │ └── roles.md │ ├── epd-resources.md │ ├── executive-business-partners.md │ ├── index.md │ ├── locations.geojson │ ├── locations.md │ └── org_chart.md ├── data ├── README.md ├── code_hosts.yml ├── deployment_options.yml ├── features.yml ├── glossary.yml ├── guilds.yml ├── maturity_levels.yml ├── notion_migration.yaml ├── product_teams.yml ├── team.yml └── use_cases.yml ├── field-gtm-and-ops.md ├── jest.config.mjs ├── netlify.toml ├── next-env.d.ts ├── next-sitemap.config.js ├── next.config.mjs ├── package.json ├── page_templates └── strategy_template.md ├── pnpm-lock.yaml ├── prettier.config.js ├── public ├── opensearch.xml └── static │ ├── sourcegraph-logo.svg │ ├── sourcegraph-mark.png │ ├── sourcegraph-mark.svg │ └── sourcegraph-mark_64.png ├── renovate.json ├── schema ├── code_hosts.schema.json ├── cross-product_owners.schema.json ├── deployment_options.schema.json ├── engineering_ownership.schema.json ├── features.schema.json ├── glossary.schema.json ├── guilds.schema.json ├── maturity_levels.schema.json ├── product_orgs.schema.json ├── product_teams.schema.json ├── team.schema.json └── use_cases.schema.json ├── src ├── components │ ├── Banner.tsx │ ├── EditSection.tsx │ └── TableOfContents.tsx ├── lib │ ├── api.ts │ ├── constants.ts │ ├── dateHighlighter.ts │ ├── generatedMarkdown.js │ ├── getAllPages.ts │ ├── getGitHistory.ts │ ├── markdownToHtml.ts │ ├── omitUndefinedFields.ts │ ├── rehypeGoLinks.ts │ ├── rehypeMarkupDates.ts │ ├── rehypeSlackChannels.ts │ └── rehypeSmartypants.ts ├── pages │ ├── [...slug].tsx │ ├── _app.tsx │ ├── _document.tsx │ ├── index.tsx │ └── meta.tsx ├── scripts │ ├── check-large-files.ps1 │ ├── check-links.mjs │ ├── copy-assets.ts │ ├── generate-redirects.mjs │ ├── getMovedPagesFromHistory.mjs │ ├── redirects.mjs │ ├── redirects.test.mjs │ ├── uri.mjs │ └── validateData.mjs └── styles │ ├── badges.scss │ ├── cards.scss │ ├── content.scss │ ├── index.scss │ ├── layout.scss │ ├── levels-table.scss │ ├── page.scss │ └── search.scss └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | end_of_line = lf 3 | trim_trailing_whitespace = true 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | 8 | [*.{ts,tsx,mjs,css,scss}] 9 | indent_size = 4 10 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | use asdf 2 | export PATH="$(go env GOBIN):$PATH" 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/handbook-content.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 📝 Handbook content 3 | about: An edit or fix that should be made to a page, a new page that should be created, a reorganization, etc. 4 | labels: '📝 Handbook content' 5 | --- 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/handbook-website.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🏗 Handbook website 3 | about: Any issues and ideas related to the handbook website, not the content of the handbook. 4 | labels: '🏗 Handbook website' 5 | --- 6 | -------------------------------------------------------------------------------- /.github/workflows/build-handbook.yml: -------------------------------------------------------------------------------- 1 | name: Check handbook builds correctly 2 | 3 | on: 4 | - push 5 | 6 | jobs: 7 | # geojson: 8 | # name: Teammate locations file is valid 9 | # runs-on: ubuntu-latest 10 | # steps: 11 | # - uses: actions/checkout@v3 12 | # - uses: actions/setup-node@v2 13 | # - name: install geojsonhint 14 | # run: yarn add @mapbox/geojsonhint@3.0.0 15 | # - name: geojsonhint 16 | # run: node_modules/.bin/geojsonhint < ./handbook/company/team/locations.geojson 17 | 18 | # Put everything under one job to not clutter the GitHub status checks list. 19 | build: 20 | runs-on: ubuntu-latest 21 | env: 22 | FORCE_COLOR: 3 23 | steps: 24 | - uses: actions/checkout@v3 25 | name: Checkout repository 26 | with: 27 | fetch-depth: 0 # We analyze Git history for generating redirects 28 | - name: Setup Node.js 29 | uses: actions/setup-node@v3 30 | with: 31 | node-version-file: package.json 32 | - uses: pnpm/action-setup@v2 33 | with: 34 | run_install: true 35 | - run: pnpm typecheck 36 | name: Type-check code with TypeScript compiler 37 | - run: pnpm eslint 38 | name: Lint code with ESLint 39 | - run: pnpm build 40 | name: Build handbook with NextJS 41 | -------------------------------------------------------------------------------- /.github/workflows/codenotify.yml: -------------------------------------------------------------------------------- 1 | name: Notify teammates listed in CODENOTIFY files of the changes 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened, synchronize, ready_for_review] 6 | 7 | jobs: 8 | notify: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | name: Checkout repository 13 | with: 14 | ref: ${{ github.event.pull_request.head.sha }} 15 | - uses: sourcegraph/codenotify@v0.4 16 | name: Notify teammates listed in CODENOTIFY files of the changes 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.CODENOTIFY_GITHUB_TOKEN }} 19 | -------------------------------------------------------------------------------- /.github/workflows/data-validation.yml: -------------------------------------------------------------------------------- 1 | name: Check all YAML data files are valid 2 | 3 | on: push 4 | 5 | jobs: 6 | data-validation: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v3 10 | - name: Setup Node.js 11 | uses: actions/setup-node@v3 12 | with: 13 | node-version-file: package.json 14 | - uses: pnpm/action-setup@v2 15 | with: 16 | run_install: true 17 | - name: Check all YAML data files are valid 18 | env: 19 | FORCE_COLOR: 3 20 | NPM_CONFIG_LOGLEVEL: silent 21 | run: pnpm -s validate-data 22 | -------------------------------------------------------------------------------- /.github/workflows/large-files.yml: -------------------------------------------------------------------------------- 1 | name: Check that there are no large binary files 2 | 3 | on: 4 | pull_request: 5 | types: [opened, synchronize] 6 | 7 | jobs: 8 | large-files: 9 | runs-on: macos-11 10 | steps: 11 | - uses: actions/checkout@v3 12 | name: Checkout repository 13 | with: 14 | fetch-depth: 0 # We analyze Git history 15 | 16 | - name: Check for large files 17 | uses: Amadevus/pwsh-script@v2 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 20 | with: 21 | script: | 22 | $global:ProgressPreference = 'SilentlyContinue' 23 | $global:InformationPreference = 'Continue' 24 | 25 | Set-StrictMode -Version 3.0 26 | 27 | Install-Module PowerGit -Force -ErrorAction Stop 28 | Install-Module PSGitHub -Force -ErrorAction Stop 29 | 30 | if (-not $env:GITHUB_TOKEN) { 31 | throw "No GITHUB_TOKEN env var provided" 32 | } 33 | 34 | $githubToken = ConvertTo-SecureString -String $env:GITHUB_TOKEN -AsPlainText -Force 35 | 36 | $baseRef = $github.base_ref 37 | git branch $BaseRef "origin/$BaseRef" 38 | ./src/scripts/check-large-files.ps1 -BaseRef $baseRef -PullRequestNumber $github.event.pull_request.number -GitHubToken $githubToken 39 | -------------------------------------------------------------------------------- /.github/workflows/link-check.yml: -------------------------------------------------------------------------------- 1 | name: Check all links between pages are valid 2 | 3 | on: push 4 | 5 | jobs: 6 | link-check: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v3 10 | name: Checkout repository 11 | - name: Setup Node.js 12 | uses: actions/setup-node@v3 13 | with: 14 | node-version-file: package.json 15 | - uses: pnpm/action-setup@v2 16 | with: 17 | run_install: true 18 | - name: Check all links between pages are valid 19 | env: 20 | FORCE_COLOR: 3 21 | NPM_CONFIG_LOGLEVEL: silent 22 | run: pnpm -s check-links 23 | -------------------------------------------------------------------------------- /.github/workflows/notion-migration.yaml: -------------------------------------------------------------------------------- 1 | name: Notion Migration 2 | 3 | on: 4 | pull_request: 5 | types: [opened, reopened] 6 | 7 | jobs: 8 | comment: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/github-script@v6 12 | with: 13 | script: | 14 | github.rest.issues.createComment({ 15 | issue_number: context.issue.number, 16 | owner: context.repo.owner, 17 | repo: context.repo.repo, 18 | body: "> [!WARNING] \n> As we're migrating to Notion, we want to make sure that changes to the handbook are absolutely necessary. To ensure it is the case, it's now mandatory to get an approving review to merge a pull request.\n\nExamples\n\n- Setting up a redirection to a Notion page: PR will be approved.\n- Correcting an important mistake on a page that doesn't have an equivalent yet: PR will be approved.\n- Updating content that isn't mission critical: PR will be rejected.\n\nSourcegraphers: Reach out to [#wg-notion](https://sourcegraph.slack.com/archives/C06T68DBMSA) if you have any question." 19 | }) 20 | 21 | github.rest.pulls.requestReviewers({ 22 | owner: context.repo.owner, 23 | repo: context.repo.repo, 24 | pull_number: context.issue.number, 25 | reviewers: ["madisongclark"] 26 | }); 27 | -------------------------------------------------------------------------------- /.github/workflows/pr-title.yml: -------------------------------------------------------------------------------- 1 | name: Check pull request title is descriptive 2 | 3 | on: 4 | pull_request: 5 | types: [opened, edited, synchronize, reopened] 6 | 7 | jobs: 8 | pr-title: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: morrisoncole/pr-lint-action@v1.5.1 12 | with: 13 | title-regex: ^(?!(Update|Create|Delete) [\w_\-/]+\.md$) 14 | on-failed-regex-fail-action: true 15 | on-failed-regex-request-changes: false 16 | on-failed-regex-create-review: true 17 | on-failed-regex-comment: | 18 | Hey there! 19 | Looks like you kept GitHub's placeholder commit message "${{ github.event.pull_request.title }}". 20 | To be able to merge this pull request, please edit the title to a descriptive, concise summary of the change. 21 | Think about not just _which file_ you changed, but _what change_ you made to it. 22 | A descriptive title helps teammates find changes that were made to a file when viewing the file history. 23 | 24 | You can edit the pull request title by clicking the "Edit" button to the far right of the title. 25 | 26 | Thank you! \\(^-^)/ 27 | repo-token: '${{ secrets.GITHUB_TOKEN }}' 28 | -------------------------------------------------------------------------------- /.github/workflows/prettier.yml: -------------------------------------------------------------------------------- 1 | name: Format all files nicely 2 | 3 | # This action works with pull requests and pushes 4 | on: 5 | push: 6 | branches-ignore: 7 | - main 8 | 9 | jobs: 10 | prettier: 11 | runs-on: ubuntu-latest 12 | env: 13 | FORCE_COLOR: 3 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v3 17 | with: 18 | # Make sure the actual branch is checked out when running on pull requests 19 | ref: ${{ github.head_ref }} 20 | persist-credentials: false 21 | 22 | - name: Setup Node.js 23 | uses: actions/setup-node@v3 24 | with: 25 | node-version-file: package.json 26 | - uses: pnpm/action-setup@v2 27 | with: 28 | run_install: true 29 | 30 | - name: Read prettier version 31 | id: prettier_version 32 | uses: notiz-dev/github-action-json-property@release 33 | with: 34 | path: package.json 35 | prop_path: devDependencies.prettier 36 | 37 | - name: Prettier 38 | uses: creyD/prettier_action@v3.3 39 | with: 40 | # Take prettier version from package.json to stay in sync and support upgrades through Renovate 41 | prettier_version: ${{steps.prettier_version.outputs.prop}} 42 | prettier_options: --write **/*.{js,mjs,css,scss,ts,tsx,md,html,yml,yaml,json} 43 | commit_message: squash! Prettier 44 | env: 45 | GITHUB_TOKEN: ${{ secrets.WRITE_ACCESS_GITHUB_TOKEN }} 46 | -------------------------------------------------------------------------------- /.github/workflows/update-branches.yml: -------------------------------------------------------------------------------- 1 | name: Update all pull requests that have automerge enabled 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | update-branch: 10 | name: Update all pull requests that have automerge enabled 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v3 15 | with: 16 | persist-credentials: false 17 | - name: Update branches 18 | uses: felixfbecker/action-autoupdate-branch@patch-1 19 | with: 20 | repo-token: '${{ secrets.WRITE_ACCESS_GITHUB_TOKEN }}' 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Redirects for Netlify are generated pre-publish in generate-redirects.mjs from Git history 2 | _redirects 3 | 4 | # Logs 5 | .pnpm-debug.log* 6 | 7 | # Dependency directories 8 | node_modules/ 9 | 10 | # Next.js build output 11 | .next 12 | out 13 | 14 | # macOS 15 | .DS_Store 16 | 17 | # Generated at build time 18 | public/ 19 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 19 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/codestream.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/handbook.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .next/ 2 | out/ 3 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | # Keep these in sync with package.json "engines". 2 | 3 | nodejs 18.9.0 4 | pnpm 8.1.1 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["esbenp.prettier-vscode", "redhat.vscode-yaml"] 3 | } 4 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "node", 6 | "request": "attach", 7 | "name": "Attach to application", 8 | "skipFiles": ["/**"], 9 | "port": 9229 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true, 3 | "editor.formatOnSave": true, 4 | "typescript.tsdk": "node_modules/typescript/lib", 5 | "cody.codebase": "github.com/sourcegraph/handbook" 6 | } 7 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | # Needed for @stefanprobst/rehype-extract-toc@2.0.1, which is set to old Node version 14.x 2 | ignore-engines true 3 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:latest 2 | 3 | ENV NODE_OPTIONS=--openssl-legacy-provider 4 | 5 | COPY . /app 6 | 7 | RUN chown -R node:node /app 8 | WORKDIR /app 9 | USER node 10 | -------------------------------------------------------------------------------- /content/benefits-pay-perks/benefits-perks/nomad-life.md: -------------------------------------------------------------------------------- 1 | # Nomad Life 2 | 3 | Our all-remote company allows Teammates to work almost any where in the world. 4 | 5 | ### Countries where we cannot currently support employment or contracting, including on a temporary basis 6 | 7 | We cannot support or employ candidates or teammates in any of these countries due to U.S. embargoes and sanctions. This includes work while traveling for personal reasons. 8 | 9 | - Cuba 10 | - Iran 11 | - North Korea 12 | - Sudan 13 | - Syria 14 | - Crimea 15 | - China 16 | - Russia 17 | - Ukraine 18 | 19 | Any questions? Contact the People team in #ask-people-team in Slack or people-ops@sourcegraph.com via email! 20 | -------------------------------------------------------------------------------- /content/benefits-pay-perks/benefits-perks/time-off/submitting-time-off.md: -------------------------------------------------------------------------------- 1 | This page is being deleted. All content has been added to "paid time off (PTO) and working hours" page. 2 | -------------------------------------------------------------------------------- /content/benefits-pay-perks/index.md: -------------------------------------------------------------------------------- 1 | # Benefits, Pay, and Perks 2 | 3 | ## [Benefits and Perks](benefits-perks/index.md) 4 | 5 | - [Travel](benefits-perks/travel/index.md) 6 | - [Navan](benefits-perks/travel/Navan.md) 7 | - [Time Off](benefits-perks/time-off/index.md) 8 | - [Submitting time off](benefits-perks/time-off/submitting-time-off.md) 9 | - [Spending Company Money](benefits-perks/spending-company-money.md) 10 | - [Holidays](../company-info-and-process/working-at-sourcegraph/holidays.md) 11 | - [Team Gatherings and Celebrations](benefits-perks/celebrate.md) 12 | 13 | ## [Pay and Expenses](pay-expenses/index.md) 14 | 15 | - [Compensation](pay-expenses/compensation/index.md) 16 | - [Equity FAQ](pay-expenses/compensation/equity-faq.md) 17 | - [Compensation Change Approvals](pay-expenses/compensation/compensation-change-approvals.md) 18 | - [Invoices](pay-expenses/invoices.md) 19 | - [Expenses](pay-expenses/expenses/index.md) 20 | -------------------------------------------------------------------------------- /content/benefits-pay-perks/pay-expenses/compensation/total-rewards.md: -------------------------------------------------------------------------------- 1 | # Total Rewards 2 | 3 | Moved this content [here](../../../departments/people-talent/total-rewards.md) 4 | -------------------------------------------------------------------------------- /content/benefits-pay-perks/pay-expenses/expenses/expenses-through-deel.md: -------------------------------------------------------------------------------- 1 | # Submitting Expenses through Deel.com 2 | 3 | As of 3/31/24 all reimbursements must be submitted via Airbase. 4 | 5 | Internet, phone, and wellness should be entered as **Allowances** as these are taxable. 6 | 7 | Co-working, desk setup, and any other reimbursements should be entered as **Reimbursements** as there are NOT taxable to teammates. 8 | 9 | If you have any questions, please reach out to the People Team in #ask-people-team in Slack 10 | -------------------------------------------------------------------------------- /content/benefits-pay-perks/pay-expenses/index.md: -------------------------------------------------------------------------------- 1 | # Pay and Expenses 2 | 3 | - [Compensation](compensation/index.md) 4 | - [Equity FAQ](compensation/equity-faq.md) 5 | - [Compensation Change Approvals](compensation/compensation-change-approvals.md) 6 | - [Invoices](invoices.md) 7 | - [Expenses](expenses/index.md) 8 | -------------------------------------------------------------------------------- /content/company-info-and-process/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | values.md @sqs 4 | strategy.md @sqs 5 | -------------------------------------------------------------------------------- /content/company-info-and-process/about-sourcegraph/general-office-info.md: -------------------------------------------------------------------------------- 1 | # Address, Phone Number, Tax ID, and other general office information 2 | 3 | ### Contact information 4 | 5 | Address (for all mail, contracts, and paperwork): 548 Market St PMB 20739, San Francisco, CA 94104-5401 6 | 7 | Phone number: (650) 273-5591 8 | 9 | ### Business information 10 | 11 | Tax ID: For the Tax ID, refer to your Sourcegraph W-9. 12 | 13 | DUNS number: `117775232` 14 | 15 | NAICS code: `541512` 16 | 17 | SIC code: `7373` 18 | 19 | ### Banking information 20 | 21 | Bank Name: JPMorgan Chase Bank, N.A. 22 | 23 | Bank Address: JPMorgan Chase New York, NY 10017 24 | 25 | Bank Account Name: Sourcegraph, Inc. 26 | 27 | Account Currency: USD 28 | 29 | [Bank Detail Letter](https://drive.google.com/file/d/17KLmr_6OanWpWfr_vIY_OrxO8gdUgmB1/view?usp=sharing) 30 | 31 | #### For ACH delivery: 32 | 33 | Bank Routing Number: `322271627` 34 | 35 | Account Number: `936960100` 36 | 37 | Account Name: Sourcegraph, Inc. 38 | 39 | #### For Wire Transfers: 40 | 41 | Bank Routing Number: `021000021` 42 | 43 | SWIFT Code: CHASUS33 44 | 45 | Account Number: `936960100` 46 | 47 | Account Name: Sourcegraph, Inc. - Receivables account 48 | -------------------------------------------------------------------------------- /content/company-info-and-process/about-sourcegraph/index.md: -------------------------------------------------------------------------------- 1 | # About Sourcegraph 2 | 3 | - [**Sourcegraph.com/about**](https://sourcegraph.com/about) for information about Sourcegraph (the product and the company) 4 | - [Sourcegraph handbook](../../index.md) 5 | - [All-remote](../remote/index.md) 6 | - [Asynchronous work](../communication/asynchronous-communication.md) 7 | - [Strategy](../../strategy-goals/strategy/index.md) 8 | - [Team](../../team/index.md) 9 | - [Values](../values/index.md) 10 | 11 |
12 | 20 |
21 | -------------------------------------------------------------------------------- /content/company-info-and-process/communication/customer_ethics.md: -------------------------------------------------------------------------------- 1 | # Customer ethics criteria 2 | 3 | We do not knowingly work with organizations that promote violence or hate, or that conflict with our company values or ethical principles of integrity and trustworthiness in a way that harms people. If anyone thinks an organization that we are working with (or considering working with) meets this criteria, contact @sqs. 4 | -------------------------------------------------------------------------------- /content/company-info-and-process/communication/rfcs/hubspot-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/communication/rfcs/hubspot-results.png -------------------------------------------------------------------------------- /content/company-info-and-process/communication/rfcs/hubspot-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/communication/rfcs/hubspot-search.png -------------------------------------------------------------------------------- /content/company-info-and-process/communication/rfcs/link-sharing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/communication/rfcs/link-sharing.png -------------------------------------------------------------------------------- /content/company-info-and-process/community/faq.md: -------------------------------------------------------------------------------- 1 | # Sourcegraph open source 2 | 3 | See https://github.com/sourcegraph/sourcegraph/issues/53528#issuecomment-1594967818. Will be updated with more info soon. 4 | -------------------------------------------------------------------------------- /content/company-info-and-process/community/index.md: -------------------------------------------------------------------------------- 1 | # Sourcegraph community 2 | 3 | - [Code of Conduct](code_of_conduct.md) 4 | - [FAQ](faq.md) 5 | - [Discord](https://discord.gg/s2qDtYGnAE) 6 | -------------------------------------------------------------------------------- /content/company-info-and-process/onboarding/git-intro/github-notifications/custom-routing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/onboarding/git-intro/github-notifications/custom-routing.png -------------------------------------------------------------------------------- /content/company-info-and-process/onboarding/git-intro/github-notifications/gmail-apply-filter-to-matching-conversations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/onboarding/git-intro/github-notifications/gmail-apply-filter-to-matching-conversations.png -------------------------------------------------------------------------------- /content/company-info-and-process/onboarding/git-intro/github-notifications/gmail-filter-github-label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/onboarding/git-intro/github-notifications/gmail-filter-github-label.png -------------------------------------------------------------------------------- /content/company-info-and-process/onboarding/git-intro/github-notifications/gmail-filter-skip-inbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/onboarding/git-intro/github-notifications/gmail-filter-skip-inbox.png -------------------------------------------------------------------------------- /content/company-info-and-process/onboarding/git-intro/github-notifications/participating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/onboarding/git-intro/github-notifications/participating.png -------------------------------------------------------------------------------- /content/company-info-and-process/onboarding/git-intro/github-notifications/real-time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/onboarding/git-intro/github-notifications/real-time.png -------------------------------------------------------------------------------- /content/company-info-and-process/onboarding/git-intro/github-notifications/watching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/company-info-and-process/onboarding/git-intro/github-notifications/watching.png -------------------------------------------------------------------------------- /content/company-info-and-process/policies/index.md: -------------------------------------------------------------------------------- 1 | # Sourcegraph Information Security Policies 2 | 3 | - [Acceptable use policy](../policies/acceptable-use-policy.md) 4 | - [Access control policy](../policies/access-control-policy.md) 5 | - [Asset management policy](../policies/asset-management-policy.md) 6 | - [Business continuity and disaster recovery plan](business-continuity-policy.md) 7 | - [Code of conduct](../communication/code_of_conduct.md) 8 | - [Cryptography policy](../../departments/security/cryptography-policy.md) 9 | - [Data management policy](../policies/data-management-policy.md) 10 | - [Device requirements](../../departments/tech-ops/tools/computer-setup.md) 11 | - [Information security policy](../policies/information-security-policy.md) 12 | - [Information security risk management policy](information-security-risk-management-policy.md) 13 | - [Information security roles and responsibilities](information-security-roles-and-responsibilities.md) 14 | - [Secret sharing policy](../../departments/security/secret-sharing-policy.md) 15 | - [Secure development policy](secure-development-policy.md) 16 | - [Security incident response policy](../../departments/security/security-incident-response.md) 17 | - [Third-party management policy](third-party-management-policy.md) 18 | 19 | ## Guidelines 20 | 21 | - [Data Sharing](data-sharing.md) 22 | -------------------------------------------------------------------------------- /content/company-info-and-process/working-at-sourcegraph/index.md: -------------------------------------------------------------------------------- 1 | # Working at Sourcegraph 2 | 3 | - [Holidays](holidays.md) 4 | - [Switching teams](switching-teams.md) 5 | - [Impact reviews](../../departments/people-talent/people-ops/process/teammate-sentiment/impact-reviews/index.md) 6 | - [Leaving](../../departments/people-talent/people-ops/process/leaving.md) 7 | - [Teammate development](teammate-development/index.md) 8 | - [Recognition and #thanks Channel best practices](../../benefits-pay-perks/benefits-perks/celebrate.md#regular-thanks-and-recognition-via-our-thanks-channel) 9 | - [Career Ladders](career-frameworks.md) 10 | -------------------------------------------------------------------------------- /content/departments/ceo-team/index.md: -------------------------------------------------------------------------------- 1 | The CEO Team is comprised of the [CEO](../../team/ceo/index.md) and the [Chief of Staff to the CEO](../../team/index.md#connor-obrien) 2 | 3 | The CEO Team supports and augments the CEO helping to connect company strategy to operations to day-to-day tactical execution. 4 | 5 | Here are a list of programs supported by the CEO Team: 6 | 7 | - [Board Meetings](https://docs.google.com/document/d/1gPZycyHduo0OB-6PgfuMvTFx95a0rNFmWaPR7E3R7qg/edit?usp=sharing) 8 | - [CEO Shadow Program](ceo-shadow-program.md) 9 | -------------------------------------------------------------------------------- /content/departments/cloud/technical-docs/observability/operations.md: -------------------------------------------------------------------------------- 1 | # Cloud Observability Operations 2 | 3 | ## Requesting access to Grafana 4 | 5 | 6 | 7 | To access the grafana dashboard for a single cloud customer: 8 | 9 | 1. Find the customer on https://cloud-ops.sgdev.org/, go to the specific customer page 10 | 1. Goto "View monitoring dashboards" for the specific instance 11 | 1. When you attempt to access the dashboard with the given command you may receive about access 12 | 1. You should use Entitle to request access to the specific instance using this [form](https://app.entitle.io/request?data=eyJkdXJhdGlvbiI6IjM2MDAiLCJqdXN0aWZpY2F0aW9uIjoiQWNjZXNzIHRvIGNsb3VkIGluc3RhbmNlICQkSU5TRVJUIENMT1VEIElOU1RBTkNFIEhFUkUkJCQgZm9yIEdyYWZhbmEgZGFzaGJvYXJkIiwiYnVuZGxlSWRzIjpbImNlNTZlMGU2LTE1ZDYtNGYzYS05M2RmLWRkMjQxOGQzNzhlYyJdfQ%3D%3D) 13 | 14 | ## Multi-instance dashboard 15 | 16 | We not longer support multi-instance dashboards but the cloud-team is working on a replacement. 17 | 18 | ## Creating a new individual dashboard 19 | 20 | The dashboards for Cloud customers are generated from the same [dashboard definitions](https://sourcegraph.com/github.com/sourcegraph/sourcegraph/-/tree/monitoring/definitions) that are create the bundled dashboards included with all Sourcegraph distributions. To create a new dashboard that will be rolled out to all managed instances, follow the [Developing Observability](https://docs.sourcegraph.com/dev/background-information/observability) guidelines. 21 | -------------------------------------------------------------------------------- /content/departments/cto/community/becoming_a_sourcegraph_champion.md: -------------------------------------------------------------------------------- 1 | # How To Become A Sourcegraph Champion 2 | 3 | The Sourcegraph Champion program offers developers an opportunity to share knowledge, empower the developer community, and make it easier for everyone to explore and better understand all code, faster, with contextual code intelligence to improve developer productivity and automate large-scale code change management. 4 | 5 | ## Our Sourcegraph Champions are adept at: 6 | 7 | - Speaking about Sourcegraph at meetups & conferences. 8 | - Contributing to Sourcegraph open source code. 9 | - Writing and publishing articles on using Sourcegraph. 10 | - Creating and sharing educational content about using Sourcegraph. 11 | - Championing the adoption of Sourcegraph at companies. 12 | - Adopting Sourcegraph in Open Source projects. 13 | - Recommending and sharing Sourcegraph on social media channels. 14 | - Adopting Sourcegraph at Hackathons. 15 | 16 | ## Sourcegraph Champion Perks: 17 | 18 | - Champions will receive exclusive Sourcegraph swags for themselves. 19 | - Access to the Sourcegraph internal team during annual founders roundtable. 20 | - Access to state of the art tutorials, guides and content. 21 | - Special access to Sourcegraph events, including consideration for speaking engagements. 22 | 23 | Know someone that should be a Sourcegraph Champion? Please [nominate them.](https://forms.gle/QP6BBCpN1TwQfHzo6) 24 | -------------------------------------------------------------------------------- /content/departments/cto/community/public_projects_using_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Public projects using Sourcegraph 2 | 3 | Sourcegraph's [GraphQL API](https://docs.sourcegraph.com/api/graphql), [custom search pages](https://sourcegraph.com/cncf) (on request), and other search and browsing features power a growing number of public projects. 4 | 5 | _Want to use Sourcegraph for your project but need help? Reach out to community@sourcegraph.com_ 6 | 7 | ## List of projects using Sourcegraph 8 | 9 | - [GitLab.com](https://gitlab.com/) uses Sourcegraph for [its code intelligence hovers](https://docs.gitlab.com/ee/integration/sourcegraph.html#sourcegraph-for-gitlabcom) on public code 10 | - [GitHub1s.com](https://github1s.com/) uses the Sourcegraph [GraphQL API](https://docs.sourcegraph.com/api/graphql) to power its search 11 | - The [Cloud Native Computing Foundation](https://www.cncf.io/) uses [a custom Sourcegraph search page](https://sourcegraph.com/cncf) to search the CNCF projects 12 | - [Brave Browser](https://brave.com/) redirects [code.brave.com](https://code.brave.com) to their code on Sourcegraph 13 | - [Cargo Vet](https://mozilla.github.io/cargo-vet/performing-audits.html?highlight=sourcegraph#inspecting-crates) inspect subcommand will give you a link to the exact version of the crate hosted on Sourcegraph. 14 | 15 | _Want your project added to this list? Reach out to us at community@sourcegraph.com_ 16 | -------------------------------------------------------------------------------- /content/departments/data-analytics/how-to.md: -------------------------------------------------------------------------------- 1 | # **General and Helpful How To's** 2 | 3 | ## Linking to customer or prospect names in public places 4 | 5 | It's often useful to include a customer or prospect name in a public RFC, GitHub issue, or other publicly-viewable place. In order to do so without leaking this information to the public, we use a [private GitHub repository](https://github.com/sourcegraph/accounts/issues) with issues representing customers. We don't use links to the salesforce account page because not all Sourcegraph team members have access to salesforce, whereas everybody has access to GitHub. 6 | 7 | To use it, copy a link to the issue that represents the customer you want to reference. For example, if the customer was "Sourcegraph", you might write: "We heard from [this customer](https://github.com/sourcegraph/accounts/issues/8194) that...". 8 | 9 | This list of account is automatically populated from salesforce by Zapier [automation](https://zapier.com/app/zaps/folder/1166872). @malomarrec maintains this, please reach out if you notice an issue. 10 | -------------------------------------------------------------------------------- /content/departments/data-analytics/tools.md: -------------------------------------------------------------------------------- 1 | # **The tools we use** 2 | 3 | # BI Tools 4 | 5 | ## Looker 6 | 7 | [Looker](https://sourcegraph.looker.com/browse) is a business intelligence tool used for standard enterprise reporting and ad hoc reporting and analysis. All Sourcegraph employees can have View access to Looker. Some groups have the ability to create reports. If you are not a part of a group that can save content, reach out to #Analytics in Slack. 8 | 9 | Looker has the ability to connect to all data sources that are located in our BigQuery DWH. It can also connect to documents in Google. 10 | 11 | [More Looker information](looker.md) 12 | 13 | ## Amplitude 14 | 15 | [Amplitude](https://analytics.amplitude.com/sourcegraph/home?source=redirect:%20feature%20disabled) is a product analytics tool specializing in turning event data into actionable insights and dashboards. Amplitude lets you analyze funnels, user flows, retention and more. 16 | 17 | [More Amplitude Information](amplitude.md) 18 | 19 | ## Google Analytics 20 | 21 | # Data Warehousing 22 | 23 | ## BigQuery 24 | 25 | # Data Pipelines 26 | 27 | ## Fivetran 28 | 29 | [Fivetran](https://www.fivetran.com/) is a no code integration tool that allows for the creation of quick data pipelines into a data warehouse. There are 100's of out of the box connectors. 30 | 31 | ## Airflow 32 | 33 | ## Google 34 | 35 | # Data Monitoring/Alerting 36 | 37 | ## Alerts 38 | 39 | ## Monte Carlo (coming soon) 40 | -------------------------------------------------------------------------------- /content/departments/engineering/CODENOTIFY: -------------------------------------------------------------------------------- 1 | * @sqs 2 | -------------------------------------------------------------------------------- /content/departments/engineering/bi-weekly-updates.md: -------------------------------------------------------------------------------- 1 | ## Bi-Weekly Status Updates 2 | 3 | As part of socializing what teams we are doing and ensuring maximum visibility, Eng teams will send out a bi-weekly (teams may increase the frequency to weekly) status update to the #announce-engineering channel. 4 | The DRIs for the various teams: 5 | 6 | - **Search Suite** - [Peter Guy](https://github.com/peterguy) 7 | - **Ship** - [JH Chabran](https://github.com/jhchabran) 8 | - **Platform** - [thorsten](https://github.com/mrnugget)/[Ryan Phillips](https://github.com/Ryphil) 9 | - **Cody Strat** - TPM 10 | - **Security** - [Diego Comas](https://github.com/dcomas) 11 | - **Cody Clients**: 12 | - **VS Code** - [Kalan](https://github.com/kalanchan) 13 | - **IntelliJ** - [Olaf Geirsson](https://github.com/olafurpg)/[Kalan](https://github.com/kalanchan) 14 | - **Neovim** - [teej](https://github.com/tjdevries) 15 | - **Cody PLG** - [kevin.chen](https://github.com/chenkc805) 16 | 17 | Key highlights from the status updates that contribute to overall company goals will also be referenced in the **The Git Down** updates. 18 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation. 2 | 3 | roles.md @sqs 4 | 5 | 6 | distribution/** @sourcegraph/distribution 7 | observability/** @sourcegraph/distribution 8 | observability/** @slimsag 9 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/career-development/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | **/* @mrnugget 4 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/career-development/index.md: -------------------------------------------------------------------------------- 1 | # Engineering career development 2 | 3 | - [Career development framework](./framework.md) 4 | - [Successful engineers at Sourcegraph](./successful-engineers.md) 5 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/distribution/internal_infrastructure.md: -------------------------------------------------------------------------------- 1 | # MOVED: Internal infrastructure 2 | 3 | Moved to [internal infrastructure](../tools/infrastructure/index.md). 4 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/distribution/tokens.md: -------------------------------------------------------------------------------- 1 | # How to regenerate various sourcegraph.com tokens 2 | 3 | ## `SRC_SESSION_COOKIE_KEY` 4 | 5 | This can be regenerated by running: 6 | 7 | ```shell 8 | > openssl rand -hex 16 9 | ``` 10 | 11 | Note: Existing users will be signed out, but they will be able to sign in again without any issues. 12 | 13 | ## EXECUTOR_FRONTEND_PASSWORD (PRECISE_CODE_INTEL_INTERNAL_PROXY_AUTH_TOKEN) 14 | 15 | ```shell 16 | > openssl rand -base64 128 17 | ``` 18 | 19 | Needs to be updated in three places: 20 | 21 | - https://github.com/sourcegraph/infrastructure/blob/main/code-intel/terraform.tfvars 22 | - https://github.com/sourcegraph/deploy-sourcegraph-cloud/blob/release/base/frontend/sourcegraph-frontend.Deployment.yaml 23 | - https://github.com/sourcegraph/deploy-sourcegraph-cloud/blob/release/base/executor-queue/executor-queue.Deployment.yaml 24 | 25 | Follow the [instructions](https://github.com/sourcegraph/infrastructure/blob/main/code-intel/README.md) for deploying the 26 | terraform changes. The dot-com k8s changes are deployed as usual. 27 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/policies/index.md: -------------------------------------------------------------------------------- 1 | ## Engineering policies 2 | 3 | This section of the handbook stores policies owned by Engineering. 4 | 5 | - [Vulnerability Management Policy](./vulnerability-management-policy.md) 6 | - [Cryptography Policy](../../../security/cryptography-policy.md) 7 | - [Cloud Access Control Policy](./cloud-access-control-policy.md) 8 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/process/deployments/azure_devops.md: -------------------------------------------------------------------------------- 1 | # Azure DevOps 2 | 3 | We need to use Azure DevOps to [create an access token](https://code.visualstudio.com/api/working-with-extensions/publishing-extension#get-a-personal-access-token) to publish our [sourcegraph-vscode](https://github.com/sourcegraph/sourcegraph-vscode) VS Code extension to the [VS Code marketplace](https://marketplace.visualstudio.com/items?itemName=sourcegraph.sourcegraph). 4 | 5 | ## Adding a user to our Azure DevOps organization 6 | 7 | 1. Go to https://sourcegraph.visualstudio.com/_settings/users. 8 | 1. Click **Add users**. 9 | 1. In the new user form: 10 | - Enter their email address `@sourcegraph.com`. If they don't have an account yet, it will still send them an email invite. 11 | - Access level: Basic 12 | - Add to projects: `sourcegraph` 13 | - Azure DevOps Groups: `Project Administrators` 14 | 1. Click **Add**. 15 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/process/deployments/debugging/index.md: -------------------------------------------------------------------------------- 1 | # Debugging 2 | 3 | In order to debug the services we deploy you should understand the environment they are deployed on. 4 | 5 | This guide will allow you to debug one of our running services in the [dogfood](../instances.md#k8s.sgdev.org) deployment which mimics our customer environment. All of our services here run on a Kubernetes cluster. 6 | 7 | - [Debugging](#debugging) 8 | - [Gain-access-to-the-cluster](./tutorial.md#gain-access-to-the-cluster) 9 | - [Tutorial](tutorial.md) 10 | 11 | ## Intro to crictl 12 | 13 | _[Kubernetes Docs](https://kubernetes.io/docs/tasks/debug-application-cluster/crictl/)_ 14 | 15 | When debugging pods on the node itself you should prefer `crictl` from over docker. 16 | This tool works with all OCI container runtime. Kubernetes supports several container runtime and docker is not the only one. 17 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/process/deployments/postgresql.md: -------------------------------------------------------------------------------- 1 | # PostgreSQL deployments 2 | 3 | For deployments other than Cloud and Sourcegraph.com please use the information [here](https://docs.sourcegraph.com/admin/faq#how-do-i-access-the-sourcegraph-database) to access the database. 4 | 5 | > [!WARNING] **This page is deprecated** - please refer to and contribute to the [deployments playbooks](../deployments/playbooks.md) instead. 6 | 7 | ## Sourcegraph.com specific 8 | 9 | Refer to [deployments playbooks: Accessing sourcegraph.com database](./playbooks.md#accessing-sourcegraphcom-database) 10 | 11 | ## Dogfood specific 12 | 13 | Refer to [deployments playbooks: Accessing k8s.sgdev.org database](./playbooks.md#accessing-k8ssgdevorg-database) 14 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/process/external_contributions.md: -------------------------------------------------------------------------------- 1 | # External contributions 2 | 3 | When a pull request is coming from a non-Sourcegrapher, it won’t trigger a CI 4 | build on Buildkite automatically because we want to review the code before it 5 | runs on our CI infrastructure. Please review the PR to ensure it doesn’t make 6 | any malicious changes to our build scripts. 7 | 8 | Also see: [Accepting external contributions](https://docs.sourcegraph.com/dev/contributing/accepting_contribution). 9 | 10 | ## Triggering a build 11 | 12 | There are two options to trigger a build. 13 | 14 | ## Option 1: On the command line 15 | 16 | Run the following commands: 17 | 18 | ```sh 19 | gh pr checkout $PR_NUMBER 20 | sg ci build 21 | ``` 22 | 23 | If the PR changes, pull changes into the branch, and run the above command again. 24 | 25 | Alternatively, you can directly request a build for a specific commit: 26 | 27 | ```sh 28 | gh pr checkout $PR_NUMBER 29 | sg ci build --commit $COMMIT 30 | ``` 31 | 32 | ## Option 2: In the Buildkite web interface 33 | 34 | 1. Find the full length SHA of the latest commit, e.g. `ae724a83f8b6fc5628a4e8efcbb62975ed7b4c33` for #8234. 35 | 1. Find the branch name, e.g. `8160-http-warning` (trim `Akarshit:` prefix) for #8234. 36 | 1. Go to https://buildkite.com/sourcegraph/sourcegraph and click on **New Build** on the top-right menu. 37 | 1. Fill in message (could be anything, copy the pull request title is better), commit SHA and branch. 38 | 1. Click on **Create Build**, then the build status should be updated in the pull request checks. 39 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/process/incidents/incident-flow-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/engineering/dev/process/incidents/incident-flow-chart.png -------------------------------------------------------------------------------- /content/departments/engineering/dev/process/index.md: -------------------------------------------------------------------------------- 1 | # Engineering Processes 2 | 3 | - [Deployments](deployments/index.md) 4 | - [Incidents](incidents/index.md) 5 | - [Releases](releases/index.md) 6 | - [Engineering Ownership](engineering_ownership.md) 7 | - [External Contributions](external_contributions.md) 8 | - [Licenses](licenses.md) 9 | - [Tracking issues](tracking_issues.md) 10 | - [Pull-Request compliance and requirements](pullrequest-compliance.md) 11 | - [Contributor License Agreement](contributor-license-agreement.md) 12 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/tools/ghe-feeder-dashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/engineering/dev/tools/ghe-feeder-dashboard.jpg -------------------------------------------------------------------------------- /content/departments/engineering/dev/tools/index.md: -------------------------------------------------------------------------------- 1 | # Internal tooling 2 | 3 | Internal tools used at Sourcegraph. 4 | 5 | - [Slackgenie](./slackgenie.md) 6 | - [Observability](observability/index.md) 7 | - [Infrastructure](infrastructure/index.md) 8 | - [ScaleTesting Instance](./scaletesting.md) 9 | - [gRPC](./grpc_faq.md) 10 | - [gRPC Monitoring Guide](./grpc.md) 11 | - [gRPC CS Enablement Guide / Primer](./grpc_cs_enablement.md) 12 | 13 | In-house tools: 14 | 15 | - [Resources report](./resources_report.md) 16 | - [GHE Feeder](./ghe_feeder.md) 17 | - [Monitoring generator](https://docs.sourcegraph.com/dev/background-information/observability/monitoring-generator) 18 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/tools/observability/learning_resources.md: -------------------------------------------------------------------------------- 1 | # Recommended resources for learning Observability 2 | 3 | - Book [Observability Engineering](https://www.oreilly.com/library/view/observability-engineering/9781492076438/) 4 | - Book [Cloud-Native Observability with OpenTelemetry](https://www.packtpub.com/product/cloud-native-observability-with-opentelemetry/9781801077705) 5 | - Blog [Mads Hartmann's Journey into Observability](https://blog.mads-hartmann.com/series/observability/index.html) 6 | - Code [Observability Engineering](https://resources.oreilly.com/examples/0636920722618) examples 7 | - Lightning talk [Instrumenting With OpenTelemetry](https://www.youtube.com/watch?v=Fb29Pw07gcY) 8 | - Demo [Honeycomb Observability Platform Demo](https://www.youtube.com/watch?v=GuIWQ-EF7YE) 9 | - Talk [Ben Hartshorne - Journey from Common Logs to Structured Events!](https://www.youtube.com/watch?v=lkL5Cjo-Rjs&list=WL&index=17&t=1s) 10 | - Slides [Charity Majors - The Paradox of Alerts](https://speakerdeck.com/charity/the-paradox-of-alerts) 11 | - Docs [https://opentelemetry.io](https://opentelemetry.io) 12 | -------------------------------------------------------------------------------- /content/departments/engineering/dev/tools/slackgenie.md: -------------------------------------------------------------------------------- 1 | # Slackgenie 2 | 3 | Slackgenie is a background job that continually updates a certain Slack User Group 4 | via an Opsgenie schedule. User Groups usually end in **-support** i.e _delivery-support_. 5 | The goal of Slackgenie is to allow members of a team to focus on heads-down work 6 | while the "On-call" member triages interrupts. 7 | 8 | All alerts are delivered as Slack notifications. They do not come through when users 9 | in the group are in Do Not Disturb. Multiple people can be in the rotation at once. 10 | 11 | ## How to add a new rotation 12 | 13 | - Create a Slack User Group and add the team members you want in the rotation. 14 | - Update the [slackgenie config](https://sourcegraph.sourcegraph.com/github.com/sourcegraph/background-jobs/-/blob/slackgenie/config.yaml) to include the new User Group. (You need access to the private repo.) 15 | - Under the Teams tab in Opsgenie, select Add Team. 16 | - On the page for your new team, use the On-call tab to update the rotation with participants from your Slack User Group. 17 | - Use the Integration tab to connect the rotation to Slack. 18 | - **Ensure rotation is working** Check the buildkite job [here](https://buildkite.com/sourcegraph/background-jobs-slackgenie) to ensure the rotation is working 19 | 20 | ### Helpful tips 21 | 22 | - You can override an Opsgenie schedule manually via "Take on-call for an hour" in the Opsgenie UI 23 | or messaging the Opsgenie slackbot. 24 | -------------------------------------------------------------------------------- /content/departments/engineering/infrastructure/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation. 2 | 3 | **/* @unknwon 4 | -------------------------------------------------------------------------------- /content/departments/engineering/infrastructure/index.md: -------------------------------------------------------------------------------- 1 | # Infrastructure 2 | 3 | ## Teams 4 | 5 | - [Cloud Operations](../../../departments/cloud/index.md) 6 | - [Core Services](../teams/core-services/index.md) 7 | - [Developer Infrastructure](../teams/devinfra/index.md) 8 | - [Release](../teams/release/index.md) 9 | 10 | ## OKRs 11 | 12 | - [Infrastructure OKRs](http://go/infra-okrs) 13 | 14 | ## Documents 15 | 16 | - [Weekly Reports Instructions](weekly-reports.md) 17 | - [AWS Organisation management](aws.md) 18 | - [Org-wide on-call rotation](./on-call.md) 19 | -------------------------------------------------------------------------------- /content/departments/engineering/infrastructure/ship_okr_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/engineering/infrastructure/ship_okr_square.png -------------------------------------------------------------------------------- /content/departments/engineering/teams/app/index.md: -------------------------------------------------------------------------------- 1 | # App team 2 | 3 | ## Mission and strategy 4 | 5 | See [strategy](../../../../strategy-goals/strategy/app/index.md) 6 | 7 | ## Members 8 | 9 | - Taylor Sperry, product manager 10 | - Stephen Gutekanst, tech lead 11 | - Megan St. Andrew, UX researcher 12 | 13 | FY23Q2 project engineers: 14 | 15 | - William Bezuidenhout 16 | - Felix Kling 17 | - Vova Kulikov 18 | - Juliana Peña 19 | - Tom Ross 20 | - Chris Warwick 21 | - Marek Zaluski 22 | 23 | ## Quicklinks 24 | 25 | - [Sourcegraph App FAQ](app-faq.md) 26 | - [Product marketing brief](https://docs.google.com/document/d/1bdpImO3e4kwC65HYU2woDE5tXwNgrjWVEGzcXs1YSoM/edit) 27 | - [Key metrics and definitions](analytics.md) 28 | - [Looker dashboard](https://sourcegraph.looker.com/dashboards/440) 29 | - [Pricing and packaging](https://docs.google.com/document/d/1KBFzC3HX_eOwq-K1lAE-LND5y6X9xpFY2WzDh84QRmA/edit#heading=h.trqab8y0kufp) 30 | - [Github board](https://github.com/orgs/sourcegraph/projects/306/views/1) 31 | 32 | ## Contact 33 | 34 | - #announce-app, #ask-app, #dogfood-app, #job-fair-app channels, `@app-team` in Slack. 35 | - [team/growth](https://github.com/sourcegraph/sourcegraph/labels/team%2Fgrowth) label and `@sourcegraph/growth` team on GitHub. 36 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/code-intelligence/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | **/* @sourcegraph/code-intel 4 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/code-search/batch-changes/onboarding.md: -------------------------------------------------------------------------------- 1 | # Batcher Onboarding 2 | 3 | We're excited to have you on the team! Your perspective as both a new user of Batch Changes and a new teammate is very valuable to us. Please keep notes on any issues you encounter as you are learning the product. We'll use those notes to improve the product and process. 4 | 5 | We've compiled the following list of resources to help you learn about the product, how it's sold and how to get started using it: 6 | 7 | - Read the [product marketing brief](https://docs.google.com/document/d/1yQpCKF50gx8_T-KDnU4s9TjW6fZpMUfWLF2h4xSM8jk) to understand the high level talking points and landscape surrounding batch changes 8 | - Watch a [recorded training session](https://chorus.ai/meeting/3C6D73BB499F41E9815AB540CFA54CBD?tab=summary) 9 | - A less technical demo can be found [here](https://chorus.ai/meeting/D15E98AF1C434E41B47B7CA1B43BB30B?tab=summary) (demo starts at 8:17) 10 | - Read the [Batch Changes documentation](https://docs.sourcegraph.com/batch_changes) 11 | - Pay special attention to [how src excecutes a batch spec](https://docs.sourcegraph.com/batch_changes/explanations/how_src_executes_a_batch_spec) 12 | - Read the [quickstart](https://docs.sourcegraph.com/batch_changes/quickstart) and create the hello world batch change 13 | - Review [Batch Changes demo and training materials](https://docs.google.com/document/d/1xQxhdGaudydOn5nBGIG91F6Z4VR4NwBfuKFvgbmCjJo/edit) and consume the resources found there, then create a few batch changes in the demo 14 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/code-search/index.md: -------------------------------------------------------------------------------- 1 | # Code Search 2 | 3 | The Code Search team (a.k.a. Search Suite) maintains many of the products built on top of Search, 4 | but also other things. See [Responsibilities](#responsibilities) for 5 | details. The Search Suite team was previously known as the "Code Search" team. 6 | 7 | Come say hi in #discuss-code-search! 8 | 9 | ## Team 10 | 11 | {{generator:product_team.code_search}} 12 | 13 | ## Responsibilities 14 | 15 | Code Search is the owner of the following product areas: 16 | 17 | - Search UX 18 | - Batch Changes 19 | - [Code Insights](./code-insights/index.md) 20 | - Code Monitors 21 | - Code Exploration 22 | - Admin UX 23 | - [src-cli](https://github.com/sourcegraph/src-cli) 24 | - Browser Extensions 25 | - IDE extensions 26 | - Executors 27 | - Notebooks 28 | 29 | Notably, Code Search is not solely responsible for all things search. 30 | Functionality related to the search language and execution are mostly owned by the Search Platform team. 31 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/cody/index.md: -------------------------------------------------------------------------------- 1 | # Cody team 2 | 3 | Placeholder page for the cody team. 4 | 5 | - [About Cody FAQ](about-cody-faq.md) 6 | 7 | Managed Cody services: 8 | 9 | - [Cody Gateway](cody-gateway/index.md) (cody-gateway.sourcegraph.com and cody-gateway.sgdev.org) 10 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/cody/llm-proxy/index.md: -------------------------------------------------------------------------------- 1 | # LLM proxy 2 | 3 | > [!WARNING] **This project has been renamed to [Cody Gateway](../cody-gateway/index.md)** - this page is only retained to help redirect old links. 4 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/core-services/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation. 2 | 3 | **/* @unknwon 4 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/core-services/managed-services/telemetry-gateway.md: -------------------------------------------------------------------------------- 1 | # Telemetry Gateway 2 | 3 | Please refer to the [Telemetry Gateway infrastructure (go/msp-ops/telemetry-gateway)](../../../managed-services/telemetry-gateway.md) page. 4 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/devops/dotcom-postgres.md: -------------------------------------------------------------------------------- 1 | # Cloud Postgres 2 | 3 | This serves as an informal description of changes to the Postgres database for 4 | Sourcegraph.com and why the change was made. 5 | 6 | ## Changes 7 | 8 | 04/25/2022 Enabled `pageinspect` extension to analyze BRIN index layout and efficiency for the `lsif_uploads_audit_logs` table. 9 | 10 | _MM/DD/YYYY Reason for change_ 11 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/devops/gcp-slack-notification-terraform.md: -------------------------------------------------------------------------------- 1 | # Create GCP Notification for Slack with Terraform 2 | 3 | ## Configure a Slack App 4 | 5 | Follow https://slack.com/intl/en-au/help/articles/115005265703-Create-a-bot-for-your-workspace to create a new Slack Bot App. 6 | 7 | Ensure you grant the below bot token scopes 8 | 9 | - `chat:write`: Send messages as @bot 10 | - `chat:write.customize`: Send messages as @bot with a customized username and avatar 11 | - `chat:write.public`: Send messages to channels @bot isn't a member of 12 | 13 | Install the created Slack app in the workspace 14 | 15 | Generate and keep a copy of the `Bot User OAuth Token`. 16 | 17 | You should upload the created token in GCP secret manager. 18 | 19 | ## Terraform stuff 20 | 21 | Reference the created secret 22 | 23 | ```tf 24 | data "google_secret_manager_secret_version" "slack_bot_user_oauth_token" { 25 | secret = "SLACK_BOT_USER_OAUTH_TOKEN" 26 | project = "sourcegraph" 27 | } 28 | ``` 29 | 30 | Configure the notification channel for slack 31 | 32 | ```tf 33 | resource "google_monitoring_notification_channel" "slack" { 34 | display_name = "Slack" 35 | type = "slack" 36 | labels = { 37 | "channel_name" = "#some-channel-name" 38 | } 39 | sensitive_labels { 40 | auth_token = data.google_secret_manager_secret_version.slack_bot_user_oauth_token.secret_data 41 | } 42 | } 43 | ``` 44 | 45 | Then you may reference the notification channel in resources like `google_monitoring_alert_policy`. 46 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/devops/index.md: -------------------------------------------------------------------------------- 1 | # Cloud DevOps Team 2 | 3 | > [!NOTE] The DevOps team was disbanded. The [Cloud team](../../../cloud/index.md) takes full E2E ownership of managed instances. [Developer Experience team](../devinfra/index.md) took full ownership of all other DevOps team responsibilities. This handbook page is deprecated. 4 | 5 | > [!NOTE] This page contains shared Ops related resources that do not belong to a specific team 6 | 7 | ## Content 8 | 9 | - [How to deploy a code change to DotCom](deploy-code-change.md) 10 | - [Large release (rollout release) process](deploy-code-change.md#large-releases-to-cloud-rollup-releases) 11 | - [How to make configuration changes to DotCom](update_sg_website_config.md) 12 | - [How to add or modify DNS Records](dns.md) 13 | - [Disaster Recovery](disaster-recovery.md) 14 | - [How to resize disks in StatefulSet](resize-disks-in-statefulset.md) 15 | - [Persistent disk backup schedule](persistent-disk-backup-schedule.md) 16 | - [Silencing Alerts](silencing-alerts.md) 17 | - [DotCom Postgres](dotcom-postgres.md) 18 | - [Opsgenie](opsgenie.md) 19 | - [How to create GCP notification channel for Slack in Terraform](./gcp-slack-notification-terraform.md) 20 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/devops/persistent-disk-backup-schedule.md: -------------------------------------------------------------------------------- 1 | # Persistent Disk Backup Schedule 2 | 3 | We use Velero to backup persistent disks. Velero accomplishes this by snapshotting 4 | the persistent disks in GCP which stores the snapshots in regional storage. 5 | 6 | The schedule is configured via a Velero CRD `schedules.velero.io` defined in 7 | our [deploy cloud repo](https://sourcegraph.com/search?q=context:global+repo:%5Egithub%5C.com/sourcegraph/deploy-sourcegraph-cloud%24+velero.io/v1&patternType=literal) 8 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/devops/silencing-alerts.md: -------------------------------------------------------------------------------- 1 | # Silencing Alerts on Sourcegraph.com 2 | 3 | You may need to silence alerts on Sourcegraph.com when they are not working as expected. 4 | 5 | To do this you need to: 6 | 7 | 1. Create a PR to `deploy-sourcegraph-cloud`. 8 | 1. Edit the [observability.silenceAlerts](https://sourcegraph.com/search?q=context:global+repo:%5Egithub%5C.com/sourcegraph/deploy-sourcegraph-cloud%24+observability.silenceAlerts&patternType=literal) of the non-sensitive site config. 9 | 1. Merge the PR. 10 | 1. If the configuration change is needed immediately, you need to rollout the frotend pods to pick up the configuration change. 11 | 1. Run `kubectl rollout restart deployment/sourcegraph-frontend deploy/sourcegraph-frontend-internal --namespace=prod` or ask in the #dev-ops channel. 12 | 1. Create a tracking issue with the `silenced-alert` [label](https://github.com/sourcegraph/sourcegraph/issues?q=is%3Aopen+sort%3Aupdated-desc+label%3Asilenced-alert). 13 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/devops/sourcegraph_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/engineering/teams/devops/sourcegraph_cloud.png -------------------------------------------------------------------------------- /content/departments/engineering/teams/index.md: -------------------------------------------------------------------------------- 1 | # Engineering teams 2 | 3 | See "[Teams](index.md#teams)". 4 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/own/index.md: -------------------------------------------------------------------------------- 1 | # Own team 2 | 3 | ## Strategy 4 | 5 | - Vision, mission and strategy: [Own strategy](../../../../strategy-goals/strategy/own/index.md) 6 | - Key metrics: TODO after launch! 7 | 8 | ## Contact 9 | 10 | - For general questions or concerns, #ask-own channel or @own-team on Slack. 11 | - For engineering support requests, customer questions, or anything else, @own-team on Slack. 12 | - @sourcegraph/own team or [own label](https://github.com/sourcegraph/sourcegraph/issues?q=is:issue+is:open+label:own) on GitHub. 13 | 14 | ## Process 15 | 16 | - We prioritize our work in [our planning board](https://github.com/orgs/sourcegraph/projects/216). It is the responsibility of the PM and TL to keep this updated and correct. 17 | 18 | ## Sprint planning 19 | 20 | Our two-week sprints start every other Tuesday. 21 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/release/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | **/* @sourcegraph/team-release 4 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/release/customers/index.md: -------------------------------------------------------------------------------- 1 | # Customers 2 | 3 | - [Customer issues](https://github.com/sourcegraph/customer) 4 | - [Accounts](https://github.com/sourcegraph/accounts) 5 | - [Customer environment replicas](./replicas.md) 6 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/release/customers/replicas.md: -------------------------------------------------------------------------------- 1 | # Customer environment replicas 2 | 3 | We maintain separate AWS accounts with Sourcegraph instances and other infrastructure that mimic various customers' environments for testing purposes. See "[Customer environment replicas and managed instances](https://my.1password.com/vaults/dnrhbauihkhjs5ag6vszsme45a/003/ctqvj7zcmdiujmfh2mxzffdlym)" on 1Password for the list. 4 | 5 | ## Accessing sourcegraph internal infrastrcture 6 | 7 | To access this AWS account: 8 | 9 | 1. Request an AWS user ID by asking in the #it-tech-ops channel in slack. 10 | 1. Once you have your credentials visit https://aws.amazon.com/console/. 11 | 1. Sign into AWS using those details and Account ID `sourcegraph`. 12 | 13 | ### Accessing customer environment replicas 14 | 15 | To access these AWS accounts: 16 | 17 | 1. Sign into AWS using your account (which must be under Sourcegraph's main AWS account). 18 | 1. Visit https://signin.aws.amazon.com/switchrole. 19 | 1. Enter the details from the instance below that you wish to access. 20 | 21 | Now you can switch between any added roles and your Sourcegraph AWS account using the menu in the top right of AWS. 22 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/release/processes.md: -------------------------------------------------------------------------------- 1 | # Release Team Processes 2 | 3 | ## How we work 4 | 5 | ### Planning, sync, & retro 6 | 7 | TBD 8 | 9 | ### Support Rotation 10 | 11 | TBD 12 | 13 | ## Issue tracking 14 | 15 | TBD 16 | 17 | ### Backlog 18 | 19 | These are items that we want to work on in the near future. The likely need some prioritization and additional details before they can be moved to the Ready state. 20 | 21 | ### Ready 22 | 23 | If you have completed the ticket that you are working on and need your next task, take it from here. These items have been reviewed and are ready to be worked on. 24 | 25 | Note: The items in here are ordered by importance where the most important issues are at the top. 26 | 27 | ### In Progress 28 | 29 | These are items that are currently being worked on. You should only have a maximum of one development story per person listed in here! On going support stories will also show up here. 30 | 31 | ### In Review 32 | 33 | Items in here are waiting on Customer/Internal feedback. 34 | 35 | Examples: 36 | 37 | - We have completed work that needs to also be confirmed and worked on by other teams. 38 | 39 | ### Done 40 | 41 | All work on this ticket that needs to be done by the Delivery team has been successfully completed. 42 | 43 | #team-releases 44 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/release/team/index.md: -------------------------------------------------------------------------------- 1 | # Delivery Team README 2 | 3 | Our README expands on our profile in [the company team directory](../../../../../team/index.md) and are meant to help us orient to one another. 4 | 5 | The format, style, order, etc is up to each of us. Just make sure to include the following to the degree you feel at ease to do so; feel free to add/remove as you see fit: 6 | 7 | - How I work 8 | - When I work 9 | - Where I work 10 | - What I do 11 | - Communication style 12 | - Preferred learning styles 13 | - Preferred way to receive feedback 14 | - What kind of work do you find easiest to do when (for example, some folks write best at night or can focus more easily in the afternoon) 15 | - Things I struggle with 16 | - What you find enjoyable at work 17 | - Things I love outside of work 18 | - Other things to know about me 19 | -------------------------------------------------------------------------------- /content/departments/engineering/teams/search-platform/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | core.md @sourcegraph/search-core 4 | -------------------------------------------------------------------------------- /content/departments/finance/process/index.md: -------------------------------------------------------------------------------- 1 | # Finance Processes 2 | 3 | - [AP](ap.md) 4 | - [AR](ar.md) 5 | - [Collections](collections.md) 6 | - [Collections Class Matrix](collectionsclassmatrix.md) 7 | - [Payables](payables.md) 8 | -------------------------------------------------------------------------------- /content/departments/index.md: -------------------------------------------------------------------------------- 1 | # Department specific documentation 2 | 3 | This section of the Handbook holds all documentation related to specific departments. Processes used company-wide can be found in [Company Info and Processes](../company-info-and-process/index.md). 4 | 5 | - [CEO Team](ceo-team/index.md) 6 | - [Office of the CTO](cto/index.md) 7 | - [Technical Success](technical-success/index.md) 8 | - [Data & Analytics](data-analytics/index.md) 9 | - [Finance](finance/index.md) 10 | - [Legal](legal/index.md) 11 | - [Marketing](marketing/index.md) 12 | - [People & Talent](people-talent/index.md) 13 | - [Engineering](engineering/index.md) 14 | - [Product](product/index.md) 15 | - [Cloud](cloud/index.md) 16 | - [Sales](sales/index.md) 17 | - [Security](security/index.md) 18 | - [Tech Ops](tech-ops/index.md) 19 | -------------------------------------------------------------------------------- /content/departments/legal/process/index.md: -------------------------------------------------------------------------------- 1 | # Legal team processes 2 | 3 | - [Contract review and signature authority policy](ContractReviewandSignatureAuthorityPolicy.md) 4 | -------------------------------------------------------------------------------- /content/departments/marketing/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | **/* @sourcegraph/marketing 4 | -------------------------------------------------------------------------------- /content/departments/marketing/career-development/index.md: -------------------------------------------------------------------------------- 1 | # Marketing Career Development 2 | 3 | ## Career Development Frameworks 4 | 5 | Our Career Development Frameworks help you understand the expectations of your role and provides a common language for you and your manager to discuss and plan your career growth. They are also an important part of our larger goal of ensuring everyone is equitably recognized for the impact they have at work, and to reduce bias in promotions and hiring. 6 | 7 | - [Comms Career Development Framework](comms-framework.md) 8 | - [Product Marketing Career Development Framework](product-marketing-framework.md) 9 | -------------------------------------------------------------------------------- /content/departments/marketing/process/Platform positioning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/marketing/process/Platform positioning.png -------------------------------------------------------------------------------- /content/departments/marketing/process/atlassian_fisheye_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Atlassian Fisheye vs. Sourcegraph 2 | 3 | [Atlassian Fisheye](https://www.atlassian.com/software/fisheye) was released around 2007, initially as a source browser for companies who (before the advent of GitHub/Bitbucket) mostly lacked web-based source code browsers. It later added code search capabilities. 4 | 5 | You can try it out on [JBoss’ public Fisheye instance](https://source.jboss.org/browse) (see [example quick search results page](https://source.jboss.org/qsearch?q=open&t=3&s=2&bucket=ANY_DATE&userFilter=) and [example advanced search results page](https://source.jboss.org/search/Aesh/?head=true&comment=&contents=open&addedText=&deletedText=&filename=&branch=&tag=&fromdate=&todate=&datesortorder=DESCENDING&groupby=file&col=path&col=revision&col=author&col=date&col=csid&refresh=y)). 6 | 7 | Sourcegraph is a good replacement for Fisheye as a code search tool when the primary usage is developers searching for code. 8 | 9 | ## Pros 10 | 11 | - Tight integration with the Atlassian suite of products, especially with builds from Atlassian Bamboo 12 | - Perforce support (as well as Git, Subversion, Mercurial, and CVS) 13 | 14 | ## Cons 15 | 16 | - Common developer sentiment: "It feels like Fisheye’s code search is for managers to report on changes, not for developers in their daily workflow" 17 | - Poor integration with GitHub and GitLab 18 | - Deprioritized by Atlassian, with [only infrequent and minor feature releases](https://confluence.atlassian.com/fisheye/fisheye-releases-960155725.html) 19 | -------------------------------------------------------------------------------- /content/departments/marketing/process/bitbucket_cloud_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Bitbucket Cloud vs. Sourcegraph 2 | 3 | [Bitbucket Cloud](https://github.com) is a code host and review tool. Sourcegraph and Bitbucket Cloud integrate well together. 4 | 5 | - [Bitbucket Cloud integration with Sourcegraph](https://docs.sourcegraph.com/integration/bitbucket_cloud) (Sourcegraph documentation) 6 | 7 | > Sourcegraph also supports [Bitbucket Server](bitbucket_server_vs_sourcegraph.md), Atlassian's self-hosted code host. 8 | 9 | ## Code search 10 | 11 | Bitbucket Cloud offers limited [code search](https://confluence.atlassian.com/bitbucket/search-873876782.html), which is acceptable for smaller teams using Bitbucket Cloud with simple/infrequent code search needs. The main pain points we hear are lack of support for literal/regexp queries, and that the UI is not optimized for searching across multiple repositories. For medium and large organizations, Sourcegraph is a better alternative to Bitbucket Cloud's built-in code search. 12 | -------------------------------------------------------------------------------- /content/departments/marketing/process/bitbucket_server_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Bitbucket Server vs. Sourcegraph 2 | 3 | [Bitbucket Server](https://github.com) is a code host and review tool. Sourcegraph and Bitbucket Server integrate well together. 4 | 5 | - [Bitbucket Server integration with Sourcegraph](https://docs.sourcegraph.com/integration/bitbucket_server) (Sourcegraph documentation) 6 | 7 | > Sourcegraph also supports [Bitbucket Cloud](bitbucket_cloud_vs_sourcegraph.md), Atlassian's cloud-hosted code host. 8 | 9 | ## Code search 10 | 11 | Bitbucket Server offers limited [code search](https://confluence.atlassian.com/bitbucketserver/search-for-code-in-bitbucket-server-814204781.html), which is acceptable for smaller teams using Bitbucket Server with simple/infrequent code search needs. The main pain points we hear are lack of support for literal/regexp queries, and that the UI is not optimized for searching across multiple repositories. For medium and large organizations, Sourcegraph is a better alternative to Bitbucket Server's built-in code search. 12 | -------------------------------------------------------------------------------- /content/departments/marketing/process/blog_post_help.md: -------------------------------------------------------------------------------- 1 | # Technical blog post help 2 | 3 | Need help with your technical blog posts? DevRel is here for you! Whether it's turning ideas into reality, writing assistance, or media help, we've got you covered! 4 | 5 | ### Steps 6 | 7 | - Create a Google Doc 8 | - Draft what you want to write about 9 | - It can be bullet points, Slack convos, etc. 10 | - Share it with the marketing-team@sourcegraph.com 11 | - Fill out [this form](https://form.asana.com/?k=y9mrkHpWKUIK7eeZ8CEJBg&d=7195383522959) to add it to our Asana board 12 | 13 | _From there we will be in touch and help you get published!_ 14 | 15 | ### Blog posts we helped publish 16 | 17 | - https://sourcegraph.com/blog/slow-to-simd 18 | - https://sourcegraph.com/blog/cody-the-ai-powered-tool-helping-support-engineers-unblock-themselves 19 | - https://sourcegraph.com/blog/cody-vscode-1-10-0-release 20 | - https://sourcegraph.com/blog/cody-jetbrains-5-4-358-release 21 | -------------------------------------------------------------------------------- /content/departments/marketing/process/github_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # GitHub vs. Sourcegraph 2 | 3 | [GitHub](https://github.com) is a development platform with code hosting, issue tracking, code review, and more. GitHub code search is the next iteration of GitHub’s native code search and navigation functionality that can be used to search code stored in GitHub. It’s currently in technical preview and is separate from GitHub’s primary UI (GitHub will eventually [integrate this functionality](https://cs.github.com/about/faq#new-ui) into the primary UI). 4 | 5 | Sourcegraph is a code intelligence platform that makes codebases intelligible by semantically indexing and analyzing all of an organization’s code, providing developers and engineering leaders with a complete understanding of their codebase. In addition to universal code search across every code host, Sourcegraph has features to help developers find code, understand and answer questions about code, and fix code faster. 6 | 7 | View [this detailed comparision](https://docs.sourcegraph.com/getting-started/github-vs-sourcegraph) within Sourcegraph Docs. 8 | -------------------------------------------------------------------------------- /content/departments/marketing/process/gitlab_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # GitLab vs. Sourcegraph 2 | 3 | [GitLab](https://about.gitlab.com) is a single application for the entire DevOps lifecycle. Sourcegraph and GitLab integrate well together (and offer largely complementary, not overlapping, features). 4 | 5 | - [GitLab integration with Sourcegraph](https://docs.sourcegraph.com/integration/gitlab) (Sourcegraph documentation) 6 | - Upcoming native integration: [GitLab blog post](https://about.gitlab.com/blog/2019/11/12/sourcegraph-code-intelligence-integration-for-gitlab/) and [Sourcegraph blog post](https://about.sourcegraph.com/blog/gitlab-integrates-sourcegraph-code-navigation-and-code-intelligence) 7 | 8 | ## Code search 9 | 10 | GitLab offers [code search](https://docs.gitlab.com/ee/user/search/advanced_global_search.html), which is acceptable for smaller teams using GitLab with simple/infrequent code search needs. The main pain points we hear are lack of support for literal/regexp queries and filters, and that the UI is not optimized for searching across multiple repositories. For medium and large organizations, Sourcegraph is a better alternative to GitLab's built-in code search. 11 | -------------------------------------------------------------------------------- /content/departments/marketing/process/google_cloud_source_repositories_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Google Cloud Source Repositories code search vs. Sourcegraph 2 | 3 | [Cloud Source Repositories](https://cloud.google.com/source-repositories/) is a Git code host offering from Google Cloud. It offers [code search](https://cloud.google.com/source-repositories/docs/searching-code) for repositories hosted on Cloud Source Repositories. 4 | 5 | You can try a public demo of the code search tool at [source.bazel.build](https://source.bazel.build/). 6 | -------------------------------------------------------------------------------- /content/departments/marketing/process/hound_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Hound 2 | 3 | [Hound](https://github.com/etsy/hound) was created inside Etsy by [Kelly Norton](https://github.com/kellegous) and others and open sourced in 2015. It appears to not be actively maintained anymore, with the most recent commit (as of this document's publishing) being more than 5 months old, and many open PRs unattended to. 4 | 5 | Sourcegraph is a good replacement for Hound for almost every organization. 6 | 7 | ## Pros 8 | 9 | - Very simple deployment 10 | - Very simple interface 11 | 12 | ## Cons 13 | 14 | - Apparent unmaintained status 15 | - Poor scalability to many repositories (both performance-wise and UX-wise) 16 | - Limited filtering available for search queries 17 | - No support for code navigation (code intelligence and/or ctags) 18 | -------------------------------------------------------------------------------- /content/departments/marketing/process/index.md: -------------------------------------------------------------------------------- 1 | # Marketing Processes 2 | 3 | - [Sourcegraph Documentation](product_documentation.md) 4 | - [Adding screenshots and recordings](adding_screenshots_screen_recording.md) 5 | - [Messaging](messaging.md) 6 | - [Personas](personas.md) 7 | - [Platform positioning](positioning.md) 8 | - [Value drivers](value-drivers.md) 9 | - [Blog post help](blog_post_help.md) 10 | -------------------------------------------------------------------------------- /content/departments/marketing/process/livegrep_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Livegrep 2 | 3 | [Livegrep](https://github.com/livegrep/livegrep) is maintained by a Stripe developer and is used inside Stripe. It has a slick demo on the Linux source code at livegrep.com. 4 | 5 | Sourcegraph is a good replacement for Livegrep for almost every organization. 6 | 7 | ## Pros 8 | 9 | - Instant, as-you-type search results 10 | - Quick search filters to narrow by path, etc. 11 | 12 | ## Cons 13 | 14 | - No support for code navigation (code intelligence and/or ctags) 15 | - Difficult to manage and scale (requires building custom infrastructure) 16 | - Although it’s used heavily by a small number of companies, it’s maintained part-time by a single developer, so future trajectory is limited 17 | -------------------------------------------------------------------------------- /content/departments/marketing/process/opengrok_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Oracle OpenGrok 2 | 3 | [Oracle OpenGrok](https://github.com/oracle/opengrok) was traditionally the most popular open source code search tool. Originally developed inside Sun Microsystems around 2004, it’s now an Oracle open source project after Oracle acquired Sun. 4 | 5 | Sourcegraph is a good replacement for OpenGrok for almost every organization. 6 | 7 | - [Migrating from OpenGrok to Sourcegraph](https://docs.sourcegraph.com/admin/migration/opengrok) (Sourcegraph documentation) 8 | 9 | ## Pros 10 | 11 | - Simple interface 12 | - Support for non-Git repositories 13 | - Easy deployment (for Java shops) 14 | 15 | ## Cons 16 | 17 | - Slow and difficult-to-manage indexing process (leading to stale results for users) 18 | - Poor support for searching/browsing multiple commits and branches 19 | - Poor scalability to many repositories and for large repositories 20 | - Inflexible and buggy API (using the new REST API) 21 | -------------------------------------------------------------------------------- /content/departments/marketing/process/phabricator_vs_sourcegraph.md: -------------------------------------------------------------------------------- 1 | # Phabricator vs. Sourcegraph 2 | 3 | [Phabricator](https://www.phacility.com/phabricator/) is an all-in-one development platform that was initially built inside Facebook. Sourcegraph and Phabricator integrate well together (and offer complementary, not overlapping, features). 4 | 5 | - [Phabricator integration with Sourcegraph](https://docs.sourcegraph.com/integration/phabricator) (Sourcegraph documentation) 6 | -------------------------------------------------------------------------------- /content/departments/marketing/product-marketing/gtm_hub.md: -------------------------------------------------------------------------------- 1 | # GTM Hub 2 | 3 | This is the central page for product-centric, go-to-market resources. 4 | 5 | ## Code Insights 6 | 7 | [Code Insights go-to-market resources](../../engineering/teams/code-search/code-insights/go_to_market.md) 8 | 9 | ## Batch Changes 10 | 11 | [Batch Changes go-to-market resources](../../engineering/teams/code-search/batch-changes/go-to-market/index.md) 12 | 13 | ## Notebooks 14 | 15 | [Notebooks go-to-market resources](notebooks_gtm.md) 16 | 17 | ## Cody 18 | 19 | [Cody go-to-market resources](../../engineering/teams/cody/cody-marketing.md) 20 | -------------------------------------------------------------------------------- /content/departments/marketing/product-marketing/notebooks_gtm.md: -------------------------------------------------------------------------------- 1 | # Notebooks go-to-market resources 2 | 3 | This is the source of truth for Notebooks go-to-market resources. 4 | 5 | ## Sales and Customer Engineering 6 | 7 | [Business Value Calculations doc](https://docs.google.com/document/d/19zgpFG55jqEbEu2y3Z5T8_jOLxEizaGLGO0K3rlBozI/edit#heading=h.et0infij2vky) 8 | 9 | ### Demo Materials _internal_ 10 | 11 | [Demo Flow](https://docs.google.com/document/d/1Xd4h5iwOQb-HSfgEczMsZdBlQG1BzPdY5g80qUsL5U8/edit) 12 | 13 | [Demo Recording](https://drive.google.com/file/d/1J5BGX1wMhErJR-qgME85-F8cGtnLvQab/view?usp=sharing) 14 | 15 | ### Pricing 16 | 17 | Notebooks is a core platform feature, and is available for use by all Sourcegraph users at no additional cost. 18 | 19 | ## Marketing 20 | 21 | ### Positioning _internal_ 22 | 23 | [Product Marketing Brief](https://docs.google.com/document/d/1vem3cqMInzunYftYzA63QzXRdxVEx-OXAkG-IxyF0Z4/edit#) 24 | 25 | ### Customer-facing assets 26 | 27 | [How we used Notebooks to make our CI more accessible (blog post)](https://about.sourcegraph.com/blog/notebooks-ci/) 28 | 29 | [Sourcegraph.com landing page](https://sourcegraph.com/notebooks) 30 | 31 | [About.sourcegraph.com landing page](https://about.sourcegraph.com/code-search/) 32 | -------------------------------------------------------------------------------- /content/departments/marketing/product-marketing/product-marketing-bios.md: -------------------------------------------------------------------------------- 1 | # Product Marketing Team READMEs 2 | 3 | Our READMEs expands on our profile in [the company team directory](../../../team/index.md) and are meant to help us orient to one another. 4 | 5 | - Alex README 6 | - Victoria README 7 | 8 | --- 9 | 10 | The format, style, order, etc is up to each of us. Just make sure to include the following: 11 | 12 | - Individual view on product marketing 13 | - Preferred learning styles 14 | - Communication style 15 | - Preferred way to collaborate 16 | - How you approach problems 17 | - Preferred way to be recognized/appreciated 18 | - Thoughts/feelings/preferences when it comes to asking for help 19 | - What you find enjoyable at work 20 | - What kind of work do you find easiest to do when (for example, some folks write best at night or can focus more easily in the afternoon) 21 | - How do you feel about getting messages after/outside of hours that are meant for you to see and respond to during active hours 22 | - How folks can best show up for us when we seem off (give space, ask if work is the right place for us to be today, etc) 23 | - Things you are aware of that trigger anxious feelings/feelings of less than at work 24 | - Marketing areas of knowledge 25 | - Marketing areas of interest to learn 26 | - Current personal project 27 | - Something you fear 28 | - A quote you like 29 | - Your favorite candy 30 | 31 | --- 32 | 33 | All credit for the idea of team READMEs, including the page layout and copy, goes to the [Customer Support](../../technical-success/support/team/index.md) team 34 | -------------------------------------------------------------------------------- /content/departments/marketing/starship.md: -------------------------------------------------------------------------------- 1 | # Starship: March 23, 2023 2 | 3 | ### What is Starship? 4 | 5 | Starship is our major release series. Every 6 months, Sourcegraph holds a Starship event to release our latest products, features, and updates. 6 | 7 | ### When is Starship? 8 | 9 | The next Starship event will be held March 23, 2023. 10 | 11 | ### What will happen at Starship? 12 | 13 | You can read more about the Starship marketing launch in our [Starship Marketing Brief](https://docs.google.com/document/d/1VFU8tyzC3e3NX8VicNPtm385eqOMI6loVxZv-8LGidE/edit#). 14 | 15 | The scope of the marketing launch will consist of: 16 | 17 | - A Starship microsite published ahead of the event. 18 | - An extended release post with detailed information on the features included in the release. 19 | - Several dedicated blog posts for the new features being announced at Starship. 20 | - A livestream event on the launch day to share details on our new releases. 21 | - General marketing promotion across various channels. See the brief for more details. 22 | 23 | ### Where can I learn more about Starship? 24 | 25 | Join the #starship-march-2023 channel to ask questions and receive updates about Starship. 26 | -------------------------------------------------------------------------------- /content/departments/people-talent/Required-posting-page.md: -------------------------------------------------------------------------------- 1 | # Workplace Postings 2 | 3 | Sourcegraph is a fully remote company with no offices. We use this page to house all posters and posting you would normally find in an office space. There is a lot of values in teammates having access to this important information. 4 | If you ever have any questions or concerns, please reach out to the people team at [people-ops@sourcegraph.com](mailto:people-ops@sourcegraph.com). 5 | 6 | ## Employment posters 7 | 8 | - [US Federal labor law posters](https://drive.google.com/drive/folders/1xEZc7Y5pdHEoka9A4N_FI2W8biDsre0Q?usp=sharing) 9 | - [US State specific labor law posters](https://drive.google.com/drive/folders/1q60cDDRxqZ45CfmPcXgGKaNPGBrzdoXU?usp=sharing) 10 | - [US City specific labor law posters](https://drive.google.com/drive/folders/15axBqSxeLrT-iCl8MZ2HZoIdgc-SeQP6?usp=sharing) 11 | - International posters coming soon 12 | 13 | Coming soon 14 | 15 | ## LCA postings 16 | 17 | - [LCA - 04701](https://docs.google.com/document/d/1QY8o12nKIKSnYhzL0knrP2VzThww6Um1/edit?usp=sharing&ouid=117604448966777770436&rtpof=true&sd=true) 18 | - Historical postings (coming soon) 19 | -------------------------------------------------------------------------------- /content/departments/people-talent/Required-workplace-postings.md: -------------------------------------------------------------------------------- 1 | # Required Workplace Postings 2 | 3 | Sourcegraph is a fully remote company with no offices. We use this page to house all posters and posting you would normally find in an office space. There is a lot of values in teammates having access to this information. 4 | 5 | If you ever have any questions or concerns, please reach out to the people team at [people-ops@sourcegraph.com](mailto:people-ops@sourcegraph.com). 6 | 7 | ## Employment posters 8 | 9 | - [US Federal Labor Law Poster](https://drive.google.com/file/d/12YcQzmlHsIgFVrwm-6eQNy5-6bDeYpJM/view?usp=sharing) 10 | - [US Federal Labor Law Poster - Spanish](https://drive.google.com/file/d/1kCdlIcXldZBCh0MSMLHPZf-5dEb19OgY/view?usp=sharing) 11 | - [Federal Applicant - EEOC Notice](https://drive.google.com/file/d/1E9GbA5FY5OfjYzoAXiKZhDAodkpFjoc1/view?usp=sharing) 12 | - [Federal Applicant - EEOC Notice - Spanish](https://drive.google.com/file/d/107LF3KufkKS4cThxKZpn_2zNBI-7Gmf7/view?usp=sharing) 13 | - [US State Labor Law Posters](https://drive.google.com/drive/folders/1q60cDDRxqZ45CfmPcXgGKaNPGBrzdoXU?usp=sharing) 14 | - [US City Specific Labor Law Posters](https://drive.google.com/drive/folders/15axBqSxeLrT-iCl8MZ2HZoIdgc-SeQP6?usp=sharing) 15 | 16 | ## **E-verify** 17 | 18 | - Please see our [E-verify page](e-verify.md) for required postings and information 19 | 20 | ## LCA postings 21 | 22 | - No active postings 23 | - [Historical postings](https://drive.google.com/drive/folders/1bkZW26OQ7Kv1G2JU8FKacF9KfGjmZdtA?usp=sharing) 24 | -------------------------------------------------------------------------------- /content/departments/people-talent/e-verify.md: -------------------------------------------------------------------------------- 1 | # E-Verify 2 | 3 | US law requires companies to employ only individuals who may legally work in the US. 4 | 5 | [E-Verify](https://www.e-verify.gov/) is a web-based system that allows Sourcegraph to confirm the eligibility of US-based individuals to work in the US. We will not use E-Verify for anyone who is not located in the US. 6 | 7 | Click on the below links to view full-size PDF versions of E-Verify and employee-rights posters. 8 | 9 | - [This organization participates in E-Verify](https://drive.google.com/file/d/1MfG2cdRRLjo7drN2v9ePwyCo_4W_dr5-/view?usp=sharing) 10 | -------------------------------------------------------------------------------- /content/departments/people-talent/emergency-support.md: -------------------------------------------------------------------------------- 1 | # **Emergency Support** 2 | 3 | In case of emergency, the VP People & Talent and the Director, People are available 24/7 via their cell phone number which is listed in their Slack profile. 4 | 5 | ### **Natural disaster support** 6 | 7 | We value our teammates and want to support them through all of life's events. Natural disasters are often unpredictable and can cause significant distress or loss for teammates. In the event we have teammates experience a natural disaster, we are here to support them! 8 | 9 | Manager responsibility: 10 | 11 | - Seek to understand the impact of the event on the teammate. 12 | - Encourage the teammate to use our benefits and perks during this time. As a reminder, we have a flexible PTO policy and a Mental Health Stipend that can be used by teammates. 13 | - Be sure to support the teammate in completing an out of office plan if time away from work will be helpful. 14 | - Loop in your People Partner to ensure they can reach out and support the teammate with People team resources. 15 | 16 | People team responsibilities: 17 | 18 | - The People team will reach out to the teammate to check-in 19 | - Along with the manager we will encourage teammates to take time off to recover from the event and remind them of all of our benefits and perks that may be helpful. Including our mental health stipend. 20 | - If the teammate takes time off, the People team will follow up to see how the recovery process is going. 21 | -------------------------------------------------------------------------------- /content/departments/people-talent/people-ops/process/compensation-and-leveling/index.md: -------------------------------------------------------------------------------- 1 | # Compensation & Leveling 2 | 3 | - [Compensation & role changes](compensation-role-changes.md) 4 | - [Leveling](../../../../../benefits-pay-perks/pay-expenses/compensation/leveling-guide.md) 5 | - [Compensation](../../../../../benefits-pay-perks/pay-expenses/compensation/index.md) 6 | - [Total Rewards](../../../../../benefits-pay-perks/pay-expenses/compensation/total-rewards.md) 7 | -------------------------------------------------------------------------------- /content/departments/people-talent/people-ops/process/employment_verification.md: -------------------------------------------------------------------------------- 1 | # Employment verification 2 | 3 | ### When should you request an Employment Verification letter from People Ops? 4 | 5 | Anytime you need any sort of employment verification, such as: 6 | 7 | - Home loans 8 | - Mortgages 9 | - Visa sponsorship 10 | - Travel sponsorship (like ESTA applications) 11 | - Verification of employment and income 12 | 13 | ### How do I request a letter? 14 | 15 | - **Step 1: Email People Ops to request the employment verification letter** 16 | 17 | - people-ops@sourcegraph.com 18 | - If there are any specific requirements for the letter, please include the details in your email request 19 | 20 | - **Step 2: The People Ops Team will draft an employment verification letter and share with you via email as soon as possible.** 21 | - If a third party requester needs to collect the verification directly, please ask them to contact people-ops@sourcegraph.com and we will assist. 22 | 23 | If a phone call is required, please share our company phone number, [+1 (650) 273-5591](tel:+1-650-273-5591), and notify people-ops@sourcegraph.com that you will need a verbal verification of employment. 24 | 25 | If you have any questions, you can reach out to the People Team in #ask-people-team in Slack or people-ops@sourcegraph.com. 26 | -------------------------------------------------------------------------------- /content/departments/people-talent/people-ops/process/teammate-sentiment/engagement-survey.md: -------------------------------------------------------------------------------- 1 | # Engagement survey 2 | 3 | TODO 4 | -------------------------------------------------------------------------------- /content/departments/people-talent/people-ops/tools/internal-employment-verification.md: -------------------------------------------------------------------------------- 1 | # Employment Verification - Internal 2 | 3 | Teammates can read about how to request an employment verification process [here](../process/employment_verification.md). 4 | 5 | People Ops Process: 6 | 7 | 1. Teammates will send employment verification requests to people-ops@sourcegraph.com. 8 | 2. Once received, a People Ops team member will draft the letter using [this template](https://docs.google.com/document/d/1JOZSDo_1GtsqtwliPcZyAtcNa13KmAbLFG99LFjq-4Y/edit). 9 | 3. Make a copy of the template, fill in the teammate's information using the data in BambooHR 10 | 4. Save the template as a PDF and add your signature (must be a People Team member) 11 | 5. Reply to the teammate's email request and attach the veritifcation letter PDF 12 | 13 | For more information on this, People Partners and People Ops teammates, please refer to [this doc](https://docs.google.com/document/d/1129c1iENV1VEfwFlMuHQRre3G0VPXASzdpelQc_-I_0/edit). 14 | -------------------------------------------------------------------------------- /content/departments/people-talent/resources-for-new-hires/index.md: -------------------------------------------------------------------------------- 1 | # Resources for New Hires 2 | 3 | ## Before you join 4 | 5 | - [Perks and Benefits](../../../benefits-pay-perks/benefits-perks/index.md) 6 | - [Types of employment](../../people-talent/people-ops/process/how-we-engage-talent-outside-the-us/index.md) 7 | - [Company values](../../../company-info-and-process/values/index.md) 8 | - [What do we do](https://about.sourcegraph.com) 9 | - [How we work asynchronously](../../../company-info-and-process/communication/asynchronous-communication.md) 10 | 11 | ## Once you've decided to join us 12 | 13 | - [Onboarding](../people-ops/process/onboarding.md) 14 | - [Onboarding buddy](../buddy-program.md) 15 | - [Onboarding mentor](../onboarding-mentor.md) 16 | - [Onboarding reviews](../onboarding-reviews.md) 17 | - [Onboarding Feedback Milestones](../../../departments/people-talent/onboarding-feedback-milestones.md) 18 | - [Set up](new-teammate-setup.md) 19 | - [Tools we use](../../../company-info-and-process/working-at-sourcegraph/teammate-development/training/tools/index.md) 20 | - [Swag](../swag.md) 21 | - [Glossary & Definitions](../../../company-info-and-process/onboarding/glossary.md) 22 | - [How we communicate at Sourcegraph](../../../company-info-and-process/communication/index.md) 23 | - [Asynchronous communication](../../../company-info-and-process/communication/asynchronous-communication.md) 24 | - [Using Slack](../../../company-info-and-process/communication/team_chat.md) 25 | -------------------------------------------------------------------------------- /content/departments/people-talent/talent/index.md: -------------------------------------------------------------------------------- 1 | # Talent Team 2 | 3 | - [Talent Processes](process/index.md) 4 | - [Talent Tools](tools/index.md) 5 | - [Internship](internship/index.md) 6 | -------------------------------------------------------------------------------- /content/departments/people-talent/talent/process/headcount_changes.md: -------------------------------------------------------------------------------- 1 | # Headcount changes 2 | 3 | ## How to make a change to headcount plan 4 | 5 | Hiring Managers and Recruiters are able to make changes to their headcount plan as long as we follow the proper process. Changes to the headcount plan include: 6 | 7 | - Change a role’s start date (pulling a role forward or pushing it back in the board-approved headcount plan) 8 | - Add a net-new role to the headcount plan (not already approved by the board) 9 | - Delete a role from the plan (with no plans to re-allocate the headcount to another role or department) 10 | - Change the scope of a role (ie title, level, department, etc.) 11 | 12 | In order to do this, the Hiring Manager must get alignment from their department head and submit a [Headcount Change Request Form](https://docs.google.com/forms/d/e/1FAIpQLSfFhEOLKHIvgopTGUxWjOxIPxrhaQqNdwq0_9eUlsvQyfrhsg/viewform). A Recruiter is able to do this on behalf of the Hiring Manager as well. 13 | 14 | Once the form has been received, the Recruiter will tag Finance, VP Talent, and Department Head in [Responses: HC Change Form](https://docs.google.com/spreadsheets/d/1Dpf6aDw1ESJRYroJz6-ZtaACJxwjEu4my_xeYuB3a7E/edit#gid=790175108) tab. 15 | 16 | Once approved, the Recruiter will make the necessary changes in Greenhouse. However, the Recruiter will **not** change the Quarter start date (board plan) or Start date (board plan) 17 | -------------------------------------------------------------------------------- /content/departments/people-talent/talent/process/scenarios_and_escalation_process.md: -------------------------------------------------------------------------------- 1 | # Common interview scenarios and escalation process 2 | 3 | ## Cancellations 4 | 5 | **Teammate or Hiring Manager** 6 | 7 | If you cannot attend the scheduled interview, please let the Talent team know as soon as possible. Please post in [#ask-hiring](https://sourcegraph.slack.com/app_redirect?channel=ask-hiring) and tag the relevant [Recruiter and Recruiting Coordinator](../../teamalignment.md) and cross-post in that role's Slack channel so the whole team has visibility. 8 | 9 | **Candidate** 10 | 11 | If the candidate cannot attend the scheduled interview, the Recruiting Coordinator will cancel the interview and reschedule. 12 | 13 | ## No Shows 14 | 15 | If the candidate does not show up to the scheduled interview, please let the Talent team know as soon as possible. Please post in [#ask-hiring](https://sourcegraph.slack.com/app_redirect?channel=ask-hiring) and tag the relevant [Recruiter and Recruiting Coordinator](../../teamalignment.md) and cross-post in that role's Slack channel so the whole team has visibility. 16 | 17 | ## Scheduling concerns 18 | 19 | Ideally, each values interview will include two teammates. However, there may be circumstances where only one teammate is scheduled to participate in an interview. In that scenario, the teammate who is participating in the interview asks all interview questions. 20 | 21 | If you have any scheduling concerns, please Slack the [Recruiter and Recruiting Coordinator](../../teamalignment.md) in the role's Slack channel. 22 | -------------------------------------------------------------------------------- /content/departments/people-talent/talent/tools/index.md: -------------------------------------------------------------------------------- 1 | # Talent Tools 2 | 3 | - [Brighthire](guide_to_using_brighthire.md) 4 | - [Greenhouse](guide_to_using_greenhouse.md) 5 | - [Talentwall](guide_to_using_talentwall.md) 6 | - [Interview Training](interview_training.md) 7 | - [Resources for Candidates](../../resources_for_candidates.md) 8 | - [Resources for Hiring Managers](../index.md#resources-for-hiring_managers) 9 | - [Resources for Recruiting Ops](resources_for_recruiting_operations.md) 10 | -------------------------------------------------------------------------------- /content/departments/people-talent/teamalignment.md: -------------------------------------------------------------------------------- 1 | # People & Talent Team Alignment by Department 2 | 3 | People Partner alignment: 4 | 5 | - Technical Success & Support, Operations, Legal, Marketing, Talent & People - Lauren Ross, Senior People Partner 6 | - Engineering, Product & Design - Lauren Ross, Senior People Partner 7 | - Sales - Marija Petrovic, Director, Recruiting & People-Ops 8 | - Executive Team support, Carly Jones, VP, People & Talent 9 | - Any critical concerns - Carly Jones, VP, People & Talent 10 | 11 | Talent Team alignment (contact the below person and they will assign you to a Recruiter): 12 | 13 | - Sales, TS, Support, Marketing, Ops - Marija Petrovic, Director, Recruiting & People-Ops 14 | - Engineering, Product, Design - Devon Coords, Director, Technical Recruiting 15 | - Exec search - Carly Jones, VP, People & Talent 16 | -------------------------------------------------------------------------------- /content/departments/product/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | **/* @sqs 4 | -------------------------------------------------------------------------------- /content/departments/product/design/brand_guidelines/interactive-color-palette.js: -------------------------------------------------------------------------------- 1 | // Open color picker when clicking colors 2 | for (const color of document.querySelectorAll('.color-palette.interactive .color')) { 3 | const value = color.querySelector('code').textContent 4 | const input = document.createElement('input') 5 | input.type = 'color' 6 | input.setAttribute('aria-readonly', 'true') 7 | input.value = value 8 | color.append(input) 9 | color.addEventListener('click', event => { 10 | if (window.getSelection().toString() === '') { 11 | input.click() 12 | } 13 | }) 14 | // Ensure color picker is read-only 15 | input.addEventListener('input', event => { 16 | input.value = value 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /content/departments/product/design/brand_guidelines/logo/versions/Sourcegraph_Logomark_BLK.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 13 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /content/departments/product/design/brand_guidelines/logo/versions/Sourcegraph_Logomark_Color.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 13 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /content/departments/product/design/brand_guidelines/logo/versions/Sourcegraph_Logomark_WHT.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 13 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /content/departments/product/design/documents_templates/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/product/design/documents_templates/index.md -------------------------------------------------------------------------------- /content/departments/product/design/external_resources/index.md: -------------------------------------------------------------------------------- 1 | # External resources 2 | 3 | The design team curates a list of external resources we find useful to reference and share. 4 | 5 | - [10 General principles for interaction design](https://www.interaction-design.org/literature/article/heuristic-evaluation-how-to-conduct-a-heuristic-evaluation) 6 | - [UX research cheat sheet](https://www.nngroup.com/articles/ux-research-cheat-sheet/) 7 | - [usability.gov](https://www.usability.gov/) 8 | - [Apple's human interface guidelines](https://developer.apple.com/design/human-interface-guidelines/) 9 | - [Google's material design](https://material.io/design/) 10 | - [Recommended books (from PMs)](../../../product/onboarding/recommended_reading.md) (feel free to add to the list!) 11 | -------------------------------------------------------------------------------- /content/departments/product/design/icons-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/product/design/icons-example.png -------------------------------------------------------------------------------- /content/departments/product/design/large-margin-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/product/design/large-margin-example.png -------------------------------------------------------------------------------- /content/departments/product/design/margins-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/product/design/margins-example.png -------------------------------------------------------------------------------- /content/departments/product/design/signup-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/product/design/signup-example.png -------------------------------------------------------------------------------- /content/departments/product/design/software_systems/templates/design-research-spike.md: -------------------------------------------------------------------------------- 1 | # Design research spike 2 | 3 | Time required: Several weeks to a month 4 | 5 | Notes: 6 | 7 | - The nature of the project is atypical and estimating is less specific to design. 8 | - This is more like pure blue sky experimentation or exploration, where design <> engineering <> product are exploring new space, outside of the typical project workflow. 9 | - The project process may need to adjust around the exploratory nature of the effort. It is important to explicitly label these kinds of projects so that expectations are aligned accordingly. 10 | - A large research project such as evaluating Notebooks Product Market Fit would fall into this category. 11 | -------------------------------------------------------------------------------- /content/departments/product/design/software_systems/templates/extra-small-template.md: -------------------------------------------------------------------------------- 1 | # Design Template: Extra small 2 | 3 | - Estimate: Less than a day 4 | - Notes: 5 | 6 | - When creating the issue, use the label `design-estimated-XS` 7 | - Useful when solving clear, low-risk, often lower-value problems. Often a solution is provided by product or engineering. 8 | 9 | ✂️ ------------------------- 10 | 11 | ```markdown: 12 | ## Design process 13 | 14 | - Estimate: Less than a day 15 | - Weighting factors: 16 | - MEDIUM|LOW risk 17 | - HIGH|MEDIUM clarity 18 | 19 | ### Discover 20 | - [ ] Product and/or engineering provide direction and/or feedback 21 | 22 | ### Design 23 | - [ ] High fidelity design using design system or low fidelity design as 24 | required - Link 25 | - [ ] Non-visual design guidance captured in the issue 26 | 27 | ### Testing 28 | - [ ] Hallway testing - Link 29 | 30 | ### Deliver 31 | - [ ] Team review 32 | - [ ] QA'd by designer before release 33 | 34 | ### Measure 35 | - [ ] Metrics defined in the Figma file ([i](https://handbook.sourcegraph.com/departments/product-engineering/product/design/metrics/defining-metrics/)) - Link 36 | - [ ] Followup task will analyze metrics to ensure successful completion - Link 37 | ``` 38 | 39 | ✂️ ------------------------- 40 | -------------------------------------------------------------------------------- /content/departments/product/design/software_systems/templates/index.md: -------------------------------------------------------------------------------- 1 | # Design project templates 2 | 3 | Designers at Sourcegraph use design project templates to help standardize their workflow and record artifacts generated during the design process. Standardizing workflow across teams helps designers leverage the experience of the entire design team and reduces friction in planning. When designers use a template to record the artifacts and resulting decisions generated by their process, the issue can serve as a central place to access all assets and inform future decisions. 4 | 5 | It is important to note that a template is not a prescriptive set of requirements for a project. As each project is different, the designer and their team will determine the best route to success. 6 | 7 | Selecting a scope of work for a project (and the corresponding template) requires communication with team members and an understanding of two key factors: 8 | 9 | - The amount of risk involved in the feature 10 | - The confidence the designer and team have in a proposed solution or hypothesis 11 | 12 | Generally, the higher the risk involved in the effort and the lower confidence, the larger the project should be. 13 | 14 | ## Templates 15 | 16 | - [XL](./extra-large-template.md) 17 | - [Large](./large-template.md) 18 | - [Medium](./medium-template.md) 19 | - [Small](./small-template.md) 20 | - [Extra Small](./extra-small-template.md) 21 | - [Design research spike](./design-research-spike.md) 22 | -------------------------------------------------------------------------------- /content/departments/product/design/team_rituals/index.md: -------------------------------------------------------------------------------- 1 | # Team rituals 2 | 3 | As an asynchronous-first, globally-distributed design team, our team rituals help bring us together as a design team and build stronger trust, physiological safety, and connections. 4 | 5 | ## Figjam async updates 6 | 7 | Each week we all update the team Figjam board with a Loom, link to GitHub issues, and calls for review or input. We also try to include a photo of something pretty or delicious 😋 8 | 9 | ## Design sync 10 | 11 | The design sync is our weekly sync to help us keep the pulse of product design at Sourcegraph. We use this time to: 12 | 13 | - Share updates and highlights, and request feedback on work in progress 14 | - Discuss design-related issues with peers 15 | - Reflect on how we work as a product design team 16 | - Stay inspired 17 | 18 | We alternate this each week between different timezones, to ensure everyone can participate. 19 | 20 | ## Retros 21 | 22 | We run [team retrospectives](../../../../company-info-and-process/communication/retrospectives.md) on a monthly basis to help us continuously learn and improve. We focus mainly on collaboration and our processes. 23 | -------------------------------------------------------------------------------- /content/departments/product/process/gtm/new_feature_legal_questionnaire.md: -------------------------------------------------------------------------------- 1 | # New Product/Feature Legal Questionnaire 2 | 3 | ## Product inception and pre-beta launch stages 4 | 5 | At the new feature inception and again at pre-beta launch, share following info with legal by copying the below sections into a Google doc and then sharing the completed document in #legal along with any relevant context and documentation like RFCs: 6 | 7 | 1. Any new data collected by this product 8 | 1. Any new uses of data collected by this product 9 | 1. Any new sharing of data collected by this product (with third party processors, such as Datadog, etc.) 10 | 1. Any new security risks introduced by this product 11 | 1. New potential customer complaints & worst case scenarios from use of this product 12 | 13 | ## Pre-GA launch stage 14 | 15 | Notify following teams 4 weeks before launch, so teammates can set up contracting changes for the new product: 16 | 17 | 1. legal 18 | 1. sales ops 19 | 1. finance 20 | -------------------------------------------------------------------------------- /content/departments/product/process/prioritize_and_build/index.md: -------------------------------------------------------------------------------- 1 | # Prioritize and Build 2 | 3 | - [Deprecation Process](./deprecation_process.md) 4 | - [Prioritization](./prioritizing.md) 5 | -------------------------------------------------------------------------------- /content/departments/product/product-design-sync.md: -------------------------------------------------------------------------------- 1 | # Product design sync 2 | 3 | The product and design team meets weekly to discuss the most important cross-team product topics that need synchronous conversations. The meeting is on Thursday at 8 AM PT / 3 PM UTC. The meeting is recorded and recordings are posted to the #product channel. 4 | 5 | Also see the [sync notes](https://docs.google.com/document/d/1zJx6rHKLTGtylLsQe6e8nTvO1NVFTOS8mtMX76lEHtA/edit#). 6 | 7 | ## Working agreements 8 | 9 | This meeting has a large attendance. To make it work, we use the following working agreements: 10 | 11 | - We have a rotation for facilitating the sync. The facilitator is responsible for: 12 | - making sure topics to discuss are added to the doc prior to the meeting (see below) 13 | - time keeping 14 | - moderating conversations and in particular pushing topics that are only useful to a few people to async or a follow-up 15 | - At least 24 hours prior to the meeting (before Wednesday 8AM PT / 3 PM UTC), participants list out topics to discuss at the top of the sync doc. 16 | - The day before the meeting, participants can write down their ideas in the doc, and discuss async. This prep work will make the meeting more efficient by making sure we have as much context as possible before joining. 17 | - We take 2 min at the beginning of the meeting to vote on the topics to discuss, 3 votes per person. 18 | - We discuss each topic for 5 min max. After 5 min, we run a quick show of hands to extend the discussion by 5 additional minutes. This allows us to be intentional about the time needed for a topic. 19 | -------------------------------------------------------------------------------- /content/departments/product/roles/interviews/hm_intro_call.md: -------------------------------------------------------------------------------- 1 | # Hiring manager screen 2 | 3 | All hiring manager screens are 30 mins. This is an opportunity for us to get to know you & your background, and for you to get to know us! 4 | 5 | ## Product Manager & Product Designer questions 6 | 7 | - (~1 min) Introductions 8 | - (20 min) Learn about your background. 9 | - Tell me about your background. 10 | - Why are you moving on from \_\_\_? 11 | - What do you want to learn or do? How do you want to grow? 12 | - What are your expectations from your team? 13 | - What are the kinds of problems you gravitate towards? 14 | - Say I hire you today. What are the risks of you starting in this role? 15 | - (10 min) Answer your questions about the role, team, & Sourcegraph. 16 | -------------------------------------------------------------------------------- /content/departments/product/roles/interviews/index.md: -------------------------------------------------------------------------------- 1 | # Product interviews 2 | 3 | We publicly document our interview process and keep this documentation available even if a role is not open. See our [careers page](https://boards.greenhouse.io/sourcegraph91) for the list of open roles and [product roles and responsibilities](../index.md) for role expectations. 4 | 5 | Interview processes: 6 | 7 | - [Product Manager](./product_manager/index.md) 8 | - [Product Designer](./product_designer/index.md) 9 | -------------------------------------------------------------------------------- /content/departments/product/team/index.md: -------------------------------------------------------------------------------- 1 | # Product org 2 | 3 | For a list of product teams and what they work on, check our [product teams page](product_teams.md). 4 | -------------------------------------------------------------------------------- /content/departments/product/team/product_teams.md: -------------------------------------------------------------------------------- 1 | --- 2 | data_source: [product teams] 3 | --- 4 | 5 | # Sourcegraph product teams 6 | 7 | This page contains a list of the product orgs and teams at Sourcegraph, and important information about them. 8 | You may also be interested in seeing the [product org chart](index.md). 9 | 10 | {{generator:product_teams_list}} 11 | -------------------------------------------------------------------------------- /content/departments/product/tools/deployment_options.md: -------------------------------------------------------------------------------- 1 | --- 2 | data_source: [/data/features.yml, features] 3 | data_source_2: [/data/deployment_options.yml, deployment options] 4 | hide_sidebar: true 5 | --- 6 | 7 | # Features available by deployment option 8 | 9 | This page is intended as a reference of features by deployment option; each item will link you to our documentation. Items not listed here are available regardless of the deployment option. 10 | You may also be interested in seeing our [code host compatibility](feature_compatibility.md) matrix. 11 | 12 | ## Deployment options 13 | 14 | {{generator:deployment_options}} 15 | -------------------------------------------------------------------------------- /content/departments/product/tools/feature_compatibility.md: -------------------------------------------------------------------------------- 1 | --- 2 | data_source: [/data/code_hosts.yml, code hosts] 3 | data_source_2: [/data/product_teams.yml, product teams] 4 | hide_sidebar: true 5 | --- 6 | 7 | # Code host compatibility 8 | 9 | This page is intended as a reference of features by code host compatibility; each item will link you to our documentation. 10 | 11 | Note that this page only lists features that have an incompatibility with a code host; if a feature is not listed here it can be assumed to be compatible with every code host. 12 | 13 | ## List of code hosts 14 | 15 | {{generator:code_hosts_list}} 16 | 17 | ## Compatibility matrix 18 | 19 | {{generator:feature_code_host_compatibilities}} 20 | -------------------------------------------------------------------------------- /content/departments/product/tools/index.md: -------------------------------------------------------------------------------- 1 | # Product Tools 2 | 3 | - [Feature compatibility matrix](feature_compatibility.md) 4 | - [Deployment options](deployment_options.md) 5 | -------------------------------------------------------------------------------- /content/departments/sales/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation. 2 | 3 | **/* @gb1228 4 | -------------------------------------------------------------------------------- /content/departments/sales/career-development/index.md: -------------------------------------------------------------------------------- 1 | # Sales Career Development Frameworks 2 | 3 | Our Career Development and Competency Frameworks help you understand the expectations of your role and provides a common language for you and your manager to discuss and plan your career growth. They are also an important part of our larger goal of ensuring everyone is equitably recognized for the impact they have at work, and to reduce bias in promotions and hiring. 4 | 5 | - [Account Executive Career Development Framework](ae-framework.md) 6 | - [Account Executive Competency Framework](ae-competencies.md) 7 | - [SDR Career Development Framework](sdr-framework.md) 8 | - [SDR Competency Framework](sdr-competencies.md) 9 | -------------------------------------------------------------------------------- /content/departments/sales/process/index.md: -------------------------------------------------------------------------------- 1 | # Sales Processes 2 | 3 | - [Engaging with Legal](saleslegal.md) 4 | - [Engaging with Security](salessecurity.md) 5 | - [Territory Assignment Process](https://docs.google.com/document/d/1GU55BRIBRbFmlBo24YfnuuvKCfhlQm5uNRLaSJ9hsbo/edit) 6 | -------------------------------------------------------------------------------- /content/departments/sales/process/saleslegal.md: -------------------------------------------------------------------------------- 1 | # How and when to engage with legal 2 | 3 | - **Never talk to an attorney from a customer account without our legal present!** 4 | 5 | ### Conflict Check 6 | 7 | Before any legal team involvement (such as reviewing an NDA or MSA), we need to check with our lawyers to see if they have any conflicts in advising us in negotiations with a customer. 8 | 9 | A conflict check should be initiated for any first time customer if you are expecting any event that would require a legal review or by the time a deal reaches the "Contract Negotitiation" stage in Salesforce if no other event has occurred. 10 | 11 | To initiate a conflict check draft and send a short email with the following information to our legal team: 12 | 13 | > Please start a conflict check for the following company: 14 | > 15 | > Company Name 16 | > 17 | > Contact Name 18 | > 19 | > Type of Deployment [On-prem or Managed Instance] 20 | > 21 | > Potential Deal Size 22 | > 23 | > Special Business Terms 24 | > 25 | > Timeframe [Standard or Urgent] 26 | 27 | Back to the [Sales](../index.md) directory. 28 | -------------------------------------------------------------------------------- /content/departments/sales/process/salessecurity.md: -------------------------------------------------------------------------------- 1 | # How and when to engage with security 2 | 3 | ### Security questionnaires 4 | 5 | The CE team should take the first pass on inbound questionnaires using our [Knowledge Base](https://app.safebase.io/knowledge). 6 | 7 | Once the first pass is done but questions remain open, please use the slack workflow **"Request Security Support"** in the #discuss-security slack channel. 8 | 9 | 10 | 11 | > 💡 **Top Tip!** See the handbook page [here](../../security/security-trust-center.md) on how to access our Security Portal as an internal user. 12 | 13 | ### Customer security questions 14 | 15 | If customers have specific security questions, first run them by the #ce slack channel. If nobody has context, or we're unsure of how to phrase things, follow the [guidance here](../../security/#how-to-work-with-us) to engage with the Security team. 16 | -------------------------------------------------------------------------------- /content/departments/sales/roles/index.md: -------------------------------------------------------------------------------- 1 | # Sales roles 2 | 3 | See our [careers page](https://boards.greenhouse.io/sourcegraph91) for open positions and more info. 4 | -------------------------------------------------------------------------------- /content/departments/sales/sales-enablement/contentmanagement.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/sales/sales-enablement/contentmanagement.md -------------------------------------------------------------------------------- /content/departments/sales/sales-enablement/index.md: -------------------------------------------------------------------------------- 1 | # Sales Enablement 2 | 3 | As the sales enablement practice grows here at Sourcegraph, our charter is to help generate revenue, empower our AEs to maximize their potential as a sales force, and provide the entire Sales organization the tools and training to execute at a world-class level. 4 | 5 | ### Quick Links 6 | 7 | - [PG Campaigns & Sales Plays](https://drive.google.com/drive/u/0/folders/1vQswQCXG1A_oOVQFzFZ_-JUjvs5XMft-) 8 | - [Know Thy Dev Materials](https://drive.google.com/drive/u/0/folders/167Umyjs25fHPonju2ctWhtrkADDQ1WSJ) 9 | - [AE Prospecting Playbook](https://docs.google.com/document/d/13ECula6o5465JFrAxwC8nkMXgKMbp0i3kD5QjLoQ1GM/edit?usp=sharing) 10 | - [VE Self-Service ROI Calculator](https://docs.google.com/spreadsheets/d/1KMWvQV41FcZ62mLR0QL-Q0whvb4uW_znZsd8HV_XnDU/edit?usp=sharing) 11 | 12 | ### Members 13 | 14 | {{generator:reporting_structure.senior_manager_value_engineering}} 15 | 16 | - [VE & SE roles - open positions](https://sourcegraph.com/careers) 17 | 18 | ### Sales Enablement Team Charter 19 | 20 | - Provide the Sales team with the resources they need to generate and close more deals—including content, tools, knowledge, and information to effectively sell to our prospects and customers. 21 | - Manage the Sales Onboarding Program and continually update based on current trends and content 22 | - More to come….. 23 | 24 | ## Contact Us 25 | 26 | Slack Channel #value-engineering 27 | -------------------------------------------------------------------------------- /content/departments/sales/sales-ops/index.md: -------------------------------------------------------------------------------- 1 | # Sales strategy & operations 2 | 3 | The Sales strategy & operations (Sales Ops) team is responsible for helping our Sales, Customer Engineering, and all go-to-market (GTM) teams sell and serve our customers better. 4 | 5 | - [Onboarding](onboarding.md) 6 | 7 | ## Team 8 | 9 | ### Members 10 | 11 | {{generator:reporting_structure.director_sales_ops}} 12 | 13 | ### Roles 14 | 15 | See the [Operations roles](../roles/index.md) page. 16 | 17 | ## Sales operations 18 | 19 | - See details on sales operations systems and processes [here](../tools/salesforce.md) 20 | 21 | ## Marketing operations 22 | 23 | - See details on marketing operations systems and processes [here](marketing-ops.md) 24 | 25 | ## Resources 26 | 27 | - [Prospecting resources](prospecting.md) 28 | -------------------------------------------------------------------------------- /content/departments/sales/sdrteam/Recommended Reads: -------------------------------------------------------------------------------- 1 | # Recommended SDR Team Reads & Podcasts 2 | 3 | 4 | ## Books 5 | * Never Split the Difference 6 | * The Infinite Game 7 | * Leaders Eat Last 8 | * Challenger Sale 9 | * Blockchain Revolution 10 | * GAP Selling 11 | * PLG- Product Led Growth 12 | * GRIT 13 | * Start with Why 14 | * Turning the Flywheel 15 | * The New Kingmakers 16 | * The Compound Effect 17 | * Smarter, Faster, Better 18 | * So Good They Can't Ignore You 19 | * Think Again 20 | * Give and Take 21 | * The Most Excellent Way to Lead 22 | * Seven Habits of Highly Successful People 23 | * How to Win Friends and Influence People 24 | 25 | 26 | ## Podcasts 27 | * This Week in Startups 28 | * A Time Shared 29 | * 30 Minutes to President's Club 30 | -------------------------------------------------------------------------------- /content/departments/sales/smb/cloud_instances.md: -------------------------------------------------------------------------------- 1 | # Cloud Instances 2 | 3 | This page is intended to capture the various creation and maintenance activities required for cloud prospects and customers. 4 | 5 | The following links will help you create and maintain licenses and cloud environments for prospects and customers. 6 | 7 | - [Creating a License Key](../../technical-success/ce/process/create-new-license.md#creating-a-new-license-key-walkthrough) 8 | - [Video Tutorial](https://www.loom.com/share/7162dc61f425484cb380c0c5ea79de10?sid=53a2dd14-af06-4d67-820e-0dfe84574d28) 9 | - [Create a Cloud Instance](../../cloud/index.md#create-a-cloud-instance---new-request) 10 | - [Video Tutorial](https://www.loom.com/share/7ad69c750d9e472e9644c5b91bc58985?sid=cbe0d78d-07e4-4ba1-8d91-78b67fb59a02) 11 | - [Update a Cloud License Key](../../cloud/index.md#update-license-key-on-a-cloud-instance---new-request) 12 | - [Video Tutorial](https://www.loom.com/share/deaadbacc7dd4261a9876d76272a6707) 13 | - [Teardown a Cloud Instance](../../cloud/index.md#tear-down-a-cloud-instance---new-request) 14 | - [Video Tutorial](https://www.loom.com/share/06541c4c569645d3a6891097de6b0c8b?sid=e1eafa86-4c85-4aeb-b186-bbe2f064fffe) 15 | -------------------------------------------------------------------------------- /content/departments/sales/smb/index.md: -------------------------------------------------------------------------------- 1 | # Small-to-Medium Business (SMB) Team 2 | 3 | This page outlines important processes and resources for our SMB AE Team. 4 | 5 | ## SMB Segment 6 | 7 | Our SMB segment is part of our [FY25 Market Segmentation](../../../strategy-goals/strategy/index.md#market-segmentation) and is comprised of companies with less than 100 developers. 8 | 9 | ## Team Resources 10 | 11 | - [Creating and maintaining cloud instances](cloud_instances.md) 12 | - [Post-sales handoff](smb-handoff.md) 13 | -------------------------------------------------------------------------------- /content/departments/sales/tools/index.md: -------------------------------------------------------------------------------- 1 | # Sales Tools & Resources 2 | 3 | - [Common customer questions](common_customer_questions.md) 4 | - [Records](records.md) 5 | - [Salesforce](salesforce.md) 6 | - [Sales Resources](salesresources.md) 7 | - [GCP Marketplace Guidance](GCP_Marketplace_Guidance.md) 8 | - [Deployment methods and products](../sales-enablement/deployment-methods-and-products.md) 9 | -------------------------------------------------------------------------------- /content/departments/security/CODENOTIFY: -------------------------------------------------------------------------------- 1 | # See https://github.com/sourcegraph/codenotify for documentation 2 | 3 | **/* @sourcegraph/security 4 | -------------------------------------------------------------------------------- /content/departments/security/admin-access-internal-instances.md: -------------------------------------------------------------------------------- 1 | # Site-admin access to internal instances 2 | 3 | Site-admin access to internal instances (dotcom, s2, rctest, demo, k8s) is provided through an auto-approved Entitle workflow. It will create a short-lived admin account that lasts 1h. Removing long-lived admin accounts largely reduces the risk of compromised credentials across our instances. 4 | 5 | > [!NOTE] 6 | > This is currently deployed only in the dotcom instance. Other instances are unchanged for the moment. 7 | 8 | ## How it works 9 | 10 | ### New direct method 11 | 12 | Site-admin access can now be granted instantly using our new Entitler service. You can request the bundle by typing `/access_request` in Slack and in the 'Search permission' box type 'dotcom'. You will see the set 'Dotcom direct site-admin'. Set your desired duration, make sure you add a nice justification and you're good to go! Access should be granted in less than a minute and will be granted to your normal Dotcom account. Just refresh your session and you're good to go! 13 | 14 | Click here to [request access now.](https://app.entitle.io/request?data=eyJkdXJhdGlvbiI6IjE4MDAiLCJqdXN0aWZpY2F0aW9uIjoiW0VudGVyIGp1c3RpZmljYXRpb25dIiwiYnVuZGxlSWRzIjpbIjMwNzBjZWYxLTZlNGItNDEwYS05ODU2LTc0YTM0ZTliODZmNSJdfQ%3D%3D) 15 | 16 | > [!NOTE] 17 | > This requires users to have a _verified_ @Sourcegraph.com email account as their primary email. 18 | 19 | If you have any issues with the integration, please drop a message in [#discuss-security](https://sourcegraph.slack.com/archives/C1JH2BEHZ). 20 | -------------------------------------------------------------------------------- /content/departments/security/cody-guidelines.md: -------------------------------------------------------------------------------- 1 | # Cody Security Guidelines 2 | 3 | _NOTE: Cody is a new brand new feature with a ton of expansion to come. These guidelines are likely to change often to follow the pace._ 4 | 5 | - [Customer LLM access token guidelines](https://docs.google.com/document/d/1_JEv_JLKCTlKK5CBpv7-LAlISd2k03XFWcVyon6K96c/edit?usp=sharing) 6 | -------------------------------------------------------------------------------- /content/departments/security/img/continuous-code-reviews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/security/img/continuous-code-reviews.png -------------------------------------------------------------------------------- /content/departments/security/img/sharing-with-1password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/security/img/sharing-with-1password.png -------------------------------------------------------------------------------- /content/departments/security/poker-planning.md: -------------------------------------------------------------------------------- 1 | # Poker-Planning 2 | 3 | ### Agile Poker Story Points 4 | 5 | The design of this process was to help organizations more accurately estimate development time frames, build consensus among the members of the cross-functional team, and more strategically plan the team’s work. 6 | 7 | This particular methodology is particularly effective for smaller teams. The main goal is to avoid the influences of other team members and to engage the team in a discussion on the particular issue. This method has been shown to result in more accurate estimation. 8 | 9 | 1: Small effort task - Have the individual knowledge and tooling required. 10 | 11 | 2: Medium effort task - Have the individual knowledge and tooling required. 12 | 13 | 3: External dependencies exist such as: reviews, approvals. Time is required from others and the task is non-trivial. 14 | 15 | 5: Like 3, but bigger scope. 16 | 17 | 8: MANY external dependencies: e.g. understanding and approval from other many teams. 18 | 19 | 13+: Break into smaller tasks and/or sub-tasks. 20 | 21 | Story Points = Complexity + Dependency + Scope 22 | 23 | ## Additional resource for Planning Poker concepts: 24 | 25 | - https://www.mountaingoatsoftware.com/agile/planning-poker 26 | -------------------------------------------------------------------------------- /content/departments/security/reporting-vulnerabilities.md: -------------------------------------------------------------------------------- 1 | # Reporting a vulnerability 2 | 3 | Sourcegraph's public bug bounty scheme is closed as of the 31st of March 2022. 4 | We are currently operating an invite-only HackerOne bug bounty program instead. 5 | If you have found a high or critical severity vulnerability in one of our 6 | products, please reach out to security@sourcegraph.com and we will assess whether 7 | the severity of the reported issue merits an invite to the program. Please note 8 | that a report to this email address is no longer considered a submission to the 9 | bounty scheme in itself. 10 | -------------------------------------------------------------------------------- /content/departments/security/tooling/entitle.md: -------------------------------------------------------------------------------- 1 | # Entitle 2 | 3 | ## What is it? 4 | 5 | Entitle is an authentication and access management system. It is a cloud based application that automates access requests, approvals, and revocation of permissions based on custom policies. All this can be done via Slack with a simple command “/entitle”. 6 | 7 | ## Why Entitle? 8 | 9 | After reviewing many options available on the market for permission management, Entitle stood out as a clear innovator in the field. Entitle has deep integrations with various applications that we currently use. We have been working closely with them since our first Sourcegraph Merge to get integrations setup and polish the user interface. 10 | 11 | There are many security concerns that come with Identity and Access Management. Entitle helps address many of them for us, including: 12 | 13 | - No need for indefinite access to sensitive information 14 | - Auto expiration of access based on time-bound requests 15 | - Audit log of all requests and actions taken 16 | - Granular access means no more over-provisioned permissions 17 | - Granular access means only access to relevant data 18 | 19 | Entitle also gives us advantages over the current request process. It allows for: 20 | 21 | - Self-service request process 22 | - Automatic approval gathering process 23 | - Time based permissions 24 | - Granular access to only necessary information 25 | - Quicker request completion time 26 | - Full log of request, approvals, grants and revocations 27 | 28 | ## How to request access via Entitle 29 | 30 | [How to Guide](entitle_request.md) 31 | -------------------------------------------------------------------------------- /content/departments/security/tooling/entitle_cloudflare.md: -------------------------------------------------------------------------------- 1 | # Cloudflare access using Entitle 2 | 3 | Most users have Readonly access to Cloudflare already 4 | 5 | This method of request is for requesting escalated permissions 6 | 7 | ## Teammate access to Cloudflare 8 | 9 | In Entitle or the /access_request in Slack: 10 | 11 | - Request a specific permission 12 | - Integration: Cloudflare Administration 13 | - Resource Type: Accounts 14 | - Resource: Sourcegraph 15 | - Role: **Admin/SuperAdmin** 16 | - Duration: 17 | - Justification: Please fill in justification here 18 | 19 | You can also follow [this link](https://app.entitle.io/request?targetType=resource&duration=10800&justification=Fill%20in%20justification%20here&integrationId=0314053b-d5c7-4c8d-84d6-81a22eb4c1fc&resourceId=6f6a28b7-d6cc-4663-8047-bac544f8ce70&roleId=f6543cc0-dc96-4ef8-bbee-f775ae2a0d9f&grantMethodId=f6543cc0-dc96-4ef8-bbee-f775ae2a0d9f) for a prefilled version of the above options. 20 | 21 | example Cloudflare request 22 | 23 | You will get a notification from Entitle once approved. 24 | -------------------------------------------------------------------------------- /content/departments/security/tooling/trivy/5-2-0.md: -------------------------------------------------------------------------------- 1 | # Accepted CVEs for Sourcegraph 5.2.0 2 | 3 | | CVE ID | Affected Images | CVE Severity | CVSS Base Score | [Sourcegraph Assessment](../../../engineering/dev/policies/vulnerability-management-policy.md#severity-levels) | CVSS Environmental Score | Details | 4 | | ------ | --------------- | ------------ | --------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------ | ------- | 5 | 6 | **No known CVEs in Sourcegraph 5.2.0** 7 | 8 | ## Known False Positives 9 | 10 | Some scanners incorrectly identify false positives in our images: 11 | 12 | | Vulnerability ID | Affected Images | Note | 13 | | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------- | 14 | | [SNYK-GOLANG-GITHUBCOMCYPHARFILEPATHSECUREJOIN-5889602](https://security.snyk.io/vuln/SNYK-GOLANG-GITHUBCOMCYPHARFILEPATHSECUREJOIN-5889602) | sourcegraph/cadvisor | This potential security issue only affects `filepath-securejoin` when used on Windows - all Sourcegraph deployments use Linux | 15 | -------------------------------------------------------------------------------- /content/departments/tech-ops/process/buyback.md: -------------------------------------------------------------------------------- 1 | # Computer buyback program 2 | 3 | Sourcegraph teammates have the opportunity to purchase their previously used device after they have gone through a [device upgrade](../../../benefits-pay-perks/benefits-perks/spending-company-money.md#laptop-upgrade). The entire buyback process, including a full wipe, should be completed within two weeks of receiving a new device. 4 | 5 | Tech Ops will source the fair market value of the device and offer a 50/50 purchase price to keep the device as a personal device (please no haggling). Tech Ops will then work with the teammate to finalize payment and perform a factory reset on the device through our endpoint security software. For legal reasons, resets must be performed by Tech Ops and be full factory reset. 6 | 7 | ## Steps for processing a purchase: 8 | 9 | 1. Submit a computer buyback request form - [Tech Ops Requests Jira Portal](https://sourcegraph.atlassian.net/servicedesk/customer/portal/11/group/16/create/10119) 10 | 2. Tech Ops will respond in ticket, providing you the cost and next steps 11 | 3. Decide if you would like to proceed with purchase or return the device to Sourcegraph 12 | 4. Submit payment (via check or Paypal) 13 | 5. Sign a document accepting ownership of the device ‘as-is, provided by the Tech Ops staff during process 14 | 6. Tech Ops will schedule time with you on your last working day to reset the device - this step applies to purchasing and returning 15 | -------------------------------------------------------------------------------- /content/departments/tech-ops/process/index.md: -------------------------------------------------------------------------------- 1 | # Tech Ops Process 2 | 3 | - [Internal security](internal-security/index.md) 4 | -------------------------------------------------------------------------------- /content/departments/tech-ops/process/vendor-request.md: -------------------------------------------------------------------------------- 1 | # Vendor Request Process 2 | 3 | This information has been relocated the AP Policy / Procurement Process [page](../../finance/process/ap.md). 4 | -------------------------------------------------------------------------------- /content/departments/tech-ops/process/vendor-reviewer-guide.md: -------------------------------------------------------------------------------- 1 | # Vendor Reviewer Guide 2 | 3 | This information has been relocated to the AP Process Page 4 | -------------------------------------------------------------------------------- /content/departments/tech-ops/tools/googlegroups.md: -------------------------------------------------------------------------------- 1 | ## How to create a Google Group 2 | 3 | 1. Navigate to [groups.google.com](https://groups.google.com/my-groups). 4 | 2. Select Create Group in the top left corner. 5 | 3. Enter a name for your group and select your desired privacy settings. 6 | 4. Add members and create your group! 7 | 8 | ## Group Privacy Settings 9 | 10 | - ‘Who can search for group’ allows you to choose between **Entire organization** and **Group members**. When **Entire organization** is selected, everyone with a sourcegraph.com email address can search for and view messages sent to the group. 11 | - ‘Who can join group’ allows you to limit group members to invited users only. 12 | - ‘Who can post’ manages who can send messages to your group. Select **Group members** if you wish to limit messages to group members only. Select **Entire organization** if you want to give all sourcegraph.com users the ability to send messages to the group. If this group is being used for external communications, select **Anyone on the web**. 13 | -------------------------------------------------------------------------------- /content/departments/tech-ops/tools/index.md: -------------------------------------------------------------------------------- 1 | # Tech Ops Tools 2 | 3 | - [Systems List Google Drive](https://docs.google.com/spreadsheets/d/1tzP64dj2CrddDLTZuLFWmpXoNB9lUaOstRUj3FaN_Rs/edit#gid=0) 4 | - [Okta](Okta/main.md) 5 | - [Google Drive](../tools/drive.md) 6 | - [Google Groups](../tools/googlegroups.md) 7 | -------------------------------------------------------------------------------- /content/departments/technical-success/ce/cte/index.md: -------------------------------------------------------------------------------- 1 | # Customer Training Engineers 2 | 3 | _For FY23 roadmap and goals, see [our roadmap](roadmap.md)._ 4 | 5 | ## Who we are 6 | 7 | Customer Training Engineers (CTE), within Customer Engineering (CE), have been specialized experts focused first and foremost on customer training and enablement. Our team will define, build, and maintain all aspects of external training, starting with our Enterprise customers first. This includes the definition (and continued iteration) of the strategy and standardization of our customer-facing training methodology and curriculum to support that strategy. 8 | 9 | As an extension of the way we train and enable users, this team will secondarily focus on internal training and enablement of Customer Engineers in support of our customers’ experience. We will train our CEs on how to provide customers with consistent, relevant, repeatable, and timely training and enablement materials (train the trainers) that increase use-case adoption and enables admins and end-users, in addition to occasionally hosting webinars and training sessions ourselves. In time, we expect dedicated Trainers to conduct Enterprise customer training. 10 | 11 | This team and their responsibilities are being folded into the broader post-sales Technical Advisory team effect Oct 2022 and beyond. 12 | -------------------------------------------------------------------------------- /content/departments/technical-success/ce/demo/index.md: -------------------------------------------------------------------------------- 1 | # Demo Tips 2 | 3 | Often, the first opportunity that a Customer Engineer has to interact with a prospective customer is in the setting of a Sourcegraph demo. Refer to this page and sub-pages for useful tips, tricks, and resources for giving meaningful demos of parts of Sourcegraph. 4 | 5 | Note: this page is not meant to replace demo training that occurs as part of [onboarding](../onboarding/index.md). Rather, this is meant to be a place to share smaller-size tips & tricks to help us all learn the latest & greatest best practices for demoing. 6 | 7 | ## Tips by Product Area 8 | 9 | - [Cody](cody.md) 10 | -------------------------------------------------------------------------------- /content/departments/technical-success/ce/process/demo-repo-contribution.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/content/departments/technical-success/ce/process/demo-repo-contribution.md -------------------------------------------------------------------------------- /content/departments/technical-success/ce/tools/index.md: -------------------------------------------------------------------------------- 1 | # CE Tools 2 | 3 | List of commonly used and recommended tooling for Customer Engineers. 4 | 5 | ### Core tools 6 | 7 | - [GitHub](https://github.com/sourcegraph/sourcegraph) 8 | - [Looker](https://sourcegraph.looker.com/boards/8) 9 | - [Salesforce](https://sourcegraph2020.lightning.force.com/lightning/page/home) 10 | 11 | ### Productivity 12 | 13 | - [Asana](https://app.asana.com/0/1200768248900861/overview) 14 | - [Calendly](https://calendly.com/) 15 | - [Clockwise](https://www.getclockwise.com/) 16 | - [Miro](https://miro.com/app/dashboard/?button=top-cta-MakeYourFirstBoard&utm_campaign=Onboarding%203.2&utm_content=Onboarding_NewCollabFunnel2.0_Email1_Welcome&utm_medium=email_action&utm_source=customer.io) 17 | 18 | ### Misc 19 | 20 | - [Krisp](https://krisp.ai/) 21 | - [Productboard](https://sourcegraph.productboard.com/) 22 | - Being [notified](../../../product/process/feedback/user_stakeholder_feedback.md##nps-survey) of NPS score submissions 23 | -------------------------------------------------------------------------------- /content/departments/technical-success/index.md: -------------------------------------------------------------------------------- 1 | # Technical Success 2 | 3 | ## Our Mission 4 | 5 | To lead the technical success of prospective & existing customers by guiding them to positive outcomes using Sourcegraph. 6 | 7 | ## Teams 8 | 9 | - [Customer Engineering](ce/index.md) are the pre-sales technical experts. CE understands the needs and challenges devs face and educate prospective devs on what's possible with Sourcegraph. 10 | - [Professional Services](ps/index.md) are our technical implementation and strategic advisory experts. Implementation Engineers reduce complexity and burden on customers by providing tailored expertise and hands-on support to reduce time to value. Resident Architects provide strategic technical success planning, tailored ongoing enablement, and hands-on assistance for adoption and utilization of features while activating advanced use cases for customers via direct access to customer systems and teams. 11 | - [Technical Advisory](ta/index.md) are the post-sales technical experts. TA maximizes value and outcomes within our customer dev teams by helping them solve their current challenges, and uncovering new challenges we can solve. 12 | - [Support Engineering](support/index.md) are the product experts. SE resolves technical issues and problems for our customers, while improving the self-serviceability of the customer experience, and by making our product better. 13 | 14 | ## Team Members 15 | 16 | {{generator:reporting_structure.vp_technical_success}} 17 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/career-growth/index.md: -------------------------------------------------------------------------------- 1 | # Support Career Growth 2 | 3 | - [CS IC Career Framework & Levels](cs-career-framework.md) 4 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/onboarding/index.md: -------------------------------------------------------------------------------- 1 | # Customer Support Onboarding 2 | 3 | - [Customer support IC onboarding](customer-support-onboarding.md) 4 | - [Customer support Manager onboarding](customer-support-manager-onboarding.md) 5 | - [Customer support onboarding mentors](cs-onboard-mentor.md) 6 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/customer-exceptions.md: -------------------------------------------------------------------------------- 1 | # Customer exceptions 2 | 3 | Sometimes the best thing to do is make an exception from the workflows, methods, and/or practices we put in place to help us scale … and do something different for a customer. Any exception should be made with careful consideration for the short and long term consequences. So long as we make decisions with eyes wide open, accept the pros and cons, and document our thought process, we can be flexible and get creative when the situation calls for it. 4 | 5 | The list and details about any long term and temporary short term exceptions is available [here](https://docs.google.com/document/d/1YeRxSeVizEJPE1JNA5FG7mIz3ucjSxYXkEBX2XEytJU/edit#). 6 | 7 | We also list these exceptions in Zendesk notes. It may seem duplicative to list them in two places, but the Zendesk notes helps in the moment and the Google doc helps us see everything in one place, quickly validate for accuracy/updates, and facilitate a regular audit of information. 8 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/enablement/debugging-tips.md: -------------------------------------------------------------------------------- 1 | # Debugging Tips 2 | 3 | This is a collaboration between Repo Management (formerly Core Application) and Customer Support where they talk about debugging tips when approaching an issue. 4 | 5 | - [Session 1: Investigate an error in the website and tracing it's origin](https://drive.google.com/drive/folders/15fxJZwPKY8a_kY7BFzNpYV69WJdO2K9K) 6 | - Debugging on web: Is it a frontend or a backend issue? 7 | - [Session 2: Investigating no data in Grafana](https://drive.google.com/file/d/1qUKU1KA1zzfigsoWZ_gYiggbyFKEzCOT/view?usp=sharing) 8 | - Debugging Grafana: How to investigate a bug that behaves differently for different deployment types. 9 | - [Session 3: Investigating why adding an Email for a user from the admin panel doesn't work](https://drive.google.com/file/d/1kyezqw5-inFNUXvHqnEJ_4QZnPoXM7xt/view?usp=sharing) 10 | - Debugging locally: How to reproduce and locate an issue in the code base and database? 11 | - [Session 4: Investigating CI check failures of a PR](https://drive.google.com/file/d/1qUKU1KA1zzfigsoWZ_gYiggbyFKEzCOT/view?usp=sharing) 12 | - Intro to CI checks on buildkite and how to navigate CI failures. 13 | - [Session 5: Writing Unit Tests](https://drive.google.com/drive/folders/1FOIAjM57I6XVjN3JQuQItb-IWAAbcm9Z?usp=sharing) 14 | - Intro to writing unit tests for debugging purpose 15 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/enablement/high-level-overview-index.md: -------------------------------------------------------------------------------- 1 | # Timestamps for _High level overview created with CS in mind_ 2 | 3 | - 00:03:45 - Deployment types, use cases, differences between them, what types of customers use what, etc. 4 | - 00:13:43 - Resource estimation, scaling 5 | - 00:16:45 - Complexity in Kubernetes deployments, how management of those looks 6 | - 00:18:10 - Managed instances & private code on Sourcegraph.com 7 | - 00:21:52 - How customers manage forks of repositories 8 | - 00:23:30 - Upgrades & how they work 9 | - 00:27:21 - In-depth overview of services, what they do, troubleshooting, debugging facilities, etc. 10 | - 00:30:48 - Logging 11 | - 00:33:55 - How container monitoring, cadvisor, prometheus, and grafana work 12 | - 00:39:16 - Databases, core infrastructure & what they power in the product 13 | - 00:45:00 - Postgres, how customers deploy it, backups 14 | - 00:46:20 - Precise code intel 15 | - 00:47:50 - Background services and where they are running 16 | - 00:51:20 - The difference between indexed and unindexed searches 17 | - 00:56:45 - Other ways to debug Sourcegraph: Jaeger request tracing 18 | - 01:05:50 - Closing thoughts, where to go for help, etc. 19 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/enablement/k8s-resources.md: -------------------------------------------------------------------------------- 1 | # Additional Resources for Learning Kubernetes and Docker 2 | 3 | - [**A Primer on Containers**](https://increment.com/containers/primer-on-containerization/): Outlines what a container is and what's happening inside. 4 | - [**Kubernetes in Action**](https://www.manning.com/books/kubernetes-in-action): a comprehensive guide to effectively developing and running applications in a Kubernetes environment. 5 | - [**Learn Docker in a Month of Lunches**](https://www.manning.com/books/learn-docker-in-a-month-of-lunches): Go from zero to production readiness with Docker in 22 bite-sized lessons! 6 | - [**CKA Certification Course**](https://kodekloud.com/courses/certified-kubernetes-administrator-cka): Prepare for the Kubernetes Administrators Certification (CKA) with practice tests on a live cluster in your browser. 7 | - [**CKAD Certification Course**](https://kodekloud.com/courses/certified-kubernetes-application-developer-ckad): Prepare for the Kubernetes Application Developer Certification (CKAD) with practice tests on a live cluster in your browser. 8 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/enablement/keeping-up-with-resolved-issues.md: -------------------------------------------------------------------------------- 1 | ### Staying Current on Recently Resolved Tickets 2 | 3 | As an Support Engineer, it is helpful to understand current trends in our resolved tickets database. Doing so can help heighten your awareness of current issues that may come up in your own tickets. 4 | 5 | ## Code Insights is your friend 6 | 7 | At Sourcegraph, we can leverage code insights to stay up to date on recently resolved tickets. 8 | 9 | For example, some Ses have found it helpful to create a monitor that sends an email each time a new search result becomes available in the resolved tickets database. An added benefit of enabling this feature for yourself is that it will help you gain knowledge of the code insights user interface. 10 | 11 | To enable this for yourself, [add a code monitor](https://docs.sourcegraph.com/code_monitoring/quickstart) to track the following query: 12 | 13 | `repo:^github\.com/sourcegraph/support-tools-internal$@HEAD file:^resolved-tickets type:diff patternType:literal` 14 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/index.md: -------------------------------------------------------------------------------- 1 | # Support Team Processes 2 | 3 | - [Updating Known Issues Page](known-issues.md) 4 | - [Handling Non-Support Emails](non-support-emails.md) 5 | - [Case transitions](case-transitions.md) 6 | - [Cloud Maintenance Window Process](cloud-maintenance-window.md) 7 | - [Collaboration time](collaboration-time.md) 8 | - [Customer exceptions](customer-exceptions.md) 9 | - [How To Ticket Procedure](how-to-tickets.md) 10 | - [Managing CS K8s](managing-cs-k8s.md) 11 | - [P4 Enablement](p4-enablement.md) 12 | - [Managed instances](support-managed-instances.md) 13 | - [Permanently deleting user data](permanently_deleting_user_data.md) 14 | - [Prioritization](support-prioritization.md) 15 | - [Support capacity levels and contingencies](support-capacity-levels-and-contingencies.md) 16 | - [How to Create and Transfer Tickets for Support Engineering](support-agent-customer-slack-channels.md) 17 | - [Triaging](customer-support-triaging.md) 18 | - [Workflow](support-workflow.md) 19 | - [Knowledge Base](knowledge-base.md) 20 | - [Foqal](foqal.md) 21 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/moving-tickets-based-on-timezone.md: -------------------------------------------------------------------------------- 1 | # Moving tickets that require a different timezone 2 | 3 | There may be times when a ticket is answered by an SE in a different region than the customer's. This can happen for a variety of reasons, such as low priority, engineer availability, or scheduling issues. It's essential to ensure that tickets are moved to the appropriate region's support team for continued follow-up and resolution. 4 | 5 | For P0 and P1 tickets, they should be reassigned to the region where they will receive the most direct attention. If in doubt, it's always better to ask the customer to confirm the ticket's correct timezone. 6 | 7 | For P2 and P3 tickets, they can be worked on asynchronously as long as progress continues, and the customer does not explicitly ask for the ticket to be moved. These tickets carry a lower priority and should still be able to be worked on. 8 | 9 | If you need to move a ticket, please follow these steps: 10 | 11 | 1. If the ticket is new, make sure to send a first response to avoid breaking our SLAs. 12 | 1. If the ticket has some history, provide a brief summary of the issue, any steps you've taken, and any potential next steps to set up the next engineer for success. 13 | 1. Add an internal note indicating that the customer is in a different timezone and that the ticket should be taken by someone else: 14 | ``` 15 | Customer is based on MST. Moving back to queue for a US teammate to take. 16 | ``` 17 | 1. Unassign yourself from the ticket on Zendesk and Foqal. 18 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/non-support-emails.md: -------------------------------------------------------------------------------- 1 | # Handling Non-Support Emails 2 | 3 | Occasionally, non-support emails will be sent to support@sourcegraph.com, either employment verification, bills, marketing, or spam. Emails that are pertinent should be forwarded to the appropriate team. Emails that are not relevant should either be marked as spam or deleted. 4 | 5 | **Marking Spam:** 6 | If an email is spam, navigate to the ticket menu and select 'Mark as spam'. 7 | 8 | **Deleting Emails:** 9 | If an email is an internal company update or a solicitation email, navigate to the ticket menu and select 'Delete'. 10 | 11 | **Forwarding Emails:** 12 | To forward an email, expand the menu on the message and click ‘Forward via email’. ZenDesk removes the original sender's email from the forward, so paste it into the message. If you need to access the support mailbox, use the credentials in the shared 1Password vault. 13 | 14 | **Determining the Appropriate Recipient:** 15 | Consult the relevant Slack channel to identify the correct recipient if the email group is not known: 16 | #discuss-marketing: Cold outreach, marketing, media. 17 | #ask-people-team: Job applications and other employee-related emails. Employment verification emails should be sent to people-ops@sourcegraph.com. 18 | #discuss-finance: Bills, POs, or receipts. 19 | 20 | If you are unsure where to direct an email or need help determining the appropriate action, request guidance in the #team-support-engineering channel. 21 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/product-feedback-process.md: -------------------------------------------------------------------------------- 1 | # Product feedback 2 | 3 | We frequently receive feedback through tickets or upon their resolution. It's important to distinguish this feedback from bugs and [product gaps](../../../product/process/feedback/surfacing_product_requests.md#what-is-a-product-gap). Product feedback refers to prospects' or customers' observations, comments, or opinions about the product experience. It may relate to the product's implementation or areas that are unclear or could be enhanced. For more information on product feedback, please refer to the [Surfacing Product Feedback](../../../product/process/feedback/surfacing_product_requests.md#what-is-a-product-gap) section in our handbook. 4 | 5 | **Where to Share Feedback:** 6 | 7 | - Post the feedback in either the #feedback-cody or #feedback-code-search channels. 8 | - Include a link to the original feedback and tag the account’s Technical Advisor to ensure they have the full context. 9 | - If you're unsure whether the feedback is a product gap or product feedback, reach out to the account’s Technical Advisor or #team-support-engineering for guidance. 10 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/releases.md: -------------------------------------------------------------------------------- 1 | # Releases 2 | 3 | We offer support for the latest version (N) and its previous major version (N-1). 4 | For more information on this see [here](../../../engineering/dev/process/releases/index.md#support-for-older-versions) 5 | -------------------------------------------------------------------------------- /content/departments/technical-success/support/process/support-capacity-levels-and-contingencies.md: -------------------------------------------------------------------------------- 1 | # Support capacity 2 | 3 | Support engineers may, at times, find themselves with a queue that demands more attention than they can give it. We want our customers to be satisfied. For this reason, we practice, whenever possible, having a manageable queue. When we find ourselves with a full queue, we prioritize keeping our teammates in the know, and getting our queue back to a manageable state. 4 | 5 | While our [support team working schedule and rotation](./support-schedule.md) helps us balance the workload, sometimes we still find ourselves at or over our capacity. It is up to each Support engineer to determine their capacity at any given moment. When an SE feels they are at, or over capacity, they do the following: 6 | 7 | 1. Inform their manager and post in #customer-support-internal that they are at capacity. 8 | 2. Work only on their current tickets. 9 | 3. Do not take any more tickets until their queue is back to a manageable state. 10 | 4. As soon as their queue is healthy, the SE informs their manager, and the team (in #customer-support-internal), and begins taking tickets again. 11 | 12 | Management will coordinate ticket load with other SEs while the support engineer works on getting their queue back to a healthy state. 13 | -------------------------------------------------------------------------------- /content/departments/technical-success/ta/enterprise-success/team-culture/playbooks.md: -------------------------------------------------------------------------------- 1 | # TA playbooks 2 | 3 | - [Recurring TA Responsibilities](#ta-cadence) 4 | - [TA Scenarios](#ta-scenarios) 5 | 6 | ## TA Cadence 7 | 8 | To learn more about the kinds of activities TAs perform daily, weekly, monthly, quarterly, and on an ad-hoc basis see the [TA Cadence Playbook](../ta-playbooks/ta-cadence.md). 9 | 10 | 31 | 32 | ## TA Scenarios 33 | 34 | To learn more about best practices and how to handle certain situations that may arise on your accounts, see the [TA Scenarios Playbook](../ta-playbooks/ta-scenarios.md). 35 | -------------------------------------------------------------------------------- /content/departments/technical-success/ta/scaled-success/team-resources/index.md: -------------------------------------------------------------------------------- 1 | # Team Resources 2 | 3 | This page contains team resources for the Scaled TA team. 4 | 5 | - [Team Norms](./team-norms.md) 6 | - [Scaled TA Program Overview](./scaled-ta-program-overview.md) 7 | - Processes and Playbooks (Coming soon) 8 | -------------------------------------------------------------------------------- /content/handbook/editing/announcing-handbook-updates.md: -------------------------------------------------------------------------------- 1 | # Announcing Handbook Changes 2 | 3 | All Handbook-related pull request information is automatically announced in the #handbook-updates Slack channel. This channel can get a bit noisy, so you may want to announce an important update in the #handbook-announce channel. To do this: 4 | 5 | 1. Open your pull request. Since you're planning to announce this change, it will be helpful to add context about your change as a comment when creating your pull request. 6 | 1. Click the **Labels** section on the right side of the GitHub screen 7 | 1. Search for "handbook-announce" and select it 8 | - ![Announcing Handbook Changes](https://storage.googleapis.com/sourcegraph-assets/handbookannouncelabelimage.png) 9 | 1. Merge your pull request. 10 | 1. See your pull request appear in #handbook-announce. 11 | -------------------------------------------------------------------------------- /content/handbook/editing/changes-after-pr.md: -------------------------------------------------------------------------------- 1 | # Making additional edits on a file after opening a PR 2 | 3 |
4 | 5 | ### Steps: 6 | 7 | 1. Viewing your PR in GitHub, click the "Files Changed" tab. 8 | 1. Click the three dots in the top right corner of the editor and select "Edit this file" 9 | 1. Make your edits. 10 | 1. Scroll to the bottom of the page, and commit your changes directly to your branch. You'll be directed back to your PR. 11 | 1. Click on the "Conversation" tab on your PR. 12 | 1. Wait for checks to pass and merge. 13 | -------------------------------------------------------------------------------- /content/handbook/editing/delete-a-page.md: -------------------------------------------------------------------------------- 1 | # Deleting a Page 2 | 3 | ### GitHub Web Interface 4 | 5 | 1. See [this GitHub documentation](https://docs.github.com/en/repositories/working-with-files/managing-files/deleting-files-in-a-repository#deleting-a-file) for deleting a file or directory through the web interface. 6 | 1. Wait for Handbook checks to run. When you delete a page, any existing links to that page will break. You'll probably see a failure like this: 7 | ![Broken link handbook check failure](https://storage.googleapis.com/sourcegraph-assets/handbook/broken-link-failure.png) 8 | 1. Check out the "Broken Links" section on the [Handbook Checks page](handbook-check-failures.md#broken-link) for guidance on how to resolve these. They can be a bit tedious and hard to track down, so remember you can always ask the #handbook Slack channel for help. 9 | -------------------------------------------------------------------------------- /content/handbook/editing/hiding-the-sidebar.md: -------------------------------------------------------------------------------- 1 | # Hiding the sidebar 2 | 3 | Some pages have extra wide content and benefit from hiding the sidebar. You can enable this on a page by updating the frontmatter to include `hide_sidebar: true` as follows: 4 | 5 | ``` 6 | --- 7 | hide_sidebar: true 8 | --- 9 | ``` 10 | 11 | This will cause the page to not have a table of contents or contributor list. The edit page and history as diffs link will be at the bottom of the page instead. 12 | -------------------------------------------------------------------------------- /content/handbook/editing/markdown-resources.md: -------------------------------------------------------------------------------- 1 | # Markdown Tips & Resources 2 | 3 | ## What is Markdown? 4 | 5 | Markdown is a text markup language to allow plain text to convert to styled text using common conventions, such as _italics_ or ~~strikethrough~~. It’s just a shortcut to edit text (bolding, italicizing, underlining, etc.) without having to click the buttons on a toolbar. We use Markdown to [edit the Sourcegraph Handbook](../editing/index.md). 6 | 7 | ## Markdown Resources 8 | 9 | - [Docs to Markdown](https://workspace.google.com/marketplace/app/docs_to_markdown/700168918607) is a Google Docs Add-On that will convert your doc to Markdown for you. 10 | - [StackEdit](https://stackedit.io/app#) gives you a side-by-side view of your doc and the corresponding Markdown version. 11 | - [Mastering Markdown](https://guides.github.com/features/mastering-markdown/) can help you learn Markdown syntax. 12 | -------------------------------------------------------------------------------- /content/handbook/editing/move-a-page.md: -------------------------------------------------------------------------------- 1 | # Moving a Page 2 | 3 | ### GitHub Web Interface 4 | 5 | All of the following needs to occur within one pull request. See [this page](multiple-changes-single-pr.md) for help on making multiple edits at once. 6 | 7 | 1. Rename the file to indicate its new location as described in [GitHub's documentation](https://docs.github.com/en/repositories/working-with-files/managing-files/moving-a-file-to-a-new-location) 8 | 1. Wait for Handbook checks to run. When you move a page, any existing links to that page will break. You'll probably see a failure like this: 9 | ![Broken link handbook check failure](https://storage.googleapis.com/sourcegraph-assets/handbook/broken-link-failure.png) 10 | 1. Check out the "Broken Links" section on the [Handbook Checks page](handbook-check-failures.md#broken-link) for guidance on how to resolve these. They can be a bit tedious and hard to track down, so remember you can always ask the #handbook Slack channel for help. 11 | -------------------------------------------------------------------------------- /content/handbook/editing/run-a-local-preview.md: -------------------------------------------------------------------------------- 1 | # Running a local preview handbook site 2 | 3 | > [!NOTE] This is optional. 4 | 5 | See the [repository README](https://github.com/sourcegraph/handbook). 6 | -------------------------------------------------------------------------------- /content/handbook/handbook-tips.md: -------------------------------------------------------------------------------- 1 | # Handbook Usage Tips & Tricks 2 | 3 | ## Searching the handbook 4 | 5 | Search the handbook using the search box in the top navigation on https://handbook.sourcegraph.com or by pressing +K. 6 | 7 | ### Browser quicksearch 8 | 9 | The handbook supports quicksearch from your browser's address bar. 10 | Simply start typing "handbook" into your address bar, hit tab, enter your search term and hit return. 11 | 12 | #### Chrome 13 | 14 | The handbook search is detected automatically, no setup required. 15 | 16 | 17 | 18 | #### Safari 19 | 20 | The handbook search is detected automatically, no setup required. 21 | 22 | 23 | 24 | #### Firefox 25 | 26 | Firefox requires a one-time confirmation to add the search shortcut. 27 | Focus your address bar, and click the Sourcegraph logo with the small "+" icon at the bottom of the suggestions panel where it says "This time, search with:". 28 | 29 | 30 | -------------------------------------------------------------------------------- /content/strategy-goals/index.md: -------------------------------------------------------------------------------- 1 | # Strategy + Goals 2 | 3 | - [Strategy](strategy/index.md) 4 | - [MSEM](msem.md) 5 | -------------------------------------------------------------------------------- /content/strategy-goals/strategy/platform/graph.md: -------------------------------------------------------------------------------- 1 | # APIs strategy 2 | 3 | # Mission & Vision 4 | 5 | ## Mission 6 | 7 | TBD 8 | -------------------------------------------------------------------------------- /content/strategy-goals/strategy/platform/search_platform.md: -------------------------------------------------------------------------------- 1 | # Search Platform strategy 2 | 3 | This page outlines the strategy and goals of the [Search Platform team](../../../departments/engineering/teams/search-platform/index.md) over the next year or so. 4 | -------------------------------------------------------------------------------- /content/strategy-goals/strategy/platform/source.md: -------------------------------------------------------------------------------- 1 | # Source strategy 2 | 3 | This page outlines the vision, strategy, and goals of the [Source team](../../../departments/engineering/teams/source/index.md). 4 | 5 | --- 6 | 7 | # Mission & Vision 8 | 9 | ## Mission 10 | 11 | Our mission is to ensure that Sourcegraph "just works" with the code hosts that 12 | our customers use. Whether customers use GitHub, Gitlab, Bitbucket, Perforce, or 13 | the many other code hosts that exist, we ensure their code syncs with 14 | Sourcegraph without them worrying about it. 15 | 16 | # Detailed Roadmap 17 | 18 | The Source team work in the [Product-Focused Planning](../../../departments/engineering/product-planning.md) model of prioritization for planning work. Internal Sourcegraph employees can see the [full set of projects](https://github.com/orgs/sourcegraph/projects/302) currently approved. 19 | -------------------------------------------------------------------------------- /content/strategy-goals/strategy/release/index.md: -------------------------------------------------------------------------------- 1 | Coming soon. 2 | -------------------------------------------------------------------------------- /content/team/ceo/roles.md: -------------------------------------------------------------------------------- 1 | # Roles of the CEO 2 | 3 | This page lists the roles and responsibilities of the Sourcegraph CEO. 4 | 5 | ## Responsibilities 6 | 7 | - Set the high-level [strategy](../../strategy-goals/strategy/index.md). 8 | - Communicate the [strategy](../../strategy-goals/strategy/index.md) and [values](../../company-info-and-process/values/index.md) to our team and the entire community. 9 | - Hire great people. Help people that are not a good fit find another job. 10 | - Ensure the company has enough cash (through revenue, cost-cutting, and/or fundraising). 11 | - Engage with the current and prospective Sourcegraph community in person, on social media, etc. 12 | - Create an environment and a set of processes to support giving teammates a high level of ownership over their work. 13 | - Lead by example in accountability, continuous improvement, and truth-seeking. 14 | -------------------------------------------------------------------------------- /content/team/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | data_source: [/data/team.yml, team] 3 | --- 4 | 5 | # Sourcegraph team 6 | 7 | This page contains brief bios of our team. Teammates may also have a personal documentation page in this directory that is named according to their Sourcegraph email address(e.g.you@sourcegraph.com -> you.md). 8 | 9 | Note that this page is driven by a data file, and clicking "Edit this page" in the bottom right corner of this page will not take you to the proper place to add or edit your bio. Instead, click "Edit team data" or [click here](https://github.com/sourcegraph/handbook/blob/main/data/team.yml) to be taken to the proper file. For more information, check out [these instructions](../handbook/editing/add-yourself-to-team-page.md). 10 | 11 | {{generator:team_members_list}} 12 | -------------------------------------------------------------------------------- /content/team/org_chart.md: -------------------------------------------------------------------------------- 1 | # Org chart 2 | 3 | Our org chart is maintained in our HRIS, BambooHR. 4 | 5 | **[Sourcegraph Org Chart](https://sourcegraph.bamboohr.com/employees/orgchart.php)** 6 | 7 | If you need to request a change, managers can follow [this process](../departments/people-talent/people-ops/process/compensation-and-leveling/compensation-role-changes.md) and individual contributors can request in the #ask-people-team Slack channel. 8 | 9 | You can also view the [Humans of Sourcegraph](https://humansofsourcegraph.com/) page to see more about our team, mentor availability, birthdays, and anniversaries. 10 | -------------------------------------------------------------------------------- /data/README.md: -------------------------------------------------------------------------------- 1 | This folder contains the source of truth for product information used in the handbook, such as maturity pages. 2 | 3 | The data for features is hierarchical, and flows in this order: 4 | 5 | 1. [product_teams.yml](product_teams.yml) 6 | 1. [features.yml](features.yml) 7 | 8 | There is also reference data used to know what the set of maturity levels and pricing tiers are: 9 | 10 | - [maturity_levels.yml](maturity_levels.yml) 11 | - [code_hosts.yml](code_hosts.yml) 12 | -------------------------------------------------------------------------------- /data/code_hosts.yml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=../schema/code_hosts.schema.json 2 | 3 | gitlab_com: 4 | title: GitLab.com 5 | info_link: https://gitlab.com 6 | 7 | gitlab_enterprise: 8 | title: GitLab Enterprise 9 | info_link: https://gitlab.com 10 | 11 | github_com: 12 | title: GitHub.com 13 | info_link: https://github.com 14 | 15 | github_enterprise: 16 | title: GitHub Enterprise 17 | info_link: https://github.com 18 | 19 | bitbucket_server: 20 | title: BitBucket Server and Bitbucket Data Center 21 | info_link: https://bitbucket.org/ 22 | 23 | bitbucket_cloud: 24 | title: BitBucket Cloud 25 | info_link: https://bitbucket.org/ 26 | 27 | phabricator: 28 | title: Phabricator 29 | info_link: https://www.phacility.com/phabricator/ 30 | 31 | codecommit: 32 | title: AWS CodeCommit 33 | info_link: https://aws.amazon.com/codecommit 34 | 35 | gitolite: 36 | title: Gitolite 37 | info_link: https://gitolite.com/ 38 | 39 | gerrit: 40 | title: Gerrit 41 | info_link: https://www.gerritcodereview.com/ 42 | 43 | perforce: 44 | title: Perforce 45 | info_link: https://www.perforce.com/ 46 | 47 | cvs: 48 | title: CVS 49 | info_link: http://cvs.nongnu.org/ 50 | -------------------------------------------------------------------------------- /data/deployment_options.yml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=../schema/deployment_options.schema.json 2 | 3 | self_hosted: 4 | title: Self-hosted 5 | single_tenant_cloud: 6 | title: Single tenant cloud 7 | -------------------------------------------------------------------------------- /data/guilds.yml: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /data/maturity_levels.yml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=../schema/maturity_levels.schema.json 2 | 3 | ga: 4 | title: Generally Available ✅ 5 | definition: Available as a normal product feature. 6 | 7 | partial_ga: 8 | title: Partially Available 🐣 9 | definition: Available, but may be limited in some significant ways. 10 | 11 | beta: 12 | title: Beta ✨ 13 | definition: Available in pre-release form on a limited basis. 14 | 15 | experimental: 16 | title: Experimental 🔬 17 | definition: Available in pre-release form, with significant caveats. 18 | 19 | not_implemented: 20 | title: Not Implemented 🔮 21 | definition: This is something we may do, but it is not yet available. 22 | 23 | deprecated: 24 | title: Deprecated ⚠️ 25 | definition: This is a feature that we plan to remove. 26 | -------------------------------------------------------------------------------- /data/notion_migration.yaml: -------------------------------------------------------------------------------- 1 | # Add your desired redirections here! 2 | # - 'source': URL path to redirect, as currently visible on handbook.sourcegraph.com 3 | # - 'destination': New URL top direct to. If a public 'sourcegraph.notion.site' page is available, prefer that instead of the internal Notion URL. 4 | redirections: 5 | - source: /departments/engineering/teams/devinfra/ 6 | destination: https://sourcegraph.notion.site/Developer-Infrastructure-Team-a46433b93bb2445abc1966c93a570a26 7 | # Core Services 8 | - source: /departments/engineering/teams/core-services/ 9 | destination: https://sourcegraph.notion.site/ed8af5ecf15545b292816ebba261a93c 10 | - source: /departments/engineering/teams/core-services/managed-services/ 11 | destination: https://sourcegraph.notion.site/168b8750e4b44b148179c4c26e2eb061 12 | - source: /departments/engineering/teams/core-services/google-front-end/ 13 | destination: https://sourcegraph.notion.site/7891007a565f4254a6ea5271e58ed45f 14 | - source: /departments/engineering/teams/core-services/managed-services/platform/ 15 | destination: https://sourcegraph.notion.site/712a0389f54c4d3a90d069aa2d979a59 16 | - source: /departments/engineering/teams/core-services/sams/ 17 | destination: https://sourcegraph.notion.site/e86f1bc3dc3b4d979818e468bba189fd 18 | - source: /departments/engineering/managed-services/ 19 | destination: https://sourcegraph.notion.site/0d0b709881674eee9dca4202de9f93b1 20 | # ... 21 | -------------------------------------------------------------------------------- /data/use_cases.yml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=../schema/use_cases.schema.json 2 | 3 | developer_onboarding: 4 | title: Developer Onboarding 5 | link: /strategy-goals/strategy/use_cases/dev-onboarding 6 | sponsors: 7 | product: steve_yegge 8 | engineering: peter_guy 9 | 10 | code_reuse: 11 | title: Code Reuse 12 | link: /strategy-goals/strategy/use_cases/code_reuse 13 | sponsors: 14 | product: taylor_sperry 15 | engineering: robert_lin 16 | 17 | code_health: 18 | title: Code Health 19 | link: /strategy-goals/strategy/use_cases/code_health 20 | sponsors: 21 | engineering: joe_chen 22 | 23 | code_security: 24 | title: Code security 25 | link: /strategy-goals/strategy/use_cases/code_security 26 | sponsors: 27 | engineering: erika_rice_scherpelz 28 | 29 | incident_response: 30 | title: Incident Response 31 | link: /strategy-goals/strategy/use_cases/incident_response 32 | sponsors: 33 | engineering: dax_mcdonald 34 | -------------------------------------------------------------------------------- /jest.config.mjs: -------------------------------------------------------------------------------- 1 | import { defaults } from 'jest-config' 2 | 3 | /* 4 | * For a detailed explanation regarding each configuration property, visit: 5 | * https://jestjs.io/docs/configuration 6 | */ 7 | export default { 8 | moduleFileExtensions: [...defaults.moduleFileExtensions, 'mjs'], 9 | 10 | testEnvironment: 'node', 11 | testMatch: [...defaults.testMatch, '**/?(*.)+(spec|test).mjs'], 12 | 13 | // Required to support tests in ES modules / .mjs files. 14 | // See https://jestjs.io/docs/ecmascript-modules. 15 | transform: {}, 16 | } 17 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "out" 3 | command = "pnpm run netlify-build" 4 | 5 | [build.environment] 6 | # Keep this in sync with package.json "engines". 7 | NODE_VERSION = "18.9.0" 8 | 9 | # https://docs.netlify.com/configure-builds/file-based-configuration/#post-processing 10 | # If skip_processing = true, all other settings are ignored 11 | [build.processing] 12 | skip_processing = false 13 | [build.processing.css] 14 | bundle = false 15 | minify = false 16 | [build.processing.js] 17 | bundle = false 18 | minify = false 19 | [build.processing.html] 20 | pretty_urls = true 21 | [build.processing.images] 22 | compress = false 23 | 24 | [functions] 25 | node_bundler = "esbuild" 26 | external_node_modules = ["@ampproject/toolbox-optimizer"] 27 | 28 | [[headers]] 29 | for = "/*" 30 | [headers.values] 31 | Content-Security-Policy = """\ 32 | script-src 'self' *.netlify.com *.netlify.app *.app.netlify.com *.swiftypecdn.com *.segment.com *.segment.io plausible.io *.github.com *.githubusercontent.com 'sha256-JcUwlbcTNdtwp5Szxufx3JIsjsem70t6DXyfcgTcAnQ=' 'sha256-MEya+PLw9XU1WNgiMij94hmgncY4GS+aQhjC2zqaAz4=' 'sha256-ETVmFY/pVNIiyKhDh3yPNf+mlhV1Z32Ax232eJ+ES7o=';\ 33 | style-src 'self' 'unsafe-inline' *.swiftypecdn.com unpkg.com fonts.googleapis.com;\ 34 | font-src 'self' fonts.gstatic.com excalidraw.com;\ 35 | frame-ancestors 'self' *.continu.co\ 36 | """ 37 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /next-sitemap.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | siteUrl: process.env.SITE_URL || 'https://handbook.sourcegraph.com', 3 | generateRobotsTxt: true, 4 | generateIndexSitemap: false, 5 | } 6 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | import redirects from './src/scripts/redirects.mjs' 2 | 3 | /** @type {import('next').NextConfig} */ 4 | const nextConfig = { 5 | // WARNING: Redirects defined only in next.config.js will NOT work when deployed in Netlify. 6 | // They also need to be added to Netlify's _redirects file. 7 | // Redirects here are only for `pnpm dev`/`pnpm start`. 8 | // See src/scripts/generate-redirects.js 9 | redirects: async () => 10 | (await redirects()).map(({ source, destination }) => ({ 11 | source, 12 | destination, 13 | permanent: false, 14 | })), 15 | 16 | generateBuildId: () => 'build', 17 | images: { 18 | domains: ['avatars.githubusercontent.com'], 19 | }, 20 | swcMinify: true, 21 | trailingSlash: true, 22 | eslint: { 23 | // We don't rely on linting errors to break to stop the Neltify build 24 | ignoreDuringBuilds: true, 25 | }, 26 | } 27 | 28 | export default nextConfig 29 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@sourcegraph/prettierrc') 2 | -------------------------------------------------------------------------------- /public/opensearch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Handbook 5 | Sourcegraph Handbook 6 | Search the Sourcegraph handbook 7 | en-US 8 | UTF-8 9 | UTF-8 10 | 11 | 12 | https://handbook.sourcegraph.com/static/sourcegraph-mark_64.png 13 | 14 | https://handbook.sourcegraph.com/#stq 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /public/static/sourcegraph-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/public/static/sourcegraph-mark.png -------------------------------------------------------------------------------- /public/static/sourcegraph-mark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 16 | 18 | 20 | 21 | -------------------------------------------------------------------------------- /public/static/sourcegraph-mark_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcegraph/handbook/5752928b213a3ddbc7cee4459524f404a5b96fb4/public/static/sourcegraph-mark_64.png -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": ["github>sourcegraph/renovate-config"], 4 | "reviewers": ["team:handbook-devs"], 5 | "labels": ["🤖 Bot", "🏗️ Handbook website"], 6 | "npm": { 7 | "labels": ["🤖 Bot", "🏗️ Handbook website"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /schema/code_hosts.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "info_link": { 10 | "type": "string" 11 | } 12 | }, 13 | "required": ["title", "info_link"] 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /schema/cross-product_owners.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "handbook_link": { 10 | "type": "string" 11 | } 12 | }, 13 | "required": ["title"] 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /schema/deployment_options.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | } 9 | }, 10 | "required": ["title"] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /schema/engineering_ownership.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "category": { 7 | "type": "string" 8 | }, 9 | "type": { 10 | "type": "string" 11 | }, 12 | "title": { 13 | "type": "string" 14 | }, 15 | "product_team": { 16 | "type": "string" 17 | }, 18 | "domain_experts": { 19 | "type": "string" 20 | }, 21 | "slack_channels": { 22 | "type": "string" 23 | }, 24 | "ownership_model": { 25 | "type": "string" 26 | }, 27 | "health": { 28 | "type": "string" 29 | }, 30 | "product_lifecycle": { 31 | "type": "string" 32 | } 33 | }, 34 | "required": ["category", "title"] 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /schema/features.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "product_team": { 10 | "type": "string" 11 | }, 12 | "use_cases": { 13 | "type": "array" 14 | }, 15 | "maturity": { 16 | "type": "string", 17 | "enum": ["ga", "partial_ga", "beta", "experimental", "not_implemented", "deprecated"] 18 | }, 19 | "documentation_link": { 20 | "type": "string" 21 | }, 22 | "compatibility": { 23 | "type": "object", 24 | "additionalProperties": { 25 | "type": "boolean" 26 | } 27 | }, 28 | "deployment": { 29 | "type": "object", 30 | "additionalProperties": { 31 | "type": "string", 32 | "enum": ["ga", "partial_ga", "beta", "experimental", "not_implemented", "deprecated"] 33 | } 34 | }, 35 | "note": { 36 | "type": "string" 37 | } 38 | }, 39 | "required": ["title", "product_team", "maturity"] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /schema/glossary.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "array", 5 | "items": { 6 | "type": "object", 7 | "properties": { 8 | "term": { 9 | "type": "string" 10 | }, 11 | "definition": { 12 | "type": "string" 13 | } 14 | }, 15 | "required": ["term", "definition"] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /schema/guilds.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "members": { 10 | "type": "array", 11 | "items": { 12 | "type": "string" 13 | } 14 | }, 15 | "leader": { 16 | "type": "string" 17 | }, 18 | "leadership_sponsors": { 19 | "type": "array", 20 | "items": { 21 | "type": "string" 22 | } 23 | } 24 | }, 25 | "required": ["title", "members"] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /schema/maturity_levels.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "definition": { 10 | "type": "string" 11 | } 12 | }, 13 | "required": ["title", "definition"] 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /schema/product_orgs.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "strategy_link": { 10 | "type": "string" 11 | }, 12 | "pm": { 13 | "type": "string" 14 | } 15 | }, 16 | "required": ["title", "pm"] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /schema/product_teams.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "strategy_link": { 10 | "type": "string" 11 | } 12 | }, 13 | "required": ["title"] 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /schema/team.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "name": { 7 | "type": "string" 8 | }, 9 | "reports_to": { 10 | "type": "string" 11 | }, 12 | "tech_lead": { 13 | "type": "boolean" 14 | }, 15 | "manager_role_slug": { 16 | "type": "string" 17 | }, 18 | "pronouns": { 19 | "type": "string" 20 | }, 21 | "role": { 22 | "type": "string" 23 | }, 24 | "location": { 25 | "type": "string" 26 | }, 27 | "github": { 28 | "type": "string" 29 | }, 30 | "email": { 31 | "type": "string" 32 | }, 33 | "links": { 34 | "type": "string" 35 | }, 36 | "pronunciation": { 37 | "type": "string" 38 | }, 39 | "description": { 40 | "type": "string" 41 | } 42 | }, 43 | "required": ["name", "role", "reports_to"] 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /schema/use_cases.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": { 4 | "type": "object", 5 | "properties": { 6 | "title": { 7 | "type": "string" 8 | }, 9 | "link": { 10 | "type": "string" 11 | }, 12 | "sponsors": { 13 | "type": "object", 14 | "properties": { 15 | "engineering": { 16 | "type": "string" 17 | }, 18 | "product": { 19 | "type": "string" 20 | }, 21 | "design": { 22 | "type": "string" 23 | }, 24 | "marketing": { 25 | "type": "string" 26 | } 27 | } 28 | } 29 | }, 30 | "required": ["title", "link"] 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/components/TableOfContents.tsx: -------------------------------------------------------------------------------- 1 | import { Toc } from '@stefanprobst/rehype-extract-toc' 2 | import React from 'react' 3 | 4 | export function TableOfContents({ 5 | toc, 6 | className, 7 | hrefPrefix = '', 8 | }: { 9 | toc: Toc 10 | className?: string 11 | hrefPrefix?: string 12 | }): JSX.Element { 13 | return ( 14 |
    15 | {toc.map(node => ( 16 | 17 |
  • 18 | {node.value} 19 | {node.children && } 20 |
  • 21 |
    22 | ))} 23 |
24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /src/lib/constants.ts: -------------------------------------------------------------------------------- 1 | export const CONTENT_FOLDER = 'content' 2 | -------------------------------------------------------------------------------- /src/lib/getAllPages.ts: -------------------------------------------------------------------------------- 1 | import globby from 'globby' 2 | 3 | function markdownFilePathToSlugPath(markdownFilePath: string): string { 4 | if (markdownFilePath === 'index.md') { 5 | // Special case: the root index 6 | markdownFilePath = '' 7 | } 8 | 9 | if (markdownFilePath.endsWith('/index.md')) { 10 | return markdownFilePath.replace(/\/index.md$/, '') 11 | } 12 | 13 | return markdownFilePath.replace(/\.md$/, '') 14 | } 15 | 16 | export default async function getAllPages( 17 | baseDirectory: string 18 | ): Promise<{ markdownFilePath: string; slugPath: string }[]> { 19 | const files = await globby('**/*.md', { cwd: baseDirectory }) 20 | return files.map(file => ({ 21 | markdownFilePath: file, 22 | slugPath: markdownFilePathToSlugPath(file), 23 | })) 24 | } 25 | -------------------------------------------------------------------------------- /src/lib/getGitHistory.ts: -------------------------------------------------------------------------------- 1 | import path from 'path' 2 | 3 | import { gitlogPromise as gitlog } from 'gitlog' 4 | 5 | import { CONTENT_FOLDER } from './constants' 6 | 7 | export default async function getGitHistory( 8 | file: string 9 | ): Promise<(Record<'hash' | 'authorName' | 'committerDateRel' | 'status', string> & { files: string[] })[]> { 10 | const filepath = path.join(CONTENT_FOLDER, file) 11 | 12 | const log = gitlog({ 13 | repo: '.', 14 | number: 100, 15 | file: filepath, 16 | fields: ['committerDateRel', 'authorName', 'hash'], 17 | }) 18 | 19 | return log 20 | } 21 | 22 | export interface GitHistorySummary { 23 | creator: string | undefined 24 | createdTimeAgo: string | undefined 25 | latestCommitId: string 26 | lateCommitTimeAgo: string 27 | contributorNames: string[] 28 | } 29 | 30 | export async function getGitHistoryStats(file: string): Promise { 31 | const history = await getGitHistory(file) 32 | const creationCommit = history.find(commit => commit.status.includes('A')) 33 | const latestCommit = history[0] 34 | const contributors = history 35 | .map(commit => commit.authorName) 36 | .filter((value, index, self) => self.indexOf(value) === index) 37 | 38 | return { 39 | creator: creationCommit?.authorName, 40 | createdTimeAgo: creationCommit?.committerDateRel, 41 | latestCommitId: latestCommit?.hash, 42 | lateCommitTimeAgo: latestCommit?.committerDateRel, 43 | contributorNames: contributors, 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/lib/omitUndefinedFields.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns a copy of the object which does not contain any fields that have a 3 | * value of `undefined`. Those fields are omitted entirely in the returned 4 | * object. 5 | * 6 | * This is a workaround for the limitation of Next.js in which undefined fields 7 | * throw an error during serialization. 8 | * 9 | * Next.js discussion: https://github.com/vercel/next.js/discussions/11209 10 | */ 11 | export default function omitUndefinedFields(object: T): T { 12 | if (object && typeof object === 'object') { 13 | return Object.fromEntries( 14 | Object.entries(object) 15 | .filter(([, value]) => value !== undefined) 16 | .map(([key, value]) => { 17 | if (Array.isArray(value)) { 18 | return [key, value.map(omitUndefinedFields)] 19 | } 20 | return [key, omitUndefinedFields(value)] 21 | }) 22 | ) as T 23 | } 24 | 25 | return object 26 | } 27 | -------------------------------------------------------------------------------- /src/lib/rehypeGoLinks.ts: -------------------------------------------------------------------------------- 1 | import { ElementContent } from 'hast' 2 | import { defaultIgnore, findAndReplace } from 'hast-util-find-and-replace' 3 | import type { Node } from 'hast-util-find-and-replace/lib/index' 4 | import { h } from 'hastscript' 5 | import { Plugin } from 'unified' 6 | 7 | // goLinksPattern matches go/something links, e.g. go/sg or go/sg-frontend 8 | // It only matches the beginning of a string or preceded by whitespace 9 | // to avoid the case where this-is-not-a-go/link is matched 10 | const goLinksPattern = /(^|\s)go\/([\w-]+)(\W|$)/g 11 | 12 | // eslint-disable-next-line unicorn/consistent-function-scoping 13 | export const rehypeGoLinks: Plugin = () => root => 14 | findAndReplace( 15 | root as Node, 16 | goLinksPattern, 17 | (...args: unknown[]): ElementContent[] => { 18 | const [, prefix, name, suffix] = args as string[] 19 | return [ 20 | { type: 'text', value: prefix }, 21 | h( 22 | 'a', 23 | { 24 | class: 'go-link', 25 | href: `http://go/${name}`, 26 | target: '_blank', 27 | rel: 'noopener noreferrer', 28 | }, 29 | `go/${name}` 30 | ), 31 | { type: 'text', value: suffix }, 32 | ] 33 | }, 34 | { 35 | ignore: [...defaultIgnore, 'code', 'a'], 36 | } 37 | ) 38 | -------------------------------------------------------------------------------- /src/lib/rehypeSlackChannels.ts: -------------------------------------------------------------------------------- 1 | import { ElementContent } from 'hast' 2 | import { defaultIgnore, findAndReplace } from 'hast-util-find-and-replace' 3 | import type { Node } from 'hast-util-find-and-replace/lib/index' 4 | import { h } from 'hastscript' 5 | import { Plugin } from 'unified' 6 | 7 | const slackChannelPattern = /(^|\W)#([\d_a-z-]{1,80})(\W|$)/g 8 | const slackOrg = 'sourcegraph' 9 | 10 | /** 11 | * Rehype plugin to wrap Slack channel names in links with the CSS class `slack-channel`. 12 | */ 13 | // eslint-disable-next-line unicorn/consistent-function-scoping 14 | export const rehypeSlackChannels: Plugin = () => root => 15 | findAndReplace( 16 | root as Node, 17 | slackChannelPattern, 18 | (...args: unknown[]): ElementContent[] => { 19 | const [, prefix, channelName, suffix] = args as string[] 20 | return [ 21 | { type: 'text', value: prefix }, 22 | h( 23 | 'a', 24 | { 25 | class: 'slack-channel', 26 | href: `https://${slackOrg}.slack.com/archives/${channelName}`, 27 | target: '_blank', 28 | rel: 'noopener noreferrer', 29 | }, 30 | `#${channelName}` 31 | ), 32 | { type: 'text', value: suffix }, 33 | ] 34 | }, 35 | { 36 | ignore: [...defaultIgnore, 'code', 'a'], 37 | } 38 | ) 39 | -------------------------------------------------------------------------------- /src/lib/rehypeSmartypants.ts: -------------------------------------------------------------------------------- 1 | import { Content, Root } from 'hast' 2 | import { retext } from 'retext' 3 | import smartypants, { Options } from 'retext-smartypants' 4 | import { Plugin } from 'unified' 5 | import { visit, SKIP } from 'unist-util-visit' 6 | 7 | const skipElements = new Set(['script', 'style', 'code']) 8 | 9 | /** 10 | * Rehype plugin that replaces dumb quotes with typographic quotes in all text nodes. 11 | * 12 | * It will properly ignore script, style and code tags. 13 | * 14 | * Note: This plugin has the known limitation that it will not catch quoted regions across multiple nodes, e.g. if 15 | * a section of the quoted region is bolded. There is no easy way around this. 16 | */ 17 | export const rehypeSmartypants: Plugin<[Options], Root> = (options: Options) => { 18 | const processor = retext().use(smartypants, options) 19 | 20 | return (tree: Root) => 21 | visit(tree, node => { 22 | if (node.type === 'element' && skipElements.has(node.tagName)) { 23 | return SKIP 24 | } 25 | if (node.type === 'text') { 26 | // eslint-disable-next-line no-sync 27 | node.value = processor.processSync(node.value).toString() 28 | } 29 | return undefined 30 | }) 31 | } 32 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { GetStaticProps } from 'next' 2 | 3 | import Page, { PageProps, getStaticProps as getStaticPropsForSlug } from './[...slug]' 4 | 5 | /** 6 | * Render the root index page with content from `index.md`. It renders using the 7 | * same page component as `[...slug].tsx`, and it's a special case simply 8 | * because `[...slug]` doesn't match the root `/` path. 9 | */ 10 | export const getStaticProps: GetStaticProps = async context => 11 | getStaticPropsForSlug({ ...context, params: { slug: '/' } }) 12 | 13 | export default Page 14 | -------------------------------------------------------------------------------- /src/scripts/copy-assets.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs/promises' 2 | import path from 'path' 3 | 4 | import globby from 'globby' 5 | import mkdirp from 'mkdirp' 6 | 7 | import { CONTENT_FOLDER } from '../lib/constants' 8 | 9 | const PUBLIC_FOLDER = 'public' 10 | 11 | export default async function copyAssets(): Promise { 12 | const targetFiles = await globby(['**/*.*', '!**/*.md'], { cwd: CONTENT_FOLDER }) 13 | console.log(`Copying ${targetFiles.length} static files from ${CONTENT_FOLDER} to ${PUBLIC_FOLDER}`) 14 | for (const file of targetFiles) { 15 | const publicFolder = path.join(process.cwd(), PUBLIC_FOLDER) 16 | const sourceFolder = path.join(process.cwd(), CONTENT_FOLDER) 17 | const directoryName = path.dirname(file) 18 | await mkdirp(path.join(publicFolder, directoryName)) 19 | const sourcePath = path.join(sourceFolder, file) 20 | const destinationPath = path.join(publicFolder, file) 21 | await fs.copyFile(sourcePath, destinationPath) 22 | } 23 | } 24 | 25 | copyAssets().catch(error => { 26 | console.error(error) 27 | process.exit(1) 28 | }) 29 | -------------------------------------------------------------------------------- /src/scripts/generate-redirects.mjs: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/restrict-template-expressions */ 2 | /* eslint-disable @typescript-eslint/no-unsafe-assignment */ 3 | 4 | // Generates the Netlify _redirects file from the moved files in the Git history. 5 | 6 | import fs from 'fs/promises' 7 | 8 | import redirects from './redirects.mjs' 9 | 10 | const redirectLines = (await redirects()) 11 | .map(entry => `${entry.source} ${entry.destination}${entry.force ? ' 301!' : ''}`) 12 | .join('\n') 13 | const lines = `\n# Generated by generate-redirects.mjs from Git history\n${redirectLines}\n` 14 | 15 | console.log('Redirects:\n', lines) 16 | 17 | await fs.writeFile(new URL('../../out/_redirects', import.meta.url), lines) 18 | -------------------------------------------------------------------------------- /src/scripts/getMovedPagesFromHistory.mjs: -------------------------------------------------------------------------------- 1 | import exec from 'execa' 2 | 3 | import { encodeURIPathComponent } from './uri.mjs' 4 | 5 | /** 6 | * @returns {Promise<{ source: string, destination: string }[]>} 7 | */ 8 | export async function getMovedPagesFromHistory() { 9 | const result = await exec('git', ['log', '--name-status', '--pretty=', '--diff-filter=R', 'content']) 10 | 11 | const movedFilesFromHistory = result.stdout 12 | .split('\n') 13 | .map(line => { 14 | const [source, destination] = line 15 | .split('\t') 16 | .slice(1) 17 | .map(path => 18 | path 19 | .replace(/^content/, '') 20 | .replace(/\.md$/, '') 21 | .replace(/\/index/, '') 22 | ) 23 | .map(encodeURIPathComponent) 24 | return { source, destination } 25 | }) 26 | .filter(({ source, destination }) => destination.toLowerCase() !== source.toLowerCase()) 27 | 28 | return movedFilesFromHistory 29 | } 30 | -------------------------------------------------------------------------------- /src/scripts/uri.mjs: -------------------------------------------------------------------------------- 1 | /** 2 | * %-Encodes a path component of a URI. 3 | * 4 | * It encodes all special characters except forward slashes and the plus sign `+`. The plus sign only has meaning 5 | * as a space in the query component of a URL, because its special meaning is defined for the 6 | * `application/x-www-form-urlencoded` MIME type, which is used for queries. It is not part of the general 7 | * `%`-encoding for URLs. 8 | * 9 | * @param {string} component A path component of a URL. 10 | * @returns {string} The path component with special characters encoded. 11 | */ 12 | export const encodeURIPathComponent = component => 13 | component.split('/').map(encodeURIComponent).join('/').replace(/%2B/g, '+') 14 | -------------------------------------------------------------------------------- /src/styles/badges.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Inline badges used in docs.sourcegraph.com 3 | 4 | Mirrored from https://sourcegraph.com/github.com/sourcegraph/sourcegraph/-/blob/doc/_resources/assets/docsite.css 5 | */ 6 | :root { 7 | --note-color: #bce8f1; 8 | --warning-color: #faebcc; 9 | --warning-badge-color: #f59f00; 10 | --critical-badge-color: #f03e3e; 11 | --experimental-color: #b200f8; 12 | --feature-color: #38757f; 13 | --beta-color: #72dbe8; 14 | } 15 | .badge { 16 | /* Mirrored from product badge styles */ 17 | display: inline-block; 18 | padding: 0.125rem 0.375rem; 19 | line-height: 1rem; 20 | border-radius: 4px; 21 | font-size: 0.75rem; 22 | font-weight: 500; 23 | color: inherit; 24 | text-align: center; 25 | white-space: nowrap; 26 | vertical-align: baseline; 27 | } 28 | .badge-experimental { 29 | color: #ffffff; 30 | background-color: var(--experimental-color); 31 | } 32 | 33 | .badge-beta { 34 | color: #000000; 35 | background-color: var(--beta-color); 36 | text-transform: uppercase; 37 | } 38 | 39 | .badge-feature { 40 | color: var(--feature-color); 41 | background-color: var(--note-color); 42 | } 43 | 44 | .badge-note { 45 | color: #000000; 46 | background-color: var(--note-color); 47 | } 48 | 49 | .badge-warning { 50 | color: #ffffff; 51 | background-color: var(--warning-badge-color); 52 | } 53 | 54 | .badge-critical { 55 | color: #ffffff; 56 | background-color: var(--critical-badge-color); 57 | } 58 | -------------------------------------------------------------------------------- /src/styles/cards.scss: -------------------------------------------------------------------------------- 1 | .blocks { 2 | display: flex; 3 | justify-content: space-around; 4 | flex-wrap: wrap; 5 | } 6 | 7 | a.block { 8 | border: 2px solid var(--gray-05); 9 | background-color: white; 10 | border-radius: 9px; 11 | text-align: center; 12 | padding: 1rem; 13 | margin: 1rem; 14 | width: 150px; 15 | flex: 0 0 auto; 16 | display: block; 17 | } 18 | 19 | .block img { 20 | display: block; 21 | margin: 10px auto; 22 | width: 50%; 23 | } 24 | -------------------------------------------------------------------------------- /src/styles/index.scss: -------------------------------------------------------------------------------- 1 | $text-muted: var(--gray-05); 2 | 3 | // Syntax highlighting is provided by highlight.js 4 | // - https://github.com/highlightjs/highlight.js/ 5 | // List of available CSS themes: 6 | // - https://github.com/highlightjs/highlight.js/tree/main/src/styles 7 | @import 'highlight.js/styles/a11y-light.css'; 8 | 9 | @import 'bootstrap/scss/bootstrap'; 10 | // @import 'bootstrap/scss/functions'; 11 | // @import 'bootstrap/scss/variables'; 12 | // @import 'bootstrap/scss/mixins'; 13 | // @import 'bootstrap/scss/utilities'; 14 | // @import 'bootstrap/scss/reboot'; 15 | 16 | @import '../../content/departments/product/design/brand_guidelines/colors.scss'; 17 | @import './layout.scss'; 18 | @import './search.scss'; 19 | @import './page.scss'; 20 | @import './content.scss'; 21 | 22 | @import './badges.scss'; 23 | @import './cards.scss'; 24 | @import './levels-table.scss'; 25 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@sourcegraph/tsconfig", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | "moduleResolution": "node", 7 | "allowJs": true, 8 | "jsx": "preserve", 9 | "outDir": "out", 10 | "noEmit": true, 11 | "lib": ["dom", "dom.iterable", "esnext"], 12 | "skipLibCheck": true, 13 | "sourceMap": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "esModuleInterop": true, 16 | "resolveJsonModule": true, 17 | "isolatedModules": true, 18 | "strict": true, 19 | "incremental": true 20 | }, 21 | "include": ["src/**/*", "**/*.js", "**/*.mjs"], 22 | "exclude": ["node_modules"] 23 | } 24 | --------------------------------------------------------------------------------