[sldev] [PROTOCOL] Protocol Documentation

Iridium Linden iridium at lindenlab.com
Tue Oct 2 18:05:15 PDT 2007


Donovan, yeah, we really do re: public love machine.

Donovan Linden wrote:
> In the long run, we want to implement some sort of runtime service 
> description query ability, perhaps invoked using the OPTIONS verb. I 
> believe zero talked about this in one of his office hours quite a 
> while back, but we haven't started on this yet. I do have some code 
> that I wrote with this use case in mind in the mulib/shaped.py module, 
> but it's not really being used by anything yet. I'm not sure how this 
> approach would be combined with one-shot capabilities; maybe they can 
> notice OPTIONS and not expire.
>
> In both the short term and the long term, we definitely should be 
> documenting the API of the client-accessible capabilities on the 
> public wiki. As we go forward with the architecture working group, 
> perhaps these API wiki pages could even be created before any of the 
> code was written.
>
> As for the markup to describe the capabilities in the wiki in the near 
> term, I think plain old LLSD should be fine. Something like:
>
> <map>
>     <key>foo</key>
>     <string />
>     <key>bar</key>
>     <uuid />
> </map>
>
> Thanks for pushing on this! We totally need a public love machine.
>
> Donovan
>
> On Oct 2, 2007, at 3:32 PM, John Hurliman wrote:
>
>> I merged my own documentation skeleton page on the wiki with the 
>> "Protocol" page at http://wiki.secondlife.com/wiki/Protocol, this is 
>> still the official home of all protocol documentation for Second Life 
>> and I assume will be the closest thing there is to an official 
>> specification of "How Second Life Works".
>>
>> Community driven documentation is going to be more important then it 
>> was previously due to the way the protocol is changing. Traditionally 
>> we had everything going over UDP and the format of things was 
>> documented by a file called message_template.msg. This allowed 
>> clients to either build packets and verify them at runtime (such as 
>> the SL viewer) or pre-generate code to represent packets in memory 
>> (such as libsecondlife). With the new capabilities system we have no 
>> message_template.msg, and there is no way to pre-generate code to 
>> represent message structures or verify the correctness of code at 
>> runtime. Right now you can't even query what capabilities are 
>> available to clients although this may change in the future.
>>
>> The message_template party was fun while it lasted but we are going 
>> to have to go back to the traditional method of development, meaning 
>> good documentation that unit tests can be built from and third party 
>> implementations can work off of, since runtime or compile time 
>> verification is no longer possible. Linden Lab internally uses the 
>> viewer and simulator source code for documentation (I'm told), so if 
>> we want a specification the community will be responsible for 
>> generating it. Some open questions:
>>
>> * Is the current structure of the page a good breakdown of the 
>> different sections of the protocol? Should things be split up or 
>> consolidated in any places?
>> * Since all of the capabilities will need to be described here we 
>> need a standard markup to document them. Should the LLSD notation 
>> format be used, or some other pseudo-markup?
>>
>>
>> For some background, this was discussed at Zero Linden's office hour 
>> today (Zero was out but other Lindens filled in). The conversation 
>> went something like this:
>>
>> LL: the capabilities API may not necessarily be the same as the old 
>> message template
>> Me: so we need to hand-write new processing code for each capability, 
>> unlike the old udp system
>> Others: wouldn't a server-side changelog fix this?
>> Me: if i understand right, things are transitioning from a system 
>> where we have a file format detailing the structure of messages, to a 
>> system where there is no documentation, no way of the client knowing 
>> what it is supposed to handle or not, and no idea what means what 
>> once you figure out the capabilities you are supposed to handle
>> LL: we can't log every change, it would be cluttered and irrelevant
>> LL: the source code is very clear on how all of this works
>> Others: the viewer isn't documentation, it's GPL licensed source code 
>> that is neither a preferred medium for documenting a protocol nor a 
>> license-compatible method of providing docs
>> LL: it is very clear documentation
>> Me: so we can look through the SL viewer source code to learn how 
>> things work and reimplement it in BSD licensed libsecondlife correct?
>> [13:31]  Rob Linden: Eddy, as long as you don't steal code, yes
>> LL: so this whole discussion about documenting the capability API is 
>> just so people can steal code?
>> Others: no, we don't want your source code. please keep it
>> Me: we would like documentation to write independent implementations 
>> though
>> Others: independent implementations... part of that whole 
>> architecture working group thing
>>
>>
>> John Hurliman
>> _______________________________________________
>> Click here to unsubscribe or manage your list subscription:
>> /index.html
>
> _______________________________________________
> Click here to unsubscribe or manage your list subscription:
> /index.html


More information about the SLDev mailing list