| public-inbox design notes |
| ------------------------- |
| |
| Challenges to running normal mailing lists |
| ------------------------------------------ |
| |
| 1) spam |
| 2) bounce processing of invalid/bad email addresses |
| 3) processing subscribe/unsubscribe requests |
| |
| Issues 2) and 3) are side-stepped entirely by moving reader |
| subscriptions to git repository synchronization and Atom feeds. There's |
| no chance of faked subscription requests and no need to deal with |
| confused users who cannot unsubscribe. |
| |
| Use existing infrastructure |
| --------------------------- |
| |
| * public-inbox can coexist with existing mailing lists, any subscriber |
| to the existing mailing list can begin delivering messages to |
| public-inbox-mda(1) or public-inbox-watch(1) |
| |
| * public-inbox uses SMTP for posting. Posting a message to a public-inbox |
| instance is no different than sending a message to any _open_ mailing |
| list. |
| |
| * Existing spam filtering on an SMTP server is also effective on |
| public-inbox. |
| |
| * Readers may continue using use their choice of NNTP and mail clients. |
| |
| * Atom is a reasonable feed format for casual readers and is supported |
| by a variety of feed readers. |
| |
| Why email? |
| ---------- |
| |
| * Freedom from proprietary services, tools and APIs. Communicating with |
| developers and users of Free Software should not rely on proprietary |
| tools or services. |
| |
| * Existing infrastructure, tools, and user familiarity. |
| There is already a large variety of tools, clients, and email providers |
| available. There are also many resources for users to run their own |
| SMTP server on a domain they control. |
| |
| * All public discussion mediums are affected by spam and advertising. |
| There exist several good Free Software anti-spam tools for email. |
| |
| * Privacy is not an issue for public discussion. Public mailing list |
| archives are common and accepted by Free Software communities. |
| There is no need to ask the NSA for backups of your mail archives :) |
| |
| * git, one of the most widely-used version control systems, includes many |
| tools for email, including: git-format-patch(1), git-send-email(1), |
| git-am(1), git-imap-send(1). Furthermore, the development of git itself |
| is based on the git mailing list: https://public-inbox.org/git/ |
| (or |
| http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/git/ |
| for Tor users). |
| |
| * Email is already the de-facto form of communication in many Free Software |
| communities. |
| |
| * Fallback/transition to private email and other lists, in case the |
| public-inbox host becomes unavailable, users may still directly email |
| each other (or Cc: lists for related/dependent projects). |
| |
| Why git? |
| -------- |
| |
| * git is distributed and robust while being both fast and |
| space-efficient with text data. NNTP was considered, but does not |
| support delta-compression and places no guarantees on data/transport |
| integrity. However, read-only IMAP and NNTP gateways are implemented. |
| |
| * As of 2016, git is widely used and known to nearly all Free Software |
| developers. For non-developers it is packaged for all major GNU/Linux |
| and *BSD distributions. NNTP is not as widely used nowadays, and |
| most IMAP clients do not have good support for read-only mailboxes. |
| |
| Why perl 5? |
| ----------- |
| |
| * Perl 5 is widely available on modern *nix systems, with a good history |
| of backwards and forward compatibility. |
| |
| * git and SpamAssassin both use it, so it should be one less thing for |
| admins to install and waste disk space with. |
| |
| * Distributing compiled binaries has higher costs for storage/cache |
| space is required for each architecture. Having a runnable, |
| source-only distribution means any user already has access to all |
| of our source. |
| |
| Laziness |
| -------- |
| |
| * Stick to dependencies available in Debian main, this should make it |
| easier for potential users to install, and easier for distro |
| maintainers to pick up. |
| |
| * A list server being turned into an SMTP spam relay and being |
| blacklisted while an admin is asleep is scary. |
| Sidestep that entirely by having clients pull. |
| |
| * Eric has a great Maildir+inotify-based Bayes training setup |
| going back many years. Document, integrate and publicize it for |
| public-inbox usage, encouraging other admins to use it (it works |
| as long as admins read their public-inbox). |
| |
| * Custom, difficult-for-Bayes requires custom anti-spam rules. |
| We may steal rules from the Debian listmasters: |
| svn://anonscm.debian.org/pkg-listmaster |
| |
| * Full archives are easily distributable with git, so somebody else |
| can take over the list if we give up. Anybody may also run an SMTP |
| notifier/delivery service based on the archives. |
| |
| * Avoids bikeshedding about web UI decisions, GUI-lovers can write their |
| own GUI-friendly interfaces (HTML or native) based on public archives. |
| |
| Web notes |
| --------- |
| |
| * Getting users to install/run any new tool is difficult. |
| The web views must be easily read/cache/mirror-able. |
| |
| * There may also be a significant number of webmail users without |
| an MUA or feed reader; so a web view is necessary. |
| |
| * Expose Message-ID in web views to encourage replies from drive-by |
| contributors. |
| |
| * Raw text endpoint allows users to write client-side endpoints |
| without hosting the data themselves (or on a different server). |
| |
| What sucks about public-inbox |
| ----------------------------- |
| |
| * Lack of push notification. On the other hand, feeds seem popular. |
| |
| * some (mostly GUI) mail clients cannot set In-Reply-To headers |
| properly without the original message. |
| |
| * marketing - as it should: <https://public-inbox.org/marketing.txt> |
| |
| Scalability notes |
| ----------------- |
| |
| See the public-inbox-v2-format(5) manpage for all the scalability |
| problems solved. |
| |
| Copyright |
| --------- |
| |
| Copyright all contributors <meta@public-inbox.org> |
| License: AGPL-3.0+ <http://www.gnu.org/licenses/agpl-3.0.txt> |