clarify the federation aspect #47

Open
opened 2 years ago by utopiah · 6 comments
Owner

what should others do and get in return via Immers.

what should others do and get in return via Immers.
utopiah added the
documentation
label 2 years ago
Poster
Owner

Taking back the older perspective of "invinting" people to actually visit or "take a tour" of my mind, as represented by my notes, what would the social aspect entail?

  • public versus private versus non-social (see #32) spaces
  • publicly or visible only from friends favorited spaces
    • including places and moments in spaces, see #24
      • including non 3D screenshots, cf ibid
  • friends list to faciliate invitation
  • sharing of text/code snippets
    • for the environmment via e.g ?commands-url=, as mentioned in #12
    • or to customize own shortcuts, cf #28
  • being able to "bring in" own commands to other spaces
  • social provenance or list of annotations from another person
    • e.g inviting someone and letting them add content
    • to disentengle from the "live" networking aspect
Taking back the older perspective of "invinting" people to actually visit or "take a tour" of my mind, as represented by my notes, what would the social aspect entail? * public versus private versus non-social (see https://git.benetou.fr/utopiah/text-code-xr-engine/issues/32) spaces * publicly or visible only from friends favorited spaces * including places and moments in spaces, see https://git.benetou.fr/utopiah/text-code-xr-engine/issues/24 * including non 3D screenshots, cf ibid * friends list to faciliate invitation * sharing of text/code snippets * for the environmment via e.g `?commands-url=`, as mentioned in https://git.benetou.fr/utopiah/text-code-xr-engine/issues/12#issuecomment-78 * or to customize own shortcuts, cf https://git.benetou.fr/utopiah/text-code-xr-engine/issues/28 * being able to "bring in" own commands to other spaces * social provenance or list of annotations from another person * e.g inviting someone and letting them add content * to disentengle from the "live" networking aspect
Poster
Owner

Note that most of this features would faciliate demonstration, remote demonstration in particular, but most likely to people already familiar with federation.

Note that most of this features would faciliate demonstration, remote demonstration in particular, but most likely to people already familiar with federation.
Poster
Owner

All sharing aspect should maintain provenance, cf #20 , so that an important text/code snippet is not just its content but also a way to backtrack to its source, similar to #56 .

All sharing aspect should maintain provenance, cf https://git.benetou.fr/utopiah/text-code-xr-engine/issues/20 , so that an important text/code snippet is not just its content but also a way to backtrack to its source, similar to https://git.benetou.fr/utopiah/text-code-xr-engine/issues/56#issuecomment-173 .
Poster
Owner

Example of user case : porting the Future of Text symposium book not to an innert object but rather a graph of spaces where each chapter becomes a potential workshop on the topic where both social and knowledge interactions take place. The federated aspect then becomes how to faciliate quality social interactions.

Example of user case : porting the Future of Text symposium book not to an innert object but rather a graph of spaces where each chapter becomes a potential workshop on the topic where both social and knowledge interactions take place. The federated aspect then becomes how to faciliate quality social interactions.
Poster
Owner

See federation branch https://git.benetou.fr/utopiah/text-code-xr-engine/src/branch/federation

Started to learn deeper integration with :

  1. Fetch and render friends list with online status and link to current location
immersClient.friendsList().then( r => r.map( u => { 
  console.log(u.profile.displayName); 
  if (u.profile.avatarImage) { console.log(u.profile.avatarImage) }
  if (u.locationURL) { console.log(u.locationURL) }
  if (u.locationName) { console.log(u.locationName) }
  // unsure what is the difference between location and destination
} ) )
// could replace console.log() by addNewNote()
  1. Fetch and render one page of the user's activity feed

immersClient.feed().then( console.log )

  1. Send an outgoing text chat message

immersClient.sendChatMessage("msg", "public", ["otherutopiah[immers.space]"])

That can then be read via

immersClient.addEventListener("immers-client-new-message", console.log )

Documentation

See `federation` branch https://git.benetou.fr/utopiah/text-code-xr-engine/src/branch/federation Started to learn deeper integration with : 1. Fetch and render friends list with online status and link to current location ```javascript immersClient.friendsList().then( r => r.map( u => { console.log(u.profile.displayName); if (u.profile.avatarImage) { console.log(u.profile.avatarImage) } if (u.locationURL) { console.log(u.locationURL) } if (u.locationName) { console.log(u.locationName) } // unsure what is the difference between location and destination } ) ) // could replace console.log() by addNewNote() ``` 2. Fetch and render one page of the user's activity feed `immersClient.feed().then( console.log )` 3. Send an outgoing text chat message `immersClient.sendChatMessage("msg", "public", ["otherutopiah[immers.space]"])` That can then be read via `immersClient.addEventListener("immers-client-new-message", console.log )` Documentation * https://immers-space.github.io/immers-client/ImmersClient.html * [.friendsList()](https://immers-space.github.io/immers-client/ImmersClient.html#friendsList) * [.profile](https://immers-space.github.io/immers-client/ImmersClient.html#profile) * [.feed()](https://immers-space.github.io/immers-client/ImmersClient.html#feed) * [.sendChatMessage()](https://immers-space.github.io/immers-client/ImmersClient.html#sendChatMessage) * [event:immers-client-new-message](https://immers-space.github.io/immers-client/global.html#event:immers-client-new-message) * https://immers-space.github.io/immers-client/ImmersHUD.html
Poster
Owner

ToDo (cf session 1 logs)

  • Post note with 3d position/orientation (by setting client.place.location )
immersClient.place.location = { position: AFRAME.utils.coordinates.stringify( document.querySelector("#testnote").getAttribute("position") ), rotation: AFRAME.utils.coordinates.stringify( document.querySelector("#testnote").getAttribute("rotation") )}
msg = await immersClient.sendChatMessage( document.querySelector("#testnote").getAttribute("value"), "public" );
  • Add them to a collection for that room
 const noteswithlocationURL = "https://immers.space/collection/utopiah/notewithlocation"
immersClient.activities.add( msg, noteswithlocationURL)
immersClient.activities.actor.streams.notewithcollection = noteswithlocationURL
immersClient.activities.updateProfile( immersClient.activities.actor )
  • Refetch that collection on return and rerender the notes in place
noteswithlocation = await immersClient.activities.getObject(noteswithlocationURL)
immersClient.activities.getObject( noteswithlocation.first ).then( c => c.orderedItems.map( i => addNewNote(i.object.content, i.object.context.location.position) ) )
ToDo (cf [session 1 logs](https://immers.space/s/63976b1aeec1f57d2598b318)) * Post note with 3d position/orientation (by setting client.place.location ) ```javascript immersClient.place.location = { position: AFRAME.utils.coordinates.stringify( document.querySelector("#testnote").getAttribute("position") ), rotation: AFRAME.utils.coordinates.stringify( document.querySelector("#testnote").getAttribute("rotation") )} msg = await immersClient.sendChatMessage( document.querySelector("#testnote").getAttribute("value"), "public" ); ``` * Add them to a collection for that room ```javascript const noteswithlocationURL = "https://immers.space/collection/utopiah/notewithlocation" immersClient.activities.add( msg, noteswithlocationURL) immersClient.activities.actor.streams.notewithcollection = noteswithlocationURL immersClient.activities.updateProfile( immersClient.activities.actor ) ``` * Refetch that collection on return and rerender the notes in place ```javascript noteswithlocation = await immersClient.activities.getObject(noteswithlocationURL) immersClient.activities.getObject( noteswithlocation.first ).then( c => c.orderedItems.map( i => addNewNote(i.object.content, i.object.context.location.position) ) ) ```
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: utopiah/text-code-xr-engine#47
Loading…
There is no content yet.