summaryrefslogtreecommitdiffstats
path: root/docs/designgoals.md
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-02-08 09:57:19 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-02-08 09:57:19 +0100
commit1259fa9eb1595c141fb80a643b8618cc9e4f6db9 (patch)
tree17f963d65f6c16c3c05a6c63a57d4440d30d95b4 /docs/designgoals.md
parent47bfba0d9152a1f7f689d7936b107b1a899a0b76 (diff)
downloadsink-1259fa9eb1595c141fb80a643b8618cc9e4f6db9.tar.gz
sink-1259fa9eb1595c141fb80a643b8618cc9e4f6db9.zip
Documentation structure
Diffstat (limited to 'docs/designgoals.md')
-rw-r--r--docs/designgoals.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/docs/designgoals.md b/docs/designgoals.md
new file mode 100644
index 0000000..4ffeeac
--- /dev/null
+++ b/docs/designgoals.md
@@ -0,0 +1,39 @@
1# Design Goals
2## Axioms
31. Personal information is stored in multiple sources (address books, email stores, calendar files, ...)
42. These sources may local, remote or a mix of local and remote
5
6## Requirements
71. Local mirrors of these sources must be available to 1..N local clients simultaneously
82. Local clients must be able to make (or at least request) changes to the data in the local mirrors
93. Local mirrors must be usable without network, even if the source is remote
104. Local mirrors must be able to syncronoize local changes to their sources (local or remote)
115. Local mirrors must be able to syncronize remote changes and propagate those to local clients
126. Content must be searchable by a number of terms (dates, identities, body text ...)
137. This must all run with acceptable performance on a moderate consumer-grade desktop system
14
15Nice to haves:
16
171. As-close-to-zero-copy-as-possible for data
182. Simple change notification semantics
193. Resource-specific syncronization techniques
204. Data agnostic storage
21
22Immediate goals:
23
241. Ease development of new features in existing resources
252. Ease maintenance of existing resources
263. Make adding new resources easy
274. Make adding new types of data or data relations easy
285. Improve performance relative to existing Akonadi implementation
29
30Long-term goals:
31
321. Project view: given a query, show all items in all stores that match that query easily and quickly
33
34Implications of the above:
35
36* Local mirrors must support multi-reader, but are probably best served with single-writer semantics as this simplifies both local change recording as well as remote synchronization by keeping it in one process which can process write requests (local or remote) in sequential fashion.
37* There is no requirement for a central server if the readers can concurrently access the local mirror directly
38* A storage system which requires a schema (e.g. relational databases) are a poor fit given the desire for data agnosticism and low memory copying
39