docs/7-DEVELOPMENT/design-principles.md
Engineering practices and decision-making guidance for contributors.
Looking for the product vision? What Open Notebook is (and is not), the durable product principles, and the current posture live in VISION.md — read that first. The reasoning behind past structural choices lives in the decision records.
Layers should not leak:
Catch errors early:
Focus on valuable tests:
SurrealDB is our single source of truth:
What it looks like:
Instead: Focus on core use cases; say no to features that don't align with the vision; build extensibility points for edge cases.
What it looks like:
Instead: Measure first, optimize second; focus on algorithmic improvements; profile before making performance changes.
What it looks like:
Instead: Start simple, refactor when patterns emerge; optimize for readability; use abstractions when they simplify, not complicate.
What it looks like:
Instead: Always provide migration scripts for schema changes; deprecate before removing; document breaking changes clearly.
When evaluating new features or changes, ask:
When a decision resolves a structural question — architecture or product — capture it as a decision record in the same PR. Half a page, written while the context is still loaded.
When proposing a feature or change:
Remember: A "no" to a feature isn't a judgment on you or your idea. It means we're staying focused on our core vision. We appreciate all contributions and ideas!
Questions about these principles? Open a discussion on GitHub or join our Discord.