]> Sergey Matveev's repositories - public-inbox.git/blobdiff - HACKING
init: use Import::run_die instead of system()
[public-inbox.git] / HACKING
diff --git a/HACKING b/HACKING
index 1cda588e9c7632e5268ec2f505cf23c3ff1a8387..859745ef3151c642c22623b6ce31327f3f563e67 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -1,8 +1,14 @@
 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://hjrcffqmbrq6wope.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:
 
@@ -11,8 +17,49 @@ Please consider our goals in mind:
 These goals apply to everyone: users viewing over the web or NNTP,
 sysadmins running public-inbox, and other hackers working public-inbox.
 
-We will reject any feature which advocates or contributes to a particular
-instance of a public-inbox becoming a single point of failure.
+We will reject any feature which advocates or contributes to any
+particular instance of a public-inbox becoming a single point of failure.
+Things we've considered but rejected include:
+
+* exposing article serial numbers outside of NNTP
+* allowing readers to inject metadata (e.g. votes)
+
+We care about being accessible to folks with vision problems and/or
+lack the computing resources to view so-called "modern" websites.
+This includes folks on slow connections and ancient browsers which
+may be too difficult to upgrade due to resource demands.
+
+Only depend on Free Software packages which exist in the "main"
+section of Debian "stable" distribution.  That is Debian 9.x
+("stretch") as of this writing, but "oldstable" (8.x, "jessie")
+remains supported for v1 repositories.
+
+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,
+distribute and verify.  public-inbox itself will only be implemented
+in scripting languages (currently Perl 5) and optional JIT-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.
+
+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.