The rationale for using indexes instead of names is that (1) the JSON
format is just a protobuffer serialization, and (2) protobuffers
specify that index numbers, not key names, are constant.

I agree that the key names are more readable, and would prefer to use
them myself, but consensus here seems to be that using key names in
protobuffer-based messages is Unwise™.

(In other words: if you feel very strongly about this, make more noise. <grin>)

J.D.


On Thu, May 13, 2010 at 8:24 AM, antwatkins <[email protected]> wrote:
> I like the update to make the naming convention consistent, however, I
> am not sure about using index values instead of key names.  I
> understand that it will make the messages smaller and parsing slightly
> faster, but I think this is counter to one of the stated goals of this
> push which is
>
> "Hopefully this new transport will be easier to work with for client
> authors working in non-Java languages."
>
> From a high-level view I think developers comfortable binding this
> closely to a Protobuf object may be better suited to just using the
> client/server protocol based on ProtoBufs.  I like the idea of a
> message protocol that is easy to understand by just looking at the
> format and I think it will relay better to external developers not as
> well versed with native Google tools.
>
> R,
>
> Anthony
>
> On May 12, 10:02 pm, Joseph Gentle <[email protected]> wrote:
>> Right - so change it to something like this then?
>>
>> // In waveclient-rpc.proto
>> message WebSocketRPCMessage {
>>   required uint32 version = 1;
>>   required uint64 sequence_number = 2;
>>   required string message_type = 3; // We wouldn't actually need this 
>> anymore...
>>
>>   // At least one of these must be set
>>   optional ProtocolOpenRequest open_request = 10;
>>   optional ProtocolWaveletUpdate wavelet_update = 11;
>>   optional ProtocolSubmitRequest submit_request = 12;
>>   optional ProtocolSubmitResponse submit_response = 13;
>>   // .... more added later?
>>
>> }
>>
>> ... And pretty printed, the JSON message looks like this:
>> {
>>  "1":0,
>>  "2":1,
>>  "3":"webserver.ProtocolOpenRequest",
>>  "10":
>>  {
>>    "1":"[email protected]",
>>    "2":indexwave!indexwave",
>>    "3":[""]
>>  }
>>
>> }
>>
>> Doing that trick with a series of optional message types can make
>> parsing faster than if you send the type as another string. (You can
>> be sure you'll always have parsed the key before the message, so you
>> know the message's type. That lets you read it directly without using
>> intermediate representations.)
>>
>> -Joseph
>>
>>
>>
>>
>>
>> On Thu, May 13, 2010 at 9:28 AM, J.D. Zamfirescu <[email protected]> wrote:
>> > Hey!
>>
>> > That would be great. In fact, what we want to do is further use the
>> > protobuf indexes instead of the key names. If you can pull this off on
>> > the client and server that would also be excellent.
>>
>> > And, yes, a version number bump would be great, and we are working on
>> > client-side websocket stuff but we need to do this anyway. :)
>>
>> > Thanks!
>>
>> > J.D.
>>
>> > On Wed, May 12, 2010 at 6:06 PM, Joseph Gentle <[email protected]> wrote:
>> >> There's a couple changes I'd like to make to the fedone websocket
>> >> message protocol:
>> >> - The JSON currently has inconsistent naming conventions
>> >> (sequenceNumber vs participant_id - see below)
>> >> - WebSocketChannel.MessageWrapper should embed the message as a JSON
>> >> object, not a JSON object encoded inside a string. (The latter is
>> >> sloppy to send and use).
>>
>> >> Currently messages look like this:
>> >> {
>> >>  "version":0,
>> >>  "sequenceNumber":1,
>> >>  "messageType":"waveserver.ProtocolOpenRequest",
>> >>  "messageJson": "{
>> >>    \"participant_id\": \"[email protected]\",\"wave_id\":
>> >> \"indexwave!indexwave\",\"wavelet_id_prefix\": [\"\"]}"
>> >> }
>>
>> >> ... I'd like to change it to this:
>> >> {
>> >>  "version":0,
>> >>  "sequence_number":1,
>> >>  "message_type":"webserver.ProtocolOpenRequest",
>> >>  "message":
>> >>  {
>> >>    "participant_id":"[email protected]",
>> >>    "wave_id":indexwave!indexwave",
>> >>    "wavelet_id_prefix":[""]
>> >>  }
>> >> }
>>
>> >> Questions:
>> >> - Should I just write & submit a patch? Who should I send it to?
>> >> - Should I bump the protocol version number for a change like this?
>> >> - How many people are effected by changes like this? (Are many people
>> >> working on client code using websockets?)
>>
>> >> Cheers
>> >> Joseph
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Wave Protocol" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group 
>> athttp://groups.google.com/group/wave-protocol?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Wave Protocol" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/wave-protocol?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups "Wave 
Protocol" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/wave-protocol?hl=en.

Reply via email to