From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alan Schmitt Subject: Re: [ANN] Gnorb: Glue code between Gnus, Org, and BBDB Date: Sat, 10 May 2014 15:34:00 +0200 Message-ID: References: <87r446bcut.fsf@ericabrahamsen.net> <87iopdhqla.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:50306) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wj7Px-0002vO-NB for emacs-orgmode@gnu.org; Sat, 10 May 2014 09:34:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wj7Pr-0003rj-CM for emacs-orgmode@gnu.org; Sat, 10 May 2014 09:34:21 -0400 Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]:32413) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wj7Pq-0003rQ-Uu for emacs-orgmode@gnu.org; Sat, 10 May 2014 09:34:15 -0400 In-Reply-To: <87iopdhqla.fsf@ericabrahamsen.net> (Eric Abrahamsen's message of "Sat, 10 May 2014 18:32:01 +0800") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Abrahamsen Cc: emacs-orgmode On 2014-05-10 12:32, Eric Abrahamsen writes: > Alan Schmitt writes: > >> I usually avoid putting links in my tasks. For instance, the task >> I generated from your email to the list looks like this: >> >> **** TODO Reply to this when I will have tried gnorb :@fun: >> [2014-05-07 Wed 11:25] >> >> [[gnus:lists.orgmode#87r446bcut.fsf@ericabrahamsen.net][Email from Eric Abrahamsen: {O} {ANN} Gnorb: Glue code bet (Wed, 07 May 2014 09:23:54 +0800)]] >> >> Would it be difficult to handle such emails when the link is inside the >> TODO, instead of in the heading? > > Not at all! In fact, the next tweak for this is an option allowing you > to expand the scope of the scan for links. I'll probably default it to > checking the first paragraph of the entry text, but you'll be able to go > all the way to 'subtree. That would be great indeed. >> I can of course change my capture format. I'm just wondering why you >> prefer to have the link in the mail. > > Heck no I don't want you to change your format! I'm very sensitive to > issues of mental overhead and workflow/file-format lock-in with this > package. The whole point is to help you think *less*, not more, and I > don't want people having to write a bunch of code or change their files > to make it work. Ideally everything would just happen by calling > functions, and it will be the responsibility of those functions to > look at your TODO structure and do the right thing. A more robust alternative than looking at the note's text could be to have a property with the link to the mail. (Later) I see that your LOGBOOK example uses a property to track the message. Could this be considered as the link? And I also see you only record the message id. How do you get to the right folder using it? > Actually, let me hijack this for a second and ask a more general > question. I announced the package at this stage, and not when it was > more complete, because the next thing to do is flesh out its email > handling capabilities, and I'd love to get feedback on that first. For comparison, my email handling workflow is very simple. I have a "capture with link" template that looks like this, that I can use from inside gnus: #+begin_src emacs-lisp ("T" "todo with link" entry (file "refile-orgx.org") "* TODO %?\n %U\n\n%a") #+end_src I'm also making sure the link text has enough information to find the mail again if it's moved (I would love a more robust linking system, maybe based on notmuch, but this works well enough for the moment). To do so, I set `org-email-link-description-format' to "Email %c: %.30s (%d)". To follow a link, I don't simply click on it as it usually breaks my carefully crafted layout for my agenda and todo files. So I have a very simple function that creates a frame to display the link: #+begin_src emacs-lisp (defun as/copy-link-and-open-in-new-frame () (interactive) "Copies the next link found and opens it in a new frame" (org-next-link) (let ((link (org-element-property :raw-link (org-element-link-parser)))) (make-frame '((name . "follow-link"))) (select-frame-by-name "follow-link") (org-open-link-from-string link))) #+end_src This setup is why I'm so interested in gnorb: it's too much manual manipulation and friction. > I'm writing two more functions to complement `gnorb-org-handle-mail'. In > the end there will be three: > > 1. A function that says "make an Org todo out of the email I'm sending > now" (to keep track of conversations that need following-up). > > 2. A function that says "this email I just received is relevant to some > Org heading, and should trigger a TODO state-change or a note on that > heading". It will be able to suggest the correct heading. > > 3. A function that says "send an email by reading the current Org > heading and doing what I what". That's `gnorb-org-handle-mail'. These three functions would be most useful indeed. > I just said I don't want to enforce anything, but one thing I want to > strongly *encourage* is the use of the LOGBOOK drawer to keep track of > email threads/conversations. By using `org-log-into-drawer', the "@" > cookie for TODO keywords, and `org-add-note', you can keep track of all > the important developments in an email conversation, using links to > specific messages. I do a fair amount of business negotiation via email, > and this is pretty crucial for me. I end up with headings looking like > this: > > * WAIT Sort out copyright agreement with [[bbdb:johnbob]] > :LOGBOOK: > - State "WAIT" from "REPLY" [2014-05-08 Sat 09:45] \\ > I told him that might work, but we'd need to limit the language zone > - State "REPLY" from "WAIT" [2014-05-07 Sat 15:09] \\ > He [[gnus:link][wrote back]] and proposed 14% royalties > - Note taken on [2014-05-06 Sat 12:56] \\ > Mattbob [[gnus:link][wrote]] and reminded me to ask about digital rights > - State "WAIT" from "EMAIL" [2014-05-04 Fri 13:25] \\ > Wrote to Johnbob and proposed terms. > :END: > :PROPERTIES > :GNORB_MSG_IDS: 46bcut.fsf@ericabrahamsen.net jj8m.fsf@johnbob.fr > :END: > > I'd like gnorb to do all the complicated bits for you. You should just > be able to call whichever of the three functions is relevant, and then > gnorb will put you in the right place, with a link loaded, to take a > note or annotate a state-change. In the above example, > `gnorb-org-handle-mail' should see that there are gnus links in the > LOGBOOK, and start a reply to the most recent one. I know how to record state changes in the logbook (in the definition of `org-todo-keywords'), but I don't know how one adds notes. Do you do it by hand? > I use the BBDB a lot because when I think "now I have to do XYZ", that > often starts with thinking of the people involved with the task. So I go > to the record in BBDB, and then call `gnorb-bbdb-mail-search' to see > messages from them, or `gnorb-bbdb-tag-agenda' to see Org todos related > to them. When I do a tags search in Org, `gnorb-org-popup-bbdb' shows me > relevant contacts. I'm going to expand this so that org-occur also does > a generalized BBDB search, and pops up the relevant buffer. The more > information that's available using BBDB as a starting point, the more > you'll use BBDB, of course! > > All this depends on you giving your BBDB records an "org-tag" field, > which is pretty much the only file-format buy-in that Gnorb asks of you > (I hope it remains the only one). Basic question: how does one add such a tag? I'm a very very basic user of bbdb, in the sense that I only use it to expand addresses when writing messages. I know it can do much more, but I don't know how. > Roland Winkler just made changes to the BBDB codebase that will allow us > to store links to recently-received messages as an Xfield on each > record, and I think that will be awesome (I happily stole this idea from > org-contacts). It will also depend on people running the development > version of BBDB, which will mean it will have a userbase of about four > :) Such information would be useful, indeed. But you already provide a similar function with gnorb-bbdb-mail-search, don't you? > Sorry, this was a bit of a brain-dump. I think the issue of how people > use email is fascinating, though, and I plan to look at software like > Google Tasks or whatever, to collect some ideas. I'd love input from > anyone with opinions! I also find the topic very interesting. Thanks again for your work! Alan