Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Bug report
description: Something behaves differently than it should
labels: ["bug"]
body:
- type: textarea
id: what
attributes:
label: What happened
description: What you saw, and what you expected instead.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: How to reproduce
description: >
The smallest sequence of statements or client calls that triggers it.
A failing test is ideal.
render: sql
validations:
required: true
- type: input
id: version
attributes:
label: Version or commit
placeholder: 0.2.0, or a commit hash
validations:
required: true
- type: input
id: platform
attributes:
label: Platform
placeholder: Linux x86_64, Windows 11, arm64 container, and so on
validations:
required: true
- type: textarea
id: extra
attributes:
label: Anything else
description: >
Server logs, whether it survives a restart, whether it reproduces on a
fresh data directory.
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Security vulnerability
url: https://github.com/martian56/quantadb/security/policy
about: Do not open a public issue. Report it privately instead.
- name: Benchmark methodology
url: https://github.com/martian56/quantadb/blob/main/docs/benchmarks.md
about: How performance is measured here, and why single runs are not trusted.
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Feature or SQL support
description: Something QuantaDB cannot do yet
labels: ["enhancement"]
body:
- type: textarea
id: need
attributes:
label: What you are trying to do
description: >
The problem, rather than the feature. It often turns out there is a
shorter way to solve it.
validations:
required: true
- type: textarea
id: shape
attributes:
label: What it might look like
description: The SQL, the API, or the protocol behaviour you have in mind.
- type: textarea
id: alternatives
attributes:
label: How you work around it today
49 changes: 49 additions & 0 deletions .github/ISSUE_TEMPLATE/performance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Performance
description: Something is slower than it should be
labels: ["performance"]
body:
- type: markdown
attributes:
value: >
Performance work here is decided by measurement, so this template asks
for numbers. A report without them is still welcome, but it will start
by someone trying to reproduce what you saw.
- type: textarea
id: observed
attributes:
label: What you measured
description: >
Throughput or latency, the workload that produced it, and what you
expected instead.
validations:
required: true
- type: textarea
id: how
attributes:
label: How you measured it
description: >
The client, the concurrency, the row count, and how long each run
lasted. If you used loadgen or the field driver, the exact flags.
validations:
required: true
- type: input
id: hardware
attributes:
label: Hardware and storage
description: >
CPU count, memory, and what the data directory sits on. Flush cost
varies by orders of magnitude between an SSD, a spinning disk and a
container volume, and it usually explains the result.
placeholder: 4 vCPU, 8 GiB, NVMe SSD, ext4
validations:
required: true
- type: dropdown
id: repeated
attributes:
label: Did you run it more than once?
options:
- "Yes, and the runs agreed"
- "Yes, and the runs disagreed"
- "No, one run"
validations:
required: true
28 changes: 28 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!--
Performance claims are settled by the bench comment below, not by local
timings. A change under about fifteen percent needs a second run to mean
anything.
-->

## What this changes

<!-- One paragraph. What was wrong, and what it does instead. -->

## Why

<!-- Closes #NNN, or the reasoning if there is no issue. -->

## How it was checked

- [ ] `cargo test --workspace`
- [ ] `cargo clippy --workspace --all-targets -- -D warnings`
- [ ] `cargo fmt --all`
- [ ] Tests added for the behaviour that changed

## Anything a reviewer should look at closely

<!--
Durability and concurrency changes are the ones that hurt later. If this
touches the commit path, recovery, or page reuse, say what ordering it
relies on.
-->
39 changes: 39 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Code of conduct

## The short version

Be decent to people. Argue about code, not about each other.

## What is expected

- Assume the person you are replying to is competent and acting in good faith.
- Criticise the design, the benchmark, or the patch. Not the person who wrote it.
- Accept that other people have different priorities, hardware, and workloads.
- When you are wrong, say so plainly and move on. It costs nothing here.

## What is not acceptable

- Personal attacks, insults, or demeaning comments.
- Harassment of any kind, public or private, including unwelcome attention.
- Publishing anyone's private information without their explicit permission.
- Sustained disruption of discussions, issues, or reviews.

## Scope

This applies in the issue tracker, pull requests, discussions, and anywhere
someone is representing the project.

## Reporting

Report anything that needs attention to fuadelizade6@gmail.com. Reports are
read by the maintainer and are not shared further without your agreement.

Expect an acknowledgement within a few days. Outcomes range from a private
word to a permanent ban, depending on what happened. The maintainer will not
act on a report while personally involved in the dispute without asking a
neutral third party to look first.

## Attribution

This is adapted in spirit from the [Contributor Covenant](https://www.contributor-covenant.org),
rewritten to be shorter and to say what it actually means.
71 changes: 71 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Contributing

Thanks for looking. QuantaDB is a young database and the useful contributions
right now are small, measured, and reviewable.

## Before you write code

Open an issue first for anything beyond a fix. It saves you building something
that does not fit, and it saves a review that has to say no.

If you are looking for somewhere to start, the issue tracker carries the
current performance work with its measurements attached, which is usually the
clearest statement of what the project needs.

## Getting set up

Rust 1.96 or newer.

```bash
cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all
```

All four have to be clean; CI runs them as separate jobs so a formatting slip
does not hide behind a compile.

## What a good change looks like

**One issue per pull request**, with several small commits rather than one
large one. Each commit should build and pass tests on its own.

**Tests that would have caught the bug.** For storage and MVCC work that
usually means a test that survives a reopen, or one that drives the exact
interleaving that broke.

**Comments only where the code cannot speak.** Keep them short. Explain why
something is the way it is, not what the next line does.

**Commit messages that say what changed and why.** A subject line under about
seventy characters, a blank line, then prose. No trailing metadata.

## Performance changes

This is the part that is different here, and it is not negotiable.

**A performance claim needs numbers from the bench matrix, not from your
laptop.** Every pull request is benched on five machine profiles against the
previous build running on the same runner, and the result is posted as a
comment. Local timings have repeatedly pointed the opposite way to the truth
on this project, so they do not decide anything.

**One run is not evidence.** Runner speed varies. A change under about fifteen
percent needs a second run before anyone believes it, and the report says so.

**Negative results are worth submitting.** Several issues here exist only to
record what did not work and why, so nobody spends the idea twice. If you tried
something reasonable and the matrix rejected it, that is a useful pull request
description even if the code never merges.

## Licensing

QuantaDB is Apache-2.0. By opening a pull request you agree that your
contribution is licensed under the same terms, and you confirm you have the
right to contribute it. Commits should carry a `Signed-off-by` line asserting
the [Developer Certificate of Origin](https://developercertificate.org):

```bash
git commit -s
```
Loading
Loading