Hey all, We've been struggling with the issue of RPC forward/backward incompatibility for a little while and I thought I'd bring it to the list for discussion.
As some of you know, one of our use-cases for GWT is embedding the compiled JS in a Firefox extension. Unfortunately, the lifetime of the code in the extension cannot be easily tied to the lifetime of the code on the server. The consequence of this is that when our server- side code is updated, the client-side code starts throwing IncompatibleRemoteService exceptions until the user updates. We also see this issue briefly during our website code updates - our load- balanced servers are incrementally updated with background code which means that for a brief period, some active users get RPC exceptions. There's a number of ways we can work around it for the extension (forcing the user to update is the easiest), but this is somewhat inconvenient for our users. The ideal solution would be offering a forward/backward compatible RPC protocol that would allow some flexibility in versioning between client and server. I'd like to be able to push out a server that is backward-compatible aware and have it able to serve downlevel requests for some period of time. For our website, the period of time would be a few minutes while all the backends update and the static code is pushed out. For our extension, this period could be on the order of days or even a week. One of the skunkworks projects I've been working for a while is a GWT port of Thrift (a versioned protocol similar to Protobuf), basically a direct eval RPC library that would let us use the versioned protocol to replace our RPC code. One of the big downsides is that we'd lose a lot of the niceties of GWT RPC, mostly smart objects and polymorphism. It's getting close to completion, but it's been a while since I've last had a chance to work on it and the new deRPC branch has shown up. Is the concept of versioning something that belongs in the core GWT RPC code, or is this something better suited for an external library? Thanks, Matt. --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---