> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sglang.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Contributing to SGLang Diffusion

This guide outlines the requirements for contributing to the SGLang Diffusion module (`sglang.multimodal_gen`).

## Contributor Guides

* [Support New Models](./support_new_models): implementation guide for adding new diffusion pipelines
* [CI Performance](./ci_perf): update and regenerate perf baselines

## On AI-Assisted ("Vibe Coding") PRs

Vibe-coded PRs are welcome — we judge code quality, not how it was produced. The bar is the same for all PRs:

* **No over-commenting.** If the name says it all, skip the docstring.
* **No over-catching.** Don't guard against errors that virtually never happen in practice.
* **Test before submitting.** AI-generated code can be subtly wrong — verify correctness end-to-end.

## Commit Message Convention

We follow a structured commit message format to maintain a clean history.

**Format:**

```text theme={null}
[diffusion] <scope>: <subject>
```

**Examples:**

* `[diffusion] cli: add --perf-dump-path argument`
* `[diffusion] scheduler: fix deadlock in batch processing`
* `[diffusion] model: support Stable Diffusion 3.5`

**Rules:**

* **Prefix**: Always start with `[diffusion]`.
* **Scope** (Optional): `cli`, `scheduler`, `model`, `pipeline`, `docs`, etc.
* **Subject**: Imperative mood, short and clear (e.g., "add feature" not "added feature").

## Performance Reporting

For PRs that impact **latency**, **throughput**, or **memory usage**, you **should** provide a performance comparison report.

### How to Generate a Report

1. **Baseline**: run the benchmark (for a single generation task)
   ```bash theme={null}
   $ sglang generate --model-path <model> --prompt "A benchmark prompt" --perf-dump-path baseline.json
   ```

2. **New**: run the same benchmark, without modifying any server\_args or sampling\_params
   ```bash theme={null}
   $ sglang generate --model-path <model> --prompt "A benchmark prompt" --perf-dump-path new.json
   ```

3. **Compare**: run the compare script, which will print a Markdown table to the console
   ```bash theme={null}
   $ python python/sglang/multimodal_gen/benchmarks/compare_perf.py baseline.json new.json [new2.json ...]
   ### Performance Comparison Report
   ...
   ```

4. **Paste**: paste the table into the PR description

## CI-Based Change Protection

Consider adding tests to the `pr-test` or `nightly-test` suites to safeguard your changes, especially for PRs that:

* support a new model
  * add a testcase for this new model to `testcase_configs.py`
* support or fix important features
* significantly improve performance

Please run the according testcase, then update/add the baseline to `perf_baselines.json` by following the instruction in console if applicable.

See [test](https://github.com/sgl-project/sglang/tree/main/python/sglang/multimodal_gen/test) for examples
