User:Which Linden/Office Hours/2007 Oct 4

From Second Life Wiki
Jump to navigation Jump to search

Transcript of Which Linden's office hours:

[11:05] Which Linden: On the record though, I'm gonna post this transcript
[11:05] Which Linden: Though I haven't gotten around to last week's sorry
[11:05] Zha Ewry: Excellent
[11:05] Tao Takashi wonders if Which leaves his place at all ;-)
[11:05] Zha Ewry: Posed is good
[11:05] Saijanai Kuhn wonders if you would notice if he did/
[11:05] Morgaine Dinova: Population demographic is 50/50, so comments about cute girls are unappreciated. But yes, we are :-))))
[11:06] Gareth Ellison: running away from the crazy guy with the bunny Zha?
[11:06] Which Linden: Should I put a sign on that chair that says "if you are not a tiny, your sit animation will look weird"
[11:06] Zha Ewry: No looking for a none twichy sit
[11:06] Gareth Ellison: lol
[11:06] Gareth Ellison: Which - care to dive into business?
[11:06] Which Linden: Sure
[11:06] Saijanai Kuhn: but its the truth. Only Tao and the women were showing up for a while
[11:07] Which Linden: Last time, it was made clear to me that no one really understands what certified http is for
[11:07] Zha Ewry settles for her own sit
[11:07] Zha Ewry: Really?
[11:07] Saijanai Kuhn can't control the order of reendering on his machine...
[11:07] Zha Ewry: All it does ai make it easy to factor out some of the idempotancy
[11:08] Zha Ewry: Oh. Wait. How many people can follow that sentance?
[11:08] Which Linden: That is the idea, but I think you have to already be familiar with these types of systems to understand it from that angle
[11:08] Saijanai Kuhn: with or with out the extraneous "a"
[11:08] Morgaine Dinova: This is my first time here at Which's, so I will mainly listen. I'm not AFK
[11:08] Gareth Ellison: it factors out idempotency - i thought the idea was to get a guarenteed message delivery
[11:08] Gareth Ellison: to say "yes, this action DID happen"
[11:08] Gareth Ellison: i should listen more too
[11:08] Zha Ewry: What helps me.. to explain it to people.. is to pound out the question of how retry needs to happen in the face of flaky systems
[11:08] Which Linden: Yeah, it's both idempotency and guaranteed delivery
[11:09] Zha Ewry: They are, well, not quite duals of each other, but close
[11:09] Saijanai Kuhn: those aren't orthoganal ar they?
[11:09] Zha Ewry: afk
[11:09] Gareth Ellison: idempotency for traditionally non-idempotent operations like POST or DELETE?
[11:09] Which Linden: No, idempotency is a good prerequisite for guaranteed delivery
[11:10] Which Linden: Yeah, Gareth, though DELETE is traditionally idempotent
[11:10] Saijanai Kuhn is geting a dictionary to look up mono-sylabic words
[11:10] Gareth Ellison: it ain't idempotent if you successfully delete something and try to delete it again
[11:10] Gareth Ellison: but yeah - i get you
[11:10] Which Linden: Should be, it shuldn't delete something else the second time
[11:10] Which Linden: Though it may return a 410 the second time, but that's OK, it's still idempotent
[11:11] Gareth Ellison: i was trapped in client land sorry
[11:11] Gareth Ellison: go on - i'll shut up and listen
[11:11] Which Linden: Well, it might be helpful to look at the fancy diagram I made
[11:11] Tillie Ariantho: Photoshoot got cancelled.
[11:11] Which Linden: Hi tillie
[11:11] Tao Takashi: I think some real life example might help to explain things
[11:11] Which Linden: I should get it in-world
[11:12] Gareth Ellison: i'm with Tao
[11:12] Tao Takashi: esp. if some example requests are described there as well
[11:12] Gareth Ellison: upload it and stick it on a prim now Which ;)
[11:12] Which Linden: so I added some examples to http://wiki.secondlife.com/wiki/Certified_HTTP_Escrow
[11:12] Tao Takashi: get your HTML-on-a-prim beta out! :)
[11:12] Gareth Ellison: heh
[11:13] Tao Takashi: the beta prim! :)
[11:13] Which Linden: uploading
[11:13] Saijanai Kuhn wants svg on a prim and llSetSVG more than http
[11:13] Which Linden: man this is gonna look bad
[11:13] Tao Takashi: Sai: you can write that soon I thinnk
[11:13] Gareth Ellison: the escrow makes total sense
[11:13] Gareth Ellison: any use of cHTTP beyond escrow?
[11:14] Saijanai Kuhn doesn't understand how prim properties are sent to and processed by the client
[11:14] Which Linden: eh? not bad actually
[11:14] Gareth Ellison: Saiijanai: in the current system UDP packets
[11:14] Tao Takashi: Sai: for now it will be parcel media
[11:15] Saijanai Kuhn: otherwise he'd take a stab and Squirrel's build thing for particle effects
[11:15] Morgaine Dinova: Escrow is making less sense to me the more I look at REST. Escrow is stateful.
[11:15] Tao Takashi: if you talk about svgonaprim
[11:15] Which Linden: Yeah, escrow is an application
[11:15] Squirrel Wood: Yellow
[11:15] Morgaine Dinova: Hi Squirrel
[11:15] Gareth Ellison: Which: i'm curious mainly about non-escrow apps
[11:15] Zha Ewry: Escrow is a pattern of Idempornt service reqests
[11:15] Gareth Ellison: it seems that if escrow is the only real application then you might as well roll them both into one API
[11:16] Which Linden: Well they're two different aspects of something
[11:16] Zha Ewry: You *could* do it all the way as a series of REST stuff chained by new resource IDs, but I think that's grossly fragile in RL
[11:16] Tillie Ariantho: Okay, what is idempotent? I head this all day now. .P
[11:16] Tao Takashi: Failure point -1, very nice :)
[11:16] Tillie Ariantho: hear
[11:16] Which Linden: Idempotent = you can do it as many times as you like and it's the same as if you did it once
[11:16] Gareth Ellison: Tillie: wikipeida it
[11:16] Zha Ewry: Idempotent means, that you can inbvoke it rpeeatedly, and only get one effect on the rsoucr
[11:16] Tillie Ariantho: ah okay.
[11:17] Gareth Ellison: bah
[11:17] Zha Ewry: Which is one key ting c-http orovides
[11:17] Gareth Ellison: eww, tops
[11:17] Gareth Ellison: tyops
[11:17] Zha Ewry: *provides
[11:17] Squirrel Wood holds up a box of magnetic letters ^^
[11:17] Tillie Ariantho: That's like being stabbed then. You only die once, every further stabbing wont change anything. .P
[11:17] Which Linden: In the message id, right, because if you get the same id twice, you respond the same way you did the first time
[11:17] Zha Ewry: Since it persists the headers (with uniqueness keys) and the repsonse that was given
[11:18] Gareth Ellison: i hate out of order chat - ok, so no cHTTP applications besides escrow at this point - i've heard of the idea of applying it for assets and such?
[11:18] Zha Ewry: c-http can pass back the same resposne again and again, while only doing the operation once
[11:18] Morgaine Dinova: Gareth: my view is slightly different: if escrow is the only application, then it's a client in REST terms, and the escrow state can be passed around like a token, as I was saying to Zero before I read the REST thing.
[11:18] Which Linden: Well so the escrow is going to have to talk to a lot of other things, all over chttp
[11:18] Which Linden: Yeah, you might be right Morgaine, but then you *really* have to trust all the parties
[11:18] Zha Ewry: I would expect, 90% of the service style calls in the AWG's work to end up being on c-http
[11:18] Which Linden: Reall,y Zha?
[11:19] Zha Ewry: Anything where you want to change state
[11:19] Zha Ewry: So assets, lots of things we don't want to break in the face of unreliable
[11:19] Gareth Ellison: i would agree with Zha to an extent on that
[11:19] Which Linden: Well, how about sending an IM? That's sort of changing state
[11:19] Zha Ewry: Well
[11:19] Gareth Ellison: hmm, no persisted state
[11:20] Gareth Ellison: the only real state it changes is the viewer's window
[11:20] Which Linden: Agent presence is another example
[11:20] Zha Ewry: Two ways to look at that.. and I'd have to decide if I felt there was udnerling pesistent state. (Except if they are offline, when it lands on a persisten store)
[11:20] Tillie Ariantho: Many of the use cases might be pure information request only, no? think of the SLTube and such. No changes needed or even wanted.
[11:20] Zha Ewry: AAgent presecne.. igonoring that its incredibly fine grained.. ideally woudl be nice and stateful
[11:20] Gareth Ellison: agent presence is a great example
[11:21] Zha Ewry: The fine grained is tricky
[11:21] Which Linden: It's so ephemeral you kind of don't care if it's wrong for a little while
[11:21] Which Linden: it'll just get updated again shortly
[11:21] Zha Ewry: As.. you end up updating iths 3-space posion not just the coarse position
[11:21] Gareth Ellison: it's quite clear that there's 2 different basic classes of message types: ones that change state and stateless requests/messages
[11:21] Morgaine Dinova: Which: I don't think it's actually a trust issue: the container can be set immutable (and the escrow token within it) by the initiator of the escrow reduction, and the others just need to supply entries to the container ... those entries can always be validated later. And if the escrow token never returns ... what's where the next idempotent request starts it again.
[11:21] Gareth Ellison: i had a thought a while ago about splitting stuff up into only state change/content request/command
[11:21] Which Linden: Yup.
[11:21] Zha Ewry: I'd actually argue.. with some thoght.. that the right model for agent position.. is that the coarse gained changes (iie cross sim boudnary) is diempotent
[11:22] Zha Ewry: and the local motion.. is stateless and doesn't need to be done heavyweight
[11:22] Zha Ewry: Because it will change steadil.
[11:22] Gareth Ellison: the local motion needs state maintained but only in that local area (i'm avoiding the name sim for the new AWG stuff)
[11:22] Zha Ewry: Yep
[11:22] Which Linden: Region, perhaps
[11:22] Zha Ewry: I need to know you're in Beaumont
[11:23] Zha Ewry: But.. I don't need to konw yout at 34,56,178 every second
[11:23] Zha Ewry: if I'll find it out agin in 10 more seocnds
[11:23] Which Linden: So, to get to a concrete example, buying an object
[11:23] Which Linden: Everyone agrees this is very stateful
[11:23] Zha Ewry: In fact, I might even imagine. that location could be idemptent to getting you the capability for the Ave's current position
[11:24] Zha Ewry: and then you could get the stateless updates off that capability
[11:24] Gareth Ellison: buying an object == escrow :)
[11:24] Zha Ewry: Which scales pretty well
[11:24] Gareth Ellison: Zha: i only need to know your co-ordinates if i'm in the same region as you or i'm checking the map
[11:24] Zha Ewry: Right
[11:24] Zha Ewry: So. I hand you a capability
[11:24] Gareth Ellison: nice idea on the stateful cap seed
[11:24] Zha Ewry: You can subcribe to it , as you see fit
[11:24] Gareth Ellison: stream it with event polling stuff?
[11:25] Zha Ewry: (Mind you we don't have a notion of stream in the AWG yet)
[11:25] Zha Ewry: or subscription fully described
[11:25] Gareth Ellison: get that onto Brainstorming
[11:25] Zha Ewry: OKies
[11:25] Which Linden: Whoo, this is getting into some tricky pub/sub stuff. Totally you should bring that up with Zero or Donovan, that's their baby
[11:25] Gareth Ellison: really though you'd want to bring all the local region's objects/avatars into one stream for simplicity sake
[11:25] Morgaine Dinova: Yes please. I'm getting very lonely in Brainstorming
[11:25] Gareth Ellison: sorry
[11:26] Zha Ewry: I am heavily liking the pattern of "Get capability from the local current service which owns the resource" and talk ot it
[11:26] Zha Ewry: *to it
[11:26] Gareth Ellison: snap us back Which
[11:26] Which Linden: http://wiki.secondlife.com/wiki/Certified_HTTP_Escrow#Buy_Object
[11:26] Which Linden: The sequence here is, your viewer contacts your agent host, which is a Reliable Host(tm)
[11:27] Which Linden: The agent host sends a chttp POST to the escrow service describing the transaction
[11:27] Which Linden: thereby guaranteeing that if the viewer dies you still buy it
[11:27] Zha Ewry: (That sets up a mini workflow, doesn't it which?)
[11:27] Which Linden: sure does
[11:27] Gareth Ellison: go on
[11:27] Gareth Ellison: is that the whole flow?
[11:28] Which Linden: then the escrow goes and does a chttp message to your agent store, to get teh money
[11:28] Morgaine Dinova: 'Love the (tm)
[11:28] Which Linden: the return value of the message is a token of some sort that indicates that you no longer have that money
[11:28] Gareth Ellison: escrow transfers to you
[11:29] Which Linden: (i.e. a malicious buyer can't exploit a race condition to spend that money before the txn completes)
[11:29] Gareth Ellison: viewer sends something to the escrow with a token of some sort representing an L$ amount?
[11:29] Which Linden: well it's got to check your actual balance with the agent store
[11:29] Which Linden: one sec, gridmonkey pager going off
[11:29] Gareth Ellison: sure
[11:30] Which Linden: ok, sorta handled
[11:30] Which Linden: rolling restart causes a lot of false alarms
[11:30] Which Linden: so, at this point the escrow has your money
[11:31] Which Linden: it then goes to the sim where you want to buy the object, gets the object token from there
[11:31] Which Linden: the mechanics of this are.... not well defined at this point
[11:31] Zha Ewry: And its all in persistent bucketd, including the workflow, in acid form?
[11:31] Which Linden: yea
[11:31] Tao Takashi: I guess this will also be the pattern for an object MOVE then
[11:32] Which Linden: once the escrow has the object token and the money, it then goes into distribution
[11:32] Which Linden: it gives the money to the seller's agent store (via a chttp message)
[11:32] Zha Ewry: So.... you have to be able to prove to yourself, that if the escrow server dies and is recovered at any point, you don't lose state
[11:32] Which Linden: and it gives your agent host the object token
[11:32] Which Linden: right, we have to be able to prove that
[11:33] Gareth Ellison: a thought - will the individual escrow hosts be feasibly scaleable? i.e could you synch state on one host with a bunch of mirrors and load balance the read operations?
[11:33] Which Linden: more likely is network problems, it has to handle those the same way
[11:33] Which Linden: each escrow transaction is completely isloated from all the others, so it's reasonable to say we'd have as many hosts to service them as we need to scale
[11:33] Gareth Ellison: i'm thinking of reliability concerns on the backend DB
[11:33] Which Linden: it would also be reasonable to say escrow host == agent host
[11:33] Zha Ewry: loadbalance front end with transcation affinnity would be ideal there
[11:34] Tao Takashi: might be good explained in some sort of use case scenario with all sorts of alternative flows for the failure possibilities
[11:34] Gareth Ellison: if one escrow server has a horrible hardware failure which trashes the drive - what happens?
[11:34] Morgaine Dinova: I love the way Which is describing the implementation of escrow. It's nothing like the server-bound state approach in which participants are clients. The escrow token is actually going out as a parameter in stateless requests for particupation.
[11:34] Which Linden: um, we have to make sure that doesn't happen
[11:34] Which Linden: (to gareth)
[11:34] Gareth Ellison: like a kind of networked RAID
[11:34] Gareth Ellison: one frontend to at least 2 backends makes sense for that
[11:34] Which Linden: there are ways of doing invincible data for a single host
[11:35] Tao Takashi: somebody is working on e zeoraid :)
[11:35] Which Linden: exactly
[11:35] Gareth Ellison: 2 physically seperated backends and 1 frontend
[11:35] Tao Takashi: which is RAID for ZODB
[11:35] Gareth Ellison: well, there's multiple standard filesystem-layer ways to handle that i suppose
[11:36] Which Linden: or, realistically, a mysql server with a slave
[11:36] Tao Takashi: I still like the idea of doing it with the ZODB :)
[11:36] Gareth Ellison: MySQL slaves make sense
[11:36] Which Linden: just have to make sure they're synchronous
[11:36] Gareth Ellison: you DO use them for all our inventories on the current grid, right?
[11:36] Gareth Ellison: and seperate the slaves physically, right?
[11:36] Tao Takashi: I guess this is the idea in any such setup ;-)
[11:36] Gareth Ellison looks worryingly at his bunny
[11:37] Which Linden: I am not privy to those details of our current architecture, I'm afraid
[11:37] Tillie Ariantho: At work we have all database transactions written to another machine where they are added to a backup database. This way, if the main Db crashes, nothing gets lost.
[11:37] Which Linden: Yeah, that's the master/slave relationship there
[11:37] Gareth Ellison: backup is a sysadmin task
[11:37] Which Linden: Yeah! Have those other guys do it!
[11:37] Gareth Ellison: live mirroring is a protocol or application designer's task
[11:38] Tao Takashi: ok, problem solved ;-)
[11:38] Morgaine Dinova: It's all Zoro's fault. There, problem solved :-))))
[11:38] Morgaine Dinova: Zero too :-)
[11:38] Tao Takashi: Zorro!
[11:38] Zha Ewry: Cuckle.
[11:39] Which Linden: ha ha, I think in general that we've decided that it's easier to plan around multiple reliable hosts than to make the application layer do both the scaling and the replication at once
[11:39] Morgaine Dinova: Although might be worthwhile bringing Zoro in ... I wonder if he's freelance
[11:39] Zha Ewry: Teh major DBMs all handle multiple frontend, seperate backends, logging and recovery
[11:39] Which Linden: However, ops may cause us to revisit that decision
[11:39] Tillie Ariantho: I already mentioned I work at a bank, all we need HERE not, we need THERE too. .)
[11:39] Gareth Ellison: let MySQL handle it
[11:39] Tillie Ariantho: not -> now
[11:39] Gareth Ellison: next topic please
[11:39] Zha Ewry: Part of the dull design of the escrow server would have to be how you do a hot recovery
[11:39] Zha Ewry: *full
[11:40] Tao Takashi: heh :)
[11:40] Zha Ewry: (and dull, lots of tedious details)
[11:40] Which Linden: Oh it's very dull I'm sure
[11:40] Which Linden: :-)
[11:40] Which Linden: I'm planning on going freakin' nuts on the unit tests
[11:40] Zha Ewry: But.. this on first glance looks to scale nicely
[11:40] Zha Ewry: Because you can throw clusters of escrow servers at the problem
[11:40] Gareth Ellison: if the failure points are identified as per that lovely wiki diagram then it's simple
[11:41] Tao Takashi: I coded it in the meanwhile
[11:41] Which Linden: Each escrow-powered transaction will probably take noticeably longer than the equivalent central-db-and-udp-powered transaction today
[11:41] Tao Takashi: ;-)
[11:41] Gareth Ellison: Tao: you coded an escrow?
[11:41] Tao Takashi: jk
[11:41] Gareth Ellison: lol
[11:41] Tao Takashi: actually I should code something different instead sitting here but well ;-)
[11:41] Zha Ewry: Well, you have.. extra DB commits per step
[11:41] Gareth Ellison: i'll code it tomorrow ;)
[11:41] Which Linden: Yeah, Gareth, the tricky bit is verifying that those are the only effective failure points
[11:41] Gareth Ellison: one-man XP
[11:41] Zha Ewry: You havbe some extra cross box inocations
[11:41] Morgaine Dinova: Which: your QA Linden should be the one pulling his hair out on testing :-) Can't remember his name ...
[11:42] Gareth Ellison: Which: network and disk access are the failure points
[11:42] Gareth Ellison: anything beyond that is just excess paranoia
[11:42] Which Linden: Hah, well, I geuss we can discovere more during runtime
[11:42] Gareth Ellison: i think you can trust RAMin this day and age
[11:42] Zha Ewry: Well, also the stateful update which gets you out the acid lock
[11:43] Gareth Ellison: escrow unlocks everything oncce all parties have all resources and have confirmed receipt
[11:43] Zha Ewry: You need to end up with both the state on disk, and be able to crash at every step on that path
[11:43] Which Linden: Incidentally I'm totally supportive of anyone who wants to write their own implementation. As Tao suggested, we can have an interop
[11:43] Morgaine Dinova: Yep
[11:43] Gareth Ellison: Which: even if you weren't, i'd be coding it anyway
[11:44] Gareth Ellison: i'm like that
[11:44] Which Linden: cool
[11:44] Gareth Ellison: coding whole grid backends in weeks is my idea of fun
[11:44] Morgaine Dinova: Indeed, since we're decided that escrow is a stateful service, there's no reason why there shouldn't be multiple paralle implementations.
[11:44] Gareth Ellison: ask any of the opensim guys about "breakfast tomorrow"
[11:44] Which Linden: So this may be getting a little too into the particular implementation, but I've chosen deterministic replay as teh method for restoring state
[11:44] Zha Ewry: Early on.. we need to do exactly this
[11:44] Zha Ewry: Code up the core paths
[11:44] Zha Ewry: and get a handle on things like sacling and perfmance
[11:45] Which Linden: it's hard to get a handle on scaling unless you have a huuuge real system to run it on
[11:45] Gareth Ellison: which: update a few SQL tables and just treat that as authorative
[11:45] Tao Takashi: learn through coding
[11:45] Tao Takashi: we need a sprint! :)
[11:45] Gareth Ellison: heh, the first pure open source grid was ALL MINE!
[11:46] Tao Takashi: just missing some features ;-)
[11:46] Which Linden: I'm gonna make some more diagrams like the one you see here, but with a failure and recovery at each of the failure points
[11:46] Gareth Ellison: PHP and then C#, and now python and C++
[11:47] Saijanai Kuhn: howabout a baby client embedded in the client? All it does is periodically run test messages?
[11:47] Gareth Ellison: yeah, but it worked
[11:47] Which Linden: But I won't give that my highest priority
[11:47] Morgaine Dinova: Zha: you won't learn much about scalability by looking at these components. The best one can infer is, "the smaller the request cross-section, the less parallel requests will congest".
[11:47] Saijanai Kuhn: that way, you get a "real world" deployment for free
[11:47] Zha Ewry: Well.. You can get the coarse perormance numbers
[11:47] Tao Takashi: I know, not saying that it wasn't cool :)
[11:47] Gareth Ellison: talking about more general "coding the thing" stuff - Tao - IM me
[11:47] Zha Ewry: Which gives you some bounds on things
[11:47] Tao Takashi: my problem is time these days unfortunately
[11:48] Which Linden: I never know if you're addressing me or starting a sentence with an article, Zha
[11:48] Tao Takashi: esp. as I am in Naples next week at the Plone Conference and need to prepare the in-world part of that
[11:48] Zha Ewry: Ouch.
[11:48] Which Linden: :-)
[11:48] Morgaine Dinova: Zha: yes, I agree. Those number can be plugged into the scalability equation later, as fixed coefficients/
[11:48] Gareth Ellison: IM ME
[11:48] Zha Ewry: Heh.
[11:48] Which Linden: There's a scalability equation?
[11:48] Zha Ewry: I was good. I chose a nice, easy to type short, unique name
[11:49] Which Linden: "which" is actually a pronoun, sorry, grammarians
[11:49] Saijanai Kuhn and what is wrong with foreegn language puns as a name?
[11:49] Gareth Ellison: Which: it's almost certain that someone somewhere done a PhD thesis on scalability metrics of large networked systems
[11:49] Morgaine Dinova: Which: Sort of, haha. The first person to create a complete one for a non-trivial system gets the Nobel Prize :-))))
[11:49] Zha Ewry: /mNopthing as long as you are willing to be addressed as Saij, all the time
[11:49] Which Linden: That person kind of wins teh universe
[11:49] Morgaine Dinova: Aye
[11:50] Zha Ewry: I was Zhranja in my mud/moo days.. and.. people called me Zha all the time.
[11:50] Zha Ewry: This is just acceepting it gracefuly
[11:50] Which Linden: What we tend to do here is introduce the service with an "off" switch and slowly turn it on a bit at a time
[11:50] Morgaine Dinova: Zha: can I have your sword?
[11:50] Saijanai Kuhn: Zhranja has a nice ring to it...
[11:50] Zha Ewry: yah, but I *hated* Zhara
[11:50] Zha Ewry: Liked Zha.. so..
[11:51] Zha Ewry: I chose for people this time
[11:51] Which Linden: Well, we're off the rails
[11:51] Zha Ewry: Yep
[11:51] Gareth Ellison: Which: that seems to be the general LL way with everything - code it, test it internally and leave it off on the public grid
[11:51] Zha Ewry: So.. What I want to see, early, is the protocol bits we care about
[11:51] Gareth Ellison: test on beta grid, slowly introduce
[11:51] Morgaine Dinova: Which is the train driver
[11:51] Zha Ewry: coded and tested early, in interop form
[11:51] Gareth Ellison: that right?
[11:51] Gareth Ellison: ok, back on track....
[11:51] Which Linden: OK, I have some code kicking around that doesn't work, I'll try and get that working and committed
[11:51] Saijanai Kuhn mentions hsi idea of a test protocal clicent thingie embeded in the regular client...
[11:51] Which Linden: I saw that Saijani, you mean in the viewer?
[11:52] Saijanai Kuhn: right.
[11:52] Tao Takashi wonders how networked apps can best be unit tested
[11:52] Zha Ewry: If we can show: chttp, escrow, capabilties, and some form of subscription all coded
[11:52] Saijanai Kuhn: does nothing but accept and fire-off the approriate message
[11:52] Which Linden: Hmm.... well the final app won't be in the viewer, so it wouldn't be a good test
[11:52] Zha Ewry: then declaing that as the buiding blocks isn the AWG is sane
[11:52] Zha Ewry: *in
[11:52] Which Linden: But I like the idea of perhaps firing off a dummy escrow request every time someone does a transaction.
[11:52] Gareth Ellison: Tao: emulate the networked portion using mocks
[11:52] Saijanai Kuhn: would get yo ua wide range of test cases
[11:53] Zha Ewry: Put up simple echo services, some escrow flows on the public web
[11:53] Zha Ewry: Have people code up clients to them
[11:53] Which Linden: An echo service, nice idea
[11:53] Tao Takashi: for a start I wouldn't use the existing viewer, maybe more some python lib which does things with agent and region domain
[11:53] Tao Takashi: for testing it wouldn't need to be 3d
[11:53] Zha Ewry: Mix an OpenSim coded service with a Linden hosted endpoint with an oh, IBM hosted escrow service
[11:53] Zha Ewry: and show it works
[11:54] Which Linden: And even a protocol tester, as in, put your url in here and it'll make sure you interop and that you pass the reliability gaurantees
[11:54] Saijanai Kuhn: the point about the viewer is wide dissemination
[11:54] Morgaine Dinova: Which: even just firing off a timestamped event for subsequent plotting would be worthwhile. (Intermediate and termination points too.)
[11:54] Which Linden: And then it gives you a pony
[11:54] Zha Ewry: Yes, public endponts
[11:54] Zha Ewry: Public use cases
[11:54] Zha Ewry: public escrow workflow
[11:54] Zha Ewry: public pubcli public
[11:54] Saijanai Kuhn: you would have up to 40K beta testers of the protocol "for free"
[11:54] Gareth Ellison: Tao: i would put the protocol handlers for the fast network code in C++ and the logic in python for anything like that
[11:54] Gareth Ellison: but bla
[11:54] Zha Ewry: Let everyone who wants to try to break your endponts
[11:55] Which Linden: I see what you're getting at Saijanai, it's worth considering, for sure
[11:55] Tao Takashi: I would first do it all in Python and then move things over to c or c++ where appropriate
[11:55] Zha Ewry: Oooh. can I have a pony?
[11:55] Zha Ewry: The 9YO loves ponies
[11:55] Morgaine Dinova: Saij+Which: good point
[11:55] Saijanai Kuhn: as long as it didn't impact the client performance in any appreicialbe way, I see no reason not to do it, unless it gives NO useful data
[11:55] Gareth Ellison: Tao: the way of pain!
[11:56] Which Linden: Ha ha, I guess I'm saying that I'm probably going to need help from Groupies like you to get the interop thing right
[11:56] Zha Ewry: We also want to test the patterns and such
[11:56] Zha Ewry: well that's why were h ere ;-)
[11:56] Tao Takashi: Gareth: C++ would be the way of pain for me ;-)
[11:56] Zha Ewry: I can code the C++ in my sleep
[11:56] Tao Takashi: I would first keep it in one language
[11:56] Morgaine Dinova: Which: I've always wanted to be a groupie. Better don't ask questions ...
[11:56] Gareth Ellison: doing anything binary in python is painful
[11:56] Saijanai Kuhn dreams of C++ forrests right now
[11:57] Zha Ewry: But.. in fact. a tomcat applet, might be my first choice
[11:57] Tao Takashi: I though there are libs around for doing that
[11:57] Tao Takashi: thought
[11:57] Which Linden: Yeah, I'm personally not planning on doing a c++ implementation
[11:57] Which Linden: but the need may arise
[11:57] Gareth Ellison: if someone else does the binary packet encoding/decoding for those parts of the protocol i'm happy
[11:57] Zha Ewry: Well, all of HTTPD, is what, 800 lines of c++?
[11:57] Zha Ewry: a simple one
[11:57] Which Linden: Oh, sweet, and actual tiny, for the chair!
[11:58] Zha Ewry: Oh. I have a tiny ave in here somewhere.
[11:58] Which Linden: uh, ignore that outburst
[11:58] Which Linden: I'm just excitable
[11:58] Morgaine Dinova: lol
[11:58] Zha Ewry: I don't see plants as excitable
[11:58] Phli Foxchase: :)
[11:58] Gareth Ellison: the LLHTTPNode stuff in llmessage is nice to work with actually
[11:59] Which Linden: Yeah, it is
[11:59] Which Linden: Too bad you have to pump the pump all the time though
[11:59] Which Linden: We were saying that we should have tried a c++ coroutines library
[11:59] Which Linden: That might have made it even nicer
[12:00] Morgaine Dinova: Gareth needs to give us a presentation on some of the internal structures I think.
[12:00] Which Linden: But then again it might have opened up THE PAIN
[12:00] Gareth Ellison: Morgaine: the viewer internals are nasty
[12:00] Morgaine Dinova: :-(
[12:01] Gareth Ellison: i'd give a talk on how to make use of the llmessage stuff but i'm a student there myself
[12:01] Phli Foxchase: hich: soory to ask that but do you have a Linden Bear ?
[12:01] Phli Foxchase: Which*
[12:01] Gareth Ellison: you want an expert
[12:01] Morgaine Dinova: Gareth: equally nasty in libsl?
[12:01] Gareth Ellison: Morgaine: libsl is neater in parts, and messier in other parts
[12:01] Phli Foxchase: Thank you
[12:01] Gareth Ellison: eww, region restart
[12:01] Zha Ewry: Eeek
[12:01] Which Linden: No problem!
[12:01] Gareth Ellison: Which: kill that
[12:01] Morgaine Dinova: lol, region restarting
[12:01] Tao Takashi: time off anyway ;-)
[12:01] Gareth Ellison: kill the restart
[12:01] Which Linden: Ha ha, I'm not the estate owner, I can't kill it
[12:02] Which Linden: Anyway, our hour is up
[12:02] Tao Takashi: YOU ARE A GOD (I thought)
[12:02] Gareth Ellison: mr grid monkey
[12:02] Tillie Ariantho: Which did start that manually, to get away from us. .P
[12:02] Gareth Ellison: got root on the sim host?
[12:02] Gareth Ellison: heh
[12:02] Morgaine Dinova: It's cool. An aweful lot to digest from this transcript anyway.
[12:02] Zha Ewry: Ah
[12:02] Gareth Ellison: bah, i'll TP out of here
[12:02] Zha Ewry: The chair works!
[12:02] Which Linden: I'm not sure I could figure out how to cancel it within 4 minutes
[12:02] Tao Takashi: the region is spamming me!
[12:02] Gareth Ellison: hate getting knocked off the grid
[12:02] Which Linden: Yes! Thanks, Zha!
[12:02] Zha Ewry: Dang, You all got big!
[12:02] Which Linden: Very cute
[12:02] Squirrel Wood: isn't this a sheduled rolling restart?
[12:03] Tillie Ariantho: yes, it is
[12:03] Gareth Ellison: thanks for the talk Which
[12:03] Tao Takashi: well, gotta go anyway
[12:03] Morgaine Dinova: I guess Ill port out, just in case it might affect inventory.
[12:03] Zha Ewry: Excellent discussion all
[12:03] Tao Takashi: thanks for the chat, Which :)
[12:03] Zha Ewry: And Which
[12:03] Gareth Ellison: i'm off to the libsl HQ right now - AWG groupies land is a good meeting place
[12:03] Gareth Ellison: see you all there
[12:03] Morgaine Dinova: Yes, thank you Which, and everyone.
[12:03] Tao Takashi: and I am off home
[12:03] Gareth Ellison: yes?
[12:03] Which Linden: OK, people, thanks a bunch, I really enjoyed the discussion today
[12:03] Zha Ewry: Gropy land is fine
[12:03] Zha Ewry: Groupy even
[12:03] Tillie Ariantho: bye all. :)
[12:04] Morgaine Dinova waves
[12:04] Gareth Ellison: TP broken
[12:04] Which Linden: :-(