Contribuir
Desarrollamos en abierto. Esta página es el espejo público de
CONTRIBUTING.md
en el repo del motor.
TL;DR
- Leé los RFCs —
docs/rfc/. Son la fuente canónica de decisiones de diseño sobre el storage engine, query engine y los subsistemas que los rodean. - Abrí issues para discutir antes de mandar PRs grandes.
- PRs chicos son bienvenidos en cualquier momento — fixes de typos, mejoras a docs, ajustes de perf, agregados de tests.
Workflow
maines la branch de desarrollo. Las releases van con tag.- Cada PR corre
cargo fmt --check,cargo clippy --workspace --all-targets -- -D warningsycargo test --workspace. - Los commits deben ir firmados (
git commit -S). - Los títulos de PR siguen Conventional Commits:
feat:,fix:,docs:,refactor:,test:,bench:,chore:.
Estándares de código
- Rust edition 2021, MSRV 1.85 (mantenido al día).
unsafesólo en hot paths con invariantes documentados y comentarios// SAFETY:.- Todas las APIs públicas documentadas (
cargo doc --workspace --no-depsdebe pasar). - Errores vía
thiserror; evitaranyhowen crates de librería (OK en binarios / tests). - Instrumentación de tracing en funciones
pubasync (#[tracing::instrument]). - Los tests viven al lado del código (
#[cfg(test)] mod tests) para los unitarios; los tests de integración van en el directoriotests/del crate.
Testing
- Tests de propiedad con
proptestpara invariantes. - Loom para code paths críticos de concurrencia donde corresponda.
- Integración local contra un endpoint compatible con S3 vía
docker compose -f tests/docker-compose.s3.yml up(LocalStack). - Benchmarks con
criterion; se espera que los resultados sean reproducibles.
Comunicación
- Email:
hello@namidb.com - Seguridad:
security@namidb.com - GitHub Issues: github.com/namidb/namidb/issues