Hi Jonne,
We all want to see realXtend succeed and I've been working to help realXtend become a viable solution for several years now, ever since my involvement with Alon Zakai (the creator of Emscripten) on Syntensity. RealXtend's long-term success as an open-source project depends on dev-community growth and wide-scale adoption of realXtend-based solutions. While Kitely currently doesn't have the manpower or the financial resources to do actual realXtend-related development, I have been openly campaigning for realXtend adoption by the OpenSim developer community for almost a year. I've done so in private talks with key OpenSim devs and in public recorded presentations and interviews I gave inSL (Toni and others can attest to this fact). One recent result of these direct conversations is that David Daeschler from InWorldz (which is currently the biggest OpenSim-derived grid in active user numbers) is willing to allocate development resources to help make realXtend a viable viewer for OpenSim-based worlds. As for realXtend-based solution adoption, Kitely is a high-profile player in the OpenSim community. Our open support and adoption of realXtend has real PR value for the project. For realXtend to get consumer traction and become a viable alternative to OpenSim, it needs to have high profile OpenSim providers, such as Kitely and InWorldz, publicly adopt it. Doing so will attract OpenSim (and TPV) developers to work on realXtend. It will also create more business opportunities for all the companies currently developing realXtend. Finally, I've recently started campaigning to get realXtend additional funding from third-parties. I've encountered some good initial reactions from people but it's way too soon to know if any of this will result in donations to the foundation. As for your comments about the technical aspects of how to go about implementing this, I tend to agree. realXtend needs to be able to support manipulating prims and SL-type avatars to help migration of SL/OpenSim content into realXtend but ,even if there is an interim period during which OpenSim is used as the backend, in the long run realXtend can offer a better engineered solution without using the OpenSim backend. However, for people to be able to move over to 100% realXtend solution, that solution needs to maintain the prim capabilities and the SL-type avatars. It shouldn't be as a hardcoded part of realXtend but these capabilities should be supported independently of OpenSim and its inefficient protocols. A scripted UI and a protocol translation layer that can be moved from the viewer to the server and eventually eliminated can help shorten this transition period. Cheers, Ilan Tochner Co-Founder and CEO Kitely Ltd. From: [email protected] [mailto:[email protected]] On Behalf Of Jonne Nauha Sent: Sunday, April 29, 2012 12:53 PM To: [email protected] Subject: Re: [realXtend] Growing support for OpenSim compatible viewer. I think we reX devs have all at least tinkered with the idea to make some kind of OpenSim support in our heads, and shortly at times on our IRC channel when the subject comes up. The idea is fun, and as we all worked on Naali before we know how it can be done. For me, this however should not touch the basic core of Tundra in any way. As Toni said Tundra is now a generic 3D application framework/engine that has its own thing. The code base and the framework/coreapi/application separation is much nicer, I could say its at least 100x nicer codebase to work on than what Naali was :) This being said, I believe the Tundra framework/core apis are in fact so nice that OpenSim support could be done in a separate OpenSimModule that just _does it all_ and would not touch other parts of Tundra, if this can be done, its clean and we would have a non trivial testimonial that Tundra core itself is quite nice :) For logging in to OpenSim and getting the basic scene to render could be the first step. For this the OpenSimModule would need to do the following: 1. Do the login with xml-rpc (utilise code from Naali OpenSimProtocolModule, rewrite the somewhat ugly login code though and find nicer xmlrpc lib) 2. Create a new client scene with SceneAPI. 3. Handle the incoming LLUDP message (utilise code from Naali RexLogicModule). This would include making a translation layer for the scene coordinate system as we moved Tundra to Ogres system. 4. Translate the object messages into Tundra Entities/Components/Attributes. This would leverage our existing EC_Placeable + OpenSimModule would reintroduce EC_OpenSimPrim from naali codebase in some way). 5. Render the OpenSim scene, wohoo o/ I actually think this would not even be too much work. I think more work would be to do the avatar and after that finally syncing scene changes back to the OpenSim server. Not to mention inventory, opensim chat etc. to get a "fully featured" opensim client out of Tundra. I would also recon we would do it a bit differently this time with client side scripting support like Toni suggested also. The OpenSimModule should handle all the messaging and construct the scene for rendering it and all that basic stuff. I think how we went partly wrong in Naali was that all the UI for example was hardcoded in to the c++ code. Tundra basically has no UI when you log in to a world, the scripts from the scene define the UI of that particular server. I think even if we know OpenSim has chat and inventory etc widgets, we should handle those things in OpenSimModule emit some related Qt signals and make the ui in scripts (local in this case). People then could modify how their UI looks locally, make nice mods and share those scripts with other clients. Anyways the point is, imo we should not hardcode UI into the OpenSimModule, if something requires that emit the data to a scripting layer (if feasible, it is always not, but eg. for chat and inventory it would work great). That all being said, this is the for me at least still that "tinkering in our heads" kind of stuff :) Its fun to think for a coding challenge how to do it, but actually doing even the simple OpenSim scene rendering takes some serious works hours. Of course it would help if you get us reX devs on board, for a novice to Tundra/Naali/rex tech/C++ it might be a lot more work. So I guess I might ask a question too. Are you willing to put some effort into this by the OpenSim dev community or are you just asking "will you do this for us?". If it is the latter, at least speaking from our company perspective (don't want to but any words to other rex involved companies!) we are very happy with Tundra and OpenSim as a server is not in our roadmap. If you ask me personally I would be happy to chip in on my free time if this effort materializes :) It is easy as peanuts to fork Tundra and just get to work. But if we want the module to integrate cleanly into Tundra as an optional module, we should have some talks how we can accommodate this and what would be the best approach. I mean if someone starts working on this for two months then send a pull request that has added hacks around the core APIs to "just get it work" it would be swiftly rejected and no one wants that. Best regards, Jonne Nauha Adminotech developer On Sun, Apr 29, 2012 at 5:47 AM, Toni Alatalo <[email protected]> wrote: On Apr 28, 2012, at 11:30 PM, Lord wrote: Recently, Linden Labs/Research announced an upcoming move (Havok AI sublicensing) that seemed to indicate that they were going to develop their Second Life(tm) viewer without further consideration of the Open Source community. I wonder what motivated that statement, seems a bit weird: "Sublicensee must require the Third Party Viewer to connect only to servers owned or operated by the Company [Linden Lab]." Is it perhaps because Linden has only paid for a license to use it for their service? There are some who believe that they will just fork the SL(tm) viewer without the changes needing licensing and continue onward, either with open sourced solutions to the features they develop that can be used in OpenSim, or simply by doing without those features. Sure, people don't want to loose what they have. How much it would develop further from there, well, who knows. While this may work for awhile, their message is of a slippery slope variety, and will probably result in their closing it down more and more as time goes on in order to make it a tradeable asset. Is this a somehow known? We here haven't followed SL recently here, everyone's been too busy working I guess. In light of this development it has occured to some in OpenSim that they need to break free of the ties to Linden Labs/Research(tm) and produce their own open-sourced viewer with no LL dependencies. However, there are strong reasons for not wanting to write one from scratch: mainly, time and money. Due to this, it has been suggested that OpenSim start with an already existing viewer, such as Radegast, or Tundra/Naali and build from there. There seems to be growing support within the OpenSim community for such a viewer. This is a bit of a turn, no? Thinking about these things some 1-2 years ago, come to conclusion that the Linden renderer is what many Opensim folks are happy with .. is definitive, how all the graphics should look etc. And it was then LGPLed and all (right?) so licensing became more Opensim compatible too. We've figured it has to do with the need: if you want an exact SL clone, may be not a bad idea to use the SL viewer. And Imprudence and Aurora and what not, KirstenLee for Cinematic / Machinima use etc. So I've been concluding that that front continues on the same way. But if instead you are interested in a humble still a bit immature candidate Internet standard virtual worlds thing based fully on open source libs, which is modular (uses the same entity-component system for core things than you can define for your own functionality, even from scripts) etc .. then some other solutions are more interesting ;) With realXtend recently the most important thing has been to make a fully generic application platform. Tundra reached that, and is solid and stable now. We are happy and can make applications. The 'Second Life application' was one of the original use cases for Tundra too. Already in the Naali version it was all modular -- for example prims and other sl things were are in one app logic module (RexLogic is called, to mean the legacy lludp+rex features .. could be LLLogic too). Inventory was another module, there was actually two implementations: Linden inv in C++ and a Webdav inventory too using a Python dav lib for the networking (but the final QT Gui for it was written in c++). If you want, it is perfectly valid and possible to implement Opensim things in modules for Tundra, for example. Some of them don't need anything new from the core. With the old Naali builds you can already test if, if the latest 0.4 release still connects to current Opensim .. it may :) Much could be written for example in Javascript, for example all the inventory and if you want authention and such things .. such app logics are often in js with Tundra. And UIs and custom editing tools etc. BTW I've found the effort to add 3d rendering to Radegast with pure OpenGL a really nice exercise. And whole Radegast and actually the LibOMV in there too. One way for Tundra-Opensim connection would be making some sort of DotnetScriptModule to Tundra for C# plugin support (or can they integrate just with c++ somehow) and use LibOMV. Naali of course has the old C++ LLUDP code too. I'd probably first test first with pythondotnet bridging, like did with Blender (in http://playsign.fi/engine/BlenderOMV). But I don't know if LLUDP is that interesting to use. In fact, both Ilan Tochner of Kitely, and Tranquility Dexler(David Daeschler) of InWorldz were very interested in the possibility ( http://www.hypergridbusiness.com/2012/04/new-linden-policy-may-hurt-viewer-d evelopment/ ) . Yes, we have been talking with Ilan about these things for a while now. He explained well how sees content interoperability as the key. I think that makes a lot of sense. So we might consider e.g. OAR import&export to Tundra (EC_Prim), not SL protocol things etc. Though in general it at least used to be so that e.g. Collada support is much more important for typical reX users than OAR. Might be an interesting effort to write Collada scene saving to the Opensim .. put the primdata in collada's xml somehow, the X is for eXtensible after all. Would it be possible to achieve an OpenSim compatible version of the viewer (and possibly the platform) ? I think it would draw more people to the entire Tundra platform as they use the viewer. Is certainly possible. And I think if something like that is made, it easily becomes a feature for the platform. For example if you make a Prim entity-component, can put the data in the attributes there so that they are automatically saved to Tundra files, synched over the net in realtime etc. To complete the features for a really useful level would take some substantial development effort. Quite a lot was made in the Naali project back then. Prim rendering and avatar support (also to get the animations, Melanie's LegacyAvatarModule project). Ilan has been asking about those and we've tried to estimate the amount of work to for example integrate that old LegacyAvatarModule, for LL avatar support, to current Tundra. Is not trivial mostly because the format is undocumented and only a few people have reverse engineered it afaik etc. One thing I've wondered about Opensim and reX is connecting from WebNaali to Opensim. It would be very simple, at least if there is a nice working C# websocket server module (and I'm sure there is nowadays) (also some Python one might make sense if could then share the code between Opensim and Tundra, as the Tundra one uses py). Basically to repeat the old WebNaali demo by logging in to some Opensim server, and getting an avatar and moving and chatting there -- the others using Linden viewers or whatever. Could sync some cube position to test how collaborative editing could work (another point Ilan advocates is having good simple editing, creation tools, even just basic at start). This could be done either with the WebGL+WebSockets based original WebNaali, or the alternative Flash3D thing we've been working for one project right now. A prim editing test with WebGL would certainly be a fun experiment, and I think is easiest to develop on that anyhow (can just move vertices from javascript) .. even as a prototype for native Tundra too if someone want's it there. Simple 3d modellers made with WebGL seem to work pretty nicely (3dtin and then that one Finnish one, Tinkercad). The reason why I've wondered if those browser based things might be interesting for Opensim folks is that they bring something new, for example a simple scene viewer to show worlds on websites. As it seemed that on the native app side people are content with the slviewer base. But if that is changing now and there's interest for a normal open source viewer project, I think Tundra is certainly worth considering. Has matured well now for the basics and is nice to build on. With the browser based engines I'm curious about the performance. If they do clever batching, might render prim style builds fast more easily than with Ogre .. though I'd guess Ogre is still easily faster for heavy scenes. Am talking about prims as discussed them with Ilan, about how they can be useful for quick easy builds .. I think he's right that they can be a competitive advantage. ~Toni -- http://groups.google.com/group/realxtend http://www.realxtend.org -- http://groups.google.com/group/realxtend http://www.realxtend.org -- http://groups.google.com/group/realxtend http://www.realxtend.org
