[9:47] Saijanai Kuhn: Enus got a version working the other day (photo at bottom) to get a ruthed avie sitting on the vaak sim which ihe got to via the login
[9:47] Saijanai Kuhn: spam the server with 50 python bots and see if it breaks
[9:48] Saijanai Kuhn: Tao envisions the pygop library to be a Python library like libsl, but with the new protocols only
[9:49] Saijanai Kuhn: so the test harnss code will obviously have a lot in common with pygop and may end up being based on pygop or pygop may be based on the test harness, I guess
[9:49] Zha Ewry: That uses place avatar and the AD Siaj?
[9:50] Saijanai Kuhn: in order to do more than just sit there, its going to need to support the existing UDP and the existing EventQueueGet because the transition to the new protocols is going to be very slow
[9:50] Saijanai Kuhn: so, for all practical purposes an functioning test harness bot is going to support all of what the current viewer and libsl does except regular login
[9:51] Umeko Kawanishi: Sai, the python bots used are pretty much no different from an avie in terms of loading a server, right?
[9:51] Tao Takashi: the idea was to base the actual test code on a library and thus pyogp.lib
[9:51] Tao Takashi: so things can be reused. both tests and lib will be work in profress for a long time anyway
[9:51] Saijanai Kuhn: so... ENus and I kind of figured that why not go that extra two inches and let it support the old login and et it be used for, I guess, regression testing as well?
[9:52] Tao Takashi: the question is then how much of the old protocol you want to preserve. If it's quite a bit maybe it makes a sense to create a library for the old protocol as well
[9:52] Saijanai Kuhn: so, if it works on the old and new protocols, its really a lightweight client
[9:53] Tao Takashi: it might actually be nice if both libs could support the same interface ;-)
[9:53] Saijanai Kuhn: Tao, right now, the ONLY part of the new protocol that e4xists, is the login. Everything else is "classic"
[9:53] Saijanai Kuhn: so, to get anything "useful" out of the bot, we have to supprt all the old protocols anyway
[9:53] Dahlia Trimble: python is a cool language but isnt a little on the slow side for handling networking for a full client?
[9:54] Saijanai Kuhn: its plenty fast for everythig but 3D drawing, Dahlia
[9:54] Tao Takashi: if you want to create bots with a lib now, that's right. But I thought the idea was to create a test harness for new protocol implementations (this might start with just a login and things get added while we go)
[9:54] Saijanai Kuhn: in fact, we've been talking about supporting 50 or 500 test bots using a single python script interpreter process
[9:54] Rex Cronon: who says u have to use it. once u know the protocol u can choose whatever language u want to implement it
[9:54] Dahlia Trimble: sure but things tend to grow in features
[9:55] Tao Takashi: well, hopefully just in features and not in concepts ;-)
[9:55] Saijanai Kuhn: I've heard that LL has used as many as 150 libsl bots on a single comp before, so I assume that we can get that many running with python
[9:56] Tao Takashi: well, depends on what the clients are doing. as long as they don't do graphics I guess that shouldn't be a problem
[9:56] Tao Takashi: eventlet is rather fast compared to the classic lib
[9:56] Saijanai Kuhn: right. the lightweight in lightweight client
[9:56] Tao Takashi: it maybe depends on how many messages you ignore ;-)
[9:57] Saijanai Kuhn: well, if you fail to bring na avie completely into the world, you get about 1/5 to 1/10 the packets per sec
[9:57] Tao Takashi: so what about the following process regarding libs: we try out more and more things with sample scripts and then try to make sense out of them in terms of how to build an interface which can be the same for old and new lib
[9:58] Saijanai Kuhn: so a phantom avie is less sstressful on a sever, but shouldn't matter if you're ignoring everything in the client
[9:58] Tao Takashi: I guess this is sort of what we are doing already
[9:58] Tao Takashi: just that login still does not work for me ;-)
[9:58] Teravus Ousley: yes, but only *very* slightly less stressful
[9:58] Saijanai Kuhn: ah, did you try that raw_login file, Tao?
[9:59] Tao Takashi: the question with stress tests is anyway if we can reproduce the same traffic as in a RL situation
[9:59] Teravus Ousley: haha, you still get all the prim within your FOV, and request all of the textures for all of the prim in your FOV
[9:59] Tao Takashi: the probability is very low I'd say
[9:59] Saijanai Kuhn: thinks that peole should cover their ears since we're talking about names of unreleased scripts
[10:03] Saijanai Kuhn: was thinking that we'll be using eventlet for this stuff, which kinda twists the loop mechanism for UDP and other packet handling inside out
[10:04] Saijanai Kuhn: Ihaven't a clue how to use that
[10:04] Saijanai Kuhn: I'd suggest we get donovan to give us a presentation, but he's moved on... Maybe Which?
[10:05] Saijanai Kuhn: so anyway, we'll need support for UDP, and the parsing for that is in my presence code, EventQueueGet, which is simple in theory, but haven't a clue what packets there are, and eventually, reverse http
[10:06] Tao Takashi: maybe I can reuse parts of the packet code I once wrote for the old lib
[10:06] Tao Takashi: but need to check how things changed actually
[10:06] Tao Takashi: as for eventlet, Which is a good idea :)
[10:06] Saijanai Kuhn: Enus or someone said that Zero had written a complete packet parser in the indra python module but I haven't found it yet
[10:07] Saijanai Kuhn: which leads to another issue. libsl precompiles 70,000+ lines of code for packet handling for maximum speed. WHich makes libsl pretty bloated
[10:09] Saijanai Kuhn: I gues the same thing could be done with python, if its not done already. If it IS done already, I wonder if there's some way to like specify code for WHICH packets need to be pre-compilled
[10:10] Tao Takashi: so the code for login looks like my own code.. my script gives a error message in XML that auth failed, Enus's script gives a 403: Forbidden
[10:12] Saijanai Kuhn: where did you get the indra library? I think I just grabbed it out of hte latest source code for the viewer
[10:13] Tao Takashi: ah, I got it. Actually my script also does not run but I catch the exception and print the contents which is the auth failure
[10:13] Saijanai Kuhn: so anyway, the final twist would be to use my idea of a separate script for GUI's sending commands via post, and use reverse http to establish a connection to the command script
[10:13] Tao Takashi: maybe I should test it with the Tao account
[10:14] Tao Takashi: I guess that logs me out here, right?
[10:19] Saijanai Kuhn: so, did you get the go on releasing the code?
[10:20] Tao Takashi: so where do I get the message templates from?
[10:20] Saijanai Kuhn: Tao and I have been discussing it, but no-one else can see it yet
[10:20] Saijanai Kuhn: Tao, I just grabbed them from the source code
[10:20] Enus Linden: i'm waiting to hear back from hamilton
[10:21] Tao Takashi: Enus: you also included the pyogp stuff. We should discuss how we best manage this stuff
[10:21] Tao Takashi: trying to find it in the source code :)
[10:21] Saijanai Kuhn: my MakePacketDict code uses it. But the regexp assumes everything is done with tabs, not spaces, and there's a few random templates that are formatted with spaces
[10:22] Enus Linden: i threw it in there just to play with hg mostly, u know that everything is subject to change dramatically... i still don't clearly understand the zca stuff, but havent really had time to play except to get that dirty login working-ish
[10:22] Saijanai Kuhn: so I reformatted the message_template file to only use tabs in the right spot
[10:23] Saijanai Kuhn: for some reason results = re.match("^\t([^\t{}]+.+)",line) fails if there are spaces...
[10:23] Tao Takashi: Enus: we should make a session where I can explain things. there isn't too much ZCA in there yet anyway
[10:23] Tao Takashi: the main question is how we handle those different packages
[10:23] Rex Cronon: u can first replace spaces with tabs
[10:24] Tao Takashi: in svn the buildout mainly references the source packages it needs to use with externals
[10:24] Saijanai Kuhn: Rex, thats what I did. I had a choice with making the parser obust, or reformatting the entire file.
[10:24] Tao Takashi: so they actually should be separate from the buildout package.. I don't know if hg supports something like subrepositories which I guess can be seen as externals
[10:25] Saijanai Kuhn: I got it working to the point I could run that test file. wheee
[10:25] Tao Takashi: so probably we make different repos for the components and write some script to set it up or something like that
[10:25] Tao Takashi: buildout could maybe also fetch the hg repos
[10:26] Saijanai Kuhn: not even sure what buildout does
[10:26] Tao Takashi: basically it's like a Makefile
[10:26] Saijanai Kuhn: ah, well I may have bypassed all that, not sure
[10:26] Tao Takashi: you can automate the creation of your development environment
[10:26] Enus Linden: fwiw, the freehg hosting solution is hopefully a temporary one. Q qould like an externally, moderated LL hosted hg repo in the future.
[10:26] Tao Takashi: it doesn't matter for the login script
[10:26] Enus Linden: but we can cross that bridge later
[10:27] Saijanai Kuhn: I'm using Eclipse with pydev, so I used hg to grab the files, than refernced them with Elclipse's project stuff
[10:27] Tao Takashi: I guess with hg it doesn't matter so much how write access looks like as everybody has a master copy
[10:27] Tao Takashi: I just wonder how you keep track of changes
[10:27] Tao Takashi: so I hope we do not spend ages on figuring out how to collaborate with hg instead of actually programming things ;-)
[10:28] Enus Linden: i'm with you there on hg, i think it's gonna be simple enough tao... i just want to plop a license.txt file and say "hey, look at enus' crappy script that he got from tao and sai and reading code", and "look at tao's inintial framework" and lets go make some noise
[10:28] Tao Takashi: CG also mentioned hg to be used someday for the client source. I would be interested on further thoughts about this, e.g. how collaboration can take place in e.g. sending patches in
[10:28] Saijanai Kuhn: Enus, were you the one who said there was a packets parser in the indra package?
[10:29] Saijanai Kuhn: KK. that could explain why I couldn't find it
[10:29] Tao Takashi: the thing is, what we do when we work on a script together
[10:29] Enus Linden: hg is envisioned my some at ll as where we are headed tao, where that stands, i dunno
[10:29] Tao Takashi: I guess this is the main idea behind open source ;-)
[10:29] Tao Takashi: or replace "script" by "component" maybe
[10:29] Tao Takashi: I don't think so much in scripts ;-)
[10:30] Tao Takashi: so I should play around a bit with hg
[10:30] Tao Takashi: we probably also need to write down some rules for collaboration
[10:30] Tao Takashi: I also tried to setup a trac with hg support but that did not really work
[10:31] Tao Takashi: and I again wonder how that can work with hg anyway.. does everybody have their own trac for their repo?
[10:32] Tao Takashi: wouldn't make sense.. so there needs to be a master repo and the question might be how people can put patches in there or if they are pulled etc.
[10:33] Tao Takashi: now let me search again for the message template ;-)
[10:43] Saijanai Kuhn: eh, first you must understand that cory was taking at least two mind altering substances when writing this and they created a conflict in his brain
[10:43] Teravus Ousley: zerocoding is a method of compression that puts all zeros int o, the format 0 and then the number of times Zeros occur after that
[10:43] Saijanai Kuhn: part of the packet is in little endian and part in big endian
[10:47] Tao Takashi: maybe the packet type should decide whether it's zerocoded or not
[10:47] Teravus Ousley: well, the packet has a different value (3rd byte) is zero coded determiner?
[10:47] Teravus Ousley: I forgot if it's the third byte..
[10:47] Tao Takashi: but I am talking here out of no knowledge of the system ;-)
[10:48] Saijanai Kuhn: wait, its not if its encoded, but to see how long it is
[10:48] Tao Takashi: it reminds me of a professor we once had teaching object oriented databased. we once had a workshop with him and we were trying to implement some basic db
[10:48] Tao Takashi: he knew everything about a C-compiler, actually mostly the internals and knew how to save 1-2 bits here and there quite well
[10:48] Saijanai Kuhn: the zero encode is in the first byte, but the length of the packet comes from teh packet ID number, which is encoded, so to determine how long the packet is, yo must first decode teh packet ID number, which tells you how long things will be that need to be decoded
[10:48] Tao Takashi: unfortunately this makes write-only code
[10:49] Saijanai Kuhn: because the trailing acks are not encoded
[10:49] Tao Takashi: ok, so how does a packet look in general?