<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:D="DAV:" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-AU link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I can +1 these patches in principle.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>It’s the ‘in practice’ that will need some fiddling as changing
this many data types all at once is likely to cause an incredible amount of fun
debugging later. (and will also mandate every grid update every region as our
remoting support will break as a guarantee)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Regards,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Adam<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> opensim-dev-bounces@lists.berlios.de
[mailto:opensim-dev-bounces@lists.berlios.de] <b>On Behalf Of </b>Charles
Krinke<br>
<b>Sent:</b> Friday, 8 August 2008 1:55 PM<br>
<b>To:</b> opensim-dev@lists.berlios.de<br>
<b>Subject:</b> Re: [Opensim-dev] Standardizing types in OpenSim<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<div>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Well, I'll
merely say that I have the highest of respect for jhurliman's opinion and what
he says here seems like a set of reasonable ideas.<br>
<br>
Charles<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p> </o:p></span></p>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>-----
Original Message ----<br>
From: "Hurliman, John" <john.hurliman@intel.com><br>
To: opensim-dev@lists.berlios.de<br>
Sent: Friday, August 8, 2008 11:44:59 AM<br>
Subject: [Opensim-dev] Standardizing types in OpenSim<br>
<br>
Hello list,<br>
<br>
This is my first e-mail to opensim-dev so I'll start with an<br>
introduction. I'm an engineer at Intel researching scalable models for<br>
virtual worlds. A lot of the research will revolve around open,<br>
user-generated content models like Second Life and OpenSim. I'm also the<br>
primary developer of libOpenMetaverse (formerly libsecondlife, still<br>
located at <a href="http://www.libsecondlife.org/" target="_blank">http://www.libsecondlife.org/</a>
for the time being).<br>
<br>
I've spent some time looking at the lower level components of OpenSim<br>
and have a patch to propose. The basic type objects (vector, quaternion,<br>
rays, etc) are spread out and duplicated over several internal classes<br>
and external libraries. There are at least five different types of<br>
Vector3, multiple quaternion and matrix classes, etc. Some of these are<br>
classes instead of structs, meaning a basic operation like subtracting<br>
two vectors and putting the result in a third creates several new<br>
objects on the heap that the garbage collector has to track. I believe<br>
this is responsible for a lot of the heavy memory and garbage collector<br>
activity I am seeing. There is also a lot of duplicated code which has<br>
led to incorrect constructors (such as new Vector3(x, y, y)) and makes<br>
things more difficult to unit test.<br>
<br>
The OpenMetaverse library has a set of types useful to virtual worlds<br>
that have been in development for two years and implement all of the<br>
functionality needed in OpenSim. I've created a very large patch that<br>
upgrades OpenSim from libsecondlife to the latest libOpenMetaverse,<br>
drops Axiom, and uses the built-in libomv types wherever possible. There<br>
are a few places that I have skipped over for now to avoid introducing<br>
too many moving parts in a single patch: BulletX still uses Mono.Xna,<br>
and Meshmerizer still uses PhysicsVector/Vertex/Triangle.<br>
<br>
I've spoken with some of the OpenSim developers about problems keeping<br>
up with libsecondlife changes. The major changes happened to prevent a<br>
trademark conflict with Linden Lab, and also establish libopenmv as a<br>
generalized platform for building virtual worlds instead of a library to<br>
connect to Linden Lab's servers. I think this patch is an important move<br>
in that direction, and to prevent any future headaches I'm volunteering<br>
to maintain the OpenSim->libOpenMetaverse dependency in the event of any<br>
API changes.<br>
<br>
I'm working on grid mode compatibility testing (sandbox mode appears to<br>
work fine) and will have the patch on Mantis early to mid next week. So<br>
far the patch itself weighs in around 1.7MB plus binaries. Twenty<br>
revisions have passed since I initially wrote it and maintaining it<br>
against the latest SVN can be time consuming, so I wanted to kick start<br>
with this e-mail before posting the patch.<br>
<br>
John Hurliman<br>
_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
<a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><o:p></o:p></span></p>

</div>

</div>

</div>

</div>

</div>

</body>

</html>