docs/7-DEVELOPMENT/design-principles.md
This document outlines the core principles, vision, and design philosophy that guide Open Notebook's development. All contributors should read and understand these principles before proposing changes or new features.
Open Notebook aims to be a privacy-focused, self-hosted alternative to Google's Notebook LM that empowers users to:
Principle: User data and research should stay under user control by default.
In Practice:
Example Decisions:
Principle: The tool should be easy to understand and use, even if it means fewer features.
In Practice:
Example Decisions:
Principle: All functionality should be accessible via API, not just the UI.
In Practice:
Example Decisions:
Principle: Users should never be locked into a single AI provider.
In Practice:
Example Decisions:
Principle: The system should be extensible through well-defined interfaces, not by forking.
In Practice:
Example Decisions:
Principle: Long-running operations should not block the user interface or API.
In Practice:
Example Decisions:
Layers should not leak:
Catch errors early:
Focus on valuable tests:
SurrealDB is our single source of truth:
What it looks like:
Why we avoid it:
Instead:
What it looks like:
Why we avoid it:
Instead:
What it looks like:
Why we avoid it:
Instead:
What it looks like:
Why we avoid it:
Instead:
When evaluating new features or changes, ask:
Principle: API-First Architecture
Reasoning:
Principle: Multi-Provider Flexibility
Reasoning:
Principle: Async-First for Performance
Reasoning:
Principle: Privacy First
Reasoning:
These principles are not set in stone. As the project grows and we learn from users, some principles may evolve. However, changes to core principles should be:
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.