Two ideas for better search for OpenSim

Hypergrid SearchEverybody talks about the fact that we need better search functionality in OpenSim, but there are few solutions out there.

Why today’s automated searches don’t work

Keyword search is what Metaverse Ink does, created by hypergrid inventor Crista Lopes, also known as Diva Canto in-world. Searching for “shoes,” for example has two results — one on the Dune 2 regions of the University of the Aegean’s Dune grid, and one on the Serenity region of the Lost Paradise grid.

Talla Adam has a search engine on her Metaverse Traveller site. Searching for “shoes” in the “Hypergrid” category gives two results — the Bubblesz grid, and the CloneLife grid, but there’s no link to where you can actually find shoes on those grids.

The problem is — what do you search? Object names? Most objects have completely useless names, or are just called “primitive.” Same goes for region names and grid names.

A Google-style search isn’t an option right now. Google works by counting in-bound hyperlinks. We do have hyperlinks in OpenSim — they’re called hypergates. And there are hundreds of hypergates out there. The problem is, most of these hypergates are the multi-destination hypergates from The Hypergates — and they all go to the same destinations, 772 by current count. Plus, a few hundred gates aren’t enough for Google-style rankings. You need millions for really good results — and OpenSim is nowhere near that yet.

The other problem is that, right now at least, hypergates aren’t coded in any special way. They’re just an object with a script on it. And any object can be a hypergate. A shoe can be a hypergate. A brick wall can be a hypergate. A leaf hanging from a tree could be a hypergate.

So a Google-style search bot would have to crawl over a region and click on every single object in it to see whether it’s a gate or not.

Finally, what most people want to find is where is everyone hanging out? If I search for “shoes” I’d rather get sent to a shoe fair than someone’s shoe-filled closet, or, even worse, some spam region filled with plywood blocks all labeled “shoe.”

A Hyperica search for “shoes” gives 11 results — progress. Hyperica’s Avatar Clothing & Accessories category lists 74 different regions – which still a drop in the bucket given how many shoe stores there are out there on the hypergrid.

Plus, Hyperica is based on the principle of manual curation — like the early Yahoo! directory of the World Wide Web. Sure, some people submitted their destinations for inclusion, but most of the work was done by actual people sitting behind computers, surfing the Net.

For Hyperica, there is a form where people can add a new grid to the directory, and another form for adding a new region, but, so far, only a handful of people have used it — and all entries still have to be manually reviewed, categorized, ranked and added to the database.

First solution: A built-in events function linked to groups

Object, region, and grid names are rarely particularly informative. But group names and event names usually are.

My idea is to add event functionality to the groups function currently included with OpenSim.

So, let’s say Martha’s Shoe Emporium is having a shoe blow-out sale, the Shoe Lovers Collective is holdings its annual Shoe Faire, and My Favorite Grid is celebrating the grand opening of its Shoe Outlets Mall.

A search for “shoes” would return all of these, as well as any other shoe-related events marked public, ranked in the following order:

  • Events sponsored by groups I belong to would rank highest, followed by events with groups that my friends belong to.
  • Events sponsored by groups I have no connection to would be ranked last
  • Events happening very soon will be ranked higher and old events wouldn’t show up at all, unless I specifically searched for past events
  • Events sponsored by large, popular groups will be ranked higher, and events sponsored by small groups would be ranked lower

So, for example, if I was a member of the My Favorite Grid Events Group, I’d see the grand opening first. And if the Shoe Lovers Collective was a very large group, and their event was happening soon, I’d see that, as well. And if Martha’s Shoe Emporium Events Group had only one member — Martha — I’d probably not see her sale at all, unless it was the only shoe-related thing happening that day.

I would also want to have the ability to add an upcoming event to my personal calendar, and get reminders when the event was approaching. And I’d want to be able to invite my friends to an event I was going to.

One challenge would be how to get this to work across the hypergrid. You don’t want every grid querying every single other grid each time a user does an events search — that would be a nightmare.

One solution is to have a third-party service collect all this information from grids, organize it, then respond with the results.

Another, more peer-to-peer approach, is to query only those foreign grids where I already belong to a group — but that doesn’t help you much when you want to find new places to go.

Second solution: a new hyperlink functionality for OpenSim

This would work similar to the way that media-on-a-prim works, and would require the viewer and server developers to work together.

You would pick the surface of an object, and instead of setting a texture or a Web URL, you would set it to be a hyperlink. You would specify the destination, and either your own texture or a default swirling-water-hypergate animation. Plus, you would specify how the hyperlink is activated — by touching or by walking into it — and whether it would activate automatically — if the region’s threat levels allow — or only after a user agrees to the teleport.

You would also need to specify the link text, like “Click here to go to Martha’s Shoe Emporium.”

All this information would need to be stored in a database in such a way that it can be queried externally.

For example, right now the main external query is “get_grid_info” — for example, typing login.osgrid.org:80/get_grid_info into a Web browser results in a list of some key facts about OSgrid.

A similar query, “get_grid_links,” for example, could result in a list of hyperlinks, their destinations, and their descriptive link texts.

This would save a third-party search engine like Google from having to visit each and every region and test each object to see whether it was a hypergate or not. And would save grids from the load of these spiders.

Why we need this

As the hypergrid expands, being able to promote and discover new destinations will be key to attracting more and more people. In two years, there will be a bunch of new competitors out there, vying to be the platform for the new metaverse.

Having a working and usable search function would mean that we’re playing to win.

Do you have ideas for how to improve OpenSim? I’m gathering suggestions for a poll of Hypergrid Business readers. You haven’t added your suggestions yet in the comments of this article or in this Google Plus thread, you can add them below.

Maria Korolov