unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: David Bremner <david@tethera.net>
To: notmuch@notmuchmail.org
Subject: RFC: output json from notmuch?
Date: Sun, 13 Dec 2009 19:21:02 -0400	[thread overview]
Message-ID: <87iqcapijl.fsf@pivot.cs.unb.ca> (raw)


It would be nice to have more structured output from notmuch-show.  I
decided to investigate sexp (i.e. lisp) and json output.

Sexp has the obvious advantage that it is trivially parsable in emacs;
for other clients it is a little more work.  I started looking at
sfsexp (http://sexpr.sourceforge.net).  It looks ok; I got a little
irritated that it doesn't support cons cells (i.e. dotted pairs). 

Then I found that json parsing is provided by the library json.el
shipped with emacs23, so I decided to play with json a bit.

I settled on the jansson library (http://www.digip.org/jansson/)
because it seemed to have a sane api and documentation, but there are
many choices.  I'll follow up with the actual patch, but the idea is to
replace the printfs in show_message with calls to set (key,value) pairs
in a json object, and output it at the end.

This is not in any sense a production patch (e.g. it needs to actually
return a thread object rather than just dumping messages out; nothing at
all has been done on the emacs side), but it gives you some idea of
would be involved.

So, do people think this is a reasonable idea to persue?

    1) it adds a dependency, but not a heavy one. jansson is about 300k
    installed on debian/i386

    2) It might mean that people using emacs22 might have to score
    json.el from somewhere; I'm not sure.

    3) There is some increase in memory use since the whole thread has
    to be built as a json object before being output.

    4) Of course jansson is doing it's own reference counting memory
    managment, and not using talloc. But we already have glib...

Of course we won't really know if it is good idea until we try it, but
if it already looks like a no-go, I'll stop.

Attachments:  json output of a message from carl, and the equivalent
sexpr as parsed by json.el.  




-- 
David Bremner                                  Professor, UNB Computer Science
bremner@unb.ca			           
http://www.cs.unb.ca/~bremner               Cross Appointment, UNB Mathematics
http://www.mitacs.ca/			   MITACS Atlantic Scientific Director

             reply	other threads:[~2009-12-13 23:21 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-13 23:21 David Bremner [this message]
2009-12-13 23:26 ` RFC: output json from notmuch? David Bremner
2009-12-14  0:05   ` Scott Robinson
2009-12-14  0:42     ` David Bremner
2009-12-14 22:41       ` Carl Worth
2009-12-14 22:34     ` Carl Worth
2009-12-14  0:07 ` Marten Veldthuis
2009-12-14 22:30 ` Carl Worth
2009-12-14 23:10   ` David Bremner
2009-12-18  5:33     ` [PATCH] JSON output for notmuch-search and notmuch-show Scott Robinson
2009-12-18 12:59       ` [PATCH] Add an "--output=(json|text|)" command-line option to both " david
2009-12-18 17:33         ` Carl Worth
2009-12-18 18:45           ` Scott Robinson
2009-12-19  0:36           ` David Bremner
2009-12-23  5:58             ` Carl Worth
2009-12-19 14:55           ` Prototype of --show option to control what is shown david
2009-12-19 14:55             ` [PATCH 1/3] rename option to select output format to --format from --output david
2009-12-19 14:55               ` [PATCH 2/3] notmuch-show.c: make calls to format functions conditional david
2009-12-19 14:55                 ` [PATCH 3/3] notmuch-show.c: prototype tabular output format, with output control david
2010-03-09 19:51                   ` Carl Worth
2010-03-09 20:19                     ` David Bremner
2010-03-10  9:25                       ` Carl Worth
2010-03-10 15:34                         ` David Bremner
2009-12-20 20:31               ` [PATCH] notmuch-query.el: new file to support access to the notmuch database david
2009-12-21 17:21                 ` Carl Worth
2009-12-21 18:01                   ` David Bremner
2010-02-24 12:52                 ` [PATCH v2] " david
2010-04-05 16:46                   ` [PATCH v3] " david
2010-04-05 16:59                     ` David Edmondson
2010-04-05 18:13                     ` Carl Worth
2010-02-23 19:56         ` [PATCH] Add an "--output=(json|text|)" command-line option to both notmuch-search and notmuch-show Carl Worth
2010-02-23 21:00           ` JSON output as default [was: Re: [PATCH] Add an "--output=(json|text|)" command-line option...] Jameson Rollins
2010-02-23 23:35             ` Carl Worth
2010-02-24 13:54               ` Sebastian Spaeth
2009-12-18 17:31       ` [PATCH] JSON output for notmuch-search and notmuch-show Carl Worth
2009-12-18 18:47         ` Scott Robinson
2009-12-23  5:48           ` Carl Worth
2009-12-31  8:54             ` Scott Robinson
2009-12-31 12:49               ` David Bremner
2009-12-25 12:53           ` David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87iqcapijl.fsf@pivot.cs.unb.ca \
    --to=david@tethera.net \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).