Build a Database in Four Months with Rust and 647 Open-Source Dependencies
Dependency Count, Security, and Audit Burden
- Central debate: is 100 direct / 647 total dependencies inherently bad, especially for a database?
- Critics see this as “points of failure,” increased supply-chain attack surface, and a huge ongoing audit burden.
- Disagreement on what “auditing” means:
- Some focus on code review and lines of code.
- Others focus on vetting and tracking publishers/owners (“trust domains”).
- Several argue dependency count is a poor metric:
- Many crates are split for modularity, compilation speed, or derive/proc-macro helpers.
- Multiple crates often come from a single repo/team.
- Others still want far fewer dependencies, especially in libraries, and question crates for trivial tasks (e.g., whitespace handling).
- Databases in particular: some argue “best practice” is near-zero deps; others note compression, crypto, Unicode, HTTP, etc. are reasonable to outsource.
- The author later publishes Cargo.lock; an audit shows one known advisory in a transitively pulled RSA crate, via an unused MySQL feature.
Rust Ecosystem vs “npm hell”
- Many compare this to npm/pip “dependency hell,” though others stress Rust’s situation is different:
- Cargo supports multiple versions of the same crate.
- Lockfiles plus tools (
cargo audit,dependabot,cargo-deny,cargo-supply-chain, etc.) improve visibility and patching.
- Some blame Rust culture (thin standard library, flat namespace, easy crate publishing) for encouraging many small crates.
- Others argue the alternative—rewriting everything—invites more bugs, especially in complex domains like crypto and async networking.
Open Source vs Proprietary Product
- Some readers find it ironic the post praises Rust’s OSS ecosystem yet keeps ScopeDB closed.
- The author defends this as a standard “open core” / commercial-open-source posture: contribute fixes and shared libraries upstream while keeping the commercial product proprietary.
- Opinions diverge:
- Some see this as acceptable and typical of modern stacks (open tooling, proprietary product).
- Others argue copyleft licenses better protect community value and resent “open source for PR, closed for profit.”
Do Observability Systems Need a Custom Database?
- Skeptics question why observability data needs a bespoke database rather than an existing DB or observability-focused store.
- Supporters note:
- Large vendors often build custom event stores to escape Elasticsearch cost/limitations and data warehouse awkwardness.
- For a single company, starting with Postgres (or ClickHouse) is suggested, scaling to custom solutions only when needed.
Meta and Expectations
- Some expected a “build your own DB” tutorial or a deep dive into managing Rust build times with many dependencies.
- The thread frequently broadens into general debates on software modularity, dependency culture, and modern supply-chain risk.