]> Sergey Matveev's repositories - public-inbox.git/blob - Documentation/standards.perl
clone: support --post-update-hook= from grokmirror
[public-inbox.git] / Documentation / standards.perl
1 #!/usr/bin/perl -w
2 use v5.12;
3 # Copyright all contributors <meta@public-inbox.org>
4 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
5
6 print <<EOF;
7 Relevant standards for public-inbox users and hackers
8 -----------------------------------------------------
9
10 Non-exhaustive list of standards public-inbox software attempts or
11 intends to implement.  This list is intended to be a quick reference
12 for hackers and users.
13
14 Given the goals of interoperability and accessibility; strict
15 conformance to standards is not always possible, but rather
16 best-effort taking into account real-world cases.  In particular,
17 "obsolete" standards remain relevant as long as clients and
18 data exists.
19
20 IETF RFCs
21 ---------
22
23 EOF
24
25 my $rfcs = [
26         3977 => 'NNTP',
27         977 => 'NNTP (old)',
28         1036 => 'Standard for Interchange of USENET Messages',
29         5536 => 'Netnews Article Format',
30         5537 => 'Netnews Architecture and Protocols',
31         1738 => 'Uniform resource locators',
32         5092 => 'IMAP URL scheme',
33         5538 => 'NNTP URI schemes',
34         6048 => 'NNTP additions to LIST command (TODO)',
35         8054 => 'NNTP compression',
36         4642 => 'NNTP TLS',
37         8143 => 'NNTP TLS',
38         2980 => 'NNTP extensions (obsolete, but NOT irrelevant)',
39         4287 => 'Atom syndication',
40         4685 => 'Atom threading extensions',
41         2919 => 'List-Id mail header',
42         5064 => 'Archived-At mail header',
43         3986 => 'URI escaping',
44         1521 => 'MIME extensions',
45         2616 => 'HTTP/1.1 (newer updates should apply, too)',
46         7230 => 'HTTP/1.1 message syntax and routing',
47         7231 => 'HTTP/1.1 semantics and content',
48         822 => 'Internet message format (1982)',
49         2822 => 'Internet message format (2001)',
50         5322 => 'Internet message format (2008)',
51         3501 => 'IMAP4rev1',
52         2177 => 'IMAP IDLE',
53         2683 => 'IMAP4 Implementation Recommendations',
54         # 5032 = 'WITHIN search extension for IMAP',
55         4978 => 'IMAP COMPRESS Extension',
56         # 5182 = 'IMAP Extension for Referencing the Last SEARCH Result',
57         # 5256 => 'IMAP SORT and THREAD extensions',
58         # 5738 =>  'IMAP Support for UTF-8',
59         # 8474 => 'IMAP Extension for Object Identifiers',
60
61         # 8620 => JSON Meta Application Protocol (JMAP)
62         # 8621 => JSON Meta Application Protocol (JMAP) for Mail
63         # ...
64
65         # examples/unsubscribe.milter and PublicInbox::Unsubscribe
66         2369 => 'URLs as Meta-Syntax for Core Mail List Commands',
67         8058 => 'Signaling One-Click Functionality for List Email Headers',
68
69         1081 => 'Post Office Protocol – Version 3',
70         1939 => 'Post Office Protocol – Version 3 (STD 53)',
71         2449 => 'POP3 extension mechanism',
72         2595 => 'STARTTLS for IMAP and POP3',
73         2384 => 'POP URL Scheme',
74
75         # TODO: flesh this out
76 ];
77
78 my @rfc_urls = qw(tools.ietf.org/html/rfc%d
79                   www.rfc-editor.org/errata_search.php?rfc=%d);
80
81 for (my $i = 0; $i < $#$rfcs;) {
82         my $num = $rfcs->[$i++];
83         my $txt = $rfcs->[$i++];
84         print "rfc$num\t- $txt\n";
85
86         printf "\thttps://$_\n", $num foreach @rfc_urls;
87         print "\n";
88 }
89
90 print <<'EOF'
91 Other relevant documentation
92 ----------------------------
93
94 * IMAP capabilities registry and response codes:
95   https://www.iana.org/assignments/imap-capabilities
96   https://www.iana.org/assignments/imap-response-codes
97
98 * Documentation/technical/http-protocol.txt in git source code:
99   https://public-inbox.org/git/9c5b6f0fac/s
100
101 * Various mbox formats (we currently emit and parse mboxrd)
102   https://en.wikipedia.org/wiki/Mbox
103
104 * PSGI/Plack specifications (as long as our web frontend uses Perl5)
105   git clone https://github.com/plack/psgi-specs.git
106
107 Copyright
108 ---------
109
110 Copyright (C) all contributors <meta@public-inbox.org>
111 License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
112 EOF