X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=TODO;h=61c44a845ed8268fe998f799f366b492afed1d3e;hp=34eb53d22562df5a3c8e9fbac09fbc284b44b0cb;hb=96a8b8832d791d53e05f235b5bc2492daab5f60a;hpb=d4aeca9a1707c02612e9c74184354531866b89f7 diff --git a/TODO b/TODO index 34eb53d2..61c44a84 100644 --- a/TODO +++ b/TODO @@ -1,24 +1,39 @@ TODO items for public-inbox -(Not in any particular order) +(Not in any particular order, and +performance, ease-of-setup, installation, maintainability, etc +all need to be considered for everything we introduce) -* Optional cookies in WWW interface for user-configurable colors +* general performance improvements, but without relying on + XS or pre-built modules any more than we currently do. -* WWW: Hybrid flat view + thread skeleton (requires Xapian) +* mailmap support (same as git) for remapping expired email addresses * POP3 server, since some webmail providers support external POP3: https://public-inbox.org/meta/20160411034104.GA7817@dcvr.yhbt.net/ + Perhaps make this depend solely the NNTP server and work as a proxy. + Meaning users can run this without needing a full copy of the + archives in a git repository. -* TLS support for various daemons (including STARTTLS for NNTP and POP3) +* HTTP and NNTP proxy support. Allow us to be a frontend for + firewalled off (or Tor-exclusive) instances. The use case is + for offering a publically accessible IP with a cheap VPS, + yet storing large amounts of data on computers without a + public IP behind a home Internet connection. -* Unix socket support for HTTP and POP3 server for use behind reverse - proxies like nginx +* optional Cache::FastMmap support so production deployments won't + need Varnish (Varnish doesn't protect NNTP, either) -* Combined "super server" for NNTP/HTTP/POP3 to reduce memory overhead +* dogfood and take advantage of new kernel APIs (while maintaining + portability to older Linux, free BSDs and maybe Hurd). + +* dogfood latest Xapian, Perl5, SQLite, git and various modules to + ensure things continue working as they should (or more better) + while retaining compatibility with old versions. -* Optional reply-to-list support for mirroring lists that want it :< - Reply-to-list encourages the existing list as a single-point-of-failure, - but having an extra mirror using public-inbox.org is nice regardless. +* Support more of RFC 3977 (NNTP) + +* Combined "super server" for NNTP/HTTP/POP3 to reduce memory overhead * Configurable linkification for per-inbox shorthands: "$gmane/123456" could be configured to expand to the @@ -26,22 +41,98 @@ TODO items for public-inbox likewise "[Bug #123456]" could be configured to expand to point to some project's bug tracker at http://example.com/bug/123456 -* implement RFC 4685 (Atom message threading) +* configurable synonym and spelling support in Xapian + +* Support optional "HTTPS Everywhere" for mapping old HTTP to HTTPS + links if (and only if) the user wants to use HTTPS. We may also + be able to configure redirects for expired URLs. + + Note: message bodies rendered as HTML themselves must NOT change, + the links should point to an anchor tag within the same page, + instead; giving the user options. * configurable constants (index limits, search results) -* use tags as date-based skiplists for navigating history - (maybe not needed with Xapian support nowadays?) +* handle messages with multiple Message-IDs (done for v2, doable for v1) + +* handle broken double-bracketed References properly (maybe) + and totally broken Message-IDs + + cf. https://public-inbox.org/git/20160814012706.GA18784@starla/ -* handle Xapian date range queries: - http://mid.gmane.org/20151005222157.GE5880@survex.com +* improve documentation + +* linkify thread skeletons better + https://public-inbox.org/git/6E3699DEA672430CAEA6DEFEDE6918F4@PhilipOakley/ + +* streaming Email::MIME replacement: currently we generate many + allocations/strings for headers we never look at and slurp + entire message bodies into memory. + (this is pie-in-the-sky territory...) * use REQUEST_URI properly for CGI / mod_perl2 compatibility with Message-IDs which include '%' (done?) -* more test cases (use git fast-import to speed up creation) +* more and better test cases (use git fast-import to speed up creation) + +* large mbox/Maildir/MH/NNTP spool import (see PublicInbox::Import) + +* Read-only WebDAV interface to the git repo so it can be mounted + via davfs2 or fusedav to avoid full clones. + davfs2 needs Range: request support for this to be feasible: + https://savannah.nongnu.org/bugs/?33259 + https://savannah.nongnu.org/support/?107649 + +* Contribute something like IMAP IDLE for "git fetch". + Inboxes (and any git repos) can be kept up-to-date without + relying on polling. + +* Improve bundle support in git to make it cheaper to host/clone + with dumb HTTP(S) servers. + +* Expose targeted reindexing of individual messages. + Sometimes an indexing bug only affects a handful of messages, + so it's not worth the trouble of doing a full reindex. + +* code repository integration (with cgit, gitweb, etc...) + +* migration path to v2 without breaking v1 "git fetch" cronjobs + +* imperfect scraper importers for obfuscated list archives + (e.g. obfuscated Mailman stuff, Google Groups, etc...) + +* consider using HTTP::Date instead of Date::Parse, since we need the + former is capable of parsing RFC822-ish dates, used by Plack, and + the latter is missing from OpenBSD and maybe other distros. + +* improve performance and avoid head-of-line blocking on slow storage + +* share "git cat-file --batch" processes across inboxes to avoid + bumping into /proc/sys/fs/pipe-user-pages-* limits + +* make "git cat-file --batch" detect unlinked packfiles so we don't + have to restart processes (very long-term) + +* support searching based on `git-patch-id --stable` to improve + bidirectional mapping of commits <=> emails + +* linter to check validity of config file + +* linter option and WWW endpoint to graph relationships and flows + between inboxes, addresses maildirs, coderepos, etc... + +* pygments support - via Python script similar to `git cat-file --batch' + to avoid startup penalty. pygments.rb (Ruby) can be inspiration, too. + +* highlighting + linkification for "git format-patch --interdiff" output + +* highlighting + linkification for "git format-patch --range-diff" output + (requires mirroring of git repos) + +* parse and allow (semi)automatic-mirroring of "git request-pull" output + for coderepos -* large mbox/Maildir/MH/NNTP spool import (use git fast-import) +* configurable diff output for solver-generated blobs -* improve + document mlmmj integration, currently only at: - http://bogomips.org/unicorn-public/20140508084301.GA2033%40dcvr.yhbt.net/ +* fix search for messages with multiple Subject:/To:/From:/Date: + headers (some wacky examples out there...)