User:Which Linden/Office Hours/2007 Oct 25

From Second Life Wiki
Jump to: navigation, search

Transcript of Which Linden's office hours:

[11:12] Which Linden: As usualy, I'll be putting up a transcript, so, you know, say hi to the intrepid wiki wanderer
[11:12] Tillie Ariantho: Hi! ,)
[11:12] Donovan Linden: hi intrepid wiki wanderer
[11:12] Saijanai Kuhn wonders if anyone else sees him as sitting above the chair...
[11:12] Zha Ewry: Heh. The one a week how's able to get the page to load
[11:12] Which Linden: Yeah, Sai, that's a tiny chair
[11:12] Saijanai Kuhn: ah...
[11:13] Which Linden: Wow, I need to get more seats
[11:13] Zha Ewry: There. free seat ;-)
[11:14] Which Linden: So, topic possibilities for today: tracing through a login process in some detail (current or future), or discussing the stuff that's going on in evnetlet/mulib
[11:14] Zha Ewry: mulib?
[11:14] Zha Ewry votes, softly for mulib
[11:14] Which Linden: I tend to talk a lot at these things so it'd be cool to switch it up a bit and have you all drive the discussion for a bit
[11:14] Which Linden: Mulib sounds awesome, and it's good timing that Donovan is here
[11:15] Saijanai Kuhn: which is mulib?
[11:15] Saijanai Kuhn: or Which, what is mulib...
[11:15] Which Linden: Mulib is a RESTful web services library
[11:15] Which Linden: http://wiki.secondlife.com/wiki/Mulib
[11:16] Which Linden: I guess at its most essential it exposes a hierarchical data structure over a REST interface
[11:17] Which Linden: Take a look at these examples: http://wiki.secondlife.com/wiki/Mulib/Examples
[11:17] Which Linden: The stacked example is especially elegant
[11:18] Donovan Linden: man the wiki is slow
[11:18] Zha Ewry: I was about to say, "It might be, if it loaded"
[11:18] Which Linden: Man, worked for me
[11:18] Zha Ewry: The wiki.. is intense pain
[11:18] Zha Ewry: Currently, seems to shed, about 2/3 of requests
[11:19] Zha Ewry: Ah. There it goes
[11:19] Which Linden: Ugh, if anyone wants to come up with analysis of where it's fucking up, please send that along
[11:19] Which Linden: We don't host it, but we could pass that information on to our hosting providers
[11:20] Zha Ewry: Rob Linden's been looking into it, too
[11:21] Which Linden: So, yeah, the stacked traversal is pretty neat in that you can make those dict keys appear as url segments, and the response to a request will be the valu of the key
[11:21] Tao Takashi: Hi
[11:21] Tillie Ariantho: hey Tao. Have a cold? :D
[11:21] Which Linden: This is pretty new stuff, though, I don't think we use this capability very much yet internally
[11:21] Which Linden: Hey tao
[11:21] Tao Takashi: trying to prevent a cold, getting cold these days ;-)
[11:21] PulseBurst Flow: Hi Tao
[11:22] Donovan Linden: hey tao
[11:22] Which Linden: Hello Gareth
[11:22] Tao Takashi: Hi Donovan, Which, Pulse!
[11:22] Tao Takashi: Hi gareth
[11:22] Saijanai Kuhn: hey all
[11:22] Zha Ewry: /its write, so when you put a term it gets added to the dictionary?
[11:22] Which Linden: man, the groupies are all here, it seems
[11:23] Which Linden: Yes, Zha
[11:23] Which Linden: Exactly
[11:23] Gareth Ellison: hi
[11:23] Tao Takashi: Which: I will do that egg tutorial this weekend :-)
[11:23] Saijanai Kuhn: turtle is mute
[11:23] Zha Ewry: What happens when you put the second term, on the same node?
[11:23] PulseBurst Flow: Hi Gareth
[11:23] Zha Ewry: (same URL segment)
[11:23] Gareth Ellison: so i heard this was a talk about mulib
[11:23] Which Linden: Looking forward to it, Tao
[11:23] Which Linden: Zha: putting a second time is a replace
[11:23] Gareth Ellison: i been pimping mulib
[11:23] Donovan Linden: zha: you mean to the same leaf? it overwrites, standard PUT semantics
[11:23] Gareth Ellison: anyone got logs?
[11:24] Zha Ewry debates if that's fully idempoitent for a long moment
[11:24] Zha Ewry: Yeah, it is
[11:24] Which Linden: I think it is from the perspective of the putter
[11:24] Which Linden: put-er?
[11:24] Donovan Linden: it is, because requests are atomic, and each one replaces that branch of the tree
[11:24] Zha Ewry: Not sure what happens with two putters
[11:24] Which Linden: You can have strange results if two different parties try to put to the ame url
[11:24] Zha Ewry: I think one could argue, that the second putter, is giong to be surprised
[11:24] Saijanai Kuhn: the golf game takes a long time?
[11:24] Gareth Ellison: Donovan: python dicts and mulib - secure or not?
[11:25] Donovan Linden: last put from the perspective of the server wins
[11:25] Zha Ewry: That, I'm not quite so sure is idempoitent
[11:25] Gareth Ellison: since any client can send DELETEs
[11:25] Donovan Linden: gareth: I wouldn't put this server anywhere untrusted input could be generated
[11:25] Which Linden: Well, that's sort of an interesting question about idempotency
[11:25] Donovan Linden: if I wanted to allow direct access to it, it would be through a proxy that disallows PUT and DELETE
[11:25] Zha Ewry: Once *could* argue that the put, once accepted.. creates a new resource, and the old one should reject futrther puts which are diffeernet
[11:25] Gareth Ellison: what practical uses does mulib have with a python dict rather than mu.Resource?
[11:26] Zha Ewry: Not sure I would, mind you, but one could
[11:26] Donovan Linden: gareth: using normal python types just turns out to be really convenient
[11:26] Which Linden: Hmm.... yeah
[11:26] Donovan Linden: especially if your user intefaces are talking json or llsd
[11:26] Which Linden: Yeah, the dict is just a great example
[11:27] Zha Ewry: Its super, because we get right down to brass tacks and questions
[11:27] Donovan Linden: another feature of stacked is that it does content negotiation, so you can ask for it in json or llsd and the storage is still native python types
[11:27] Gareth Ellison: actually, come to think of it, using a dict for the sitemap.... there isn't a chance that could allow people to run DELETEs against parts of it is there?
[11:27] Tao Takashi: in Zope we also moved from custom types back to normal python structures
[11:27] Tao Takashi: it just makes more sense :)
[11:27] Gareth Ellison: i may have just found a nasty bug in my code....
[11:27] Which Linden: I think it's also useful if you have a node that has small amounts of data that maps really well to a python data structure. So, you use the Resource for the high-level stuff, then hang off dicts or lists or whateveer
[11:28] Donovan Linden: gareth: yeah, people can probably arbitrarily change your server :) use a Resource as the root to know exactly what is going on, and don't call stacked.consume
[11:28] Which Linden: Isn't that the point of mud? That you can just mess with it?
[11:28] Gareth Ellison: now you tell me.....
[11:28] Donovan Linden: yeah, we should tell people that in brighter bigger letters
[11:28] Gareth Ellison: nobody run my code in a production environment please!
[11:29] Which Linden: ha ha
[11:29] Tao Takashi: ooops! *stopping servers*
[11:29] Gareth Ellison: lol
[11:29] Donovan Linden: anyway, a wrapper which disallows DELETE and PUT will solve it
[11:29] Zha Ewry waits for the simualtor to quietely halt
[11:29] Gareth Ellison: yeah - i have such a wrapper
[11:29] Which Linden: It's not a huge security hole that will get you 0wned, you could just lose all your data!~
[11:29] Donovan Linden: and give yourself an unwrapped server pointing at the same tree, on an internal private port
[11:29] Saijanai Kuhn fades into NULL
[11:29] Tao Takashi: some security layer should be involved anyway, shouldn't it?
[11:29] Gareth Ellison: i called it muauth
[11:30] Which Linden: Also you don't have to have a dict as the top-level object
[11:30] Gareth Ellison: Donovan - eventlet.httpc needs support for HTTP auth btw
[11:30] Donovan Linden: if you have a Resource as the root, you control all the behavior exactly
[11:30] Donovan Linden: gareth: yes it does. please add it ;)
[11:30] Gareth Ellison: Which: true, it's more convienient but less secure
[11:30] Gareth Ellison: Donovan: you're a lazy fool and ok
[11:31] Donovan Linden: hehe. if you don't someone will someday
[11:31] Gareth Ellison: heh
[11:31] Which Linden: Hm.... yeah, Sardonyx has been doing a lot of work on httpc in making it respond properly when it gets a status code that requires a second request to resolve
[11:32] Gareth Ellison: ideally should be able to do something like myobj = llsd.parse(myclient.get("http://user:password@server/bla"))
[11:32] Which Linden: We have a list here: http://wiki.secondlife.com/wiki/Certified_HTTP#Status_Codes but honeslty most of those are httpc behaviors, so I should move that list to the eventlet page
[11:32] Tao Takashi wonders if Which visited a local user group meeting already ;-)
[11:33] Gareth Ellison: so, is there a c-http implementation available yet?
[11:33] Donovan Linden: is all this development happening in the public svn? I need to get on that commit list
[11:33] Donovan Linden: which do you know where it is?
[11:33] Tao Takashi: is there a commit list? public? :)
[11:34] Which Linden: Oh, there oughta be!
[11:34] Which Linden: I'll ping rob and ask how it's done for the main linden commit list
[11:34] Tao Takashi: looks public: http://svn.secondlife.com/trac/eventlet/timeline
[11:35] Which Linden: Can follow this manually too: http://svn.secondlife.com/trac/certified_http/browser
[11:35] Gareth Ellison: cool
[11:35] Which Linden: Oh, the timeline: http://svn.secondlife.com/trac/certified_http/timeline
[11:35] Donovan Linden: maybe we should try sardonyx's mercurial import tool so that we can more easily accept patches from the community?
[11:35] Which Linden: What's the tool do?
[11:35] Tao Takashi: I still think you should simply open up the svn ;-)
[11:36] Tao Takashi: not to everybody of course
[11:36] Donovan Linden: continually imports svn into an hg repo
[11:36] Donovan Linden: bah, centralised revision control is a pain :P
[11:36] Gareth Ellison: why not just have a public SVN repo which is read-only to all and commit access for lindens?
[11:36] Which Linden: We do have that, Gareth
[11:36] Donovan Linden: gareth: that is what we have
[11:36] Donovan Linden: for eventlet and mulib
[11:36] Tao Takashi: I would even say with commit access for selected developers
[11:36] Which Linden: and certified http
[11:36] Tao Takashi: like e.g. Gareth ;-)
[11:36] Which Linden: we even have that, tao
[11:37] Which Linden: I'm not sure how you get on the list, though
[11:37] Gareth Ellison: so what's the issue? accept patches from people, and allow select devs in the community to get commit access
[11:37] Donovan Linden: submit good patches, probably
[11:37] Tao Takashi: sounds like a good criteria ;-)
[11:37] Gareth Ellison: where do we submit patches? JIRA?
[11:37] Which Linden: Yeah, my doors are open here, if you want to tackle the code, please do
[11:37] Which Linden: You can email me for now.
[11:37] Gareth Ellison: i still need to sign a contributor agreement
[11:37] Donovan Linden: and me
[11:37] Which Linden: Although we do have chttp in jira
[11:37] Tao Takashi: it would even be nice to have the trac bugtracker available as it integrates nicely
[11:37] Gareth Ellison: i hereby sign over my soul to LL
[11:37] Which Linden: and eventlet and mulib, acutally
[11:38] Which Linden: yeah, so, use jira instead of emailing us, actually
[11:38] Which Linden: that way we have an audit trail or whatever
[11:38] Gareth Ellison: Trac is looking more stable than JIRA as of late
[11:38] Tao Takashi: but you might want to have all your bugs in a central place
[11:38] Which Linden: Yeah, I dunno, I'm not gonna bitch if I get a patch, even if it's by carrier pigeon
[11:38] Gareth Ellison: i think unless everything switches to Trac, JIRA is where it'll be at
[11:38] Gareth Ellison: Which: i've gotta hire a carrier pigeon now!
[11:39] Gareth Ellison: i wonder if i can run SVN over IP over carrier pigeon
[11:39] Tao Takashi: if it only would be faster ;-)
[11:39] Which Linden: https://jira.secondlife.com/browse/CHTTP is teh certified http project
[11:39] Gareth Ellison: quick query - who in the community's been working on mulib?
[11:39] Tao Takashi: somehow all the collaboration tools are sort of slow
[11:40] Which Linden: Yeah, well, Trac is fast! Cause we don't collaborate with it
[11:40] Tao Takashi: well, trac is fast for our Plone community
[11:40] Which Linden: Gareth: nobody outside of Linden has contributed
[11:40] Tao Takashi: I am not sure how much non-developers use Jira
[11:40] Which Linden: We need to do a better job of getting people interested in helping develop
[11:40] Gareth Ellison: i've heard a few people have played with getting it to work on windows
[11:40] Tao Takashi: but the Plone developer community definitely is bigger than the SL one
[11:41] Gareth Ellison: Which: when i sign an agreement i'll integrate my crazy extensions and submit a patch
[11:41] Donovan Linden: one thing that might help is for lindens to pair with people from the community that want to learn or develop something small and useful
[11:41] Which Linden: Sounds awesome, Gareth
[11:41] Tao Takashi: you should do sprints :)
[11:41] Donovan Linden: yeah sprints would be great
[11:41] Donovan Linden: in-world sprints?
[11:41] Which Linden: Yeah, I'm going to push someone to get a sandbox host set up that we can all have logins to
[11:41] Gareth Ellison: so, who at LL do i need to send an envelope filled with my soul and vital force to?
[11:41] Tao Takashi: not sure they would work good in-world
[11:41] Tao Takashi: esp. pair programming
[11:42] Gareth Ellison: pair programming remotely sounds painful
[11:42] Donovan Linden: we do in-world pair programming all day long. voice is kind of necessary though
[11:42] Which Linden: We do that a lot internally. Voice + multiuser screen is amazing
[11:42] Donovan Linden: we use sl voice and gnu screen
[11:42] Donovan Linden: and I have plans to develop a web-based multiuser terminal
[11:42] Hypatia Callisto: ooo cool
[11:42] Zha Ewry: The gnu screen isn't in world, right?
[11:42] Gareth Ellison: Zha: duh
[11:42] Which Linden: Donovan: call it "mut"
[11:43] Zha Ewry nods
[11:43] Tao Takashi: sounds cool :)
[11:43] Donovan Linden: no, but a web-based terminal could be
[11:43] Tao Takashi: you should nevertheless think also of RL sprints :)
[11:43] Gareth Ellison: in-world pair programming would rock
[11:43] Zha Ewry: Aye..
[11:43] Tao Takashi: maybe also in the context of some conference to attract new people
[11:43] Zha Ewry is just drolling for the rich collab tool to be in world troo
[11:44] Which Linden: We could get someone to write an overhyped article about Agile XP Web 2.0 in SL. Next: world domination!
[11:44] Tao Takashi: implement that in-client web browser! ;-)
[11:44] Tao Takashi: like onrez
[11:44] Gareth Ellison: Tao: there's already a web browser in the viewer
[11:44] Donovan Linden: I hope onrez convinces the ui team to turn on the browser
[11:44] Which Linden: I haven't actually seen theirs, but we definitely have that capability already
[11:45] Gareth Ellison: i like to view my own profile, point to a random webpage and then switch it back
[11:45] Which Linden: You can hax it by setting the F1 help url to Google or something
[11:45] Wyn Galbraith is using OnRez's viewer now
[11:45] Tao Takashi: well, it would be cooll not to have open up firefox all the time
[11:45] Which Linden: or your profile, that's a good one
[11:45] Gareth Ellison: profile window is a bit tiny though
[11:45] Tao Takashi: I know, Which, but it would also be cool to be able to control it via LSL
[11:45] Which Linden: Can only visit iphone-optimized web sites
[11:45] Gareth Ellison: if there was an SSH client and firefox in the viewer i'd leave it on 24/7
[11:45] Tao Takashi: llLoadURL() might simply open that up
[11:46] Tao Takashi: I know that basically all the stuff is in the client
[11:46] Tao Takashi: that's why I thought should it make easy to make a panel around it and while we don#t have HTML/prim yet we would at least be able to redirect people to websites more easily
[11:46] Which Linden: totally
[11:46] Donovan Linden: here is the web based terminal I have been trying to get working
[11:46] Donovan Linden: http://play1.pypy.org/
[11:46] Tao Takashi: PyPy FTW!
[11:47] Which Linden: We'll tell you how it performs under load, Donovan
[11:47] Which Linden: :-)
[11:47] Donovan Linden: ...except I haven't been able to get it to work ;P
[11:47] Gareth Ellison: Donovan: heard of js/uix?
[11:47] Tao Takashi: see, one sprint topic for the next EuroPython :)
[11:48] Which Linden: There is this: http://www-personal.umich.edu/~mressl/webshell/
[11:48] Tao Takashi: maybe getting it to run earlier would be nice though ;-)
[11:48] Gareth Ellison: google for js/uix
[11:48] Donovan Linden: but yeah the implementation is insane, it's in python and uses pypy to translate it to javascript
[11:48] Gareth Ellison: it's a *nix OS in a browser complete with real filesystem and vi port
[11:48] Saijanai Kuhn: btw, the CSI viewer automatically reroutes chat inks to the internal browser
[11:48] Saijanai Kuhn: chat links*
[11:48] Gareth Ellison: that rocks
[11:48] Which Linden: That's ssmart
[11:49] Gareth Ellison: it shouldn't be too much work to just open a new floater with a web browser widget when you click a link
[11:49] Which Linden opens a jira
[11:49] Tao Takashi: now if the onrez viewer would only be open source ;-)
[11:49] Donovan Linden: is javascript the next assembly language?
[11:49] Gareth Ellison: anyone want to go and hack up a patch for that?
[11:49] Which Linden: No dude, C++ is the next assemply language
[11:49] Gareth Ellison: really - the code's already there (help window etc)
[11:49] Saijanai Kuhn: which brings up the question: why isn't it. Thought GPL said anything based on GPL code was GPL
[11:50] Which Linden: Yeah, I'd help shepherd such a patch through
[11:50] Tillie Ariantho: Yes! I thought so too...
[11:50] Tao Takashi: Sai: I think they have a special license
[11:50] Gareth Ellison: Saijanai: ESC got a commercial license
[11:50] Which Linden: We gave them a commercial license
[11:50] Tao Takashi: which was a bit confusing at Robin's office hour
[11:50] Gareth Ellison: heh
[11:50] Gareth Ellison: Which: RMS wants your head on a plate for that
[11:50] Tao Takashi: it sounded there as if everybody would need a special license to distribute a viewer
[11:50] Saijanai Kuhn: .... wondering at how that works, but whatever. Only person who could bring a suit would be holder of hte GPL license, which is LL
[11:51] Gareth Ellison: Saijanai: the copyright holder can release code under any license
[11:51] Tao Takashi: that's what the contributor agreements are for
[11:51] Which Linden: Richard Stallman is apparently afraid of potted plants. >:-)
[11:51] Saijanai Kuhn: ah, OK.
[11:51] Tao Takashi: well, I would still think it would be cooler to have onrez as open source :)
[11:52] Which Linden: Yeah, so, back to mulib
[11:52] Gareth Ellison: Tao: so do i, let's pressure ESC
[11:52] Tao Takashi: and I hope LL is not distributing too many of these licenses
[11:52] Gareth Ellison: and yeah, get back to mulib
[11:52] Tao Takashi: I commented on their blog about that
[11:52] Tao Takashi: ok, mulib :)
[11:52] Which Linden: we have strayed from our topic
[11:52] Gareth Ellison: Which: continue....
[11:52] Which Linden: We should put up some more examples of overriding methods on mu.Resource
[11:52] Which Linden: it's very powerful
[11:53] Which Linden: The methods you'll want to look at are: childFactory, findChild, and willHandle
[11:53] Tao Takashi looks
[11:53] Which Linden: findChild allows you to completely replace the traversal logic
[11:53] Zha Ewry: Whiich a few worked examples, including the actual fully packed http request that comes out, woudl be cool
[11:54] Tao Takashi: maybe those packages should also be namespace packages
[11:54] Which Linden: Namespace packages?
[11:54] Gareth Ellison: i'd die a slow death without findChild
[11:54] Tao Takashi: so you can do import lindenlab.mulib
[11:54] Which Linden: Zha: agree, gotta find the time
[11:54] Tao Takashi: and import lindenlab.eventlet
[11:54] Which Linden: bah, the lindenlab would be superfluous, I think
[11:54] Saijanai Kuhn: Hey Azreal welocme. This is an office meeting. You're welcome to sit in but its pretty geeky
[11:54] Tao Takashi: where lindenlab is a namespace and they don't need to be in the same directory
[11:54] Zha Ewry: Do you have a few publically viisble endpoints out there?
[11:54] Which Linden: Zha: no, though we should try to mke some
[11:54] Hypatia Callisto thinks Azreal has the wrong place :)
[11:55] Which Linden: as noted, it's not the most secure
[11:55] Tao Takashi: well, it's still nice to be able to group things together.. eggs are also supporting this
[11:55] Zha Ewry: I'd love to poke at them with a few tools, and show how to invoke it from several languages
[11:55] Zha Ewry: Chuckle.
[11:55] Zha Ewry: Good point
[11:55] Gareth Ellison: eggs are needed, python distutils good
[11:55] Tao Takashi: cheeseshop also :)
[11:55] Azrael Schmooz: just fling around. lookin at shit.
[11:55] Which Linden: Once we had this magical sandbox server we could set up some demo apps
[11:55] Gareth Ellison: i've been pondering how to integrate mulib with mono somehow
[11:56] Gareth Ellison: could then put it into opensim
[11:56] Saijanai Kuhn: you'd need a clientside mono I think unless the server code gets opensourced first
[11:56] Tao Takashi: I would definitely like more docstrings also :) and some doctests inside them maybe
[11:56] Gareth Ellison: right now i've been using PyODE and streaming object updates
[11:56] Which Linden: Oh man, if mulib was the rest framework of choice for the simulator?!?! Rad
[11:56] Gareth Ellison: Which: i got a basic sim doing that
[11:56] Gareth Ellison: very hackish but it works
[11:57] Gareth Ellison: basically just hacked a PyODE example and put all the object updates over streamlet
[11:57] Gareth Ellison: streamlet == my HTTP event streaming system based on mulib
[11:57] Which Linden: I've been going around adding docstrings, Tao, doctests may be next. It's actually hard to write doctests because there is so much setup before the methods are usefeul
[11:58] Tao Takashi: btw, I found some presentation about long living http connections the other day
[11:58] Gareth Ellison: i think more sample code is a definate must
[11:58] Gareth Ellison: Tao: short summary?
[11:58] Tao Takashi: Which: yep, I know that problem. But once you have that setup they are quite nice
[11:58] Gareth Ellison: my system just pauses on a GET request before returning content
[11:58] Tao Takashi: and then you can also write the tests first :)
[11:58] Tao Takashi: Gareth: http://dev.comlounge.net/uncategorized/long-lived-http-connection/
[11:58] Gareth Ellison: and then if you time out, you hit GET again
[11:59] Gareth Ellison: and while offline it queues events server side
[11:59] Gareth Ellison: Tao: send me that link on IRC to avoid teh lag
[11:59] Which Linden: You probably don't want to do that for GETs, Gareth, because they might be cached
[11:59] Tao Takashi: we also had some demonstration based on AJAX at the Plone Conference
[11:59] Which Linden: Do them for POSTs instead
[11:59] Gareth Ellison: Which: should probably send a no-cache header
[12:00] Tao Takashi: Plone initiated a website and a twisted server was then sending AJAX like updates to the browser
[12:00] Gareth Ellison: a POST doesn't feel right
[12:00] Tao Takashi: isn't it changing data? I would think POST instead of GET
[12:00] Which Linden: yeah, but it has the properties you want (i.e. some intermediate proxy won't cache it)
[12:01] Gareth Ellison: true, but a proxy shouldn't cache it with GET and the right headers either
[12:01] Which Linden: Fair enough
[12:01] Which Linden: Take a look at how eventrouter does it, if you want an example
[12:01] Tao Takashi: some have some have evil refresh_pattern configurations ;-)
[12:02] Gareth Ellison: i suppose really using HTTP for event streams is a silly hack anyway
[12:02] Tao Takashi: sounds like everybody is going to do it though, even on the web ;-)
[12:02] Tao Takashi: AJAX is a hack, too ;-)
[12:03] Gareth Ellison: true
[12:03] Tao Takashi: the world is based on hacks, except Python of course
[12:03] Which Linden: Ha!
[12:03] Gareth Ellison: i can't help thinking that a custom TCP protocol or a new HTTP verb is saner
[12:03] Donovan Linden: python is a hack, that's why it works
[12:03] Gareth Ellison: perhaps a new HTTP verb like GETEVENTS
[12:03] Which Linden: Well, Donovan I recall was pushing to make HTTP be bidirectional
[12:03] Which Linden: HTTP 2.0 that is
[12:03] Gareth Ellison: python is clean
[12:03] Tao Takashi: I meant stuff based on python actually :)
[12:03] Tao Takashi: Zope2 is a hack though ;-)
[12:03] Tao Takashi: but Zope3 isn't
[12:04] Saijanai Kuhn: can things be designed so that you can replace the protocol if something saner comes along?
[12:04] Donovan Linden: gareth: there already is an rfc for one: the SELECT verb
[12:04] Gareth Ellison: Donovan: which RFC?
[12:04] Donovan Linden: dunno, just search for http select
[12:05] Gareth Ellison: Mr HTTP himself doesn't know?
[12:05] Tao Takashi: Donovan invented HTTP? :)
[12:05] Which Linden: Donovan IS HTTP
[12:05] Gareth Ellison: no, Donovan just coded lots of HTTP-related stuff in python
[12:05] Gareth Ellison: there's a verb named after him
[12:05] Gareth Ellison: DONOVAN /resource
[12:06] Gareth Ellison: makes the webserver return a l33t python hacker
[12:06] Which Linden: Hah
[12:06] Tao Takashi: I should use that method more
[12:07] Gareth Ellison: the current event polling over CAPs - does that work using PSOT?
[12:07] Gareth Ellison: POST
[12:07] Which Linden: Check this out and add comments for where we should add examples: http://jira.secondlife.com/browse/EVT-7
[12:08] Tao Takashi: Hope to have time to take a closer look into eventlet etc. at the weekend
[12:08] Which Linden: Yeah, it does, Gareth
[12:08] Gareth Ellison: Which: does it queue things server-side while waiting for a client reconnect or does it just keep the connection alive?
[12:08] Which Linden: OK, that previous JIRA was for EVentlet, not mulib
[12:09] Which Linden: Use this one: http://jira.secondlife.com/browse/MU-13
[12:09] Tao Takashi: is there some CAPS example on the wiki somewhere actually?
[12:09] Which Linden: Gareth, it queues them
[12:09] Tao Takashi: the page about it seems to be a bit short ;-)
[12:09] Which Linden: Not sure Tao, I haven't seen one
[12:09] Gareth Ellison: Which: where's it implemented? if it's in llmessage i want to know about it
[12:09] Tao Takashi: maybe more examples would help here, too. maybe even in the context of the new architecture and where it could be used
[12:09] Which Linden: er, hmmm... not sure.... it might not even be open source
[12:10] Which Linden: casuse it's the simulator doing it
[12:10] Gareth Ellison: i would guess it isn't if it's not in llmessage or llcommon
[12:10] Tao Takashi: simply open source the simulator :)
[12:10] Which Linden: the cap just directs the connection to the simulator
[12:10] Gareth Ellison: i've noticed llmessage contains a lot of server-side code
[12:10] Which Linden: Yes, we're working on it
[12:10] Which Linden: There is a lot of shared code there
[12:11] Gareth Ellison: like llversionserver.h and LLHTTPNode?
[12:11] Which Linden: yup
[12:11] Gareth Ellison: the latter being very useful for building an httpd
[12:11] Which Linden: LLHTTPNode is nice, it's philosophically close to mulib
[12:11] Gareth Ellison: very close
[12:11] Gareth Ellison: it feels like a C++ port
[12:12] Which Linden: Hey, well, I gotta duck out of here, and I'm sure you all have interesting things to do in Second Life
[12:12] Gareth Ellison: :O
[12:12] Tao Takashi: not really
[12:12] Gareth Ellison: i have nothing interesting to do except discuss how to rewrite it
[12:12] Tao Takashi: just waiting for the next office hour then ;-)
[12:12] Which Linden: Thanks for a cool conversation today. Please comment on those two JIRA tasks I sent out
[12:12] PulseBurst Flow: thanks, bye...
[12:12] Tao Takashi: thanks for hosting :)
[12:13] Donovan Linden: yeah thanks everybody, it was great
[12:13] Gareth Ellison: come to think of it, in RL i spend my time talking about how to rewrite it too so to speak
[12:13] Which Linden: My pleasure! You all are always awesome.
[12:13] Which Linden: We out.
[12:13] Hypatia Callisto: ok thanks!