jump to navigation

What is the Hypergrid? December 19, 2008

Posted by justincc in opensim, opensim-arch, opensim-dev, opensim-grid, opensim-news.
trackback

diva-250px-hghyperlinkThe Hypergrid is a neural-interactive simulation, a computer generated dreamworld built to keep you under control.  It is the world that has been pulled over your eyes, to blind you from the truth.

The Hypergrid has you…

Or to put it another way :), the Hypergrid is a new core OpenSim network architecture which joins the existing standalone and grid architectures.  I’ve mentioned it before in various This Week In OpenSim Dev posts and there is a good OpenSim wiki page on it as well as a blog post by Rock.  However, I thought that I would give my own summary of it.  This is an extension of my original technical analysis of Diva’s initial Hypergrid patch as posted to the Opensim-dev mailing list.

No really, what is the Hypergrid?

Essentially, a Hypergrid is a confederation of OpenSim systems that have enabled the Hypergrid facility. Each user has a home grid or standalone where their user profile, avatar appearance and inventory is stored.  Possible homes range from a standalone on the user’s own machine up to a large OpenSim grid hosted by a third party.  Users can travel from their home to a different grid or standalone via a hyperlink (set up via some funky map and region handle manipulation).  When they arrive at the foreign grid, they carry with them the url of their home asset and inventory services. This mean that in the Hypergrid

  1. If a user rezzes an object from their inventory, the assets for that object are fetched from the home asset service and permanently inserted into the foreign asset service. So when that user goes away or logs off, the assets are still available to be seen by everybody else.
  2. If a user copies/takes an object from a foreign grid, then the relevant inventory and asset data gets sent to their home inventory and asset services.

In other words, the necessary information to rez inventory and avatar appearance is transparently passed between linked grids as necessary.  This allows a user to hop around different Hypergrid enabled grids and standalones as if they were travelling around a single system.

Hypergrid pros

Thus, on a conceptual level, some of the pros of the Hypergrid are:

  • It effectively distributes asset and inventory load over multiple services on multiple grids. This is a really good alternative to scaling up a central service to internet scale.
  • It allows grids to seamlessly link to others yet retain control over their own services.

Hypergrid cons

And the cons:

  • In the Hypergrid, assets, including scripts, are liberally spread around grids.  If someone travels to your Hypergrid enabled OpenSim and acquires an object, then they get a copy of all those assets in their home services (which may be situated on their own machine).
  • Regions must be manually linked and appear in a grid’s map. One can’t just enter an address in a url bar to go to another grid, the grid owner must set up the link. As far as I can see this is a limitation of what we have to work with in the Linden Labs Second Life client. There may be some arguments for restriction (you don’t want someone coming to your pg grid from an adult grid and depositing god knows what).
  • Home services need to be exposed to foreign linked grids. So malicious grids could possibly fetch and put things they shouldn’t. There are already some proposals for dealing with this. However, this may also be another good argument for controlling who can link to you, for now.

Some current issues

I think there are some issues with the current Hypergrid code.  These aren’t fundamental architectural concerns.

  1. Assets associated with worn attachments and appearance are not uploaded to a foreign grid from the home grid on teleport in. For other users without cache copies, such avatars will always appear gray and I don’t think that any attachments would appear.   This is fixable.
  2. Prim inventory inspection does not go deep enough. As far as I can see, in the ‘asset mapper’ you look for contained textures when rezzing an item, but not any other contained assets (including contained objects, clothing, notecards, scripts, etc.). This will result in an incomplete rez. However, this is fixable. Indeed, I’ve already written all the code required to do this for OpenSim Archive support (OARs).

Summary

In my opinion, the Hypergrid is a very promising architectural direction for OpenSim. It moves from a system of centralized services to one a user can seamlessly navigate between many different grids whilst sourcing their appearance and inventory from their own home services.  This decentralized is a commonly hoped for change that I’ve written about previously, as have others.  Though there are quite a few problems to resolve yet (such as the short term technical ones that I’ve talked about, as well as more fundamental questions such as that of grid service security), I think that the Hypergrid has a lot of potential.

If you want to set up your own Hypergrid enabled OpenSim, there are instructions on the OpenSim wiki, as well as a list of Hypergrid enabled OpenSim instances.  You will need the owner’s permission to establish a link.  I believe that Wright Plaza on OSGrid is also Hypergrid enabled, though it isn’t yet listed.

Many thanks must go towards Diva (Christa Lopes) who did all the hard work in formulating the architecture and writing the code such that a patch could be accepted into OpenSim.  The OpenSim community (both developers and users) also deserves a great deal of thanks, since their hard work and enthusiasm was absolutely instrumental in proving that the concept was viable.

(The image used at the top of this post is licensed under Attribution-Share Alike 2.5 from the OpenSim wiki)

Comments»

1. Virtual - December 20, 2008

What happens if avatar Jane Walcroft teleports from Hypergrid 1 to Hypergrid 2 and avatar Jane Walcroft teleports at the same time from Hypergrid 3 to Hypergrid 2? The system will let them in as they have a different UUID and won’t pay attention to the name of the avatar. In a technical way I don’t see an issue but this could be exploited so how is this going to be solved?

RealXtend came up with an avatar server which complicated things. Is there need for avatar.name@gridserver ?

I know it’s early to ask these questions and Diva did some serious work.

2. OpenSim goes Hyper - The Hypergrid | VintFalken.com - December 20, 2008

[…] Justin further writes: “The Hypergrid is a very promising architectural direction for OpenSim. It moves from a system of centralized services to one a user can seamlessly navigate between many different grids whilst sourcing their appearance and inventory from their own home services.” […]

3. sered - December 20, 2008

Justin, how does this relate to the Open Grid Protocol stuff being done at Linden Labs? Is it an alternative, an improvement or something totally different?

More about OGP:
http://wiki.secondlife.com/wiki/Open_Grid_Public_Beta/

4. taotakashi - December 21, 2008

Justin, sounds very cool!

What I am interested in would be: What are the thoughts of the OpenSim community towards using web standards such as OpenSocial for profiles, OAuth for hooking up external web service etc. ?

I personally was thinking about simply hooking up to the MySQL tables and exporting something with those standards.

The other question here is if a similar approach of an agent domain (only managing users) and a region domain (the actaul sims) is planned.

This distinction in my view has the advantage that social networks could very easily make their users be able to use OpenSim regions if done right.

I guess I should stop missing those office hours to eventually talk about this with you guys 🙂 (or join the list I guess)

5. justincc - December 21, 2008

@Virtual – I think that two (or more!) avatars will be able to walk around in the same sim quite happily with the same name – just like real life! The Second Life protocol relies on their unique UUID to identify them, not the avatar’s name that we see in the client.

I think this is quite nice – why should I not be able to take a certain name just because someone else got it first? For transactions where identity is important (e.g. monetary ones), one would need to establish who that avatar is via other means. I feel this isn’t too different from real life though – I wouldn’t trust my money to someone just on the basis of the name that give without other corroborating details.

@sered – yes, it’s not clear how this plays with OGP yet – all this stuff is so new! However, at the moment one can argue that they are pretty complementary. The Hypergrid focuses on inventory portability without any notion of enforcing user authentication. Whereas up till now the OGP process has focussed on user authentication (agent domains, etc.) and has not done any work on inventory portability (which if anything is a much hotter kettle of fish for Linden Lab).

I think we’ll just have to await future developments for the real answer.

@taotakashi – I would say that in the project we are pretty open to using existing external standards – we try to avoid unnecessarily rolling our own stuff.

OpenSocial and OAuth support might be good candidates for having in core OpenSim, though to really know there would have to be a mailing list debate about the fine detail (though the chances are that would only go somewhere if there was the pressure of an implementation sitting in a patch) . However, even if they weren’t considered core components, our philosophy is to make it easy for people to hook in their own modules, so we’d always be happy to take in patches that provide whatever external hooks or code refactorings are necessary.

In terms of agent and region domains, I’m not sure what the next steps are. Diva may have some ideas in this respect. I think in this area we are tend to progress by evolution much more than by planning. Someone comes along with code for the next piece in the puzzle (perhaps because they have a vision, or perhaps just because they need it to get something else done), and (sometimes after some debate) it either gets included in core OpenSim or ends up existing as a module.

The great advantage of this is that changes tend to be what the community wants – it’s much easier to make a big architectural change if there is a build up of community support. The disadvantage, perhaps, is that evolution may go up some dead-ends that a more planned approach might avoid. It will be very interesting to see how this works out.

6. Tao Takashi - December 23, 2008

Justin, sounds good 🙂 Esp. because Linden Lab really seems to want to use their own technology which is not really compatible with what is being used on the web. I think if we want adoption also over the boundaries of the VW scene (e.g. Facebook really enabling their users to enter some type of grid) then it’s better to use the tools the rest of the world uses. They might also be more mature because simply more people and companies have looked at them (and potentially helped creating them).

As for dead-end or not I think as long as there is a way to extend OpenSim, maybe also without using C# (which I am no expert in) then this would be great. One common denominator as said can be the database but this depends on configuration so maybe some sort of REST API would be better.

So I will make sure to talk to you guys more in 2009 and maybe we can get something worked out 🙂 I actually like planning and writing things down to some extent so maybe this can help. As for evolution I would be careful though, I made my experiences with Plone and at some point you had so much code in some core component which was based on some single person’s use case and was hindering much afterwards. But if there is some healthy debate on what should go in and what not then I guess this can be circumvented (as it’s hard to get rid of this again as you break backwards compatibility).

7. justincc - December 24, 2008

@Tao Takashi – it should be possible to write OpenSim extensions in any of the languages that have .net byte code compilers. So Python (via IronPython) is available as well as Javascript and Visual Basic.

I look forward to seeing you on the mailing lists (and maybe even in the OpenSim office hours) during 2009 🙂

8. UgoTrade » Blog Archive » Hacking the World in 2009: Google Street View, “Smart Stuff,” and Wikiculture. - December 29, 2008

[…] hacking are Crista Lopes’ OpenSim Hypergrid – see Justin CC’s blog for full details on “What is the hypergrid?,” and David Levine’s work (IBM), in collaboration with Linden Lab (see Architecture Working […]

9. Josh - December 30, 2008

Keep up the great work – excitement renewed.

http://yiyd.com

10. HyperGrid, or how to teleport between WORLDS using OpenSim « Zonja Capalini - January 5, 2009

[…] What is the Hypergrid? « Installing OpenSim in Windows XP […]

11. Guesses for OpenSim in 2009 « justincc’s opensim blog - January 9, 2009

[…] not become mainstream. There has already been considerable interest in OpenSim’s experimental Hypergrid architecture for linking grids (and standalones) together.  I think that we’ll see […]

12. Hypergrids, Opensim, and Other Stuff - Mischief - February 20, 2009

[…] i want to bring up somethings that those articles reflect, such as https://justincc.wordpress.com/2008/12/19/what-is-the-hypergrid/ and […]

13. Is a Universal Virtual Worlds Viewer possible? « justincc’s opensim blog - March 20, 2009

[…] seen from the popularity of the Second Life teleport experiments and OpenSim’s own Hypergrid architecture, is a pretty strong […]

14. GridHop: The Yellow Pages of the Hypergrid « justincc’s opensim blog - July 3, 2009

[…] like my good friend and long time OpenSim supporter Tx Oh has put together a web based directory of Hypergrid accessible regions which people can submit their own regions […]

15. Predictions for OpenSim in 2010 | justincc.org - January 15, 2010

[…] think that the environment is mature enough yet to bring these to more general notice.  Fundamental security issues remain with the current version of Hypergrid that, in my view, greatly hamper serious […]

16. My first time Hypergrid standalone | justincc.org - June 2, 2011

[…] instance.  Oh sure, I’ve looked at the documentation, read and reviewed the code and even written blog posts about it, but I’ve never found the time to actually put theory into […]

17. Pyjama Bébé - March 8, 2013

That is a good tip particularly to those new to the blogosphere.
Brief but very accurate info… Thank you for sharing this one.
A must read article!

18. XRadio Expands to the Hypergrid - XRadio - October 27, 2021

[…] What is the Hypergrid? – December 19, 2008 – justincc […]


Leave a comment