Looking at text chat another way


Ok… let’s try this again. Text chat has been thrown to those of us interested in having it and willing to attempt to provide it. If we’re going to do this we have to agree upon some standards. The analogy of this being similar to the early (public) internet has been made and, having been there I recall one thing. It was a nightmare. What we have today is less nightmarish because people/organizations came together and created standards. There were only basic standards for things that existed in the pre-public net. As all the new things came along they just rolled it however they saw fit then someone else did it another way and so forth. Then people decided they didn’t want to use 20 different programs to, for instance, chat with all their friends. They didn’t want to use Yahoo messenger for some, ICQ for others, AIM for others, MSN Messenger for others… IRC and XMPP came about (IRC far far far older of the two) to provide standard realtime text chat capabilities. Today… what do we see… most chat systems use IRC or XMPP as their basis even if you don’t realize that’s why they use.

For chat we need to define a base standard set. It doesn’t matter what tech we use to implement it as long as we can all agree on some basic rules for it.

Some basic points;

A user wishes to chat. Having a user simply say I am - insert name - is not sufficient. There needs to be a mechanism to tie a chat user to a metaverse user. Unless HiFi doesn’t intend to handle avatar registration for this metaverse then it falls back to HF to give us a way to say - user x is really user x and can present his or herself as such. If HF isn’t going to do that then text chat isn’t dead - we simply pick another identity system such as open ID or whatever and move forward with it.

Contact lists. User will want contact lists, block lists etc. Does each disparate chat system maintain its own contact list? Assuming this all isn’t some colossal joke and this becomes something big - imagine how insane this single point is going to become without a standard for handling contacts and synching them across domains.

Groups. Users will want groups. Again - we could end up with each chat system on each domain doing this differently with no ability to have groups that can span domains/systems.

Local area chat. This would be equivalent to open chat in SL/OS where anyone within X meters of you can see what you’re typing in local.

Cross domain chat. We aren’t all going to live on the same domain or want to TP to same domain to communicate. A way to interconnect chat systems will be needed for that.

Security. It must be made as difficult as possible for anyone to take advantage of running a chat server and being able to snoop on people’s communications. This implies some form of encryption and that users have a way to reasonably assure their private communications are not being monitored by arbitrary persons. XMPP has abilities to do this as does IRC - if setup properly.

This only scratches the surface of things, but we need to talk about the basics - not whether or not text chat is needed or not, or what platform to use for it. Basics. Then you can roll your -insert tech based server type- and I can roll mine and someone else can roll theirs gluing it all up to a standardized interconnected system where we can all talk the way we want, when we want and from where we want.

Let’s try to keep this to a technical discussion of this vs a political discussion. We can take this to its own project space if necessary and not burden the forums with it.


Was moment in history when bob dylan went electric.People wanted him to stay true to his roots.
What if were all being "the play folk songs bob "people and missing out on rock and roll

we should give it a few weeks and see how it feels


lol! I don’t want a system like we’ve always had, but I do want a system. :slight_smile: That implies we can innovate together vs in camps then fight it out how to re-connect someday.


Is there a chat like icq all in js? that would make sense as a fit with the rest of the project
found this

I quite like the possibility that the name of the account isn’t the binding force to communication
If I use HIFI for work i don’t wanna be Judas to my students but i don’t want to make a new account
In real life I’m contacted by phone or email addresses, which are as public and as anonymous as I choose.

But we must have the ability to white or black list users from a domain, I need a way other than well he looked like Ron


Thanks for the thoughtful post @OmegaHeron… I agree with a lot of what you say. I want to suggest that “communicatons” is what should be at the focus of the design and systems available… and its possible to use many individual tools so long as they all play together well.

But seeing text chat as a separate add on sort of things is a really big mistake in my view.

Voice, sync text chat, offline IMs, presence indication, people and object finding, group formation and management, logging, etc are all part of the communication (async and sync) needed in collaborative systems. The 3D world and spaces just provide the (ideal in the view of many of us spending time on this I am sure) framework to integrate this and make it immersive. We need to be able to switch modalities depending on the nature of what we want to communicate and see these as seamless.

[I will put something like this, stressing the presence and discovery aspects on the other thread about text chat, so my apologies in advance for the repetition]


What if we just made all text be rendered to an in world speech-bubble ?


Identity needs to be unique (and hence verifiable). I am thinking about per-domain usernames much like email works, so there may be more than one glenalec, but there would only ever be one glenalec@elsewhere (something I should be able to guarentee as the owner of the HF domain ‘elsewhere’). It also lets multiple people with common (psuedo)names use their real (psuedo)names as long as they associate with different domains. This would (I assume) require hooks into the HF domain system.

Definitely encrypt traffic by default. There is no excuse for plain-text in this day and age!! :wink:

Support for Person2Person, Person2Group chat.
Support for offline messaging
Support for sending non-text objects via chat (and some sensible basic security on sent objects - such as default quarenteening objects until user has verified they are safe).
May as well support remote voice on P2P, P2G on the same system (no real need for voice P2L as that duplicates existing HF functionality and the spatial nature of it is likely beyond the scope of this particular comms system).

As far as real-time face-to-face interaction goes, I would still like to see a text channel that works in-world like voice (eg, only on the same domain and potentially with distance limits). Ideally if you can hear someone, you should also be able to see any text they output to the public chanel. Ideally text and voice (and smell, and touch, graphic icons - iconographic but non-textual communications) within a domain should all be handled in the way that voice is handled now on a per-domain basis. So, yes - scrap global chat (it was an alpha hack) but I would like to see the voice system extended to support all possible local interactions between avatars and objects.

So, all up, I would like:

  • domain-level uniqueness of usernames with domain uniqueness via the HF domain registration system.
  • users have the option to be anon (no domain) if they like, but domain managers can choose what anon users can do on their domain (an anon security group which might be look-no-mod by default but can also be no-access thru do-what-you-like).
  • non-local comms taken care of by an independent (but UI-integrated and identity-verifiant) chat client.
  • local chat (and other forms of interaction) along side local voice as equal-class channels on a domain-level coms system.
  • haptic data
  • smells (pending technological availability)

Aside: Things I would like to be able to send over comms channels:

  • UTF8 Text
  • Live sound
  • Strings of arbitrary small pictures from a user-defined pallet (could be emoticons, or an alien language).
  • Data objects to deliver to the recipient(s) (not for location-based comms)


maybe one of these voice to text solutions could be an option,dragon naturally speaking so the voicers can be heard over in text land and visa versa


No, not ugly speech bubbles. that’s really bad. i have not turned name tags in SL and OS off compleet for fun.

maybe one of these voice to text solutions could be an option,dragon
naturally speaking so the voicers can be heard over in text land and
visa versa

That work mabey for some people. but is not a solution for simple typing.
Besides voice to text you need still need to speak. You create also a new extra problem that voice software translate it to wrong language or don’t understand you if you use the right language. There’s nothing wrong with a normal good keyboard and spell checker.


I am no Luddite. I roll with change. However, in this case I can’t envision a future road for chat. When Bob picked up the electric guitar I said: “Well it’s about freaking time!!! Welcome to the world as it is.” I don’t see a world as it is, but I know more about music than tech. Is there anyone out there in Alphaland who has that vision ?


Wanted to chime in here about how we handle authentication now and going forwards, and how that applies to setting up a chat system that properly identifies you using the username you’ve registered with us.

Right now we use OAuth 2.0 to authenticate you from your Interface client. It is also used internally to restrict access to our domain-server settings pages. Sooner rather than later, I would like to open up the ability for any developer to register their application with us so they can use OAuth to get the information they request (based on permissions accepted by the user). This would, for example, allow you to login a user to a chat system (or any system) and present their High Fidelity username.

Another thing we will likely add is the ability to attach some metadata information to your profile that you can conditionally choose to share with other users and nodes in the system.

@thoys, @Judas and @KevinMThomas proposed an interesting decentralized chat system in the other thread called tox. This morning I tried to run through in my head what would be required for a domain owner to use something like tox for chat within their domain. Note that that none of the following features are implemented or even currently in development but this is what I envision would allow a custom chat solution like tox to integrate well with Interface.

Any user in the High Fidelity metaverse should be able to attach metadata to their profile. In this example the user attaches their tox ID. Depending on permissions, other users in the metaverse should be able to query us for another user’s tox ID. This will let you associate the user’s tox ID with their HF username - verifying that you are chatting with who you think you are.

Upon entering a domain, a domain owner should be able to signal to you that you should join a particular chat group. Your client via a chat script presents a chat UI (appropriate to your viewing environment) and takes that information from the domain to connect you to the correct chat group. You’ll then be chatting with other users in the domain.

Assuming you continue running the chat script at all times, it would be possible for you to have 1-1 chats with any user in any domain, provided you have queried us for their tox ID.


Just my two cents… I think that the only chat and voice communication that HiFi should provide should be local to the 3d space that you are at. HiFi should only provide anonymous unmoderated 3d local voice and text chat. Just like RL

If i am in RL place, I would want to hear what people are saying, regardless of if it were good or bad. I don’t mean text chat and voice shouldn’t have a tag saying who is typing/talking, I mean the voice and text should be on public channel. No point in having ban or mute functions. if a domain owner wants to ban someone from communicating with people, they can do it by denying access to the domain. The ID of the offender is no different than with access.

As far as private chat, group chat, etc. I think that should be left up to what ever social network/communication app a user chooses to use. And dont mind me… I have not really thought this all out. I just think that a simple solution might be better than a complicated one.


I like what @b suggests about there being a way to verify that the text-chat connection people are getting on a given domain is really you… but I also think there needs to be a way to make sure you can still remain anonymous when you want to remain anonymous while on the domain. Presumably that means there’d be some sort of abstraction layer between you and the domain wrt the identified text-chat IM credentials. i.e. instead of seeing nathan.adored@nathansplaceand its respective tox channel, they’d see something like temp3451@redirector23 and toxanon3247 or maybe temp5239@anonamizer003 and toxanon3247 until or unless I TELL the system this occasion to let you know I’m nathan.adored@nathansplace and nathanadored@toxwhatever… but it would still all communicate back through the back end to get a comfirmation message saying that on my anonymimized hifi account, the hifi account and the tox account are verified by it as the correct ones for that hifi account and that tox account… it just doesn’t have to tell you what those credentials ARE. :smiley:


I agree with @Twa_Hinkle that HiFi should provide local chat. A reliable social commonality throughout the metaverse as other IM methods come and go over time and place.

It could roll off with distance, like voice, to overcome the problem of hundreds of people chatting simultaneously on the one domain.

If it’s undesirable to implement the UI (and roll-off) in the core C++ code then it could be implemented in JavaScript.


Hmmmm… wonder if voice could be devised to drop off even faster, or completely, depending on the walls between you and other listeners, to better simulate what happens with real structures, and also allowing such conversations to be more private as needed. Maybe there’d be some means of specifying a number for how soundproof the given part of the structure is into the structure.


A better way to handle privacy might be to have ‘privacy spaces’ in the form of invisible, non-physical volumes (box, sphere, mesh) that contain the audio (and potentially optionally text, visual presence) etc. of anyone/thing inside them.

OpenWonderland does it this way and it is very flexible.


I use chat as a direct form of communication, of talking to other avatars in virtual space. So typing is talking. I don’t want my chat experience to then be degraded by treating it more like sending text messages on a cell phone. I don’t want to add another layer of abstraction between my avatar and my ability to communicate by having to use outside programs for my avatar to communicate. That’s disjointed - disembodied…I want whatever chat we use to feel like it is my avatar chatting, not me communicating with IRC in one program with my avatar in a different program. I hope I am communicating this clearly? It is subtle, but I think it is important for immersion and for an avatar’s solidity. Let em try an analogy…I don’t want text chat/communication to feel like this: Having a virtual world where voice chat was handled by calling the RL person using your cell phone and using that as your voice chat feature.

So as a user, I kinda want to be able to set up my chat client/system the way I want it, and I would like that to be consistent regardless of whose domain/place name I am in. I don’t want the domain owner deciding it for me, or that I have to learn multiple chat clients and their setups and layouts. Will this be possible with the ideas people are suggesting here?

Not having chat built in is also going to be frustrating to new users who find that after setting up their HiFi domain that they will still have to find a third party chat client to include/setup/manage.So making this as seamless and easy as possible would be nice. Can HiFi possibly adopt one or two of these chat systems that are created by the community and include them as basic options that can be included directly when setting up your domain - like a checkbox when setting up your domain or place name to automatically setup a chat system just to get newbies up and running?

With current ideas about user authentication, can a domain owner manipulate that data? Is the chat in a domain only as secure as the person running the domain? How is privacy ensured?


Yes. While the current global-chat certainly has to go in preparation for open-alpha. Domain-chat on the same level as voice really should be a built-in.

IRC-like systems (including ones with voice) work well for a ‘telephone - equivalent’ system, but not for face-to-face comms.


Hey all, @ctrlaltdavid and myself just wrapped up a very early version of “who’s online” called users.js. If you download the latest Interface release, you’ll see it open as one of the defaultScripts and appear in the lower left corner.

In the next iteration we’ll be working on a toggle to choose your visibility to the rest of the Hifi metaverse (everyone can see you online, only your friends [to-be implemented] and no-one)


The good thing of external chat, You hav emore space for text. and you can resize the font. because inworld almost all font is tiny.