About
Introduction
uBrowser is an open source test mule that renders interactive web pages onto geometry using OpenGL® and an embedded instance of Gecko, the Mozilla® rendering engine. Its primary purpose is to help me integrate Gecko into my company's software - a 3D virtual world called Second Life.
The first version, released in February 2006 was implemented as a single application and was only able to render a single Web page at a time. The current version can be thought of as a unit test for a newly developed library called LLMozLib that makes it easier to embed Gecko into applications. As well a providing this standalone library that can trivially be included in other applications, the notable improvements are support for rendering multiple simultaneous pages and support for page updates as and when required rather than via the old timer based model. There is still a lot of work left to do and by releasing the source, I'm hoping that others will benefit from what I've learnt and perhaps even help fix some bugs. You are able to interact with the page (mostly) normally and visit (almost) any site that works correctly with Firefox® 2.0.
What does it looks like?

Who?
I work for a company in the San Francisco Bay area called Linden Lab. Our software, Second Life, has become quite popular and this is mostly because of the amazing in-world content created by our residents. The work I did on the first version of uBrowser enabled me to add rudimentary support for embedded Web content - namely, the login screen, terms of service dialog and in-world help pages. It was a small but useful first step. The real benefit will come when residents can put interactive content anywhere they like - the much rumored "Web-On-A-Prim". As well as allowing for the display of regular Web pages (HTML/DHTML/CSS/JavaScript), I foresee the integration of all sorts of interesting Web based applications via modern browser technologies like XUL and SVG - both of which are supported in this release.
Why?
During development of this software, I found useful information online that others had provided. I was also given lots of help and advice from some of the folk at the Mozilla Foundation - specifically Doug Turner and Robert O'Callahan. This is an attempt to give something back and share what I found during the development process. There are certainly errors, bugs, oversights and instances of massive stupidity on my part but I hope people will find something useful buried in here. It's not meant to push the advantages and disadvantages of browsing in 3D although this framework might be useful as a starting point for others who'd like to explore those possibilities. Additionally, I wanted a small, rapid loading test harness that I could use and other people could poke at.
How?
I wanted something cross platform since our client is available for Windows, Mac and Linux (alpha version) and ultimately this has to work on all of them. I wanted a way to be able to create and move around various pieces of geometry. There had to be a way to "pick" points off of the geometry in 3D space accurately so I could test mouse interaction. I wanted some GUI that would facilitate movement, allow entry of URLs and provide a place to display feedback - progress and status text for example. Eventually I settled on a combination of my own code for picking, GLUT for window management and rendering and GLUI for the UI. There are a couple of minor niggles but for the most part, things worked out really well. Thank you to the developers for making my little a bit easier.
Get it!
Please explore the site, download the application and look at the source. If you have any comments or suggestions or would like do something interesting with it, please do let me know. I hope to have Mac OS X and Linux versions up some time in the future.

