|
| 1 | +--- |
| 2 | +title: Home |
| 3 | +template: home.html |
| 4 | +hide: |
| 5 | + - navigation |
| 6 | + - toc |
| 7 | +--- |
| 8 | + |
| 9 | +<div class="sq-github-only" markdown> |
| 10 | + |
| 11 | +# SubmitQueue |
| 12 | + |
| 13 | +A high-performance speculative submission queue that keeps your trunk consistently green at scale. |
| 14 | + |
| 15 | +</div> |
| 16 | + |
| 17 | +SubmitQueue does not validate changes one at a time. It speculatively rebases and validates many changes in parallel against predicted future states of HEAD. Changes whose validations pass land automatically. When a validation fails, SubmitQueue isolates the offending change and retries the rest, with no human involved. It is designed for large monorepos and fast-moving teams, where concurrent changes can introduce subtle conflicts and destabilize builds. |
| 18 | + |
| 19 | +## Why SubmitQueue |
| 20 | + |
| 21 | +<div class="grid cards sq-features" markdown> |
| 22 | + |
| 23 | +- :material-source-branch-check:{ .lg .middle } **Speculative validation** |
| 24 | + |
| 25 | + --- |
| 26 | + |
| 27 | + SubmitQueue builds a tree of possible future HEADs and validates the paths most likely to land, in parallel. |
| 28 | + |
| 29 | + [:octicons-arrow-right-24: Speculation](rfc/submitqueue/speculation.md) |
| 30 | + |
| 31 | +- :material-shield-check-outline:{ .lg .middle } **Isolates failures** |
| 32 | + |
| 33 | + --- |
| 34 | + |
| 35 | + A failing change is isolated and rejected while the rest of its batch carries on to land. |
| 36 | + |
| 37 | + [:octicons-arrow-right-24: Orchestrator workflow](rfc/submitqueue/workflow.md) |
| 38 | + |
| 39 | +- :material-puzzle-outline:{ .lg .middle } **Pluggable extensions** |
| 40 | + |
| 41 | + --- |
| 42 | + |
| 43 | + Build runners, change providers, storage, queues and scorers are vendor-agnostic interfaces with swappable implementations. |
| 44 | + |
| 45 | + [:octicons-arrow-right-24: Extension contract](rfc/submitqueue/extension-contract.md) |
| 46 | + |
| 47 | +- :material-tray-full:{ .lg .middle } **Durable, queue-driven pipeline** |
| 48 | + |
| 49 | + --- |
| 50 | + |
| 51 | + Every stage is an idempotent consumer on an at-least-once message queue, with optimistic locking and no distributed transactions. |
| 52 | + |
| 53 | + [:octicons-arrow-right-24: SQL-based queue](rfc/sql-queue-rfc.md) |
| 54 | + |
| 55 | +</div> |
| 56 | + |
| 57 | +## Components |
| 58 | + |
| 59 | +<div class="grid cards" markdown> |
| 60 | + |
| 61 | +- :material-call-merge:{ .lg .middle } **SubmitQueue** |
| 62 | + |
| 63 | + --- |
| 64 | + |
| 65 | + The gateway and orchestrator that accept, batch, speculate on, build and land changes. |
| 66 | + |
| 67 | + [:octicons-arrow-right-24: Workflow](rfc/submitqueue/workflow.md) |
| 68 | + |
| 69 | +- :material-airplane-landing:{ .lg .middle } **Runway** |
| 70 | + |
| 71 | + --- |
| 72 | + |
| 73 | + The landing service. It owns VCS operations, conflict checks and merges, on SubmitQueue's behalf. |
| 74 | + |
| 75 | + [:octicons-arrow-right-24: Workflow](rfc/runway/workflow.md) |
| 76 | + |
| 77 | +- :material-check-decagram-outline:{ .lg .middle } **Stovepipe** |
| 78 | + |
| 79 | + --- |
| 80 | + |
| 81 | + The post-land pipeline. It validates landed commits and tracks the last green revision. |
| 82 | + |
| 83 | + [:octicons-arrow-right-24: Workflow](rfc/stovepipe/workflow.md) |
| 84 | + |
| 85 | +</div> |
| 86 | + |
| 87 | +## Try it in a minute |
| 88 | + |
| 89 | +You need only Docker. No repository, account or token is required. |
| 90 | + |
| 91 | +```bash |
| 92 | +make local-submitqueue-start # Gateway + Orchestrator + Runway + MySQL |
| 93 | +make demo-requests # create changes, enqueue them, watch them land |
| 94 | +make local-submitqueue-stop |
| 95 | +``` |
| 96 | + |
| 97 | +The [Quickstart](howto/QUICKSTART.md) goes from a fake provider to a local git repository to real GitHub pull requests. Questions? Join the [Slack community](https://join.slack.com/t/submitqueue/shared_invite/zt-46gkqj682-7zcQphxm2pYqkjDo9lbmYA). |
0 commit comments