User:Morgaine Dinova
Background
Chronologically, ElecEng grad/honours, PhD in EE/CompSci (concurrency and parallelism), postdoctoral research (parallel language design), and finally university lecturer in EE/CompSci for several years. Then left academia to work in industry with many clients as a freelance contractor. Very diverse roles in computing: analyst, designer, programmer, systems architect, QA, technical author, and sysadmin, in subjects including kernel, comms, drivers, defence, cryptography, engineering support applications (eg. RF power density displays), GUIs, firewall design and management, network monitoring and alerts. and multi-year ISP involvement with scalability of services from 64k to 3m users.
Unix-based by preference and experience, ever since Bell Labs sent me the source tapes. I think that was somewhere around the Late Jurassic period.
Language agnostic, too many to care, and several created in passing. The language is not the problem anyway, just a tool with limited scope, so mix'n'match them to meet requirements. In computing, I take a strong, component-oriented engineering line: if you are language-centric and are in denial about interoperation between components from multiple parties written in different languages, then you're not part of the solution but part of the problem.
Currently taking an open-ended sabbatical (I've earned it) for AWG/MMOX/etc --- it seems like a worthwhile goal.
My main focus in the VW landscape is designing for scalability, open architectures, and high extensibility.
Non-computing interests include many hard sciences and engineering disciplines, especially nanotechnology and its related areas, as well as astronomy and astrophysics, and climatology. Ex-member of IEE and IEEE, ex-radio amateur, ex hang glider, ex guitar player wannabe, and now enthusiastically into MIDI. I'm a long-term transhumanist, which loosely summarises as being interested only in tomorrow, and shedding prior constraints every midnight. Virtual worlds fit in perfectly.
I'm UK-based, and hate the weather.
SL background
- I've been an SL resident since 25th August 2004. I regard SL as a very nice initial step in the evolution of VWs, but it has poor support for the 'V' in VW (it emulates RL), and suffers from severe scalability problems.
- I spent a year scripting in LSL, but I now regard that as a waste of time. The reason for this is that riding on the shoulders of giants is almost impossible when writing in LSL. To a close approximation, this also means that progress in scripting with LSL is limited to the capabilities of a single person, which effectively means that it has no future. To allow us to ride on the shoulders of giants, we need object composition.
- My SL interest is currently focussed on working with the Architecture Working Group, an interest which was sparked by Linden Lab's declared Project Motivation (which translates to scalability, scalability, scalability) when starting the AWG project. LL will not deliver on that promise, but AWG fuels third-parties too, so the work is worthwhile.
- I am a little concerned at the (apparent) disconnect between the AWG's very server-focused view of the OGP design process and the rather obvious fact that it's the viewer that actually drives the protocol, so really it is the viewer that should be setting the requirements. The viewer is actually the "customer" here, in some sense, yet there isn't even a list of use cases that have been analysed to drive the protocol design (beyond the existing, non-interop use cases which are always in mind of course).
- It is partly in response to the preceding point, and partly in response to LL's disinterest in sim scalability, that I've been looking more closely at the various third-party viewer projects, or forks. Two such are the Meerkat viewer, and the Imprudence viewer. The latter is closely associated with the User Experience Interest Group (UXIG), which was formed when Benjamin Linden reduced his Office Hours to a mere 1h per month. I'm now participating in this group, and in the Imprudence forum.
SL, and VW Goals beyond SL
System goals
In order of importance:
- Freedom to live our virtual lives in whatever matter our imaginations desire, free of coercion by those whose small minds require that virtual worlds be a mirror of the real world. This is a systemic goal, which impacts on clients, servers, community, and privacy.
- Scalability for events (Philip acknowledged the need for it publicly 3 years ago).
- Scalability along the other 3 dimensions. (The only one that LL implemented quite well was zone tiling scalability in 2D.)
- Interop with 3rd party worlds and grids.
- Arbitrary-sized zones, arbitrary-sized plots -- land acreage in virtual worlds has no natural relationship to CPU resources nor bandwidth, but Linden Lab's design has linked resource-based taxation to land acreage, which makes zero sense. As soon as 3rd parties start offering huge estates for L$1 (or indeed whole planets), LL has a financial crisis on its hands. Better start thinking about it now.
- Virtualization of Regions -- a long-term design strategy for removing all limits to region scalability.
Client goals
In no particular order:
- Improve portability across compilers and platforms.
- Remove dependencies on specific versions of required libraries.
- Add an event API for use in scripting language bindings.
- Refactor access to required libraries to allow alternative choices.
- Refactor subsystems to allow alternative choices (see below).
- Decouple the viewing from the presence handling, allow N:1 (multiple views per presence).
- Replace refactored 2D GUI by decoupled alternative [footprint reduction].
- Replace refactored audio system by decoupled alternative [footprint reduction].
- Make the refactored 3D navigation/camera event-driven [for scripting, machinima].
- Attach QA/test modules for test-driven development and system regression testing.
Among the many other benefits, physical refactoring gives us the opportunity to harness multiple cores.
Occasionally I just despair and decide to rewrite the whole thing from scratch. Tomorrow, that is. ;-)
- Many of these client-related goals are starting to come together in the Multi-Process Client VAG -- draft. Note that the work is still at a very early design stage.
- Some of these client-related goals have been re-focused into modifications to the Imprudence viewer. In particular, several aspects of Imprudence's forthcoming socket-based plugin system borrow directly from the earlier Multi-Process Client work.
Personal goals
- Fun. :-)
Enough to keep me busy for a while ...
Feature Suggestions / Ideas Capture
This section is intended for capturing and honing a few ideas before they have a prime-time spot.
Privacy
- See Parcel Basements, by Argent Stonecutter (described in privacy thread post #133).
- This is a very lightweight, server-side-only approach that delivers domain privacy through the simple strategy of blocking the download of objects to clients unless the client's agent is in the same basement as the object itself. It is parcel-based: every parcel has a basement of the same shape conceptually "beneath" it. There are no significant corner cases, because a basement cannot be approached physically, and it simply "doesn't exist" from the PoV of an adjacent parcel basement, nor is it detectable from the land above it.
- The only means of access to a Parcel Basement is by teleport, if granted by the parcel owner. It is a lightweight scheme because object download blocking requires only a single Basement Id check, and because there are no bounding box checks required beyond the existing parcel detection.
- The scheme can be extended to communications privacy as well, by blocking receipt of vicinity chat at the server when it originates from a basement, and replacing it with Basement Chat which is distributed only to those agents that are present in the same basement.
- Privacy in AWG / SL-Next-Generation: privacy is utterly crucial in the context of a worldwide, distributed, third-party virtual world system (a matter of life and death in some cases), but a scheme like Parcel Basements by itself would address only part of the issue. In addition to blocking all basement objects' traffic beyond the bounds of a single managed grid, the communications transport would need to be based on end-to-end encryption between clients whose agents reside in the same basement. The guardians cannot be trusted in principle nor in practice.
- There should be an AWG Privacy VAG to deal with these matters in depth.
Object composition
- One of the greatest constraints in SL which is inappropriate in a more general environment of distributed virtual worlds is that there is no object composition: you can't buy two opaque objects X and Y and create a composite object Z out of them. Object composition is the bedrock of engineering and the key to exponential progress, as without it all products are limited by the capability of individual producers working from raw materials instead of from pre-existing components. In other words, there can be no riding on the shoulders of giants. Instead of building an ever-rising pyramid, all growth is in breadth only, so progress is severely limited.
- Support for object composition needs to be added at an infrastructure level: this means being able to create, refer to and manipulate a composite object as if it were a monolithic one, as well as arranging its constituent parts internally as required. SL does of course have linking of primitive objects, but this is severely limited and cannot build out of existing components.
- It is important to point out that Philip and Cory stated publicly in a Google video presentation that in retrospect they had made a mistake in opting for prim linking instead of object composition. I agree. And while SL probably won't get this improvement any time soon, other VWs undoubtedly will, so that the pyramid of engineering components can start growing in height at last.
- See also Prim_and_Object_Hierarchy, and the transcript of Philip and Cory's comments on this topic.
Interactivity
- See the SL forum thread on extending mouse interactions. This is not an actual feature suggestion, but merely a focus for discussions about adding support for greater interactivity in future virtual worlds of the SL kind.
SL's viewer kicked off with a rather interesting and flexible implementation of 3rd Person (3P) camera navigation, quite unconventional because it allows the camera pivot to be decoupled from the avatar. It even attempted to provide continuity between the 3P and 1st Person (1P) views, but unfortunately this failed somewhat in its implementation, and the camera system as a whole hasn't really seen any significant development in recent times.
I have an interest in 3D engine cameras, so I became involved in many forum discussions about it. I expect my interest to be rekindled when 3rd party viewers become more mainstream ... which is any time now, as independent viewers are sprouting up all over the place. Here are some relevant forum threads from way back, which sadly are just as relevant today since nothing has changed:
- Mouselook and loss of camera continuity -- the viewer's 1P/3P camera model is rather primitive, needs a bit more TLC.
- Leave my fricking camera alone! -- the never-ending saga of trying to make LL understand that OFF means OFF.
Materials
References
- The following VAGs are/were of most interest to me:
- I think it's fair to say that VAGs never gained any real momentum.
Drafts and collaborative work
MMOX IETF Workgroup
- MMOX -- currently just a place for links to MMOX-related documents and resources.
- MMOX Mailing List at the IETF.
Multi-Process Client
Socket-based plugins for the Imprudence viewer
- The Imprudence viewer is gaining a socket-based plugin system borrowing ideas from the earlier Multi-Process Client work.
Client-side Scripting
Scalability analyses
- ANALYSIS: Region Subdivision as a scaling method (showing why the idea is fundamentally flawed)
- Informal sim scalability recording thread on SL forum, periodically registering the state of sim agent limits.