]> Sergey Matveev's repositories - public-inbox.git/blob - Documentation/standards.perl
10b16140cd4e1a6876ef94ef855db5b5f4c8f0eb
[public-inbox.git] / Documentation / standards.perl
1 #!/usr/bin/perl -w
2 use strict;
3 # Copyright 2019-2020 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         6048 => 'NNTP additions to LIST command (TODO)',
29         8054 => 'NNTP compression (TODO)',
30         4642 => 'NNTP TLS (TODO)',
31         8143 => 'NNTP TLS (TODO)',
32         2980 => 'NNTP extensions (obsolete, but NOT irrelevant)',
33         4287 => 'Atom syndication',
34         4685 => 'Atom threading extensions',
35         2919 => 'List-Id mail header',
36         5064 => 'Archived-At mail header',
37         3986 => 'URI escaping',
38         1521 => 'MIME extensions',
39         2616 => 'HTTP/1.1 (newer updates should apply, too)',
40         7230 => 'HTTP/1.1 message syntax and routing',
41         7231 => 'HTTP/1.1 semantics and content',
42         2822 => 'Internet message format',
43         # TODO: flesh this out
44
45 ];
46
47 my @rfc_urls = qw(tools.ietf.org/html/rfc%d
48                   www.rfc-editor.org/errata_search.php?rfc=%d);
49
50 for (my $i = 0; $i < $#$rfcs;) {
51         my $num = $rfcs->[$i++];
52         my $txt = $rfcs->[$i++];
53         print "rfc$num\t- $txt\n";
54
55         printf "\thttps://$_\n", $num foreach @rfc_urls;
56         print "\n";
57 }
58
59 print <<'EOF'
60 Other relevant documentation
61 ----------------------------
62
63 * Documentation/technical/http-protocol.txt in git source code:
64   https://public-inbox.org/git/9c5b6f0fac/s
65
66 * Various mbox formats (we currently emit and parse mboxrd)
67   https://en.wikipedia.org/wiki/Mbox
68
69 * PSGI/Plack specifications (as long as our web frontend uses Perl5)
70   git clone https://github.com/plack/psgi-specs.git
71
72 Copyright
73 ---------
74
75 Copyright 2019 all contributors <meta@public-inbox.org>
76 License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
77 EOF