From: William Morgan <wmorgan-sup@masanjin.net>
To: sup-talk@rubyforge.org, sup-devel@rubyforge.org
Subject: [sup-devel] sup-server revisited
Date: Mon, 21 Feb 2011 21:02:28 +0000 [thread overview]
Message-ID: <1298320404-sup-5972@masanjin.net> (raw)
Hello Sup fans,
As I alluded to in an earlier email to sup-devel, I have been working recently
on the ancient goal of splitting Sup functionality out into separate client and
server programs. This will have many advantages; in particular it will remove
email lock-in by making it possible to have non-Sup clients interact with Sup.
I've tried various approaches to this goal at various times, without much
success. But with the release of Whistlepig, I have been making a lot of
progress in a short amount of time.
I wanted to lay out my general plan in this email, so that everyone can follow
along and try things out if they feel inclined.
I'm focusing on the server component first. My specific goals are:
- Encapsulate all storage and indexing logic.
- Formalize the notion of labels and state, and the relationship between them,
messages, and threads. Currently these relationships are fuzzy in Sup, and
things suffer for it.
- Precompute threads, so that search requires only moderate effort, instead of
the large effort it does now. This will make search much, much faster, at the
expense of a little more effort at index time.
- Allow concurrent access from multiple clients.
- Provide something that is transparent and easy to modify without having to go
through an ncurses client.
You can find the work in progress here: https://github.com/wmorgan/heliotrope
Currently it is not actually a server, but accomplishes many of the goals
above. Run bin/email-indexer and then bin/email-searcher to play around with
a simple preview of things to come. Stay tuned for more on this.
Once the server is in a reasonable state, my goals for the curses client reboot
are:
- Move to an event-based model rather than the polling + many threads +
observable model we have now. Dump all events into one big queue,
and block on it.
- Have one, and only one, non-main thread, which it to communicate with the
server. No more mutex insanity.
- Work from the ground up with Ruby 1.9, which means finding the many sources
of encoding errors and punishing them.
- Require the console and ncurses gems so that i18n works out of the box.
- Borrow as much code as possible from the current Sup, because I sure as shit
don't want to have to rewrite it all.
I haven't started on this at all.
So stay tuned, and check out heliotrope if you are so inclined.
--
William <wmorgan-sup@masanjin.net>
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
next reply other threads:[~2011-02-21 21:39 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-21 21:02 William Morgan [this message]
2011-02-22 13:46 ` Mark Alexander
2011-02-22 17:55 ` William Morgan
2011-02-22 18:44 ` Tero Tilus
2011-02-22 19:00 ` William Morgan
2011-02-22 14:09 ` Nicolas Pouillard
2011-02-22 20:17 ` Tero Tilus
2011-02-22 21:29 ` William Morgan
2011-02-23 9:48 ` Nicolas Pouillard
2011-02-23 18:43 ` William Morgan
2011-02-23 18:53 ` Alvaro Herrera
2011-02-23 21:08 ` William Morgan
2011-02-23 21:30 ` Alvaro Herrera
2011-03-03 19:38 ` Sascha Silbe
2011-02-26 19:15 ` Hamish
2011-02-26 22:04 ` William Morgan
2011-02-26 23:15 ` William Morgan
2011-03-01 19:38 ` Hamish
2011-03-02 12:43 ` Gregor Hoffleit
2011-03-02 18:51 ` William Morgan
2011-03-03 17:32 ` Gregor Hoffleit
2011-03-03 19:17 ` William Morgan
2011-04-15 10:46 ` Gregor Hoffleit
2011-04-15 17:16 ` William Morgan
2011-04-15 20:53 ` Gregor Hoffleit
2011-04-17 16:58 ` William Morgan
2011-04-17 17:55 ` William Morgan
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1298320404-sup-5972@masanjin.net \
--to=wmorgan-sup@masanjin.net \
--cc=sup-devel@rubyforge.org \
--cc=sup-talk@rubyforge.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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox