From 40f1d11b262acf1864f634c95382b0eeb3abd159 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Sun, 9 Sep 2012 13:23:37 +2000 Subject: [PATCH] Re: [PATCH 00/11] add recipients to search output --- 85/d0c3fab36eebcdbac7122140682263c17adba3 | 153 ++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 85/d0c3fab36eebcdbac7122140682263c17adba3 diff --git a/85/d0c3fab36eebcdbac7122140682263c17adba3 b/85/d0c3fab36eebcdbac7122140682263c17adba3 new file mode 100644 index 000000000..b77e48756 --- /dev/null +++ b/85/d0c3fab36eebcdbac7122140682263c17adba3 @@ -0,0 +1,153 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id D6996431FAF + for ; Sat, 8 Sep 2012 10:23:41 -0700 (PDT) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: -0.7 +X-Spam-Level: +X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 + tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id gNRBx3D4a-9n for ; + Sat, 8 Sep 2012 10:23:41 -0700 (PDT) +Received: from dmz-mailsec-scanner-2.mit.edu (DMZ-MAILSEC-SCANNER-2.MIT.EDU + [18.9.25.13]) + by olra.theworths.org (Postfix) with ESMTP id 2B8EC431FAE + for ; Sat, 8 Sep 2012 10:23:41 -0700 (PDT) +X-AuditID: 1209190d-b7f9a6d0000009ad-dc-504b7f1cc535 +Received: from mailhub-auth-2.mit.edu ( [18.7.62.36]) + by dmz-mailsec-scanner-2.mit.edu (Symantec Messaging Gateway) with SMTP + id 6D.D6.02477.C1F7B405; Sat, 8 Sep 2012 13:23:40 -0400 (EDT) +Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) + by mailhub-auth-2.mit.edu (8.13.8/8.9.2) with ESMTP id q88HNd8Y014311; + Sat, 8 Sep 2012 13:23:40 -0400 +Received: from awakening.csail.mit.edu (awakening.csail.mit.edu [18.26.4.91]) + (authenticated bits=0) + (User authenticated as amdragon@ATHENA.MIT.EDU) + by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id q88HNcDK026273 + (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT); + Sat, 8 Sep 2012 13:23:39 -0400 (EDT) +Received: from amthrax by awakening.csail.mit.edu with local (Exim 4.77) + (envelope-from ) + id 1TAOkr-00061L-UN; Sat, 08 Sep 2012 13:23:38 -0400 +Date: Sat, 8 Sep 2012 13:23:37 -0400 +From: Austin Clements +To: Jameson Graef Rollins +Subject: Re: [PATCH 00/11] add recipients to search output +Message-ID: <20120908172337.GB11179@mit.edu> +References: <1345427570-26518-1-git-send-email-jrollins@finestructure.net> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +In-Reply-To: <1345427570-26518-1-git-send-email-jrollins@finestructure.net> +User-Agent: Mutt/1.5.21 (2010-09-15) +X-Brightmail-Tracker: + H4sIAAAAAAAAA+NgFvrPIsWRmVeSWpSXmKPExsUixG6noitT7x1g0NKjbrFnn5fF9ZszmR2Y + PO6e5vJ4tuoWcwBTFJdNSmpOZllqkb5dAlfG6XnvmQr+KlTcu7mWpYFxq1QXIyeHhICJxL/J + K1kgbDGJC/fWs4HYQgL7GCU6/8h2MXIB2esZJW7s3sUOkTjBJPHkKgtEYgmjxImuc0AJDg4W + ARWJTZ1JIDVsAhoS2/YvZwSxRQTMJHq+/AGzmQW0JLZu/ABmCwtYSWz49pQJxOYV0JE4dHQ5 + K8R8L4mF7T3MEHFBiZMzn7DA9N7495IJZBWzgLTE8n8cIGFOAW+JCRs3gt0sCnTBlJPb2CYw + Cs1C0j0LSfcshO4FjMyrGGVTcqt0cxMzc4pTk3WLkxPz8lKLdI30cjNL9FJTSjcxgsKZU5J3 + B+O7g0qHGAU4GJV4eDfIeQUIsSaWFVfmHmKU5GBSEuXdXeMdIMSXlJ9SmZFYnBFfVJqTWnyI + UYKDWUmE93o6UI43JbGyKrUoHyYlzcGiJM57JeWmv5BAemJJanZqakFqEUxWhoNDSYK3vA6o + UbAoNT21Ii0zpwQhzcTBCTKcB2h4AUgNb3FBYm5xZjpE/hSjopQ4rzfIRQIgiYzSPLheWLp5 + xSgO9Iowry1IOw8wVcF1vwIazAQ0WOSZB8jgkkSElFQDo63L/oRvkpVrWhKO/nVf2J8osN1I + 78SPkvfcbQ4fYl8YVlrND2ItVs6u5/S4E/W24NGLG+vsjy7VjGA4saCqi/3KAiXG/y8Y0/aE + fhK7V1AuICy5g+HNh92vCwVstHd9Tuwv7z746W2ywMUXCd2G1zaLGH5ecZXbLmzOVn+P9/lO + H4OUSjLWKrEUZyQaajEXFScCAInG7i8SAwAA +Cc: Notmuch Mail +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Sat, 08 Sep 2012 17:23:42 -0000 + +Quoth Jameson Graef Rollins on Aug 19 at 6:52 pm: +> This series is an attempt to add thread recipients to the search +> output. +> +> My personal overall goal of this series is to support the handling of +> drafts in the emacs ui. For drafts we want to see recipients, instead +> of authors, in the search output. I can imagine other uses for this +> series as well, though. +> +> The first four patches generalize the author list handling in thread +> objects to handle any address list. These patches could be applied +> regardless of if the rest of the series is accepted. +> +> After that we modify the thread constructor such that it can hold +> thread recipients as well. Since there is overhead in retrieving +> thread recipients from the message files (recipients are not stored in +> the database) this is handled with a switch. +> +> Further patches add the new switch to the search CLI that adds thread +> recipients to the structured output formats. I didn't modify the text +> output format, since there is no way to extend it. I can imagine +> tweaking the text output such that the author field is instead +> replaced by the recipients (as is done for the emacs UI at the end of +> the series), but that's not done here. + +I've gotten up through patch 8. Overall I really like this series and +the abstractions you're introducing. However, I don't think you +should replicate the way the authors list is handled in the CLI. The +authors list is a kludge inherited from the text format, which had to +invent a syntax for lists, that somehow got baked into the library. +JSON, on the other hand, is very good at lists, and should use them +for the recipients (I would love if it used them for the authors list, +but that'll require an incompatible change, so I'd like to implement +my/some JSON versioning scheme first). After all, "The string is a +stark data structure and everywhere it is passed there is much +duplication of process. It is a perfect vehicle for hiding +information." + +I think treating recipients as a first-class list would lead to a much +cleaner and more general API; it would hard-code less in the library, +though it would put more responsibility on the CLI. What I'm +imagining is just a single new public API function: +notmuch_thread_get_messages, which returns a notmuch_messages_t of the +thread's messages, in the original query's sort order. It's +remarkable that we *don't* have this API already. In this case, it +would give the library user (the CLI) the ability to easily construct +the recipients list however it wants. JSON list or text string? No +problem. Just to or to/cc/bcc? No problem. Separating matched and +unmatched or merging them together? No problem. Also, since this +would naturally construct the recipients list only when needed, we +wouldn't have to worry about telling the library whether or not to pay +the performance cost, and we could trivially add the headers we end up +using to the database later and get an automatic speed boost. + +Relative to your current code, this would require either duplicating a +bit of the matched/unmatched hash table code in the CLI (not perfect, +but you wouldn't need the stringifying function, and there isn't much +other code to that) or moving the thread_addresses abstraction into +util. _thread_cleanup_author would probably also want to move into +util (which is also completely reasonable since it's a pure leaf +function that depends on nothing). + +> In the emacs UI, I add a new toggle function that will toggle display +> of thread authors or recipients in the 'authors' field of the search +> output. It's unfortunate that this ambiguity in that field name +> remains, but I didn't know how to change that cleanly. I'm working on +> some tests for the new emacs functionality that I'll include in the +> inevitable v2 of this series. +> +> The last patch is mostly just a tickle to suggest adding the +> recipients to the database. It would make the --include-recipient +> searches much faster of course, but it might be overhead in the +> database that folks aren't interested in. +> +> As always, feedback, review, and comments are much appreciated. +> +> jamie. -- 2.26.2