about summary refs log tree commit homepage
path: root/lib
DateCommit message (Collapse)
2014-05-04add various TODO items
Screen space is precious, and we do not need it in the abbreviated view.
2014-05-02view: API cleanup, remove "as_" prefix
These views are not OO, so the "as_" prefix makes little sense and "as_html" conflicts with Hval, which is OO.
2014-05-02reduce copies by passing string refs to Email::MIME
This should reduce data copies and memory usage, according to Email::Simple documentation.
2014-05-02git cat-file wrapper uses syswrite for writes
The requests we make to git cat-file --batch are guaranteed to be smaller than the 512 bytes required by PIPE_BUF, so there will be no partial writes. Bypass Perl IO layers and write directly to the pipe to avoid needing IO::Handle here.
2014-05-01thread: limit scope of monkey patch
Future versions of Mail::Thread may be released to fix this bug. However, since it's been about 8 years since the bug was reported..
2014-05-01workaround Mail::Thread memory leak
Thanks to Ask for the patch in https://rt.cpan.org/Public/Bug/Display.html?id=22817
2014-05-01purge Email::Address cache
This prevents memory bloat in case we're serving many requests with a large, diverse set of email addresses (potentially from malicious spammers).
2014-05-01split out WWW package and CGI/PSGI-specific parts
This should allow us to more-easily test with Plack.
2014-04-30"git cat-file --batch" wrapper really mod_perl-compatible
IPC::Open* does not work well under mod_perl (probably because it does funky things with stdout/stderr). So use the POSIX dup2 functions instead, which work reliably on all POSIX-like platforms.
2014-04-30cgi: remove dependency on IPC::Run in CGI
We may not have PATH available on some servers (e.g. webrick) and must rely on the hardcoded system PATH. My installation of IPC::Run does not seem to work without PATH set in the env, however normal Perl "open" calls work fine.
2014-04-30config: avoid double-slash in expand_path output
It looks ugly in error messages to have redundant slashes.
2014-04-30favor "--git-dir=..." over "--git-dir ..."
This might improve grep-ability slightly and reduce allocations while we're at it.
2014-04-30feed: unset GIT_DIR and use "git --git-dir=.. log"
This should elimate all of our %ENV dependencies in the WWW portion of our code.
2014-04-29implement our own cat-file --batch wrapper
We use --git-dir=... instead of $ENV{GIT_DIR} because ENV changes do not propagate easily with mod_perl.
2014-04-29config: use "git config --file" to avoid changing %ENV
%ENV changes do not propagate by default under a mod_perl2 environment, and we might as well work towards being thread-safe.
2014-04-28feed: call URI->as_string explicitly
Implicit string conversion is more confusing.
2014-04-28use relative URLs in HTML index
Browsers know how to follow relative URLs, so we may generate smaller HTML pages.
2014-04-28feed: swap order of "next" and "head" links
This is one less key stroke for somebody paging through the list history.
2014-04-28feed: avoid redirect on permalink
This saves one round-trip request response so reduces latency over slow links. The redirect only exists for convenience and isn't 100% reliable in case the Message-ID terminates with a .(html|txt) suffix.
2014-04-28feed: dead code elimination around dropped endpoints
public-inbox is for discussion, so top-level posts do not get special treatment.
2014-04-28mda: support aliased addresses
This mimics functionality found in -learn. Originally the design allowed for only one address per-list, but when migrating/hijacking existing mailing lists, having multiple addresses map to the same inbox is useful.
2014-04-28feed: disable navigation to previous page
This is unfortunately needed for scalability to long histories. The design of git requires it to traverse full history to walk forward in time, since commits can only record past history. Instead, replace "prev" with a "head" link to zip us back to the most recent page. Users who wish to go backwards can use browser history, which should always work on our old-fashioned HTML pages.
2014-04-28feed: pedantically quote HTML attributes
This is more correct, although it costs us 4 bytes.
2014-04-28allow running as a Plack app without CGI emulation
This might be slightly cleaner, though generating the base URL now has an ugly condition in it.
2014-04-28uri_escape => uri_escape_utf8
We should be able to deal with URIs with non-ASCII characters in them. I only found this problem when looking at archives with non-English spam :x
2014-04-27feeds use XHTML to avoid tag soup
This should work in most browsers, lets find out!
2014-04-27Feed: <id> element must be a URI, oops :x
For each feed element, we'll just use the link since there's currently no suitable URN.
2014-04-27view: uri_escape subject
This hopefully improves compatibility with mailers
2014-04-26feed: comment about the %deleted hash
It's strictly not necessary anymore since commit fa6168c56bdd1cece178b6b852a9b2cba6ce6ffb ("feed: message must exist in current HEAD to show up") However it can still save us some unnecessary syscalls and round-trips to the "git cat-file --batch" process, so it's probably worth th cost of stuffing it in a hash.
2014-04-26feed: message must exist in current HEAD to show up
We do not want recently-deleted spam showing up when looking in old histories.
2014-04-26view: show References: header, too
Some mail user agents use this header, and Mail::Thread uses it, too, so show it if possible, but only if it's not redundant to In-Reply-To.
2014-04-26view: add per-message HTML footer to encourage replies
This may not work with most mail user agents, however.
2014-04-26huge refactor of encoding handling
Hopefully this simplifies and corrects our usage of Perl encoding APIs.
2014-04-25cgi: eliminate dead/redundant HTML escaping code
2014-04-24html: refactor header value handling to be OO
This helps us keep track of escaping which needs to be done for various levels.
2014-04-22view: fix link to raw message from /f/ endpoint
Ugh, at least this has a test...
2014-04-22fix quoted URL generation in feeds
While we're at it, make sure strange characters are escaped properly in Message-IDs. We'll need tests for all this behavior.
2014-04-22view: do not decode Message-ID
This is ridiculous, nobody (including ssoma) ever does this.
2014-04-21feed: fix address when multiple addresses exist
This needs to be cleaned up
2014-04-21config: use description file for gitweb
Do not repeat ourselves, just use the same description file gitweb uses to avoid surprising users.
2014-04-21html/index: fix broken prev/next pagination on short histories
We do not have much history in public-inbox meta, so do not mislead users with strange navigation elements which lead nowhere.
2014-04-21feed: there is only one atom feed, with all messages
This is not a blog. All posts, whether replies or not, carry equal weight.
2014-04-21html/index: do not waste space with non-existent thread roots
Screen real-estate is valuable, and missing roots tend to be false-positive matches (using Subject, not In-Reply-To or References).
2014-04-20feed: close string ref before returning
Just in case there is an error, this should be more explicit.
2014-04-20cgi: delay some requires
This shaves off nearly 100ms when my Core2Duo is clocked to 800Mhz when rendering a full HTML index.
2014-04-20feed: speed up blob checks if Git.pm is usable
Git::cat_blob is a handy interface to read multiple emails without incurring fork + exec overhead. Git.pm is GPLv2+, not GPLv2-only, so we may link to it.
2014-04-19mda: share commit setup code with -learn
We need -learn to do many of the same things as -mda when we have a false-positive. We also need -learn to do HTML filtering in case the training user screws up.
2014-04-19move precheck to MDA namespace
We will be combining common code between -learn and -mda
2014-04-19cgi: index pages allow iterating some pagination
This allows WWW readers to slowly page through the entire history of the mailing list.
2014-04-18view: fix regression in standalone /^&gt;$/ lines
The lack of trailing whitespace in quote prefixes threw us off and cause t/view to fail. This failure was caused by commit fefea3d7d2484ffbf433aec0dd80026aa7120e07 ("ensure per-message short quotes do not get too long") and not caught before pushing because I failed to run "make", only "prove" (and not even "prove -l" :x).