europython 2008: tear down the walls (of virtual worlds)
Post on 14-Sep-2014
8.540 views
DESCRIPTION
This is my presentation about the plan to tear down the walls between virtual worlds I held at EuroPython 2008 in Vilnius, Lithuania. It explains what the problem is and how we in the Architecture Working Group try to solve it. It also introduces some concepts of the Open Grid Protocol and introduces pyogp, a library trying to implement this protocol in Python.TRANSCRIPT
all photos by Torley Wong and Tao TakashiEuroPython 2008
THE
WALLS!DOWNTEAR
Christian Scholz
http://mrtopf.de
BlogPodcast
Videoblog
daily show
TopfShow
TopfCast
Tao Takashi on Air
virtual worlds interoperabilitywith Python
virtual worlds interoperabilitywith Python
pyogp
pyogp?
pyogp?Python Open Grid Protocol
Tao Takashi
virtual world
WALLEDGARDENS
WALLEDGARDENS
TEAR DOWN THE
WALLS
Happily now, Second
Life has been proven to
exist. If we disappeared
tomorrow, the grid
would be rebuilt by you.
AWGArchitecture Working Group
OGPOpen Grid Protocol
AWGArchitecture Working Group
GOALS
AWGArchitecture Working Group
GOALSScalability
AWGArchitecture Working Group
GOALSExtensibility
Scalability
AWGArchitecture Working Group
GOALSExtensibility
Standardization
Scalability
INTERNETBUILDING
THEOF THEFUTURE
How does our world look like?
SL REGION
REGION DOMAIN
AGENT DOMAIN
REGION DOMAIN
AGENT DOMAIN• Profiles• Groups• Instant Messaging• Contacts/Friends• Inventory (Object Store)
AGENT DOMAIN
REGION DOMAIN
• World Simulation• Physics Simulation• Script Execution• Local Object Store
AGENT DOMAIN
REST Interface
Database
Agent Hosts
AGENT DOMAIN
REST Interface
Database
Agent Hosts
OGP
REGION DOMAIN
REST Interface
Database
Region Hosts
REGION DOMAIN
REST Interface
Database
Region Hosts
OGP
AGENT DOMAIN
REGION DOMAIN
AGENT DOMAINAGENT DOMAIN
REGION DOMAINREGION DOMAIN
AGENT DOMAIN
REGION DOMAIN
AGENT DOMAIN
AGENT DOMAIN
REGION DOMAIN
REGION DOMAIN
AGENT DOMAIN
REGION DOMAIN
AGENT DOMAIN
AGENT DOMAIN
REGION DOMAIN
REGION DOMAIN
AGENT DOMAIN
REGION DOMAIN
AGENT DOMAIN
REGION DOMAIN
REGION DOMAIN
AGENT DOMAIN
REGION DOMAIN
AGENT DOMAIN
REGION DOMAIN
REGION DOMAIN
TRUST!
ingredients
CAPS
CAPSauthorization
Capabilities
private URL
Capabilities
private URLhttp://inventory/tao/
Capabilities
private URLpublic URLhttp://host/caps/16762762762 http://inventory/tao/
internet intranet
http://host/caps/16762762762 http://inventory/tao/
Capabilities
internet intranet
Capabilities Serverhttp://host/caps/16762762762 http://inventory/tao/
Capabilities
Seed CapabilityAgent Dom
ain
Seed Capabilityhttp://host/caps/1676-a2762-762
Agent Domain
Seed Capabilityhttp://host/caps/1676-a2762-762
{“caps“: [“inventory“]}
Agent Domain
Seed Capabilityhttp://host/caps/1676-a2762-762
{“caps“: [“inventory“]}
{“inventory“: “http://.../cap/16778722“}
Agent Domain
RHTTP
RHTTPreverse HTTP
REQUEST
REQUEST
RESPONSE
REQUEST
REQUEST
RESPONSE
COMETlong polling
REQUEST
RESPONSE
REQUEST
REQUESTUpgrade: PTTH/1.0
REQUESTUpgrade: PTTH/1.0
RESPONSEStatus: 101
REQUESTUpgrade: PTTH/1.0
REQUEST
RESPONSEStatus: 101
REQUESTUpgrade: PTTH/1.0
REQUEST
RESPONSE
RESPONSEStatus: 101
REQUESTUpgrade: PTTH/1.0
REQUEST
RESPONSE
REQUEST
RESPONSEStatus: 101
REQUESTUpgrade: PTTH/1.0
REQUEST
RESPONSE
REQUEST
RESPONSE
RESPONSEStatus: 101
POST / HTTP/1.1 Host: localhost:9999 Accept-Encoding: identityUpgrade: PTTH/0.9
POST / HTTP/1.1 Host: localhost:9999 Accept-Encoding: identityUpgrade: PTTH/0.9
HTTP/1.1 101 Switching ProtocolsContent-type: text/plainUpgrade: PTTH/0.9Date: Tue, 13 May 2008 20:14:45 GMTContent-Length: 0
POST / HTTP/1.1 Host: localhost:9999 Accept-Encoding: identityUpgrade: PTTH/0.9
GET / HTTP/1.1Host: 127.0.0.1:65331Accept-Encoding: identityaccept: text/plain;q=1,*/*;q=0
HTTP/1.1 101 Switching ProtocolsContent-type: text/plainUpgrade: PTTH/0.9Date: Tue, 13 May 2008 20:14:45 GMTContent-Length: 0
POST / HTTP/1.1 Host: localhost:9999 Accept-Encoding: identityUpgrade: PTTH/0.9
HTTP/1.1 200 OK Content-type: text/plain Date: Tue, 13 May 2008 20:14:45 GMT Content-Length: 15 rdlrow ,olleH
GET / HTTP/1.1Host: 127.0.0.1:65331Accept-Encoding: identityaccept: text/plain;q=1,*/*;q=0
HTTP/1.1 101 Switching ProtocolsContent-type: text/plainUpgrade: PTTH/0.9Date: Tue, 13 May 2008 20:14:45 GMTContent-Length: 0
whereisdasnake?
REGION DOMAIN
AGENTDOMAIN
REGION DOMAIN
AGENTDOMAIN
login
REGION DOMAIN
AGENTDOMAIN
loginplace_avatar
REGION DOMAIN
AGENTDOMAIN
loginplace_avatar
REGION DOMAIN
AGENTDOMAIN
login
interact
place_avatar
credentials = PlainPasswordCredential(
firstname, lastname, password)
agentdomain = AgentDomain(loginurl) agent = agentdomain.login(credentials)
place = IPlaceAvatarAdapter(agent) region = Region(regionurl)
avatar = place(region)
credentials = PlainPasswordCredential(
firstname, lastname, password)
agentdomain = AgentDomain(loginurl) agent = agentdomain.login(credentials)
credentials = PlainPasswordCredential(
firstname, lastname, password)
agentdomain = AgentDomain(loginurl) agent = agentdomain.login(credentials)
pyogp
Agent Domain
credentials = PlainPasswordCredential(
firstname, lastname, password)
agentdomain = AgentDomain(loginurl) agent = agentdomain.login(credentials)
pyogp loginurl
Agent Domain
credentials = PlainPasswordCredential(
firstname, lastname, password)
agentdomain = AgentDomain(loginurl) agent = agentdomain.login(credentials)
pyogp loginurl
LLSD(credentials)
Agent Domain
credentials = PlainPasswordCredential(
firstname, lastname, password)
agentdomain = AgentDomain(loginurl) agent = agentdomain.login(credentials)
pyogp loginurl
LLSD(credentials)
{‘seedcap‘:‘<url>‘}
Agent Domain
agentdomainseed_caplogin_url
agentdomainseed_caplogin_url
agent
place = IPlaceAvatarAdapter(agent)
agentdomainseed_caplogin_url
agent
place = IPlaceAvatarAdapter(agent)
agentdomainseed_caplogin_url
agent
def do(region):
"""takes a region objects and tries to
place the agent there as an avatar
return an avatar"""
place = IPlaceAvatarAdapter(agent)
agentdomainseed_caplogin_url
agent
def do(region):
"""takes a region objects and tries to
place the agent there as an avatar
return an avatar"""
avatar = place.do(region)
place = IPlaceAvatarAdapter(agent)
agentdomainseed_caplogin_url
agent
def do(region):
"""takes a region objects and tries to
place the agent there as an avatar
return an avatar"""
avatar = place.do(region)
region = Region(regionurl)
regionregion_url
loginurl
place = IPlaceAvatarAdapter(agent)
pyogp
Agent Domain
loginurl
place = IPlaceAvatarAdapter(agent)
pyogp seed_cap
Agent Domain
loginurl
place = IPlaceAvatarAdapter(agent)
pyogp seed_cap
{‘caps‘:‘place_av‘}
Agent Domain
loginurl
place = IPlaceAvatarAdapter(agent)
pyogp seed_cap
{‘caps‘:‘place_av‘}
{‘place_av‘:‘<url>‘}
Agent Domain
avatar = place.do(region)
pyogp
Agent Domain
avatar = place.do(region)
pyogp place_av
Agent Domain
avatar = place.do(region)
pyogp place_av
{‘regionurl‘:‘..‘}
Agent Domain
avatar = place.do(region)
pyogp place_av
{‘regionurl‘:‘..‘}
<region details>
Agent Domain
avatar = place.do(region)
pyogp place_av
{‘regionurl‘:‘..‘}
<region details>
Agent Domain
Region
avatar = place.do(region)
pyogp place_av
{‘regionurl‘:‘..‘}
<region details>
Agent Domain
Region
How to contribute?
THANK YOU!
http://[email protected]