| TODO items for public-inbox |
| |
| (Not in any particular order, and |
| performance, ease of setup, installation, maintainability, etc. |
| all need to be considered for everything we introduce.) |
| |
| * general performance improvements, but without relying on |
| XS or pre-built modules any more than we currently do. |
| (Optional Inline::C and user-compiled re2c acceptable) |
| |
| * mailmap support (same as git) for remapping expired email addresses |
| |
| * support remapping of expired URLs similar to mailmap |
| (coordinate with git.git with this?) |
| |
| * HTTP, IMAP, NNTP, POP3 proxy support. Allow us to be a frontend for |
| firewalled off (or Tor-exclusive) instances. The use case is |
| for offering a publicly accessible IP with a cheap VPS, |
| yet storing large amounts of data on computers without a |
| public IP behind a home Internet connection. |
| |
| * support HTTP(S) CONNECT proxying to IMAP/NNTP/POP3 for users with |
| firewall problems |
| |
| * DHT (distributed hash table) for mapping Message-IDs to various |
| archive locations to avoid SPOF. |
| |
| * optional Cache::FastMmap support so production deployments won't |
| need Varnish (Varnish doesn't protect NNTP or IMAP, either) |
| |
| * 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 better) |
| while retaining compatibility with old versions. |
| |
| * Support more of RFC 3977 (NNTP) |
| Is there anything left for read-only support? |
| |
| * Configurable linkification for per-inbox shorthands: |
| "$gmane/123456" could be configured to expand to the |
| appropriate link pointing to the gmane.io list archives, |
| likewise "[Bug #123456]" could be configured to expand to |
| point to some project's bug tracker at http://example.com/bug/123456 |
| |
| * 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) |
| |
| * 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/ |
| |
| * improve documentation |
| |
| * linkify thread skeletons better |
| https://public-inbox.org/git/6E3699DEA672430CAEA6DEFEDE6918F4@PhilipOakley/ |
| |
| * Further lower mail parser memory usage. We still slurp entire |
| message bodies into memory and incur 2-3x overhead on |
| multipart messages. Inline::C (and maybe gmime) could work. |
| |
| * use REQUEST_URI properly for CGI / mod_perl2 compatibility |
| with Message-IDs which include '%' (done?) |
| |
| * handle unencoded slashes from user-generated URLs properly |
| https://public-inbox.org/meta/20230217085255.xcsaoozloz2yuxil@pengutronix.de/ |
| |
| * better test cases, make faster by reusing more setup |
| code across tests |
| |
| * large mbox/Maildir/MH/NNTP spool import (in lei, but not |
| for public-facing inboxes) |
| |
| * MH import support (read-only, at least) |
| |
| * 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 (cgit: done, TODO: gitweb, etc...) |
| |
| * migration path to v2 (making it transparent for "git fetch" |
| may not be possible, but "public-inbox-fetch" will handle it) |
| |
| * imperfect scraper importers for obfuscated list archives |
| (e.g. obfuscated Mailman stuff, Google Groups, etc...) |
| |
| * improve performance and avoid head-of-line blocking on slow storage |
| (done for most git blob retrievals, Xapian needs work) |
| |
| * allow optional use of separate Xapian worker process to implement |
| timeouts and avoid head-of-line blocking problems. Consider |
| just-ahead-of-time builds to take advantage of custom date parsers |
| (approxidate) and other features not available to Perl bindings. |
| |
| * integrate git approxidate parsing into Xapian w/o spawning git |
| |
| * HTTP(S) search API (likely JMAP, but GraphQL could be an option) |
| It should support git-specific prefixes (dfpre:, dfpost:, dfn:, etc) |
| as extensions. If JMAP, it should have HTTP(S) analogues to |
| various IMAP extensions. |
| |
| * scalability to tens/hundreds of thousands of inboxes |
| |
| - inotify-based manifest.js.gz updates |
| |
| ... |
| |
| * lei - see %CMD in lib/PublicInbox/LEI.pm |
| (there's a truckload here..) |
| |
| * make "git cat-file --batch" detect unlinked packfiles so we don't |
| have to restart processes (very long-term) |
| |
| * linter to check validity of config file |
| |
| * linter option and WWW endpoint to graph relationships and flows |
| between inboxes, addresses, Maildirs, coderepos, newsgroups, |
| IMAP mailboxes, 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 for "git format-patch --range-diff" output |
| (linkification is too expensive, as it requires mirroring) |
| |
| * support UUCP addresses for legacy archives |
| |
| * support pipelining as an IMAP/NNTP client for -watch + lei |
| |
| * expose lei contents via read/write IMAP/JMAP server for personal use |
| |
| * git SHA-256 migration/coexistence path |
| |
| * decode RFC 3676 format=flowed + DelSp properly (see mflow (mblaze), mutt, ...) |