hacking public-inbox
--------------------
-Send all patches via to our self-hosting inbox at meta@public-inbox.org
-It is archived at <http://public-inbox.org/meta/>.
+Send all patches and "git request-pull"-formatted emails to our
+self-hosting inbox at meta@public-inbox.org
+It is archived at: https://public-inbox.org/meta/
+and http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/ (using Tor)
+
+Contributions are email-driven, just like contributing to git
+itself or the Linux kernel; however anonymous and pseudonymous
+contributions will always be welcome.
Please consider our goals in mind:
may be too difficult to upgrade due to resource demands.
Only depend on Free Software packages which exist in the "main"
-section of Debian 7.0 and later. (We will bump version requirements
-as time passes, but this is current as of January 2016).
+section of Debian "stable" distribution. That is Debian 9.x
+("stretch") as of this writing, but "oldstable" (8.x, "jessie")
+remains supported for v1 inboxes.
+
In general, we favor mature and well-tested old things rather than
the shiny new.
Avoid relying on compiled modules too much. Even if it is Free,
-compiled code makes packages more expensive to audit, build, and
+compiled code makes packages more expensive to audit, build,
distribute and verify. public-inbox itself will only be implemented
-in scripting languages (currently Perl 5).
+in scripting languages (currently Perl 5) and optional
+Just-Ahead-of-Time-compiled C (via Inline::C)
+
+Do not recurse on user-supplied data. Neither Perl or C handle
+deep recursion gracefully. See lib/PublicInbox/SearchThread.pm
+and lib/PublicInbox/MsgIter.pm for examples of non-recursive
+alternatives to previously-recursive algorithms.
Performance should be reasonably good for server administrators, too,
and we will sacrifice features to achieve predictable performance.
+Encouraging folks to self-host will be easier with lower hardware
+requirements.
+
+See design_www.txt and design_notes.txt in the Documentation/
+directory for design decisions made during development.
+
+See Documentation/technical/ in the source tree for more details
+on specific topics, in particular data_structures.txt
+
+Optional packages for testing and development
+---------------------------------------------
+
+Optional packages testing and development:
+
+- Plack::Test deb: libplack-test-perl
+ pkg: p5-Plack
+ rpm: perl-Plack-Test
+
+- Plack::Test::ExternalServer deb: libplack-test-externalserver-perl
+ pkg: p5-Plack-Test-ExternalServer
+
+- Test::Simple deb: perl-modules-5.$MINOR
+ pkg: perl5
+ rpm: perl-Test-Simple
+
+- XML::TreePP deb: libxml-treepp-perl
+ pkg: p5-XML-TreePP
+ rpm: perl-XML-TreePP
+
+Email::MIME is optional as of public-inbox v1.5.0 but still
+used for maintainer comparison tests:
+
+* Email::MIME deb: libemail-mime-perl
+ pkg: p5-Email-MIME
+ rpm: perl-Email-MIME
+
+Faster tests
+------------
+
+The `make test' target provided by MakeMaker does not run in
+parallel. Our `make check' target supports parallel runs, and
+it also creates a `.prove' file to optimize `make check-run'.
+
+The prove(1) command (distributed with Perl) may also be used
+for finer-grained testing: prove -bvw t/foo.t
+
+If using a make(1) (e.g. GNU make) with `include' support, the
+`config.mak' Makefile snippet can be used to set environment
+variables such as PERL_INLINE_DIRECTORY and TMPDIR.
+
+With PERL_INLINE_DIRECTORY set to enable Inline::C support and
+TMPDIR pointed to a tmpfs(5) mount, `make check-run' takes 6-10s
+(load-dependent) on a busy workstation built in 2010.
+
+Perl notes
+----------
-See design_www.txt and design_notes.txt in the Documentation/ directory
-for design decisions made during development.
+* \w, \s, \d character classes all match Unicode characters;
+ so write out class ranges (e.g "[0-9]") if you only intend to
+ match ASCII. Do not use the "/a" (ASCII) modifier, that requires
+ Perl 5.14 and we're only depending on 5.10.1 at the moment.