Thomas, Great comments. I think a standard client server protocol would be advantageous. However, I am not certain that a protocol buffer backed, websocket protocol is something that I would see having wide spread appeal across various client implementations. If I was making a native iPhone or android app I would not be thrilled with that "standard".
However, I am not sure what the right answer is since the different clients might want different things. Hence thinking of a plugin architecture. I am not sure though. A potential solution would be to support both web sockets and TCP sockets, but have the messaging protocol common between the two. Just thoughts at this point. -Michael On Jun 10, 2012, at 3:32 PM, Thomas Wrobel <[email protected]> wrote: > Is there any real need for different c/s protocols per client? > > Speaking as someone that would love to make a client, I assumed it > would be something that could connect to any Wave server. Much like > IMAP for email these days. Idealy a user should have the choice to use > any client with any server. > > If every client makers has to get there hands dirty in server code > making bespoke plugins wont it all become a mess? > > A think a standard c/s protocol - in any form - is better. > [/2 cents] > > That all said any moves to separate the client and server code out so > one can be worked on without the other I massively approve of :) > > On 9 June 2012 21:49, Michael MacFadden <[email protected]> wrote: >> Ali, >> >> I agree with what you are saying. right now the terms client and server are >> a bit confusing, because the "client" has both server side and client side >> components. Right now the "Server" contains the true server side stuff as >> well as the server side components of the web client. Right now the client >> server protocol is what goes between the GWT client and the "server-side" >> part of the web client. Unfortunately there is not a clear separate of the >> server side client components and the "real" server side stuff. >> >> I have always viewed the client server protocol is really something that we >> really don't need to "standardize" because it should really just be an >> internal implementation detail specific to the undercurrent GWT UI. A real >> client server protocol then would be needed. You mention the data API. >> Right now I am not sure that is mature enough. I think we need to look at >> that. What would a real client agonistic protocol look like. Would it be a >> Web Service? TCP Socket? >> >> One potential avenue would be to have a pluggable transport mechanism inside >> the true server, where you could deploy a plugin to communicate with an >> arbitrary client. That way WE would not have to define a client server >> protocol. We would just mature the an API that allows client plugin modules >> to hook in to the WaveBus, and define a plugin API. Then you could add >> arbitrary client handlers to the server. The first of which would be our >> GWT client. >> >> ~Michael >> >> >> On Jun 9, 2012, at 12:12 PM, Ali Lown wrote: >> >>> Ultimately, I would be interested in it being possible to create a new >>> server/client for WIAB, without being required to rework the entire >>> codebase (e.g. keep the exisiting GWT client, but have a new wave >>> server)t. >>> >>> So I see a distinction needing to be made in the server code between: >>> 1) 'WIAB server' -> responsible for delta transformation, federation, >>> persistence, robots, search implementation, data API >>> 2) 'CLIENT server' -> responsible for presenting the client GUI over HTTP. >>> with the client server responsible for receiving WebSocket traffic >>> (since that is a client implementation detail), and relaying the >>> actual information to the WIAB server somehow (is the data API >>> powerful enough to support a full client?) and with these 2 servers >>> being completely seperate running processes. >>> >>> Is this what others were thinking with a client-server split? >>> >>> Currently the entire codebase is shared code (as far as I understand), >>> with the 'server' (both 'CLIENT' and 'WIAB') existing mostly around >>> src/org/waveprotocol/box/server/. >>> The GWT interface for the client exists mostly around >>> src/org/waveprotocol/box/webclient and the rest of it would bundle >>> into a shared library. >>> >>> Ali >>> >>> On 9 June 2012 19:31, Michael MacFadden <[email protected]> wrote: >>>> All, >>>> >>>> Paulo and I have made a lot of progress on the maven build. We will be >>>> woking on getting the unit test working over the next week or so. >>>> >>>> One of the main goals is to separate the client code and the server code. >>>> Beyond that you would typically separate the modules based on either >>>> logical groupings of code our on how others might consume the code. To >>>> that end I have two questions. >>>> >>>> 1) Does any one have good insight in to what is client code, what is >>>> server code and what is shared? >>>> >>>> 2) What modules would be see being useful (wave-api?, robot-api? >>>> client-server protocol stuff?)? >>>> >>>> Thanks. >>
