Files
cuframes/CONTRIBUTING.md
T
gx c8ab4522f2 initial commit: design specification + repo scaffolding
cuframes — open-source FFmpeg-плагин и runtime library для zero-copy
sharing декодированных видеокадров между процессами через CUDA IPC.

Содержимое initial commit:
- docs/architecture.md — полная design-spec (418 строк) с prior art,
  protocol design, API draft, phase plan, acceptance criteria
- README.md — landing с описанием идеи, состава, quickstart-tease,
  roadmap, ссылки на community-discussions подтверждающие спрос
- CONTRIBUTING.md — guidelines, code style, commit message convention
- CHANGELOG.md — Keep a Changelog format, Unreleased / 0.0.1
- LICENSE — LGPL-2.1+ (compatibility с FFmpeg)
- .gitignore — build/CMake/Docker/Python/CUDA-specific

Следующие шаги (отдельные коммиты):
- docker/Dockerfile.dev (CUDA 12.x dev environment)
- tools/spike/ (Phase 0 PoC код для measurement CUDA IPC latency)
2026-05-14 21:17:34 +01:00

79 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Contributing to cuframes
Спасибо за интерес. Проект на ранней стадии — каждый вклад ценен.
## Перед началом
1. Прочитайте [docs/architecture.md](docs/architecture.md) — там подробный
design document с обоснованием решений
2. Проверьте [open issues](https://git.goldix.org/gx/cuframes/issues) —
возможно ваша идея уже обсуждается
3. Большие изменения — сначала RFC-issue, чтобы синхронизировать с design
## Структура репо
```
cuframes/
├── docs/ архитектура, протокол, benchmarks
├── filter/ FFmpeg filter (vf_cuda_ipc_export.c)
├── libcuframes/ producer/consumer core (C)
├── bindings/ C++ и Python wrappers
├── examples/ working examples (CV, PyTorch, Frigate)
├── docker/ Dockerfile'ы для dev и distribution
├── scripts/ build, patch, packaging
├── tools/spike/ PoC код для Phase 0
└── tests/ integration + stress
```
## Development setup
Всё собирается **в Docker**, чтобы не зависеть от системного CUDA toolkit.
```bash
# Dev-контейнер с CUDA 12.x + build tools
docker compose -f docker/docker-compose.dev.yml up -d
docker exec -it cuframes-dev bash
# Внутри контейнера
cmake -B build -S . -G Ninja
cmake --build build
ctest --test-dir build --output-on-failure
```
См. [docker/README.md](docker/README.md) для деталей.
## Code style
- **C** — стиль FFmpeg (для filter), K&R + 4 spaces
- **C++** — C++17, Google C++ style (clang-format с проектным `.clang-format`)
- **Python** — PEP 8, black + ruff
CI прогоняет formatter checks автоматически.
## Commit messages
Conventional Commits:
```
feat(filter): add cuda_ipc_export FFmpeg filter
fix(consumer): handle producer reconnect race
docs(arch): clarify backpressure semantics
test: add 24-hour stress test
chore: bump CMake to 3.25
```
## Phase 0 contributors
Если хотите помочь с самым ранним этапом (PoC spike) —
см. [tools/spike/README.md](tools/spike/README.md) (когда появится).
Главные вопросы Phase 0:
- Latency producer→consumer на разных GPU (Ampere/Ada/Blackwell)
- CUDA IPC behavior cross-container (docker → docker, host → docker)
- Sync через `cudaStreamSynchronize` vs CUDA IPC events
- Memory leak detection при random producer/consumer kill
## License
Contributions accepted under LGPL-2.1+ (см. [LICENSE](LICENSE)).