Difference between revisions of "PyOGP Client Library"
Line 9: | Line 9: | ||
#Parse the data sent via the communication channels (event queue/UDP) | #Parse the data sent via the communication channels (event queue/UDP) | ||
#Start building out functionality in the client | #Start building out functionality in the client | ||
<br> | |||
It seems there is some desire to have the client be usable from a command line for such things as IM, checking friends online, viewing inventory, etc. | |||
== Tasks== | == Tasks== |
Revision as of 05:32, 10 July 2008
This page is dedicated to the client library aspect of the Pyogp project. The more general page is Pyogp.
Overview
The longer term vision of the Pyogp project is essentially to create a client library, capable of navigating the grid and interacting with the various hosts, sitting next to a testing framework, happily running along telling us what works where, and where something needs a little attention to work according to specification... In the long, long run, the Client lib could be used as the basis for a lightweight client written in Python.
Objectives
On the wiki page Protocol, there is a list of all the protocols that SL currently uses. We plan on implementing any and every protocol we can. We want the client library to have as much functionality as possible, keeping in mind that it is lightweight. However, we would like to prioritize the features we implement. Pyogp should be a client for both the Legacy protocols and OGP protocols, as they become implemented. Currently, the priority list is:
- Login
- Establish/maintain presence
- Parse the data sent via the communication channels (event queue/UDP)
- Start building out functionality in the client
It seems there is some desire to have the client be usable from a command line for such things as IM, checking friends online, viewing inventory, etc.
Tasks
Task list for the client library. These may get PJIRA tasks someday, or some other format we decide upon.
- Start looking over and learning Eventlet most of the other documentation listed on this page
- Decide whether to doctest or not to doctest. We are certainly planning to use unittest
- Develop requirements specification - let's first get an idea of what it is, exactly, that we want to build
- Requirements
- Use Cases - these might help to identify how the lib might be used by someone. We should look at these and determine which of the use cases we want to implement.
- Identify target audience and the corresponding limitations - this project is not meant solely for Linden Lab, so we should identify who could use it and how they may use it
- Design the structure of the code according to the spec
- Taking into consideration some of the following:
- Must work for both Legacy and OGP (any Login or other protocols must be interfaced so to be implemented by Legacy or OGP)
- Flexibility to allow different ways to communicate between the client and server (e.g. either eventlet, urllib2, etc.)
- Taking into consideration some of the following:
- Implement the design
- Determine how to distribute the code so nobody's toes hurt and no elbows bumped
Tasks that have been recently completed:
- Determine whether to ZCA or not to ZCA - ZCA enables flexibility via modularity with a component based framework. The intent would be to incorporate this into the library, while the test harness bits would remain 'stock' python. Tao Takashi will extend his initial attempt at this one for AWG and LL to review early next week.
- Decide whether or not to incorporate buildout
Status
- Current Pyogp Repo - svn repo of the most up-to-date code we are using for the project
- Current_Sim_Capabilities - capabilities that are currently used
- Tao Takashi's Pyogp - svn repo - Tao Takashi has hit the ground running with an experimental framework which has been made available here.
- Read more at his blogpost describing the start of his work at his very long url.
- Sai's Presence and Sai's Presence_cmd_line - Saijanai Kuhn's first attempts at some Python presence
- Linden Pyogp - svn repo of Linden's first stab at framework, using Sai's code as a base
- pyogp.lib-login.py - sample script which logs into aditi's agent domain and establishes a presence on a simulator on vaak:
- Disclaimer*: Everything in the repo now will change dramatically in the next few weeks as things firm up structure wise. My desires for the work include: a simple, well defined library, a separate test framework (unittest, the initial high level code to be added this week), an samples/examples sandbox, and clean well commented code. That said, none of the above are in place now. They will be. More sophisticated implementations can evolve over time, or can be included on the side of the library...
- Example_protocol_code - code written about login and presence
- Interop Ruths - some news that may be of interest to us
- Pyogp/Protocols - here's a listing of the protocols that we may implement, and the implementation details about them as well.
Documentation
- AWG_Test_Harness_Intro
- Pyogp/Client_Lib/Notes - notes that may help understand the rest
- Current Protocols
- Current_login_protocols - what login is like now
- OGP Protocols
- SLGOGP_Draft_1 - the outline of the OGP protocols
- OGP Draft Login flowchart - flowchart for current OGP login protocols
- SLGOGP_Teleport_Strawman - what login may be like
- Second_Life_Login_API_Strawman - what login may be like
- OGP_Draft_Login - diagrams of the OGP login
- General Notes
- Second_Life_Grid_Protocols/Foundation - general protocol information
- Protocol - this is general information about messaging and the various protocol systems
- COMET programming
- Eventlet - a networking library written in Python, probably going to be used for this project
- NOTE: We have been testing eventlet and it seems there's a problem posting to the seed capability.
- Pyogp_Client_Lib/Login_Test_Script - a very simple test script using eventlet that fails at the post to the seed cap
- Windows Instructions - Eventlet for Windows is a bit tricky to install
- User:Baba_Yamamoto/Eventlet - there are some problems with eventlet that Baba has looked into
- greenlet - you MUST have Visual Studio 2003 installed to install greenlet on windows (are there binary versions?). Use easy_install greenlet to install it.
- pyOpenSSl - windows versions
- pyOpenSSL py2.4 - windows pyOpenSSL for Python 2.4
- pyOpenSSL py2.5 - windows pyOpenSSL for Python 2.5
- util.py - has a dependency on fcntl. Go into eventlet's util.py, and either comment out all the fcntl calls, or for a slightly (not a good fix) better solution, Donovan's Fix
- NOTE: We have been testing eventlet and it seems there's a problem posting to the seed capability.
- Circuit - the way to pass two-way information along a UDP connection
- Message - more detail of messages
- Reverse_HTTP - I believe this is used (or will be) in the OGP protocols
- General Packet Format - libsecondlife - describes what the general format is for a packet
- ACKs - libsecondlife - describes what an ACK is
- Coding notes
- ZCA Guide - ZCA that the lib project will be using
- Python Docs
- DistUtils -
- Python Eggs -
- setuptools - lib to handle eggs
Components (and supporting environmental details)
These are the currently envisioned components.
- Login
- The beta grid has an agent domain login accessible at https://login1.aditi.lindenlab.com/cgi-bin/auth.cgi
- Parameters = firstname, lastname, password (or md5-password as '$1$' + md5-hash)
- Regionuri list (log into the agent domain running on aditi, show up on vaak!). Use the regionuri parameter in viewers built from http://svn.secondlife.com/trac/linden/browser/branches/agent-domain-2
- Note: people working with the agentd suggest trying one of 12035, 13000, 13001, and 13002. They say at LEAST 2 will work.
- http://sim1.vaak.lindenlab.com:13000 Dore
- http://sim1.vaak.lindenlab.com:13001 Card
- http://sim1.vaak.lindenlab.com:13002 Grigiano
- http://sim1.vaak.lindenlab.com:12035 Island for Misfit Toys
- http://sim2.vaak.lindenlab.com:12035 Ahern
- http://sim2.vaak.lindenlab.com:13000 Miramare
- http://sim2.vaak.lindenlab.com:13001 Morris
- Capabilities (and while it's around, the UDP pipe)
- Message Handlers for the event queue(see chttp, SLGOGP_Draft_1#Event_Queues)
- Current way this is handled is by having the client have a non-ported web server running in the viewer which handles the messages by parsing URLs in a local manner
- Basic web server parts for the Agent, Region and grid bits (ideally a snap in framework)
Licensing
- The code written as part of this effort is subject to the Apache v2 license. Read more at http://opensource.org/licenses/apache2.0.php.
<excerpt> Copyright 2008, Linden Research, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. </excerpt>