<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Adam Frisby &#187; oar</title>
	<atom:link href="http://www.adamfrisby.com/blog/tag/oar/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adamfrisby.com/blog</link>
	<description>ZOMGWTFHAI</description>
	<lastBuildDate>Sat, 26 Dec 2009 07:02:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Impersistence of Memory</title>
		<link>http://www.adamfrisby.com/blog/2009/06/the-impersistence-of-memory/</link>
		<comments>http://www.adamfrisby.com/blog/2009/06/the-impersistence-of-memory/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 21:10:32 +0000</pubDate>
		<dc:creator>Adam Frisby</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[aleph]]></category>
		<category><![CDATA[archives]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[oar]]></category>
		<category><![CDATA[periscope]]></category>
		<category><![CDATA[prim workshop]]></category>
		<category><![CDATA[second life]]></category>
		<category><![CDATA[simian]]></category>

		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=327</guid>
		<description><![CDATA[Somewhere in the deep dark recesses of my backup server, is a little directory called &#8216;AWSERVER&#8217;, last modified circa 1999. Inside that directory is my world database and the content path associated with my old ActiveWorlds regions. With a little (or maybe a lot) of work, I could probably re-load it today and log in.Yet, [...]]]></description>
			<content:encoded><![CDATA[<p>Somewhere in the deep dark recesses of my backup server, is a little directory called &#8216;AWSERVER&#8217;, last modified circa 1999. Inside that directory is my world database and the content path associated with my old ActiveWorlds regions. With a little (or maybe a lot) of work, I could probably re-load it today and log in.Yet, if I tried to revisit some of my full-sim creations in Second Life from 2004, I&#8217;d have a lot of trouble trying &#8211; I&#8217;d need to recover what I could from my inventory and do painstaking rebuilding work, if it was possible at all.</p>
<p>This is the problem with SL &#8211; the moment something is deleted, or a region is shut down &#8211; it&#8217;s almost always gone forever. If you wanted to revisit a earlier incarnation of Nexus Prime, or parts of SL&#8217;s ancient history &#8211; you are out of luck, as there&#8217;s a very solid chance those places are simply irrecoverable and lost to the sands of time. As digital data, there should be no good reason for this &#8211; disk space is cheap, and sims are small.</p>
<p>The classic case of this is the Bedazzle sims, among them were Gravity Space Station, <a href="http://www.flickr.com/photos/peter_tyson/4701065/">Chinatown</a> and UnrealSL &#8211; but none of them lasted more than between a few weeks or a few months. I&#8217;m digressing here slightly; but there are major projects I have been involved in SL that I would love to be able to still access that are gone forever (earlier versions of Aleph, the Atlas Underwater Complex, etc).</p>
<p>The problem isn&#8217;t so much that SL doesn&#8217;t store ancient rollbacks but that it is simply not possible to save a copy of one; even if you are the rights owner and want to back up your own work. Second Inventory can help here, but it too has flaws &#8211; it doesn&#8217;t have any kind of mass restore functionality; and it can only save inventory &#8211; there&#8217;s no chance to save the layout within a region, only the individual contents of it.</p>
<p>It is somewhat sad to see regions shut down by their owners for affordability reasons; knowing full well that the content cannot be ever easily restored later &#8211; I personally hate to see it when this happens, because something creative is lost forever.</p>
<p>OpenSim on the other hand, has some real advantages here &#8211; I have complete copies of a lot of my builds on OpenSim in varying stages of construction, courtesy of the Region Archive functionality. Every major construction project I have done on any of the grids is sitting somewhere on one of my hard disks as a .tar.gz file containing everything needed to reload it in later. In OpenSim, nothing is ever incapable of being saved &#8211; at all times you can dump a copy of the region to a disk, then reload it later somewhere else.</p>
<p>As a creator it&#8217;s fairly liberating &#8211; and convenient. I can work on a sim locally, export it, then import it into the production environment, and vice versa, take a production environment for local tweaks, edit it, then bring it back again.</p>
<h3>Backing up Aleph</h3>
<p>I have for a few months been testing an internal tool which allows you to export a OpenSim Archive from a Second Life Region &#8211; it was originally developed to export a clients region (their IP); but ended up being handy to preserve some of our workshops and builds from deletion when we closed the sims or rebuilt them. Today, I rewrote it &#8211; the previous version was based on the old libomv PrimWorkshop viewer, the new version is now based on the Simian Periscope (Periscope is a kind of multi-user version of GridProxy).</p>
<p>Before anyone asks, the modifications aren&#8217;t public &#8211; unfortunately for every legitimate user for a tool like this, there&#8217;s ten asshats prepared to use it as copybot <em>deluxe</em>, so the source is going to stay private (although I might release a binary version containing creator and permission checks similar to Second Inventory &#8211; we&#8217;ll see what my schedule looks like in the next few weeks).</p>
<p>This new version is overall a bit more reliable &#8211; a number of small bugs and niggles got fixed along the way &#8211; but the key factor is it&#8217;s now not a 2 hour effort to run, a region can be grabbed with 95%+ accuracy in minutes. You can see here, my personal workshop region &#8216;Aleph&#8217; in Second Life &#8211; it&#8217;s a fairly old sim, but it&#8217;s gone through a ton of revisions in it&#8217;s history. The current revision is a sort of moonbase cross sandbox, complete with orbital lasers.</p>
<div id="attachment_328" class="wp-caption aligncenter" style="width: 680px"><img class="size-full wp-image-328" title="aleph_sl" src="http://www.adamfrisby.com/blog/wp-content/uploads/aleph_sl.png" alt="Aleph Null" width="670" height="213" /><p class="wp-caption-text">Aleph Null</p></div>
<p>Below you can see the same region and contents, but in my personal standalone OpenSim region. This one is located on my personal desktop &#8211; but with the same OAR file, I could just as easily reload it on any region running any version of OpenSim since OAR support was added. If I wanted to bring Aleph to OSGrid, it would take only as long as it took to copy and load the file on a region connected to OSGrid.</p>
<div id="attachment_329" class="wp-caption aligncenter" style="width: 680px"><img class="size-full wp-image-329" title="aleph_os" src="http://www.adamfrisby.com/blog/wp-content/uploads/aleph_os.png" alt="127.0.0.1:9000" width="670" height="269" /><p class="wp-caption-text">127.0.0.1:9000</p></div>
<p>There are limitations, the tool doesn&#8217;t copy any form of &#8216;deep inspection&#8217; &#8211; so scripts, etc do not get saved. It&#8217;s theoretically possible however to back these up if you are the object owner, something I will be looking at in the future. Estate settings and a few other features aren&#8217;t in the v1 OAR format, so those also need to be recreated &#8211; but could be something we look at adding in future. It&#8217;s also worth noting that it will only backup content with a creator tag in a specified list; while that limit could be removed, it provides an easy way of assuring that you are backing up only content you have rights to.</p>
<h3>The Wayback Grid</h3>
<p>One of the projects I would like to see would be some kind of opt-in mechanism to subscribe to an automatic backup service similar to Archive.org for the web &#8211; the goal of which would be preservation of content in the long run. When someone drops their region, it would be nice to be able to restore it later on if they buy another region, or move to one of the open grids.</p>
<p>Ultimately, this could be taken to an extreme where you can dial back a grid in time, and see it as it was in a previous point in time &#8211; however the biggest limitations here are dealing with content prosciption. Most SL content is licensed with one or more restrictions &#8211; ethically &#8216;no copy&#8217; is probably a blocker to performing backups, likewise &#8216;no transfer&#8217; makes some implications about bringing something out of SL. To do this effectively, you need massive &#8216;opt-in&#8217; by content creators to approve their content going outside.</p>
<p>The easiest starting point is instead probably to provide some kind of service for creators to voluntarily backup their sims (say, in the case of a creator shutting down their region &#8211; but wanting to preserve it). Perhaps there are options here to look at providing some kind of transfer service for people moving regions from say SL to OSGrid [providing they own the copyright]. If anyone is interested in that kind of service, let me know &#8211; this might be useful for folks contemplating migrating over to OpenSim/OSGrid and have all their own content.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfrisby.com/blog/2009/06/the-impersistence-of-memory/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>OS Under the Surface: May 2009</title>
		<link>http://www.adamfrisby.com/blog/2009/05/os-under-the-surface-may-2009/</link>
		<comments>http://www.adamfrisby.com/blog/2009/05/os-under-the-surface-may-2009/#comments</comments>
		<pubDate>Sat, 30 May 2009 11:35:15 +0000</pubDate>
		<dc:creator>Adam Frisby</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Under the Surface]]></category>
		<category><![CDATA[assets]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[lludp]]></category>
		<category><![CDATA[mrm]]></category>
		<category><![CDATA[oar]]></category>
		<category><![CDATA[region modules]]></category>
		<category><![CDATA[remote control]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[uts]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.adamfrisby.com/blog/?p=323</guid>
		<description><![CDATA[With May coming to a close, I would like to start the first of a monthly feature &#8211; some explanations of what&#8217;s going on under the surface of OpenSim. But wait, you may ask; doesn&#8217;t Justin already provide excellent weekly reports on what&#8217;s been committed? Of course &#8211; where this differs is in the level [...]]]></description>
			<content:encoded><![CDATA[<p>With May coming to a close, I would like to start the first of a monthly feature &#8211; some explanations of what&#8217;s going on under the surface of OpenSim. But wait, you may ask; doesn&#8217;t <a href="http://justincc.wordpress.com">Justin</a> already provide excellent weekly reports on what&#8217;s been committed? Of course &#8211; where this differs is in the level of detail, particularly on infrastructure projects. Justin does a weekly feature which means he only has time and space to report on features in bullet form. Where I plan to differentiate with these posts is in the details &#8211; not only what has been committed, but also where it is going.</p>
<p>There has been a lot of progress this month &#8211; starting at revision 9358 there have been several major areas of focus.</p>
<h3>Networking: LLUDP Improvements</h3>
<p>We now support the Multiple Object Update packet format for Linden UDP clients (most notably Second Life &amp; realXtend), this builds on work that Mikko of realXtend provided late in April that did the same for Avatar Updates. The work done by Melanie reduces the total number of packets that need to be tracked by packing multiple updates into each packet &#8211; resulting in a significantly lower workload for our packeting code. The Avatar packet aggregation with 100 Avatars in the region results in a massive 71% reduction in the number of packets transmitted, and a 29% drop in CPU requirements, according to <a href="http://www.sciencesim.com/wiki/doku.php/opensim/performance_profiling">tests done by Intel</a> for ScienceSim. Object aggregation produces similar results (although hasn&#8217;t been measured precisely.)</p>
<p>Packet Pooling &#8211; the next major improvement is in &#8216;packet pooling&#8217; &#8211; one of the drawbacks to managed languages is very little control over optimising garbage collection. OpenSim handles potentially thousands of packets each second, in our previous packet system for each of these packets, we created several classes representing the internal data structures. (eg, Byte[] Packet becomes MyPacketObject) &#8211; while the processing is fairly quick, creating these packets results in the Garbage Collector handling tens of thousands of tiny unused classes at each collection. On .NET this runs so-so, but on Mono it runs atrociously.</p>
<p>Packet Pooling solves this problem by recycling classes &#8211; rather than leaving a dead class to be garbage collected, we stuff new data into it and re-use the class instance. We previously did this work back in 2007 with the help of 3Di developers, however it was at the time proven unworkable due to problems with old data persisting into new data blocks. Melanie managed to solve this issue, and nearly two years later we have it re-enabled. Early pooling code did not show much promise past 40 avatars (although up to that point was fairly dramatically better) &#8211; however more <a href="http://www.sciencesim.com/wiki/doku.php/opensim/performance_profiling#r9395_with_some_optimizations">profiling done by intel</a> managed to locate the problem as being due to a finite sized pool &#8211; a patch fixed this problem and the overall improvement was a further 40% reduction in CPU requirements for 100 avatars (total reduction for this and aggregation is a whopping 57% reduction in CPU requirements for a busy sim).</p>
<p>Overall, the OpenSim networking code has been improved very significantly (especially with April&#8217;s texture resend fixes), and I would appreciate seeing more testing with large userbases &#8211; the Wright Plaza weekly meetings have been running better than they have for a long time, but only represent a peak of 35 concurrent users.</p>
<p>Some early bugs did present themselves with this networking code &#8211; most notably running into several MTU limits for international users (apparently most international trunk lines will simply drop rather than fragment big UDP packets), myself, Nebadon and Melanie managed to identify and fix this problem.</p>
<p>I introduced, then disabled support for NAT Loopback &#8211; this allows you to emulate a loop-back compatible router for those hosting from home and unable to get a public internet IP. This is currently commented out due to issues with compatibility in Grid Mode (however Standalone mode can be made to work effectively) &#8211; further improvements will be in the realm of adding UPnP support allowing you to host a region from home reliably. Finally I also introduced the capability to use IP and DNS based bans (including wildcards), Dr Scofield improved this with some stability checks.</p>
<h3>Groups Support</h3>
<p>mcortez has been working on adding a fully functional implementation of groups into OpenSim this month &#8211; previously located as part of the flotsam project, the groups implementation has hit core. Early revisions ran into a problem with a permissions exploit and group deeding (allowing anonymous users to group deed a parcel), however these have been fixed and it is ready for further testing. My initial feedback is that it looks good &#8211; things such as group chat are behaving well and responsively, although it is not yet fully functionally complete yet (particularly around the area of group permissions).</p>
<h3>New Region Modules Framework</h3>
<p>I&#8217;m not entirely sure if this was introduced this month &#8211; however a large amount of work was done porting from IRegionModule to the new ISharedRegionModule interface[s]. This new version is syntactically nearly identical, however has better support for removing regions at runtime, and also utilizes the Mono.Addins framework, which will be essential as we begin to add PECL/CPAN-style module repositories to OpenSim (although exactly when this happens is an unknown). The older region module format is going to remain working for quite some time yet &#8211; however if you are feeling adventurous you can investigate the new format and look at porting modules across.</p>
<h3>New Services Framework</h3>
<p>As part of a general improvement of OpenSim code quality, Diva and Melanie improved the services framework this month, deleting the old OGS1 &#8216;UGAIM&#8217; in favor of a new &#8216;OpenSim.Services&#8217; binary &#8211; this also means that the Grid mode and Standalone mode now share all the major infrastructure internally (Standalone runs the grid services in &#8216;private&#8217; now) &#8211; this reduces code complexity and makes it easier for us to add and adjust the services framework.</p>
<p>This framework has also made it easier to edit and adjust module points for Grid Services, meaning it is now possible to write Grid Service plugins &#8211; such as asset caches, external login systems, etc. Diva has been utilizing these to improve the functionality and quality of the Hypergrid technology. A new cache was implemented using GlynnTucker cache &#8211; after it was discovered the previous asset cache did not infact, cache anything, early testing indicates this one works.</p>
<p>Finally, Arthur implemented some improvements to the User Service framework which prevents people from seeing the &#8216;You are already logged in&#8217; message&#8217; in grid mode.</p>
<h3>Remote Control, Administration and Web Integration</h3>
<p>BlueWall introduced and improved his JSON Stats plugin system for OpenSim which allows remote monitoring via AJAX applications of a region. Melanie introduced a &#8216;remote console&#8217; system that utilizes REST, and I introduced some basic capacity for Grid Owners to be able to send grid-wide announcements for maintainence purposes. Dr Scofield improved the XMLRPC-based Remote Admin module to handle additional formats. All of these will no doubt go towards improving administrator remote tools and web interfaces.</p>
<h3>Inventory Archives</h3>
<p>Justin continued work on Inventory Archives &#8211; these allow you to save a copy of your entire OpenSim inventory to a file on disk, which you can then restore on any other compatible OpenSimulator instance. For those who work on multiple seperate OpenSim instances (such as a personal grid, public grid, etc) being able to synchronise your inventory between the two is a big help. IAR archives are still highly experimental and should not be relied on yet for any production purposes.</p>
<p>Justin also added the ability to store creator IDs as a URL rather than a UUID &#8211; this allows you to reference foreign grid avatars as a creator.</p>
<h3>Prim Meshing</h3>
<p>Dahlia continued work on the internal &#8216;Prim Mesher&#8217; used for physics. Improving sculpty physics shells to be more accurate and support properties such as Mirror, improving the overall meshing performance and adding the capability to disk-cache converted meshes for faster startups.</p>
<h3>XML Serialisation Formats and Region Archives</h3>
<p>Sean and Justin made several improvements to our XML Serialisation support including adding unit tests to the serialisers. This will improve overall reliability and support for OAR files as we move forward (preventing OARs from becoming version-incompatible with each other.), OARs were also improved with support for a wider variety of .tar formats courtesy of Dr Scofield. Finally, OARs were renamed from .tar.gz to .oar as the default filename.</p>
<h3>Scripting</h3>
<p>I improved MRM scripting, both the Engine and the API. The engine has been improved to support real-time loading of external binaries, including debugger support. This when compiled with the <a href="http://forge.opensimulator.org/gf/project/mrmloader/">MRM Loader project</a> (located on the forge) allows you to write (<em>and debug!</em>) MRM scripts from within Visual Studio (<em>very cool</em>.), MRMs were also improved with additional security checks, fixing of certain properties (such as Avatar.Position), events (World.OnNewUser) and introduction of an Audio API (World.Audio and IObject.Sound).</p>
<p>LSL was improved with support for the LSL Webserver API going into production on the Second Life(tm) Beta Grid. Also implemented was llAttachToAvatar, llDetachFromAvatar and a host of other improvements.</p>
<h3>IRC Clientstack</h3>
<p><a href="http://www.adamfrisby.com/blog/2009/05/adventures-in-text-only-opensim/">As mentioned earlier</a>, OpenSim now has a ClientView which supports a primitive text-only IRC protocol support. This allows you to connect to a region for chat facilities using only an IRC client &#8211; this may be an advantage over the previous IRC Bridge module where IRC users were not represented inworld with an avatar.</p>
<h3>Final Words</h3>
<p>If I missed anything &#8211; let me know, Justin&#8217;s notes are likely to be slightly more comprehensive on smaller non-architectural changes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfrisby.com/blog/2009/05/os-under-the-surface-may-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
