Talk:Definitions

We need an overhaul of term definitions in OpenSim before we can clean up the ScenePresence vs. ClientManager mess. Here's a starting point, feel free to revise/append/discuss:

Entity
An entity in OpenSim is "something that exists in the 3D simulation". It has a position in the world, a rotation, velocity, etc. It is responsible for providing a physical proxy that can be handed off to a physics engine. It might break every rule and be invisible, static, and have no physical proxy but it must still implement all of these concepts.

Prim
A prim is one type of entity that is very common in OpenSim. It has roots in the Second Life(tm) world, and is a procedurally generated basic shape that has an efficient network representation. It implements the basic concepts required to be an entity, plus many additional concepts that are specific to the LLUDP protocol. It also implements some extra generic concepts in OpenSim, such as acting as a script container.

Mesh
Although mesh support was originally introduced as a proof of concept in OpenSim by the realXtend team, there are many different types of mesh representations and file formats. This blanket term refers to any type of entity that stores geometry data instead of procedural instructions to generate geometry. Depending on the implementation, a mesh may or may not implement additional interfaces such as the scripting container interface or LLUDP concepts.

Scene Presence
A scene presence is another type of entity (sibling of prim and mesh) that represents a [mostly anthropomorphic] character. Scene presences interact with scenes and their entities by subscribing to and raising events. Given the foundations in the LL system, the collection of interaction events pertaining to scene presences is very large. We would want to divide this collection in smaller sub-sets that specific implementations of scene presences may choose to implement.

(Note: I can tolerate calling scene presences "avatars", even though I don't like the word avatar. We can pick one in the code, but use the two terms "scene presence" and "avatar" interchangeably)

Agent
An agent is OpenSim's internal representation of a client that connects to the simulation via a network. This may be an end user that has a Second Life(tm) viewer and wants to connect, a search engine that wants to connect to the simulator and scrape information, a proxy that is managing hundreds of connections, an external engine that is sending and receiving data to control the simulation, or anything else that needs to establish a connection to the simulator. Agents are distinguished by the protocol they use to communicate, such as a LindenUDP client vs. an MXP client.

Client
Any external program that connects to OpenSim servers via a network. It's not part of OpenSim.

User
A person that uses a client program to connect to OpenSim servers. Users may have accounts, and may have storage provided by OpenSim-related services. Or they may not. User accounts and storage may be available to users by means other than the client that they use to connect to OpenSim worlds. For example, an inventory service provider may serve inventory manipulation over a regular web browser. Etc.

Relations between these concepts

 * The "normal" chain: a user uses the LL client program to connect to an OpenSim server; inside OpenSim, this connection is represented by an agent which is associated with a scene presence/avatar; the agent acts on behalf of the user in order for the OpenSim server to access the user's services.
 * An agent may or may not be associated with a scene presence. Some agents may simply not have scene presences at all (e.g. a search engine http bot, or even sophisticated agents that send back graphical information but are "invisible").
 * A Scene Presence may or may not be associated with an agent. Some scene presences may simply not have agents behind them at all (e.g. server-side characters).
 * As a consequence, we can also have the following chain: a user uses XPTO client to connect to an OpenSim server; inside OpenSim this connection is represented by an XPTO agent which does not associate with any scene presence/avatar; using this XPTO client, the user does not need to provide an identification, so the user is effectively browsing the world invisibly and anonymously. Some OpenSim worlds may allow these agents, while others may not.