docs: Add Jujutsu's Developers core values

This was taken out of the "Jujutsu from first principles" doc in another PR. It represents some of the common ideas
which the project had around a year ago.

I think this can be modernized if the maintainers want it.
This commit is contained in:
Philip Metzger 2024-02-18 17:48:46 +01:00 committed by Philip Metzger
parent 30134e523b
commit 1b7fda946e
2 changed files with 25 additions and 0 deletions

24
docs/core_tenets.md Normal file
View File

@ -0,0 +1,24 @@
## Jujutsu's Core Tenets
Jujutsu's core tenets are:
* Separation of logic and UI: It should be as easy to create new UIs (CLIs,
GUIs, TUIs, servers) without having to duplicate logic.
* Easy-to-use APIs: It should be easy to create new commands. For example,
each command should not have to worry about concurrency, working-copy state,
and rebasing descendants of rewritten commits.
* User-friendliness: Making the working copy a commit is simpler. This is
how the project started.
* The repository is the source of truth: Most commands should operate on the
commit graph. The working copy is just one way of editing commits.
* Pluggable storage: Must be easy to integrate with different commit storage,
virtual file systems and more.
* Git-interop: Git is everywhere. We need to have good interop to be adopted.
* All operations must be able to scale to Google-scale repos (lots of commits,
lots of files): Laziness is important, must avoid accessing data
unnecessarily.
* Having as few states as possible.
* Make it incredibily hard to lose work in your repository.
* Concurrent modifications to the repo should be safe.
* Allow concurrent edits on any commit, pending or finished.
* Make a "stacked diffs" workflow as easy as possible.

View File

@ -125,6 +125,7 @@ nav: # This lists all the files that become part of the documentation
- Other related work: 'related-work.md' - Other related work: 'related-work.md'
- Technical details: - Technical details:
- Core tenets: 'core_tenets.md'
- Architecture: 'technical/architecture.md' - Architecture: 'technical/architecture.md'
- Concurrency: 'technical/concurrency.md' - Concurrency: 'technical/concurrency.md'
- Conflicts: 'technical/conflicts.md' - Conflicts: 'technical/conflicts.md'