public-inbox.git  about / heads / tags
an "archives first" approach to mailing lists
blob b5180374ad0599f76f47b60890e43c00f34a6247 1290 bytes (raw)
$ git show HEAD:Documentation/lei_design_notes.txt	# shows this blob on the CLI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
lei design notes
----------------

Daemon architecture
-------------------

The use of a persistent daemon works around slow startup time of
Perl.  This is especially important for built-in support for
shell completion.  It attempts to support inotify and EVFILT_VNODE
background monitoring of Maildir keyword changes.

If lei were reimplemented in a language with faster startup
time, the daemon architecture would likely remain since it also
lets us easily decouple the local storage from slow IMAP/NNTP
backends and allow us to serialize writes to git-fast-import,
SQLite, and Xapian across multiple processes.

The coupling of IMAP and NNTP network latency to local storage
is a current weakness of public-inbox-watch.  Therefore, -watch
will likely adopt the daemon architecture of lei in the future.

Read/write vs read-only storage
-------------------------------

public-inboxes are intended to be written and read by different
Unix users.  Commonly, a single Unix user or group will write to
a public-inbox, but the inbox will be served by a user with
read-only permissions (e.g. "www-data" or "nobody").

lei/store is intended to be read and written by a single user,
thus we can rely on the Write-Ahead-Log journal of SQLite to
improve performance: <https://sqlite.org/wal.html>

git clone https://public-inbox.org/public-inbox.git
git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git