Distribution tech stack
This document lists the technologies used by the Distribution team, what they are used for, and best practices for each within Distribution.
Also see internal infrasturcture and tools for specific infrastructure and tools.
Go
Use cases: Services and applications
Best practices:
- Adhere to the Sourcegraph Go style guide
Typescript
Use cases: Complex automation and scripting
Best practices:
- We use Deno as our Typescript runtime instead of Node
- Typescript is not a core part of our expertise, so Deno takes care of tooling and formatting
- Adhere to
deno fmt
, add a CI workflow that validates the result ofdeno fmt --check
- Avoid using third-party dependencies (try to stick to the standard library)
- Scripts should be executable (
chmod +x
) and have some variation of#!/usr/bin/env deno run
as the sha-bang
Bash
Use cases: Simple automation and scripting
Best practices:
- Adhere to the Sourcegraph Bash style guide
Terraform
Use cases: Infrastructure provisioning
Best practices:
- Adhere to the Sourcegraph Terraform style guide
Kubernetes
Use cases: Deploying services
Dhall
Use cases: Providing configuration for our deployment types (work in progress).