Hello, Avatar!

Second Life et Programmation Créative

Aller au contenu | Aller au menu | Aller à la recherche

Hypergrid : la revue de Justincc

Pour compléter le billet de LeoMaxx sur l'Hypergrid avec des informations plus techniques, voici tel quel une revue du fonctionnement de l'hypergrid, brut de décoffrage droit sortie de la mailing list des developpeurs d'OpenSim.

Cool, the patch in http://opensimulator.org/mantis/view.php?id=2640 now builds and passes tests (for what that's worth, currently) against r7391 right now.

Having read Cristina's wiki page and the code, I think the hypergrid is a neat architecture. Essentially, a hypergrid is a confederation of grids. Each user has their own home grid or standalone, which is where their user profile, inventory and assets are stored. When they travel to a different grid via a hyperlink (set up via some funky map and region handle manipulation), the new grid is told the address of that user's home asset and inventory services. Thus

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 own home services.

Please correct me if I'm wrong, Diva.

As I see it, on a conceptual level, some of the pros are:

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

  • Allows grids to seamlessly linked to others yet retain control over their own services.

And the cons:

  • Assets are liberally spread around grids. I don't think that this is much of an issue in view of the client hole, but

this is merely my own opinion.

  • 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 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).

  • Services need to be exposed to other grids. So malicious grids could possibly fetch and put things they shouldn't. I

think Diva already has some proposals for dealing with this. This may also be another good argument for controlling who can link to you, for now.

I've read the code but I don't intend to actually run it right now - I was more concerned about trying to identify any nasty architectural problems. As far as I can see there is nothing too significant. However, I do see some implementation weaknesses.

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 the OpenSim archiver. If this patch goes in then this should be reused.

3. Better class and method documentation. From what I've seen, what appears to be there at the moment is probably a result of initial copy and paste from existing code. I know this is the pot calling the kettle black to some extent, but I feel that proper class and method documentation is something that we ought to be working towards, to help prevent parts of the code from turning into the private fiefdom of whoever originally wrote it. Also, logging messages are not quite correctly formatted (colons are missing after the <log name> section and copyrights are missing or inconsistent.

4. The code exists in separate Hypergrid packages from all the existing OpenSim packages. This is very understandable due to its origin as a forge module. And I think we can take it as is, but these separate packages should probably go away over time.

Items 1, 2 and 4 could be fixed up after an initial patch goes in. However, I really would like to see more documentation, license fixes and log message uniformity (3). Please could you do this, Cristina?

If this is done then in my opinion the hypergrid facility would be a +1 addition to what is currently in the core. However, I'm not an expert on various areas (map, teleport) so would greatly appreciate another pair of eyes if anyone can spare them. Therefore, if we are to commit this patch I think we should hold off until Monday of next week to give anybody else a chance to look at it.

I'd also quite like to know who intends to support this in the future. It would be a shame if we took it in and then nobody was prepared to keep it going (which I think would mean eventual removal).

Sorry for the long post.



OpenSimForge : toutes les annexes d'OpenSimulator


Un nouveau référentiel de code source a vu le jour pour OpenSimulator : OpenSimForge.

Le but de ce référentiel (repository) est de répertorier l'ensemble des annexes à OpenSimulator, histoire de ne pas polluer le code actuel.

Il est prévu d'y ranger :

  • Les implémentations de serveur de grille UGAI alternatifs
    On devrait y trouver d'ici peu l'implémentations en PERL ainsi que celle qui existe actuellement dans le Trunk, en *love* Python *love*. On trouve déja, DeepServers qui est une implémentation en C# pour ASP.NET. Voilà qui devrait interresser G2 Proto...
  • Les Plugins pour OpenSim
    Un plugin, c'est un module (un peu comme les modules région) ajoutant des possibilités supplémentaires à OpenSim, comme la sauvegarde des terrains sur un serveur SVN, l'archivage complet d'une région (en cours...), ou des moyens différents de persister les données (oracle, myssql, postgres, sqlite, mssql... etc...). Bien sûr, on retrouve comme Plugin des moteurs de physique de tout poil.
  • Les applications dérivées d'OpenSim
    Je ne vois pas bien si Adam Frisby veut parler des Forks existants pour OpenSim, comme RealXtend de Jani Pirkola ou LiteSim de Gareth Nelson, ou bien alors des applications externes pour OpenSim. Dans ce cas, je pourrais peut être y ranger l'InterCom et le WhiteBoard. On pourrait y trouver le lanceur que Vinc Sonic est en train de fabriquer pour la Francogrid. Et pourquoi pas une bibliothèque de scripts ?
  • Les branches OpenSim non-officielles
    Quelques variantes existent, et provoquent ce qu'on appelle "une branche" dans le code source. Le module d'interopérabilité en cours de développement est une branche spéciale qui servira aux tests d'intéropérabilité qui débuteront fin du mois de Juillet.

Voilà donc une initiative d'Adam Frisby à saluer, qui nous permettra de retrouver nos morceaux de codes bien rangés !

L'InterCom en PHP, et Google AppEngine

Grâce à la gentillesse et aux efforts de Sbach, nous avons à présent la partie serveur de l'InterCom en PHP ! ^^ Merci à toi, Sbach !

La partie client en LSL ce dernier a déja été réutilisée et modifiée par Sun Payne, pour fabriquer un InterChatTW qui permet de communiquer avec une région depuis une page Web !

Quand à la suite de l'InterCom, je suis en train de porter la partie Serveur en Python en utilisant Google AppEngine. On fait pas mal de foin autour de Lively, mais ce Google AppEngine est une petite révolution silencieuse dont je n'avais encore jamais entendu parler, jusqu'à ce que Keru m'inonde de ses lumières, béni soit-il.

Google AppEngine, en deux mots, c'est pour héberger des applications en Python en bénéficiant de la puissance de l'infrastructure de Google. On peut le faire gratuitement moyennant quelques limitations dont on s'affranchit avec la version payante.

Perso, je me réjouis de voir comment Google apporte sa pierre à l'édifice Internet autrement qu'en le transformant en espace publicitaire géant.

Et d'ailleurs, je ne me peux pas m'empêcher de faire le rapprochement entre tous ces scripts en Python qui moulinent sur la grille géante de Google, et ces milliards de scripts en LSL qui animent les grilles de notre Metaverse préféré. Et ça me laisse entrevoir avec enthousiasme un bout de ce qu'il y'aura derrière le rideau du Web de demain.

Retrouvez ici l'intégralité des codes sources

OpenSim et Robotique


G2 Proto a entamé quelques expériences interressantes en interfaçant Microsoft Robotics Studio avec OpenSim. L'article se trouve ici sur le site de la Network Association of Virtual Worlds.

J'ose à peine imaginer les applications possibles :

  • Domotique
  • Monitoring de bâtiments (contrôle d'accès, incendie, alarme, caméras...)
  • Monitoring d'installations industrielles, de Data Centers...
  • Pilotage de périphériques externes de tout poil
  • Appareillages pour personnes handicapées...


Un grand bravo à G2 Proto pour ces expérimentations qui devraient ajouter encore de la valeur à OpenSim pour les entreprises !!!

L'Interop entre grilles, c'est pour de bon !


En-fin !

Après moult interrogations, je me réjouis que Linden Labs aie compris les enjeux positifs de l'Intéropérabilité entre OpenSim et Linden Labs. Je suis même carrément étonné que celà aie été décidé si rapidement.

Mais l'intéropérabilité, c'est comme beaucoup de choses : c'est toujours plus facile avec la gueule. Aussi, Un tweet de Dr_Manhattan nous propose de nous mettre au travail en rassemblant les "gridnautes" à l'Open Grid Public Beta, histoire de patcher OpenSim, puis, à l'aide d'une version modifiée du Viewer, de se téléporter de la Bêta Grid à d'autres grilles tournant sous OpenSim à partir du 31 juillet.

Le chantier énorme de l'intéropérabilité a débuté pour de bon. Si vous avez du temps à revendre et des connaissances en architecture, vous pouvez vous joindre à l'Architecture Working Group et apporter votre pierre à l'édifice.

Microsoft et IBM sont de la partie avec Linden Labs. L'excitation est palpable sur le tweet de Dr_Manhattan, initiateur du projet Manhattan qui rassemble une communauté de développeurs C# autour d'OpenSim.

C'est bon, tout ça... C'est très bon ! ^_^

- page 1 de 9