Difference between revisions of "PyOGP"

From Second Life Wiki
Jump to navigation Jump to search
(Added another archive)
 
(144 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{PyOGP/navigation}}
== Overview ==
== Overview ==
[[AWG]] ([[AW_Groupies|in-world discussion group page]]) and Linden Lab plan to share the effort in writing a [[Pyogp_Test_Harness|test harness]] which executes tests against implementations of the Open Grid Protocol [[SLGOGP_Draft_1|(OGP)]]. The intent is not to test SL or OpenSim (or gridX) themselves. Rather, the desire is to create a framework where the implementations of the protocols can be tested in any virtual environment implemented per the Open Grid Protocols as documented. We plan to be able to test at the smallest functional level possible, akin to unit testing, and to have the ability to use the framework to sequence steps to enable state specific tests to be run.


The longer term vision is essentially a [[Pyogp_Client_Lib|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...
=== What Is It? ===


For a smidge more detail on OGP, see a visual representation of the upcoming [[Open_Grid_Platform_Projects_Q2-Q3 | projects]] and a general [https://wiki.secondlife.com/wiki/Structural_Design_Overview introduction].
Pyogp is an open source project to explore a suite of python based Second Life client libraries and to produce an automated testing framework.  


== Project Status ==
PyOGP is useful for:
* learning more about Second Life's client-server relationship
* prototyping client side features
* quickly writing tests for software which communicates using LLMessageSystem-like messages
* demonstrating protocol proposals
* building test suites which validate Second Life simulator and grid functionality


*Current Interop project status - [[Interop_Live_Protocol]]
=== Getting Started ===
*First stab at framework is available at https://svn.secondlife.com/svn/linden/projects/2008/pyogp/
*Sample script which logs into aditi's agent domain and establishes a presence on a simulator on vaak: https://svn.secondlife.com/svn/linden/projects/2008/pyogp/examples/pyogp.lib-login.py


See [[PyOGP Client Library Development Sandbox]] for instructions on the mechanics of working with the PyOGP package suite.


We have a few decisions to make:
For a more comprehensive overview of working within the structure of classes and event systems in PyOGP packages, take a look at [[PyOGP Client Library]].
*[http://www.muthukadan.net/docs/zca.html ZCA] or no 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.
*Incorporate [http://pypi.python.org/pypi/zc.buildout/1.0.0b30 buildout]?
*Test framework: To [http://docs.python.org/lib/module-doctest.html doctest] or not to doctest? We are certainly planning to use [http://docs.python.org/lib/module-unittest.html unittest]
*Determine how to handle test data. I imagine we'll build a template and interface to an implementation of the template, and leave contents up to the developer.


== Roadmap ==
=== How To Contribute ===
For reference, the high level protocol docs can be viewed at:
* Source: [[Pyogp/Client_Lib/The_Development_Sandbox | Checkout Instructions]]. See the [[Open_Source_Portal|Open Source Portal]] for details on being a contributor
*Open Grid Protocol [https://wiki.secondlife.com/wiki/SLGOGP_Draft_1 Draft]
* in-world group: pyogp (open enrollement)
* IRC: irc://irc.freenode.com/#pyogp
* Jira: http://jira.secondlife.com/browse/OPEN
* Related Meetings
** Enus Linden's office hours: Friday @ 1:00 http://slurl.com/secondlife/Longfellow/9/97/28


At a high level, the roadmap to the buildout of the client and domain specific libraries and test harness look something like this (details below):
== Project Status ==
#Milestone 1
##Identify basic library structure and test harness frameworks
##Develop coding conventions and standards to the extent this makes sense (group concensus rules)
##Build out basic lib (common), agent, login (ogp and legacy), capabilities client classes
##*Establish and maintain presence on a simulator
##*Test agent domain login (Infinity is taking a first stab at test cases, link here when available)
#Milestone 2
##Extend the client library, as well as agent domain and simulator libraries (region domain exists only as simulators at this point)
##*Start properly handling communication with simulator
##Test agent domain and simulator changes for OGP
##Test OGP teleport
 
== Roadmap Expanded ==
Details with links and the link to support the work we will do. Enus needs to coordinate surfacing some docs to the public as soon as possible
 
#Milestone 1
##Identify basic library and test harness frameworks
##*[https://svn.secondlife.com/svn/linden/projects/2008/pyogp/pyogp pyogp library] - final structure TBD
##*[https://svn.secondlife.com/svn/linden/projects/2008/pyogp/ogptest pyogp test harness] - just a shell at this point
##Develop coding conventions and standards to the extent this makes sense (group concensus rules) - Enus will make this an agenda item for the AWG meeting Tuesday June 25
##Build the first components
##*Build out basic lib (common), agent, login (ogp and legacy), capabilities client classes - Initial stabs at first components:
##*#https://svn.secondlife.com/svn/linden/projects/2008/pyogp/pyogp/lib
##*#https://svn.secondlife.com/svn/linden/projects/2008/pyogp/pyogp/client
##*We need to build login to an OGP enabled agent domain as defined in https://wiki.lindenlab.com/wiki/Agent_Domain_Login and the externally visible https://wiki.secondlife.com/wiki/SLGOGP_Draft_1#Login.
##*https://wiki.secondlife.com/wiki/Capabilities defines to some degree Capabilities
##*Agents, hmm, i see no definition. We'll start defining agent attributes via what is required by login and simulator interactions.
##*Establish and maintain presence on a simulator
##*#https://svn.secondlife.com/svn/linden/projects/2008/pyogp/examples/pyogp.lib-login.py
##*Test agent domain login (Infinity is taking a first stab at test cases, link here when available)
#Milestone 2
##Extend the client library, as well as agent domain and simulator libraries (region domain exists only as simulators at this point)
##*Start properly handling communication with simulator
##**See https://wiki.secondlife.com/wiki/Protocol
##*Enable teleport between sims
##**see https://wiki.secondlife.com/wiki/SLGOGP_Teleport_Strawman
##Test agent domain and simulator specific calls that are changed for OGP
##Test OGP teleport


== Technical Detail ==
PyOGP has moved to https://bitbucket.org/account/user/lindenlab/projects/PYOG
Not much here yet... As the library grows, so does the need for documentation.  


#The beta grid has an agent domain login accessible at https://login1.aditi.lindenlab.com/cgi-bin/auth.cgi
client_proxy is now stable[https://lists.secondlife.com/pipermail/pyogp/2010-June/000255.html], though it's only logging things currently.  
#Currently available 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/interop-2, or better yet for this effort, use a pyogp script!
#*#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


== Open Topics ==
Note: I think the official repository got lost when bitbucket abandoned mercurial. I saved a copy of the 3 repositories: https://bitbucket.org/tapplek/ [[User:Tapple Gao|Tapple Gao]] ([[User talk:Tapple Gao|talk]])
#Repository - So Mercurial, aka hg, was looking promising, but we decided internally that we aren't quite ready for that. There is a move toward Mercurial internally, but we need to work this out before moving forward with it on this effort. It is quite possible that this library and test harness work will become a guinea pig for hg with Linden Lab in the open source arena. Until then, I bring you pyogp on SVN: http://svn.secondlife.com/trac/linden/browser/projects/2008/pyogp.
# Contributions - As we are going to be hosting the source code for this, contributions will be subject to Linden Lab's standard [http://secondlifegrid.net.s3.amazonaws.com/docs/SLVcontribution_agmt.pdf contributor's agreement]. I hope this doesn't prevent good work here...
#License - The Apache V2 License has been selected as the license of choice for pyogp (or whatever name we agree upon, see next point).
#Naming (I'd like to not debate for an hour on these. Tao had suggestions, I like em. Please speak up if you have strong reservations about the suggested naming).
#*Python client library name - pyogp
#*Python test framework (unittest/doctest) - ogptest
#Discussion Times - Despite Enus heading out for a 3 week vaca on the right coast of the usa, I'll set up an office hours time of sorts to meet with AWG and Lindens to chat about progress and next steps. Coming soon to a gcal near you.


== Components (and supporting environmental details)==
Another archive of the repositories that were non-empty in [https://bitbucket-archive.softwareheritage.org/projects/li/lindenlab/ the softwareheritage.com capture]: https://github.com/orgs/SL-PyOGP/repositories [[User:Kadah Coba|Kadah Coba]] ([[User talk:Kadah Coba|talk]])
Initial stubs at a library codebase and directory structure can be found here using your favorite Subversion client:<br>
* [[Pyogp_Client_Lib]] - wiki dedicated to the client lib
* https://svn.secondlife.com/svn/linden/projects/2008/pyogp/ - svn repo for the current pyogp project<br>
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...


These are the currently envisioned components.
== Pic of the Moment ==
#Login
[[Image:355571.jpg|900x835px|the EnusBots are coming!]]
#*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
#*#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
#Caps (and while it's around the UDP pipe)
#Message Handlers (see chttp)
#Basic web server parts for the Agent, Region and grid bits (ideally a snap in framework)
#Test framework - unittest, doctest
#Test data (I put this here, not really as a component of the harness, more as a "i'm not telling you my test account's password and what are we gonna do about it" thing)


 
Image used with permission. Taken by [[User:Opensource_Obscure|Opensource Obscure]]. (thanks oo! <3)
Tao Takashi has hit the ground running with an experimental framework which has been made available [http://code.google.com/p/pysecondlife/ here]. Read more at his blogpost describing the start of his work at his very long [http://mrtopf.de/blog/secondlife/worldofsl/setting-up-a-framework-for-a-python-implementation-of-the-open-grid-protocol-technical url]. Once a repository is available, I'd plan to pull this in.
 
== Links ==
Please add to the list as you see fit. The more we throw in here, the better off we are in the long run.
=== Project pages ===
*[[Pyogp_Client_Lib|Python Client Library]]
*[[Pyogp_Test_Harness|Pyogp Test Harness]]
*Internal jira tracking Linden Lb's involvement with the work: uh, I'll get back to you.
*Naming - Python client library name - pyogp
*Repository - http://svn.secondlife.com/trac/linden/browser/projects/2008/pyogp.
*Contributions - Enus, Infinity, and Locklainn will be working this internally, as well as AWG contributors (subject to the contributor's agreement). Tao Takashi and Saijanai Kuhn will be more engaged than most on this work.
*License - The Apache V2 License has been selected as the license of choice for pyogp.
*Communication
**IRC: irc://irc.freenode.com/#pyogp
**mailing list: TBD
**Discussion Times - Despite Enus heading out for a 3 week vaca on the right coast of the usa, I'll set up an office hours time of sorts to meet with AWG and Lindens to chat about progress and next steps. Coming soon to a gcal near you.
**External Wiki: https://wiki.secondlife.com/wiki/AWG_Test_Harness
 
=== OGP documentation ===
A request has been made to keep docs more current
*[[SLGOGP_Draft_1 | Primary OGP Draft]]
*[[SLGOGP_Teleport_Strawman | Teleport Strawman]]
=== AWG Test Harness ===
*[http://svn.secondlife.com/trac/linden/browser/projects/2008/pyogp|SVN code repository for pyogp]
*[[AWG_Test_Harness_Intro]]
**Sample (aka crude) agent domain login [http://svn.secondlife.com/trac/linden/browser/projects/2008/pyogp/examples/pyogp-login.py script].
*Tao Takashi's [http://code.google.com/p/pysecondlife/ prototype]. Also, an intro to [http://www.muthukadan.net/docs/zca.html Zope Component Architecture].
*The popular [[Reverse_HTTP]], slotted for inclusion to the client lib/test harness
 
=== Related scripting efforts ===
*Saijanai Kuhn's [[Presence_Code_Python]] and [[Presence_Code_Python_cmd_line]]
=== Related Chat Logs ===
*April: [[AWGroupies-2008-04-29|AW Groupies 29 April]]
*May: [[AWGroupies-2008-05-20|AW Groupies 20 May]]  &middot; [[User:Which_Linden/Office_Hours/2008_May_22| Which LInden Office Hours 22 May]]
*June: [[User:Zero_Linden/Office_Hours/2008_June_19|Zero Linden Office Hours 19 June]] [[AWGroupies-2008-06-24|AW Groupies 24 June]] [[User:Zero_Linden/Office_Hours/2008_June_24|Zero Linden Office Hours 24 June]]
 
=== irc ===
* irc://irc.freenode.net/#pyogp
===AWG In-world discussion group===
* [[AW_Groupies]]


== Licensing ==
== 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.
Contributions to Pyogp are subject to Linden Lab's [[Linden_Lab_Official:Contribution_Agreement|Contribution_Agreement]]. The Pyogp open source code is made available subject to the Apache v2 license. Read more at [http://opensource.org/licenses/apache2.0.php opensource.org] and [http://www.apache.org/licenses/LICENSE-2.0 apache.org].


   <excerpt>
   <excerpt>
Line 170: Line 61:
   </excerpt>
   </excerpt>


== Picture of the Moment ==
== History ==
# 05/29/08: Using quite nasty code, a first contact of sorts via python into the agent domain and onto a simulator:[[Image:Pyogp_roots.jpg|thumb|left| pyogp and ad enabled sl viewer on a vaak sim via aditi's agent domain]]
 
Linden Lab and the [[AWG]] ([[AW_Groupies|in-world discussion group page]]) worked together to develop a set of open protocols called the [[Open Grid Protocol]] that can be used to create a virtual world where regions are independently operated (not only by Linden Lab). The project aimed to allow people (organizations, individuals, and the like) to host their own regions in the virtual world and be able to interact and communicate with people in regions hosted elsewhere. In essence, the project's goal was to allow open-source region hosting.
 
AWG and Linden Lab plan to share the effort in writing a test harness that executes tests against implementations of the Open Grid Protocol.
 
The intent is not to test SL or OpenSim (or gridX) themselves. Rather, the desire is to create a framework where the implementations of the protocols can be tested in any virtual environment implemented per the Open Grid Protocols as documented. The goal is to use the test harness to test the implementations to make sure that the virtual environment is interoperable with the other virtual environments that have implemented the OGP. However, we also plan to test the current SL protocols (the Legacy protocols). We plan to be able to test at the smallest functional level possible, akin to unit testing, and to have the ability to use the framework to sequence steps to enable state specific tests to be run.
 
The longer-term vision is essentially a [[Pyogp_Client_Lib|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...
 
For more detail on OGP, see a visual representation of the upcoming [[Open Grid Platform Projects Q2-Q3|projects]] and a general [[Structural Design Overview|introduction]].
 
=== Notes from the kickoff meeting ===
 
At the AWG meeting held April 29, 2008, we discussed what a test harness could look like that would be used to test the agent-domain, rez-avatar, and overall work being done implementing the open grid protocols. I'd like to summarize, and continue the discussion on the mailing list, in-world, and on the wiki. See [[AWGroupies-2008-04-29|meeting chat log]].
 
How do we start?
 
Let's work on defining the test harness components (from the meeting):
# Login
# Caps (and while it's around the UDP pipe)
# Message Handlers (see chttp)
# Basic web server parts for the Agent, Region and grid bits (ideally a snap in framework)
# Test framework
# Test data (I put this here, not really as a component of the harness, more as a "i'm not telling you my test account's password and what are we gonna do about it" thing)
 
Python seems to be the flavor of choice here, with a requirement that it accommodate non-python components as needed. The repository for the code is proposed to be maintained by Linden Lab, distributed as an open source export, under the Apache v2 License (see http://opensource.org/licenses/apache2.0.php). The process and details here are tentative, and need more attention...
 
There is plenty to be figured out. How to start, who wants to play, details are all TBD. My role is primarily intended as one who will facilitate dialogue and contribute as much as possible, but this is intended as a joint effort.
 
-- Enus Linden


[[Category:Architecture Working Group]]
[[Category:Grid_Interoperability]]
[[Category: Pyogp|*]]
[[Category:Pyogp_Kitchen_Sink]]
[[Category: AW Groupies]]
[[Category: AW Groupies]]
[[Category:Automated Testing]]

Latest revision as of 03:19, 13 September 2022

Overview

What Is It?

Pyogp is an open source project to explore a suite of python based Second Life client libraries and to produce an automated testing framework.

PyOGP is useful for:

  • learning more about Second Life's client-server relationship
  • prototyping client side features
  • quickly writing tests for software which communicates using LLMessageSystem-like messages
  • demonstrating protocol proposals
  • building test suites which validate Second Life simulator and grid functionality

Getting Started

See PyOGP Client Library Development Sandbox for instructions on the mechanics of working with the PyOGP package suite.

For a more comprehensive overview of working within the structure of classes and event systems in PyOGP packages, take a look at PyOGP Client Library.

How To Contribute

Project Status

PyOGP has moved to https://bitbucket.org/account/user/lindenlab/projects/PYOG

client_proxy is now stable[1], though it's only logging things currently.

Note: I think the official repository got lost when bitbucket abandoned mercurial. I saved a copy of the 3 repositories: https://bitbucket.org/tapplek/ Tapple Gao (talk)

Another archive of the repositories that were non-empty in the softwareheritage.com capture: https://github.com/orgs/SL-PyOGP/repositories Kadah Coba (talk)

Pic of the Moment

the EnusBots are coming!

Image used with permission. Taken by Opensource Obscure. (thanks oo! <3)

Licensing

Contributions to Pyogp are subject to Linden Lab's Contribution_Agreement. The Pyogp open source code is made available subject to the Apache v2 license. Read more at opensource.org and apache.org.

 <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>

History

Linden Lab and the AWG (in-world discussion group page) worked together to develop a set of open protocols called the Open Grid Protocol that can be used to create a virtual world where regions are independently operated (not only by Linden Lab). The project aimed to allow people (organizations, individuals, and the like) to host their own regions in the virtual world and be able to interact and communicate with people in regions hosted elsewhere. In essence, the project's goal was to allow open-source region hosting.

AWG and Linden Lab plan to share the effort in writing a test harness that executes tests against implementations of the Open Grid Protocol.

The intent is not to test SL or OpenSim (or gridX) themselves. Rather, the desire is to create a framework where the implementations of the protocols can be tested in any virtual environment implemented per the Open Grid Protocols as documented. The goal is to use the test harness to test the implementations to make sure that the virtual environment is interoperable with the other virtual environments that have implemented the OGP. However, we also plan to test the current SL protocols (the Legacy protocols). We plan to be able to test at the smallest functional level possible, akin to unit testing, and to have the ability to use the framework to sequence steps to enable state specific tests to be run.

The longer-term vision is essentially 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...

For more detail on OGP, see a visual representation of the upcoming projects and a general introduction.

Notes from the kickoff meeting

At the AWG meeting held April 29, 2008, we discussed what a test harness could look like that would be used to test the agent-domain, rez-avatar, and overall work being done implementing the open grid protocols. I'd like to summarize, and continue the discussion on the mailing list, in-world, and on the wiki. See meeting chat log.

How do we start?

Let's work on defining the test harness components (from the meeting):

  1. Login
  2. Caps (and while it's around the UDP pipe)
  3. Message Handlers (see chttp)
  4. Basic web server parts for the Agent, Region and grid bits (ideally a snap in framework)
  5. Test framework
  6. Test data (I put this here, not really as a component of the harness, more as a "i'm not telling you my test account's password and what are we gonna do about it" thing)

Python seems to be the flavor of choice here, with a requirement that it accommodate non-python components as needed. The repository for the code is proposed to be maintained by Linden Lab, distributed as an open source export, under the Apache v2 License (see http://opensource.org/licenses/apache2.0.php). The process and details here are tentative, and need more attention...

There is plenty to be figured out. How to start, who wants to play, details are all TBD. My role is primarily intended as one who will facilitate dialogue and contribute as much as possible, but this is intended as a joint effort.

-- Enus Linden