public-inbox.git  about / heads / tags
an "archives first" approach to mailing lists
$ git log --pretty=format:'%h %s (%cs)%d'
e7c8ab55 eml: reuse ->decode buffer (2024-02-14)
	(HEAD -> master)
eb2ce640 eml: avoid anonymous __WARN__ sub for encode/decode (2024-02-14)
8f0c9c28 codesearch: generate_cxx: drop unused variables (2024-02-14)
b76dff9f xap_helper_cxx: -O2 optimize read-only files by default (2024-02-14)
785a0d6a doc: fix formatting for CLI switch aliases (2024-02-14)
241d05f1 doc: config: cgit=rewrite isn't implemented, yet (2024-02-14)
57269a32 www: cgit: support non-standard cgitrc locations (2024-02-14)
c22d8d2b viewvcs: HTML fixes for commits (2024-02-13)
0723e954 viewvcs: parallelize commit display (2024-02-13)
a8f21b24 www: quiet errors for git-{archive,http-backend} (2024-02-10)
...

$ git cat-file blob HEAD:README
public-inbox - an "archives first" approach to mailing lists
------------------------------------------------------------

public-inbox implements the sharing of an email inbox via git to
complement or replace traditional mailing lists.  Readers may
read via NNTP, IMAP, POP3, Atom feeds or HTML archives.

public-inbox spawned around three main ideas:

* Publicly accessible and archived communication is essential to
  Free Software development.

* Contributing to Free Software projects should not require the
  use of non-Free services or software.

* Graphical user interfaces should not be required for text-based
  communication.  Users may have broken graphics drivers, limited
  eyesight, or be unable to afford modern hardware.

public-inbox aims to be easy to deploy and manage, encouraging projects
to run their own instances with minimal overhead.

Implementation
--------------

public-inbox stores mail in git repositories as documented
in https://public-inbox.org/public-inbox-v2-format.txt and
https://public-inbox.org/public-inbox-v1-format.txt

By storing and (optionally) exposing an inbox via git, it is
fast and efficient to host and mirror public-inboxes.

Traditional mailing lists use the "push" model.  For readers,
that requires commitment to subscribe and effort to unsubscribe.
New readers may also have difficulty following existing
discussions if archives do not expose Message-ID and References
headers.  List server admins are also burdened with delivery
failures.

public-inbox uses the "pull" model.  Casual readers may
follow the list via NNTP, IMAP, POP3, Atom feed or HTML archives.

If a reader loses interest, they simply stop following.

Since we use git, mirrors are easy to set up, and lists are
easy to relocate to different mail addresses without losing
or splitting archives.

_Anybody_ may also set up a delivery-only mailing list server to
replay a public-inbox git archive to subscribers via SMTP.

Features
--------

* anybody may participate via plain-text email

* stores email in git, readers may have a complete archive of the inbox

* Atom feed, IMAP, NNTP, POP3 allows casual readers to follow via local tools

* uses only well-documented and easy-to-implement data formats

Try it out now, see https://try.public-inbox.org/

Requirements for reading:

* any software capable of IMAP, NNTP, POP3 or following Atom feeds

Any basic web browser will do for the HTML archives.
We primarily develop on w3m to maximize accessibility.

Requirements (participant)
--------------------------

* any MUA which may send text-only emails ("git send-email" works!)
  Users are strongly encouraged to use the "reply-all" feature of
  their mailers to reduce the impact of a public-inbox as a
  single point of failure.

* The HTTP web interface exposes mboxrd files, and NNTP clients often
  feature reply-by-email functionality

* participants do not need to install public-inbox, only server admins

Requirements (server)
---------------------

See https://public-inbox.org/INSTALL

Hacking
-------

AGPL source code is available via git:

	git clone https://public-inbox.org/public-inbox.git
	git clone https://repo.or.cz/public-inbox.git
	torsocks git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git
	torsocks git clone http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/public-inbox

See below for contact info.

Contact
-------

We are happy to see feedback of all types via plain-text email.
public-inbox discussion is self-hosting on public-inbox.org
Please send comments, user/developer discussion, patches, bug reports,
and pull requests to our public-inbox address at:

	meta@public-inbox.org

Please Cc: all recipients when replying as we do not require
subscription.  This also makes it easier to rope in folks of
tangentially related projects we depend on (e.g., git developers
on git@vger.kernel.org).

The archives are readable via IMAP, NNTP or HTTP:

	nntps://news.public-inbox.org/inbox.comp.mail.public-inbox.meta
	imaps://;AUTH=ANONYMOUS@public-inbox.org/inbox.comp.mail.public-inbox.meta.0
	https://public-inbox.org/meta/

AUTH=ANONYMOUS is recommended for IMAP, but any username + password works

And as Tor hidden services:

	http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/
	nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta
	imap://;AUTH=ANONYMOUS@4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta.0

You may also clone all messages via git:

	git clone --mirror https://public-inbox.org/meta/
	torsocks git clone --mirror http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/

POP3 access instructions are at:

	https://public-inbox.org/meta/_/text/help/#pop3

Anti-Spam
---------

The maintainer of public-inbox has found SpamAssassin a good tool for
filtering his personal mail, and it will be the default spam filtering
tool in public-inbox.

See https://public-inbox.org/dc-dlvr-spam-flow.html for more info.

Content Filtering
-----------------

To discourage phishing, trackers, exploits and other nuisances,
only plain-text emails are allowed and HTML is rejected by default.
This improves accessibility, and saves bandwidth and storage
as mail is archived forever.

As of the 2010s, successful online social networks and forums are the
ones which heavily restrict users' formatting options; public-inbox
aims to preserve the focus on content, not presentation.

Copyright
---------

Copyright all contributors <meta@public-inbox.org>
License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Additional permission under GNU GPL version 3 section 7:

    If you modify this program, or any covered work, by linking or
    combining it with the OpenSSL project's OpenSSL library (or a
    modified version of that library), containing parts covered by the
    terms of the OpenSSL or SSLeay licenses, the copyright holder(s)
    grants you additional permission to convey the resulting work.
    Corresponding Source for a non-source form of such a combination
    shall include the source code for the parts of OpenSSL used as well
    as that of the covered work.

# heads (aka `branches'):
$ git for-each-ref --sort=-creatordate refs/heads \
	--format='%(HEAD) %(refname:short) %(subject) (%(creatordate:short))'
* master       eml: reuse ->decode buffer (2024-02-14)
  fuse3        f3: fix test with updated executable name (2023-08-02)
  stable-1.6   www: use PublicInbox::WwwStream (2021-02-24)
  p516-leak    httpd: disable Deflater middleware by default on Perl <5.18 (2019-09-26)
  malloc_info  optionally support glibc malloc_info via SIGCONT (2019-06-10)
  ci-WIP       ci: include some scripts to make CI easier (2019-05-09)
  viewdiff     solver: remove extra "^index $OID..$OID" line (2019-01-20)
  repobrowse   search: allow searching within mail diffs (2017-04-13)

# tags:
$ git for-each-ref --sort=-creatordate refs/tags \
	--format='%(refname:short) %(subject) (%(creatordate:short))'
v1.9.0       public-inbox 1.9.0 (2022-08-21) tar.gz
v1.8.0       public-inbox 1.8.0 (2022-04-23) tar.gz
v1.7.0       public-inbox 1.7.0 (2021-11-04) tar.gz
v1.6.1       public-inbox 1.6.1 - minor bugfix release (2020-12-31) tar.gz
v1.6.0       public-inbox 1.6.0 (2020-09-16) tar.gz
v1.5.0       public-inbox 1.5.0 (2020-05-10) tar.gz
v1.4.0       public-inbox 1.4.0 (2020-04-17) tar.gz
v1.3.0       public-inbox 1.3.0 (2020-02-10) tar.gz
v1.2.0       public-inbox v1.2.0 (2019-11-03) tar.gz
v1.1.0-pre1  public-inbox 1.1.0-pre1 (2018-05-09) tar.gz
...

# associated public inboxes:
# (number on the left is used for dev purposes)
            https://public-inbox.org/meta

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