VOS/Interreality Long Term To Do List

NOTE: This document is now obsolete. Long-term ideas and wish list items have been moved to IDEAS.txt. Short-term features and bugs have been entered in the bugzilla system at interreality.org


Anything that doesn't have a person assigned is up for grabs (and some that are assigned as well)! Let the vos-d mailing list know if you are interested in working on anything here, or if you want us to add anything to the list.

This list is maintained by Reed Hedges

Release Checklist

Next release: 0.20? In or before June, 2004

  1. Add NEWS entries to released components
  2. Increment version numbers in README and doxygen.conf if applicable
  3. Regenerate api-doc package
  4. Post new manual if necesary.
  5. Generate source packages for released components
  6. Generate binary (debian) packages for released components
  7. Package Windows binaries
  8. add source packages to web cvs
  9. Test! Debian unstable, RedHat 7 or 8, MacOSX, Win2K, Win98
  10. Test some more!
  11. Test again!
  12. Upload to sourceforge mirrors
  13. Update links on web pages!
  14. Update interreality.sf.net web mirror
  15. Add announcements on home page, freshmeat, sourceforge, vos mailing lists, crystalspace list, wxwindows list, elysiun.com, vrsource.org, vrml list, nooface.org, as applicable.

High Priority Tasks/Bugs:

To Do List

General | GUI Stuff | Misc Metaobjects | Property Metaobject | 2D Images | Hypevos | Documentation | Installation and Deployment | Porting, other languages/implementations/bindings | OTD | Integration With Other Software Systems | 3D Stuff | New intersite communication extensions (network transports) | Far Out Ideas

General

See also README's and TODO's for specific apps in their directories, namely terangreal, metatronic and mesh.

Property

2D images

Hypertext

Documentation:

Deployment/Installation

Porting, Development Environments, alternate implementations

Object Type Definitions

Talking to other software systems

3D/VR Apps

General stuff

Materials (CSVOSA3DL plugin and A3DL Metaobjects)

Objects and Geometry: (CSVOSA3DL module and A3DL metaobjects)

Terangreal UI

Server tools, extensions and demos

Misc other features:

Platform-specific:

Dynamics/physics neil, tetron?

Caching:

New network transports (site extensions)





2:23:<reed_> you want to preserve the way keys and commands are done in s3?
2:23:<tetron> right, I could bring in some of the s3 functionality
2:24:<reed_> i think we should use CS-style config files for everything
2:24:<reed_> one thing i'd like to do is automate the way settings are done...  ideally the settings GUI could be generated automatically from the config file
2:24:<tetron> partly I think we need a vision... what do we want terangreal 1.0 to do?
2:24:<reed_> and vice versa
2:25:<reed_> (so you can actually *save* settings to the files!)
2:25:<tetron> (yes)
2:25:<reed_> key features:
2:25:<reed_> - everything that s3 does
2:26:<reed_> - better chat interface, including private IMs, setting personal status info, etc. (basics of IRC and IM clients)
2:26:<reed_> - avatar keyframe animation
2:26:<reed_> - easy access to companion programs like the GUI editor, etc. 
2:26:<reed_> - portals
2:27:<reed_> - proper caching of data, and online caching of lightmaps
2:27:<reed_> - content libraries (same mechanism as caching)
2:27:<reed_> - keep a little "palette" of objects and object-factories
2:27:<reed_> - misc. improvements to graphics and navigation
2:28:<reed_> - comprehensive settings/config GUI
2:28:<tetron> I agree with all that, what I'm concerned with is the "big picture", eg take one step back from specific features and say "what do we want this to do"
2:28:<reed_> well now that we have csa3dl, terangreal is the swiss army knife
2:29:<tetron> and "3D chat that doesn't suck" is an acceptable goal :-)
2:29:<reed_> you just use it to explore worlds and socialize
2:29:<reed_> and help build world
2:29:<tetron> yes
2:29:<reed_> (though not to compete with better creation tools like blender, or level editors, etc.)
2:30:<tetron> well, being able to pop in premade objects in a far cry from a real modeling program
2:30:<reed_> it should be useful as an interface to games and such that don't
require special logic or control (e.g. online checkers)
2:30:<reed_> and data visualization
2:30:<reed_> since csa3dl exists' specialized clients can be made like the prophecy
2:30:<tetron> yep
2:34:<tetron> oh, I think that we should try and focus on being able to load existing content, too
2:35:<tetron> VRML being the obvious one, but maybe also Quake maps and such
2:35:<tetron> since we don't yet have a huge base on artists banging out door down... we can go steal stuff :-)
2:35:<reed_> we need to determine what the best/most popular quake/doom/unreal editor(s) is(are)
2:35:<tetron> probably Valve Hammer 
2:35:<reed_> those editors are pretty easy to learn
2:36:<tetron> there's a library out there that allegedly reads half life maps
2:37:<reed_> so talking about goals of terangreal
2:37:<tetron> what we really need are some really cool demo worlds, and step-by-step instructions on how to create your own worlds
2:37:<tetron> and how to host them, or upload them
2:37:<reed_> terangreal needs to be the interface through which we can play with ideas like this
2:38:<reed_> so it also needs to do stuff like display remote GUI controls (trivial)
2:38:<reed_> maybe do some 2d graphics
2:38:<tetron> we'll be able to display web documents as textures
2:39:<tetron> I'm just trying to envision what ter'angreal needs to do (and not do) that I could comfortably have it on my desktop all the time
2:41:<tetron> the 3 apps that I most interact with are IRC, a terminal window, and a web browser
2:41:<reed_> well how can you run it with 3d graphics but not use too many resources?
2:41:<tetron> the resource usage issue is the most annoying problem
2:41:<reed_> that's why i mentioned component architectures, or reusing code in libraries vs. apps the other day at your house
2:42:<reed_> one idea is to just "detach" the chat/buddy-list GUI from terangreal
2:42:<reed_> and close the graphics part.  I guess you could iconify just that window and pause it....
2:42:<tetron> one possibility would simply be to throttle CPU usage
2:42:<tetron> one could iconify the 3D window but still use other windows part of the same uber-app
2:43:<tetron> (although along those lines people also don't like uber-apps that do everything...)
2:43:<tetron> (witness the fact that mozilla is being split into several individual apps)
2:43:<reed_> but you also might want to have your chat interface on your PDA, and your 3D stuff on your desktop or something
2:44:<reed_> we will need to think a bit more about replication, so your avatar/talk objects could really be persistant and never die
2:44:<reed_> and you could transfer them from one machine to another
2:44:<reed_> (identity too)
2:47:<tetron> so we need to think about ways we can have the 3D chatroom add to IRC
2:47:<reed_> one thing is an irc bridge that replicates individual users
2:47:<reed_> another is something like an infobot or agent
2:48:<reed_> so when people come online to an otherwise deserted server, there is *something* to talk to :)
2:48:<tetron> the stuff that 3D is going to add will be facial expressions, gestures...
2:48:<tetron> that's what "There" is good at
2:49:<tetron> that's going to require some character animators to contribute
2:49:<tetron> perhaps we can cull some stuff from other projects
2:49:<reed_> well you can start with some game models
2:49:<reed_> though there your expressions are "standing", "running", "attacking", "dead"
2:50:<tetron> but, y'know, for 3D to be interesting I'd like to see your avatar
doing something when you type a message, something more interesting than their
standing loop
2:50:<reed_> like talking
2:50:<tetron> I think that's what we need to strive for, is how we can add to
interpersonal interaction
2:50:<reed_> you could have two things
2:51:<reed_> a "do this while i'm typing" action
2:51:<reed_> and actions triggered by patterns in the text
2:51:<reed_> like !
2:51:<reed_> :)
2:51:<reed_> hmm...
2:51:<tetron> another thing is for two users to able to see the same thing, such
as a web page or terminal window
2:51:<reed_> uh...
2:52:<reed_> lol
2:52:<tetron> syb was talking about how much easier it would be to debug compile
problems if you were standing in the virtual world and you could call someone
over to look at your terminal :-)
2:52:<reed_> part of your object creation library in terangreal should be
creating hypercards to any data
2:52:<tetron> so we have to think about ways of fully takin advantage of user
presence in a space
2:53:<reed_> or creating visible artifacts by cut & paste or drag and drop
2:53:<reed_> ie, a plane with some text on it 
2:53:<tetron> post-it notes :-)
2:53:<tetron> these are the sorts of ideas we need to be thinking about... not
features, uses

Far out, back burner, strange ideas
----------------------------------

- Listener priority. When becoming a listener, the new listener can
  set it's own priority.  When notifying, high priority listeners go first.
  Change priorities dynamically as well.


-  Sites could form a single Borg-site by host-aliasing each other,
and authenticating to each other, and talking to each other. (for example, lots of 
local sites talking with shared memory or domain sockets VOP sessions (VOS does 
not need to operate over network streams, remember, and also being authentic
host aliases of each other). See next node about replication.

- Object replication/relocation.  There is some of this in the "policy"
  metaobject. Tetron has also done some work on this (see the "renaldo" game in
  the CVS tree).  One useful feature is to create objects locally, then 
  relocate to another site when you quit. Or, when a site is heavily loaded
  or detects bandwidth saturation, to relocate objects to other sites. Need
  some protocol for negotiating with sites for relocation, and for recovering
  from the site you just sent your objects to suddenly dissapearing (so 
  all "relocation" should really be "replication, then hide the original but
  keep it up to date?).  This would only work for passive data objects,
  not "active" objects. But imagine a low bandwidth site on a modem which
  is the "originator" of the world, and as more people join, the objects
  start spreading out to the people with more bandwidth. Then as people
  leave, they merge back into earlier "authoritative" origination sites.
  (this can be represented by a hierarchical graph showing the replication
  history, followed back up to merge back to the prime state)

    - Related is the idea of simply doing redundent "gratuitous" replication
      and referring users to the duplicates randomly. (See previous Borg
      note)

    - Users with reliable broadband connections could run helper servers
      that accept replications from other servers (friend's servers, favorite
      worlds, anything on the interreality.org service list, etc.) 
      to balance loads


- Adapt to bandwidth and latency problems by indirect object addressing:
  if some user has less latency than others (WRT you), send all messages through
  them, and let them forward messages to others (though replies go back to you
  directly).  Access control problems here?  Not sure if this is a good
  idea or not.  Would also need to be pretty smart about choosing a user
  to forward through (and deal with him ignoring your messages).  Might
  require some infrastructure changes.
  


- Micropayments and subscription support.
    It would be a good experiment to try and implement a micropayment system 
    in VOS, a'la Xanadu. It would probably be an extension to Property, with
    subobjects to the property containing price and certificate information,
    as well as descriptions of what you're buying, a "free" version, etc. 
    Secure (TLS/SSL) transactions would of course be required.

    On the other hand, subscriptions have been more successful on the net
    so far, so some support for access control based on looking up 
    TLS certs in a database of subscribers would be good too.

    Note that Paypal and even Bitpass are'n't really micropayments, just
    very small payments. You need and intertwingled medium for Xanadu-style
    mircropayments to be possible (and you need to make the payments REALLY
    small). Whether or not people will actually accept uPayments is another
    story entirely.

    Clay Shirky argues againt micro/mini payments here, not a bad article:
    http://shirky.com/writings/fame_vs_fortune.html

    Here is an interesting new company as well: http://www.peppercoin.com


- we need to network plants with water sensors and avatars that make goofy 
 speach bubbles for being watered. and various other cheap sensor arrays that
 display in a virtual world. X10 interface ? :)  :)
	* Use parapin or this: <http://www.makingthings.com/products/products.htm>
	* Set up a config file to map sensor readings or pin states to
	   property values


Some links, for information
    3D Renderering Libraries:
        http://plib.sf.net
        http://opensg.org (not to be confused with openscenegraph)
        http://openscenegraph.org (not to be confused with opensg)
        http://ogre.sf.net
    Libraries for tracking devices:
        VR Juggler
        OpenTracker