User:Zero Linden/Office Hours/2007 Nov 27
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Zero Linden: | As I always am, VL! | |
Vicero Lambert: | lol | |
Malburns Writer: | Hi Tao | |
Kooky Jetaime: | hmm 830.. I might actually start comming then hehehe..thats... 11:30 for me | |
Zero Linden: | So - back to log in | |
Burhop Piccard: | (my productivity went up 10% when they put a starbucks by my office) | |
Zero Linden: | This is phase 1 here | |
Vicero Lambert: | lol @ burhop | |
Zero Linden: | My idea is that this runs as follows | |
Zero Linden: | 1: viewer contacts service (well known DNS name based on domain of your avatar identity) with { first-name, last-name, | |
Zero Linden: | credential (like password), and some indicator of level of service desired) | |
Zero Linden: | } | |
Jarod Godel: | like jarod-godel.org? | |
Zero Linden: | steps 2 and 3 here are internal and we won't be specing | |
Morgaine Dinova: | Or any name ... that's subgrid dependent, some grids may have different av name policies. | |
Vicero Lambert: | vicerolambert.hellokitty.secondlife.com | |
Tao Takashi: | this is all encoded in LLSD? | |
Jarod Godel: | ok. so it's a "grid" identity. thanks. | |
Tao Takashi needs to check out the recently released libraries | ||
Zero Linden: | nono, like services.agent.agni.lindenlab.com | |
Vicero Lambert: | ahh | |
Zero Linden: | or even login.agni,lindenlab.com | |
Jarod Godel: | ok | |
Zero Linden: | We need to agree on how a viewer knows where to go - right now, it is baked into the viewer, though specifiable on the command line | |
Zero Linden: | which is how you use the viewer with an OpenSim grid | |
Zero Linden: | But user's won't know how to spec those things | |
Zha Ewry: | Most users. will get one with a baked starting point, and never care | |
Zero Linden: | Even us dev's don't and development versions of the viewer have the magic DNs names baked into the code | |
Zero Linden: | for each of the development grids | |
Zero Linden: | I don't know, Zha | |
Morgaine Dinova: | Clients will provide ways of hiding the details from users, it's not an issue. The key point is that on each subgrid, you have a login URL and one or more login data. | |
Zero Linden: | I think that most people will be using generic viewers, or one from LL | |
Jarod Godel: | Zero, treat like like a cookie | |
Zero Linden: | Do we need to standardize on that mapping - I think we might or we | |
Tao Takashi: | viewer authors will come up with something I guess ;-) | |
Ahzzmandius Werribee: | LL could provide a root level "agent domain" dns service. similar to root servers in DNS. | |
Zero Linden: | are leaving a crucial, first piece of the user expereince out | |
Jarod Godel: | maybe you start with the baked-in login, but the client should be able to cache others' | |
Tao Takashi: | and somebody might do some web2.0 like directory service | |
Jarod Godel: | and, no to mapping | |
Ahzzmandius Werribee: | part of getting officially into the grid would be to get registered in that root server. | |
Zha Ewry: | YOu want to make the default behave as easily as possible for 90% of the users.. and.. | |
Zero Linden: | I'm thinking like this: If I enter my user name as zero.linden.secondlife.com | |
Zero Linden: | that might map to using services from services.agent.secondlife.com | |
Zha Ewry: | Note that it's not clear that it's anything but a how to build a client discussion | |
Tao Takashi: | but is this login service not just the main entry point for one grid? | |
Jarod Godel: | people/clients need to be able to transact over the web, with random scripts, not just with virtual worlds | |
Ahzzmandius Werribee: | zero, that looks like a good plan at first blush. | |
Squirrel Wood: | What about querying a server for a list of known services and let the user pick one instead of having to use the command line switches? | |
Jarod Godel: | Wait...why are you re-inventing OpenID? | |
Morgaine Dinova: | Zero: no, that sets a VERY bad precedent to use DNS domain name constraints for av naming. | |
Zero Linden: | Tao - well, it is the first stage of login, and it is for establishing the connection to the agent domain that controls your agent | |
Rex Cronon: | no zero. why not just add another textfield where the used can enter the url of the grid that it wants to connect to? | |
Zero Linden: | Jarod - perhaps we arent' | |
Jarod Godel: | It sounds like you are | |
Zero Linden: | what if zero.linden.secondlife.com IS an OpenID | |
Jarod Godel: | then DNS mapping doesn't matter | |
Zha Ewry: | Do distinguish, tho.. between client design and protocol | |
Zha Ewry: | So far.. this.. is client design | |
Zero Linden: | and the document at that URL (or rather at the implied URL of http://zero.lidnen.secondlife.com/ ) | |
Zero Linden: | contains a meta tag pointer to the agent domain server name | |
Zero Linden: | But Zha - | |
Zero Linden: | it isn't, i think | |
Zha Ewry: | The first place where it becomes protocl design.. is where I interpret what's at that point | |
Tao Takashi: | so for each grid I might need a different login server | |
Zero Linden: | because if we don't spec how you go from a name to that initial DNS name | |
Tao Takashi: | not sure where the problem here is ;-) just look at the grid's homepage | |
Zero Linden: | then users, who deal with names, will have a non-standard way of getting in | |
Zha Ewry: | Ah.. the mapping, maybe | |
Tao Takashi: | it might even be a link which autostarts the client with the right one.. of course phishing might be a problem them | |
Zero Linden: | But, let's not get bogged down, | |
Zha Ewry: | How the client manages it.. not so much | |
Morgaine Dinova: | To use domain names like this is extremely bad, because it ties logins to domain name delegation. | |
Zero Linden: | we can just not we may want to spec. or at least reccomend a common approach | |
Zero Linden: | SO | |
Squirrel Wood: | initial dns name... client could query server for known services, then let the user choose one? | |
Rex Cronon: | why would u need a link to restart the client? | |
Zero Linden: | Well, I'm not tremendously fond of mapping things into DNS - DNS has certain tuned properties | |
Zero Linden: | and it doesn't work for general things like this | |
Zero Linden: | BUT most OpenID setups do | |
Tao Takashi: | maybe we can also postpone this discussion for now ;-) I'd think that first we should have a working login and then we can still finetune these details | |
Zero Linden: | ANYWAY | |
Jarod Godel: | I don't mind mapping to dns, but I don't think this needs to be mapped past "login.secondlife.com | |
Zero Linden: | so - the response to 1 | |
Zero Linden: | which, if you notice, is MUCH simpler than current login | |
Zero Linden: | is a single capability (or perhaps a set of capabilites, only one of which is required) | |
Zero Linden: | the required cap is the "seed-cap" for the agent domain | |
Morgaine Dinova: | Tao: the trouble is if login is tied to the structure of domain names now, you can't "fine tune" that out later. | |
Zero Linden: | It is the way the client initiaites #4 | |
Tao Takashi: | Morgaine: I didn't mean to wait after the first release | |
Tao Takashi: | but after some prototype | |
Tao Takashi: | or at least after this meeting ;-) | |
Ahzzmandius Werribee: | morgaine, that's why I think a dns-like lookup system would be good to provide pointers tot he apropriate servers for each type of task in each user's domain. | |
Tao Takashi: | it might also depend on how this protocol is used | |
Morgaine Dinova: | Ahzz: I agree there ... just not that the account names should appear in DNS. | |
Zero Linden: | In number 4, you invoked the seed-cap with a list of other caps you want: { caps-wanted: [ 'inventory', 'region-tp', 'im', ...] } | |
Zero Linden: | and the response to that is the list of granted (or denied) capabilities | |
Ahzzmandius Werribee: | Morgaine, that's decideable later in data specific choices. :-) | |
Zero Linden: | Morgain - let's put that part of the protocol in a discussion page for now | |
Jarod Godel: | That I think should be DNS mapped | |
Morgaine Dinova: | kk | |
Ahzzmandius Werribee shuts up. :-) | ||
Tao Takashi: | so how is the call for getting the other caps? | |
Zero Linden: | So - is this section clear? | |
Burhop Piccard: | This is good, Zero. | |
Zero Linden: | In style, at least | |
Zero Linden: | I think one note | |
Ahzzmandius Werribee nods. | ||
Rex Cronon: | which section | |
Tao Takashi: | could you simply do a GET http://host/<seedcap>/capabilities/inventory ? | |
Rex Cronon: | ? | |
Tao Takashi: | I guess you want to group that into one request | |
Zero Linden: | for now we could / should have a cap called 'legacy-login' - which would return a URL to something that would mostly be the old log-in service (minus the authentication section) | |
Morgaine Dinova: | Tao: no, just the opposite: some LCC clients don't want all that overhead. | |
Zero Linden: | this would be the fastest way to get this coded and running | |
Tao Takashi: | well, I agree for that overhead part | |
Zero Linden: | Tao | |
Tao Takashi: | just wanted to know a little how these URLs might look like :) | |
Jarod Godel: | Tao, I assume "host" there is the sim, not the asset server | |
Zero Linden: | Ah, well, at present | |
Zero Linden: | no | |
Ahzzmandius Werribee: | tao, technical details TBD later. | |
Tao Takashi: | it's not the sim | |
Tao Takashi: | we are not yet at the sim level | |
Zero Linden: | becuase we've found in practice that it is far better to IGNORE everything after the cap in the URL of a request | |
Zero Linden: | in otherwords, ifyou want a cap | |
Zero Linden: | to support multiple functions | |
Tao Takashi: | ah, interesting | |
Zero Linden: | then you encode what function you want in the body of the request | |
Tao Takashi: | so why is this better? | |
Zero Linden: | The reason is this: | |
Jarod Godel: | (Oh, I thought I saw Zero say "object" somewhere. Sorry.) | |
Zero Linden: | The way a cap gets granted is that something decides that the viewer should access to some function | |
Tao Takashi: | host is something in the agent domain, probably your agent host | |
Gigs Taggart: | is that really restful? | |
Gigs Taggart: | you no longer identify the asset by the url then | |
Zero Linden: | it represents that function as an internally accessible URL | |
Morgaine Dinova: | In general, coupling things together is bad, as it hardwires policy. However, if the "legacy-login" is just an optimization (equiv to asking for lots of caps separately), then fine. | |
Zero Linden: | like: http://asset.agni.lindenlab.com/123346 | |
Tao Takashi: | so you then call another URL internally? | |
Zero Linden: | or http://localhost:12036/map/layer-data | |
Zero Linden: | Then it asks the capability system to grant a cap to this | |
Zha Ewry: | Ahm Zero.. as soon as you start posting function into the body.. aren't you gettign away from the big 4 rest verbs and drifting towards SOAPy things? | |
Zero Linden: | the cap systems generates a random cap to itself, like http://localhost:12040/cap/abcde09876 | |
Tao Takashi: | ok, so it's basically tinyurl with longer URLs ;-) | |
Zero Linden: | and internally associates it with the internall | |
Zero Linden: | YES - exactly | |
Tao Takashi: | so how would this work for inventory then later on? | |
Tao Takashi: | say I want to access object with ID 443 | |
Zero Linden: | Zha - somethings, like granting a cap, are pretty functiony, or POST like | |
Tao Takashi: | I guess I don't need a cap for every object? | |
Zero Linden: | just to close the loop here | |
Zha Ewry: | God, I hope we need a cap per asset server, at best | |
Zero Linden: | so when the viewer invokes http://localhost:12040/cap/abcde09876 | |
Neas Bade: | perhaps an example of what the function in the body would be would help | |
Zero Linden: | the cap server just looks up to see if there is any associated internal URL | |
Tao Takashi: | so the cap server is a proxy then? | |
Zero Linden: | and if so, just proxy's the request | |
Zero Linden: | YES | |
Saijanai Kuhn: | right now its just an array of keys | |
Zero Linden: | Indeed - it is verysimple code - which is nice for something that is central t the security of the system | |
Tao Takashi: | not sure I'd rather would like a cap per "module" not per function | |
Zero Linden: | So, let's take the inventory item request | |
Zero Linden: | example | |
Zero Linden: | The viewer wants information about inveotyr item 443 | |
Zero Linden: | we'll assume it has a capability to the inventory system, say http://{inv-cap} | |
Zero Linden: | There are three ways one could design this: | |
Tao Takashi: | so capabilities are always complete URLs I assume | |
Zero Linden: | let the viewer invoke GET on http://{inv-cap}/item/443 | |
Saijanai Kuhn: | https://url:port/cap/UUID | |
Saijanai Kuhn: | so youre going with http now? | |
Zero Linden: | let the viewer POST to http://{inv-cap} with a body of something like { verb: get-item, item: 443 } | |
Zero Linden: | oh -sorry - ALL CAPS ARE HTTPS | |
Zero Linden: | (caps intentional) | |
Zero Linden: | :-) | |
Goldie Katsu sighs in relief | ||
Zha Ewry: | Have to be, or it is Man in the middle vulnerable | |
Zero Linden: | And lord knows we want to stick it to the Man! | |
Tao Takashi likes GET more | ||
Zero Linden: | he he | |
Zha Ewry: | Or at least keep the Man out of the middle | |
Tao Takashi: | more natural IMHO | |
Zero Linden: | Okay, so, the thrid way is a bit subtle: | |
Zero Linden: | POST to http://{inv-cap} with a body of { item: 443 } | |
Goldie Katsu: | just one question (which I probably should have asked a while ago) is there a way that the client knows the cap server is legit and not an imposter? | |
Zero Linden: | and have that return a cap just to item 443: https://{cap-inv-443} | |
Zero Linden: | NOW we can do REST on THAT cap doing GET and PUT and DELETE etc | |
Ahzzmandius Werribee: | Goldie SSL certificate chain | |
Tao Takashi: | but you have 2 requests all the time | |
Zero Linden: | Goldie - it has to do with that initial log in - it has to be over HTTPS too, and | |
Zha Ewry: | Right.. but.. that's expensive, having a cap per item we touch | |
Neas Bade: | um, why would you do item 3 | |
Zero Linden: | the viewer better check the certs | |
Goldie Katsu: | ok...and the client id is validated how? | |
Tao Takashi: | maybe for putting an object | |
Goldie Katsu: | (Do we have bidirecitonal verification or can I spoof your client?) | |
Tao Takashi: | for PUT you might eventually first get a URL anyway | |
Zero Linden: | Right now, in the current SL viewer - the login servers have SSL certs traceable to a Root CA | |
Neas Bade: | it really seems like you break a lot of the natural flow by not going with approach 1 | |
Tao Takashi: | I am definitely for option 1 | |
Tao Takashi: | as we do GET something | |
Neas Bade: | agreed | |
Zero Linden: | and the capability servers have a SSL cert traceable to a CA whos cert is in the viewer and the viewer insists matches | |
Ahzzmandius Werribee: | option 1 also seems more apropriate to me. | |
Zero Linden: | So - we are all agreed that option 2 is poor | |
Ahzzmandius Werribee: | yep | |
Zero Linden: | Good - internally, over tha last year | |
Tao Takashi: | I don't see the benefit with 2 | |
Neas Bade: | yes, option 2 is poor and confusing | |
Zero Linden: | we've been between 1 and 3 | |
Zha Ewry: | 1 is slightly soapish.. but simple | |
Tao Takashi: | I am all for simple ;-) | |
Zha Ewry is trying very hard to avoid soapish | ||
Zero Linden: | we always thought we'd do 1, but we kep't getting by with 3 | |
Tao Takashi: | 3 might get expensive | |
Zha Ewry: | Parsing headers it expensive | |
Zero Linden: | Now, 3 is the classic capability paradigm | |
Zero Linden: | The pure caps folks wouldn't dreamof any other way | |
Zha Ewry: | Verbs in headers.. even good ones.. is no really REST | |
Neas Bade: | Zha: why do you think option 1 is soapy? | |
Zero Linden: | because in 1, you offer a single cap, and it supports a huge set of functionality | |
Zero Linden: | of course, practically, we recognize it is all a continuum: | |
Zha Ewry: | Not quite so much soapy.. as less RESTy | |
Zero Linden: | most systems on the internet to day, your session cookie is a single capability giving you ALL access | |
Tao Takashi: | why is it less RESTy then? :) | |
Saijanai Kuhn: | 1 seems worth doing for a CAP that returns [possibly] multiple caps. The seed-cap and the like | |
Zha Ewry: | As soon as the verb isn't one of the big four.. but.. an operation.. and the asset.. is not mewrely get/put/post/delete It get nervous making | |
Tao Takashi: | but isn't the verb GET here? | |
Zero Linden: | Where as a capability to post a comment (say) is still a cpaability of a range of different operations - like posting "I like it" vs. posting "yuck" | |
Neas Bade: | yeh. I'm confused by your comments zha | |
Tao Takashi: | maybe you mean #2? | |
Saijanai Kuhn: | so its https://{CAP} POST key1, key2, key3, etc | |
Zero Linden: | in other words if the function takes arguemnts, it is always a range of cuntionality | |
Saijanai Kuhn: | and you get back the standard dictionary as you oo know of key1=CAP1, etc | |
Morgaine Dinova: | Sai has copyright on that word | |
Zero Linden: | So, back to 3 vs. 1 | |
Neas Bade: | right, but one of the key differences is that GET https://{cap-url}/item/431 is fundamentally cachable by url | |
Zero Linden: | The problem with 1 is one of security | |
Zero Linden: | it was really easy to simple substitute the internal URL during the proxy | |
Day Oh: | But wait, aren't there types of data that can't go in a URI | |
Zero Linden: | whereas, picking off the variable part of the invoking URL and tacking that on to the end of the matched internal URL | |
Zha Ewry: | GET is.. but | |
Zero Linden: | was full of pitfalls | |
Zha Ewry: | Are we still pulling open the header to konw what we are doing? | |
Zha Ewry: | REST reissts that | |
Tao Takashi: | I would actually simply map that rest of the URL to my object tree | |
Zero Linden: | consider https://{inv-cap}/../../money/add-funds | |
Tao Takashi: | (should I do it with Zope) | |
Zero Linden: | see,you have to very carefully sanitize the path fragments | |
Zero Linden: | and the there are arguemtns | |
Zero Linden: | whereas, if you make a clean substitution here - internal for external - | |
Zero Linden: | THEN, the internal service has a clear security policy: | |
Zero Linden: | "trust everything in the URL, as it game from the original capability grantor; trust nothing in the body as it game from the invoker" | |
Zha Ewry nods | ||
Ahzzmandius Werribee: | zero, good point. | |
Zha Ewry: | Also.. the URL is easy to redirect on. without parsing the whole message | |
Tao Takashi: | good point but IMHO still expensive ;-) | |
Zha Ewry: | The body.. you have to open up the XML genie | |
Zero Linden: | So now, during say upload, the sim can grant a cap to the internal URL: http://localhost:12035/asset/upload/script?agent=xxxx&item=yyy | |
Zero Linden: | and the code at /asset/upload/script | |
Neas Bade: | that still smells funny to me | |
Zero Linden: | can trust with certainty who this upload is for | |
Tao Takashi: | looks not that RESTy internally ;-) | |
Zero Linden: | well - no, it is still a PUT (in this case) all the way: PUT from the viewer to the cap, proxy'd to a PUT to that internal URL | |
Tao Takashi: | but it could be /user/<agent>/inventory/<pathtoscript>/<item> (via PUT) | |
Saijanai Kuhn: | Would it be possible to have paths be abreviations to collections of services? | |
Zero Linden: | Actually, REST always allows the function at the end of the URL to use the path of the URL as a function input | |
Neas Bade: | wait a sec. the ../ stuff is just server parsed. There is no reason that .. in a url means go up | |
Zero Linden: | and REST, or HTTP, doesn't care a wit if it is in the path or the query args | |
Zero Linden: | Neas - well yes and no | |
Tao Takashi: | I thought that was one of the ideas but I still need to look into the REST details | |
Neas Bade: | the money counter example bothers me as a bigger fundamental issue | |
Zero Linden: | yes it does, but | |
Neas Bade: | "trust the url" seems like a bad design point | |
Zero Linden: | acutally, the URI spec DOES give meaning to .. in the context of URI schems that are path based | |
Neas Bade: | I think it will lead to trouble | |
Zero Linden: | AND most server frameworks will interpret it | |
Zero Linden: | since the caps system doesn't want to make assumptions about the system implementing the internal URLs, | |
Zero Linden: | it would have to be aware and filter such thigns | |
Tao Takashi: | if I'd do that in Zope and we get a .. it would actually go up but security checks will still kick in and the cap object in the middle might prevent going further up | |
Tao Takashi: | but it would mean that you have additional checks in there | |
Zha Ewry: | Ouch. .. is evil | |
Zero Linden: | well sure, But we want to make sure, at least here in LL, that using off the shelf things like Apache is easy to do | |
Zero Linden: | SO - no .. | |
Tao Takashi: | which not every system has or wants to implement | |
Neas Bade: | a straight up reject of urls with .. would be better | |
Neas Bade: | which you could do with a mod_rewrite rule very easily | |
Zero Linden: | it is even more evil, Zha, when you look at the the spec says about things like http://foo.com/.. and http://foo.com/aa/bb/../../../cc | |
Tao Takashi: | you can also prevent in apache to go further up with mod_rewrite I'd guess ;-) | |
Zero Linden: | Neas - and then ther eis the whole issue of safely merging query args.... | |
Zero Linden: | So - for the first caps server at LL, a year ago, we just said "eh, later...." | |
Zero Linden: | and have been happily working with style 3 caps for a very long time | |
Zero Linden: | so far, it has been just fine | |
Zha Ewry: | It takes you places. which are relaly bad, Zero. I've looked at that.. and a few other notations.. and.. because they aren't widely used. | |
Zha Ewry: | How much do you want to bet many of them are handled wrong in various tools? | |
Zero Linden: | Zha - oh, I'm sure they are! | |
Zero Linden: | As for caps and REST | |
Zero Linden: | here is the crux of the issue | |
Zero Linden: | REST explictly says that there is no inherit relation between http://foo.com/alpha and http://foo.com/alpha/beta | |
Zero Linden: | they are just two different resource names, | |
Zero Linden: | In general, you want a CAP to represent a bounded, set of functionality | |
Zha Ewry: | Right. Not allowed to assume containment | |
Zero Linden: | So, if a single CAP, say {inv-cap} is to offer access to two or more inventory items | |
Tao Takashi: | REST might say that but humans might think otherwise ;-) | |
Zero Linden: | there isn't really a REST argument to say that https://{inv-cap}/443 and https://{inv-cap}/981 | |
Zero Linden: | is better than POST to https:{inv-cap} with { item: 443 } | |
Neas Bade: | actually, not true | |
Zha Ewry sighs | ||
Zha Ewry: | The lack of containment.. in REST.. is to avoid.. a bunch of twisty assumptions | |
Zha Ewry: | But.. In this case.. wow. does it get in the way | |
Neas Bade: | because I can much more easily build a spreader around the url path | |
Zero Linden: | and having that return a CAP that you can then GET/PUT/POST to | |
Ahzzmandius Werribee: | it's starting to sound like using data within the URL is something that we want to avoid. 8-( | |
Zero Linden: | Neas - in so far as you only have one axis to "drill down on" and so it can be made more generic? | |
Tao Takashi: | so according to wikipedia POST stands for Create in CRUD | |
Tao Takashi: | is this wrong? | |
Vicero Lambert thinks going back tp punchcards would be good :) | ||
Vicero Lambert: | -to | |
Wyn Galbraith has some of those somewhere, unused. | ||
Zero Linden: | Tao - refernece? | |
Zero Linden: | I don't know what CRUD is (well, other than my old code when I look at it a year later...) | |
Tao Takashi: | http://en.wikipedia.org/wiki/Representational_State_Transfer | |
Tao Takashi: | Create, Retrieve, Update, Delete | |
Tao Takashi: | or Read I guess | |
Tao Takashi: | the 4 basic db operations | |
Zero Linden: | ah - that page says that it is often "compared with CRUD", not that it is defined by CRUD | |
Zero Linden: | and no, I think the comparison, especially with respect to POST, is poor | |
Tao Takashi: | maybe I should read Roy's chapter on it | |
Zero Linden: | Indeed | |
Zero Linden: | I should too | |
Tao Takashi: | but for now for me it gets more and more blurry what REST actually is and why it is good ;-) | |
Zero Linden: | Maybe we should get Roy to contribute or at least come to one of these! | |
Neas Bade: | the O'Reilly book on REST is *very* good | |
Zero Linden ponders that | ||
Zha Ewry: | The basic things about rest are that it works well, with cache | |
Tao Takashi: | except it adds a lot to our discussion :) | |
Neas Bade: | it just came out in May | |
Zha Ewry: | and with scale out, in general. | |
Zero Linden: | you mean "RESTful services" | |
Sammy Grigges: | hi guys | |
Zero Linden: | ? | |
Tao Takashi: | that POST would not work that good with a cache | |
Zero Linden: | okay - well, it is now 2pm | |
Neas Bade: | zero, yeh | |
Zero Linden: | and I've got to go | |
Ahzzmandius Werribee: | :-) | |
Zero Linden: | Neas - yes it is very nice | |
Vicero Lambert: | kk ttyl zero | |
Neas Bade: | it concerns me quite a bit that an asset get is doing to get done with a POST | |
Wyn Galbraith: | Thanks Zero. | |
Zero Linden: | I'm going to take this discussion as mandate that the capabilities page should be the next one for me to flush out | |
Tao Takashi: | Neas: I guess you need to forget all your implied meanings into those verbs ;-) | |
Wyn Galbraith has lots to think about. | ||
Malburns Writer: | tks zero | |
Zero Linden: | and we'll get to login on Thursday | |
Rex Cronon: | bye zero | |
Tao Takashi: | thanks Zero |