Dave - Thanks for your reply, thats incredibly usefull and has cleared
up quite a few points for me - especially the usage of the word
"blip".

I know its kinda an impossible question to answer; but any idea on the
timescale of the simpler c/s protocol ?

Not much point doing our own implementation if theres a more
simple/newer c/s  going to replace it within weeks. If, however, its 6
months away, then clearly its better for us  to learn how to make our
own and update as the need arises.

Thanks again,
Thomas


On 2 February 2011 15:49, David Hearnden <hearn...@google.com> wrote:
> Hi Thomas,
>
> On Wed, Feb 2, 2011 at 10:53 PM, Thomas Wrobel <darkfl...@gmail.com> wrote:
>
>> I got a few basic questions about the blip creation process.
>> I've been working on a Android client with a group and so far we have
>> been using a modified version of the old FedOne code (specifically we
>> made "fedone-android-client-api-0.2.jar" by porting
>> "fedone-client-console-0.2.jar") so I haven't had to look too much
>> into the nitty-gritty of the communication myself. We managed to get
>> read/write working crudely on the old server (like, 5 months old
>> version)
>>
>> Now with the changes made with WiaB, like websocket based
>> communication, I think I need to understand the c/s protocol better in
>> order to make our client compatible with the latest version of the
>> server, so hence a few questions;
>>
>> 1. Will WiaB going forward, be focusing on just websocket
>> communication from the client? As I understand it, the webclient at
>> the moment uses either websockets or socket IO....is it likely that
>> both of these will be maintained, or is Socket IO just a stop-gap till
>> webbrowsers support websockets more universally?
>>
>
> socket.io's interface is the same as websocket, and if websocket is present,
> it just uses that, so using socket.io on websocket-enabled browsers should
> have virtually no complexity or runtime cost.  If/when all the browsers that
> WIAB cares about support native websockets, then removing socket.io and
> using raw websockets directly would be almost a no-op due to the similarity
> in their API, so I don't think it's a maintenance issue.
>
>
>
>> 2. When a client creates a new blip, how is its ID handled.  Does the
>> client create a temp ID that is then updated by the server sending
>> back a "real" ID? Or does the server tell the client what is a new
>> free ID in advance of blip creation?
>>
>
> The word 'blip' is historically overloaded unfortunately, and it depends on
> which level it applies.
>
> At the core, a wavelet is a collection of named documents (formerly called
> blips, but not anymore).  There is no creation of documents - all documents
> implicitly exist in the empty state.  As such, clients do not create
> documents, they just start mutating them.  OT resolves collisions with
> concurrent mutations.
>
> On top of the core wavelet model is a conversation model, which is
> structured units of conversation (threads and blips, the latter being the
> new meaning of 'blip').  The structure of the conversation is stored in a
> document in the wavelet (that document is named 'conversation' in the
> wavelet, and is called the manifest document).  When a client creates a new
> conversational unit (a blip), it summons an ID for it, adds an entry into
> the manifest referring to the new blip, and then starts mutating the blip's
> document.  All this conversation stuff is thought of as an application level
> model that sits on top of the core wave platform (which is just disconnected
> documents in a wavelet, with no relationships between them).  The client's
> ID generation scheme for blips is seeded by a unique id given to the client
> on startup.  Currently, the generation scheme is not cryptographically
> strong, in that subsequent IDs are predictable.  A malicious agent could of
> course predict an active client's next blip ID, and cause problems for them.
>  However, the seeds should be cryptographically strong, so that ID
> collisions from well-behaved clients are very unlikely.  Making a client's
> ID sequence unpredictable should be trivial (but is a piece of work that has
> not been done).
>
>
>> 3. Whats currently good place to start with a c/s android port? We
>> managed to port fedone-client-console-0.2.jar before (more or less),
>> is there a similar place we should start from thats more upto date?
>> Or do we have to implement a protocol from scratch?
>> We are basically interested in connection, and reading/write/edit
>> blips - we aren't concerned with widgets or any layout related code.
>>
>
> You'll need to use the conversation model, in order to have a consistent
> interpretation and mutation contract with the conversation manifest.  Have a
> look at wave/model/conversation.  The API (Conversation) is pretty simple,
> and the implementation (WaveBasedConversationView) just needs a wave object.
>  The conversation model does not prescribe any UI - it's disconnected from
> widgets or layout - so hopefully that's a good place for you to start!
>
> But for that you'll need a working core wave platform.  We're in the process
> of rolling out a simpler and more flexible c/s protocol (
> http://www.waveprotocol.org/protocol/design-proposals/clientserver-protocol),
> so I'm not sure what the best answer is for you.
>
> -Dave
>

Reply via email to