[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sup-talk] sup-server



On Tue, Dec 8, 2009 at 1:56 PM, Rich Lane <rlane@club.cc.cmu.edu> wrote:
> I've pushed a branch sup-server to my github*. There's a lot to be done
> before this reaches feature parity with current Sup - for instance, the
> ncurses client doesn't work yet.
>
> *git://github.com/rlane/sup
>
> Current status:
>  - Server passes its (incomplete) test suite
>  - sup-cmd executable useful for simple interactions (each protocol
>   request exposed)
>  - ncurses client completely nonfunctional
>  - client/server/common source code split
>  - server implemented with Revactor - Ruby 1.9 only
>  - server stores messages (currently gzip'd mbox-ish)
>
> Protocol:
>  - Designed to avoid round-trip latencies
>  - BERT over tcp/unix
>  - thrift/etc could be supported in the future
>  - Requests (full docs in lib/sup/server/requests.rb):
>  - Query
>  - Count
>  - Label
>  - Add
>  - Stream
>  - Cancel
>  - Requests take query arguments instead of messages-ids (thanks to
>   Carl/notmuch for this idea)
>  - These requests should be sufficient to implement a working client. We
>   can add more in the future for optimizations (threading) or new
>   features (contacts).
>
> TODO:
>  - Expand test suite
>  - Modify sup-sync to send Add requests to the server
>  - Get the ncurses UI working
>  - Remove dead code
>  - Protocol versioning/negotiation/authentication/extensions
>  - Performance optimizations
>  - Add web/android/iphone/vim/irb/etc UIs
>  - Actorize the index/storage interfaces
>  - Shard index/storage
>  - Distribute indexing/parsing/compression/etc across worker processes
>  - Replication?
>
> The test suite is an important part of this effort. With the amount of
> code churn that's going on it just takes too much work to manually
> verify that every (affected) feature works before committing. If it's
> not covered by a test, I don't care if it's broken.
>
> For now, I'll plan on adding any new UIs to the main repo. When the
> protocol stabilizes we can think about splitting them out.
>
> I would be very interested if someone could spin up a web UI quickly.
> I'd like to start using this branch for my own mail and it will take a
> significant amount of time before I can beat the ncurses UI into shape.
>
> For some background on sup-server please read William's various blog
> posts on the subject. In its current form this project makes some
> compromises for the sake of efficiency and simplicity. I would be
> interested in making the protocol more generic while preserving those
> attributes, so if you have thoughts on this send them to the list.
>
> Some questions from the IRC channel:
>  - Do clients need threading logic?
>   Yes. There is no thread abstraction in the protocol, so clients will
>   need to understand email threading. A planned optimization is to
>   expose the index thread-id field to essentially collapse the thread
>   for client-threading purposes.
>
>  - Will a client connecting to sup-server feel snappier than sup over
>   ssh?
>   Yes (given a well-written client). The protocol is designed to
>   minimize the effects of network latency, but it will take a good
>   amount of work in the client to fully take advantage of this.
>
>  - Do clients need to know how to parse email?
>   Yes. Right now clients who want to display a message need to query for
>   the raw message text. If we can come up with a simple, comprehensive
>   model of an email message that clients would rather digest than the
>   raw text I'd be willing to add it as an optional extension to the
>   protocol.
> _______________________________________________
> sup-talk mailing list
> sup-talk@rubyforge.org
> http://rubyforge.org/mailman/listinfo/sup-talk
>

While I'm as usual very impressed that Rich has done so much work, and
very happy with the ideas proposed in the STS posts, I can't help but
wonder,

"Why does this sound like implementing a Sup ui to Wave, but not using
Wave?" (Actually mentioned in Rethinking Sup pt. 2)

This really seems like it's in direct competition with the Wave
system... but Wave has a lot more support. And yes, Wave doesn't have
e-mail federation at the moment, but I think they plan to do that in
the future. So yes, I like the idea of a Sup server, I like being able
to access my (sup) mail from multiple computers, I like the idea of
having multiple UIs to the Sup Service... but I think that in the long
run, I'd feel just as good about a couple good open source UIs to
Google's Wave instead.

Honestly, I hope I'm wrong since there seems to be a lot of work done
here. Also, I have a Wave account and some invites, so if you want to
do some research and get a preview account, I can give some out.

Cheers,

-Andrei Thorp
_______________________________________________
sup-talk mailing list
sup-talk@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-talk