Hacker News new | past | comments | ask | show | jobs | submit login

Regarding heliotrope: wmorgan has left the field a long time ago to our great despair. He did start heliotrope, which I hacked a bit because it looked cool. I even started a heliotrope-to-imap bridge [0]. After a while the community decided to create a common repository to host them, at which time I abandoned heliotrope because its client was still too buggy and sup was already working very well, and I needed a working MUA.

So the current state is: heliotrope kind of works, the client a little less, we are now fully working on sup. If you want to hack on heliotrope though, feel free to ask -- but there will most likely be no code from me.

Sup, on the other hand, works like a charm ! Visit us at supmua.org !

[0] https://github.com/rakoo/imaptrope




I think I'd probably gravitate more towards notmuch and friends, if I were to use a (in notmuch's case, almost) "ready to go" mua. However, I've yet to find a mua that's simple enough, and also does what I want (Steve Kemp's lumail is another interesting project[1]).

So far, the back of my envelope contains clojure, or possibly something else[2] that is pleasant to code in and feasible to both get to run (well) on Android and in the console, possibly web and/or desktop (GUI, that is -- not a great priority for me, but "advanced" features such as displaying image attachments in-line could be nice -- and is a natural fit for Android anyway), and a sync (possibly push) solution.

It's in the sync part, that heliotrope and jmap come in -- mostly as an alternative to either making my own, or just trying to shoe-horn everything into couchdb/puchdb etc.

Personally I don't really need IMAP (as I control both the server and the client), and I'm unsure if it's worth the effort; maybe with some clever hacks like sticking some meta-data in "special" mail-folders...

Other than that, I suppose caldav/carddav can handle contacts (or perhaps make an embeddable ldap-thing... but like imap it sounds like overkill...) -- the only remaining problem is quick search, which means good full-text search, which means multi-lingual stemming etc... mostly I'm thinking the server should do the indexing, and the client should be able to sync both index and content. Tricky part is making it incremental, so I can keep X GB email with full-text search on the server, and not need a significant % of X GB space on the Android device to get off-line access to the last month (or whatever) worth of email along with good search over that subsection...

[1] http://lumail.org/ [2] So far my short-list has clojure (pleasant, start-up time and possibly resources seem to be a (real) issue on Android), kawa scheme (try to keep the interesting stuff in somewhat "standard" scheme, either use kawa scheme everywhere, or try to stradle two scheme implementations...) and kotlin (it's a better java, but not sure if I'd call it pleasant).


You must be aware that notmuch is only the search backend, and for a full MUA you need frontends. I believe the official one is the Emacs one, so it should be fairly usable. There's also a web one [0] you should be able to play with.

Another contender in the space (label- and search-centric) is mu and its ui, mu4e [1]. Something else to have in mind.

Now if you want something that works on desktop and mobile, something worth a look would be using SQLite and its built-in full-text search... see how far you can go with that. SQLite is available pretty much everywhere, Android even allows full-text search. Now what you have to do is synchronize SQLite dbs. It "shouldn't" be too hard to remove old emails from the db so you can keep X MB worth of it. You can even shoehorn it into couchbase-lite [3][4] so that sync is automagically taken care of.

JMAP looks cool (definitely more interesting to implement than IMAP) but it seems to be more a query API than a sync API, although there are facilities to "get changes since last time" (a HUGE improvement from IMAP as deployed everywhere). OTOH if you can shoehorn it into couchbase-lite, you can use a generic sync protocol that can be used for other things too (caldav/carddav).

Heck, you've piqued my curiosity, I see something doable here. I'd love to hear more. I might even hack something just for fun.

[0] https://bitbucket.org/wuzzeb/notmuch-web

[1] http://www.djcbsoftware.nl/code/mu/mu4e.html

[2] https://github.com/couchbase/couchbase-lite-android

[3] https://github.com/couchbase/couchbase-lite-ios


Hm, we're too deep it seems. So replying to myself.

> You must be aware that notmuch is only the search backend, and for a full MUA you need frontends.

Absolutely. I tried to imply that with my wry parenthesis; but it's absolutely worth pointing out clearly to unwary readers. In no way is it fair to either notmuch or sup to compare the two as equals.

I'd probably lean towards mutt-kz[mk] for an out-of-box "notmuch" mua (but... mutt. Meh ;-) There's also "alot"[a].

> Another contender in the space (label- and search-centric) is mu and its ui, mu4e [1]. Something else to have in mind.

Right. See also:

http://dev.gentoo.org/~tomka/mail.html

Recently discussed on hn:

https://news.ycombinator.com/item?id=8519643

> Now if you want something that works on desktop and mobile, something worth a look would be using SQLite and its built-in full-text search... see how far you can go with that. SQLite is available pretty much everywhere, Android even allows full-text search. Now what you have to do is synchronize SQLite dbs. It "shouldn't" be too hard to remove old emails from the db so you can keep X MB worth of it. You can even shoehorn it into couchbase-lite [3][4] so that sync is automagically taken care of.

I've considered sqlite for some of these reasons. But couchbase-lite != sqlite, right? (Or does it use sqlite in a meaningful way; ie: can/should one use sql to interface with the stored data?). Btw, looks like you're off-by-one, in your references ;-)

If using sqlite, there are a couple of schemas one might use for inspiration, such as dbmail:

http://dbmail.org/dokuwiki/lib/exe/fetch.php/dbmail-er-model...

Or archiveopteryx:

http://archiveopteryx.org/db/schema

The main sticking point, is do we really want(need) to re-index everything everywhere, how do we transparently do search local-first, while supporting hits from the server along with fetching hits/mails that are missing locally (what k9 calls "cloud search") - how do we consolidate/sync data (the two hard things in computer science is caching and naming things...).

I'm not entirely convinced sqlite+built-in full text search is the best approach (I envision a useful search across some gbs of mailing list threads -- not convinced about the ranking -- but I could very well be the victim of premature optimization. And I'm a little wary of abandoning maildir for storage (on the server) -- but that might be useful anyway.

> JMAP looks cool (definitely more interesting to implement than IMAP) but it seems to be more a query API than a sync API, although there are facilities to "get changes since last time" (a HUGE improvement from IMAP as deployed everywhere).

Yes, that's pretty much what I gathered from the heliotrope story, that syncing was a bit of a mess.

> OTOH if you can shoehorn it into couchbase-lite, you can use a generic sync protocol that can be used for other things too (caldav/carddav).

Exactly. All the hard work done! For free! But seriously, couchdb was born from the ashes of lotus notes, and at least in spirit it was made for this kind of stuff... so couchdb sync, and some kind of half-assed search might be the way to go (on the server, elastic-search would probably work fine... not sure about on something like Android).

> Heck, you've piqued my curiosity, I see something doable here. I'd love to hear more. I might even hack something just for fun.

Great :-) If you do, please feel free to drop me an email (see profile).

[mk] https://github.com/karelzak/mutt-kz [a] https://github.com/pazz/alot




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: