In-River Room Invites
Firstly the big one. I imagine implementing direct messages would be a pain so instead I suggest adding direct room member invites. Essentially one member of a room can send an encrypted invite, within the shared room, to another room member to invite them to whatever other room the member wants to invite them to. The target member will receive a pop up, or clickable message, or some other kind of indicator and they can then just press a button to accept an invite to that channel and join it with the normal invite flow.
Currently, to invite River room members to another room you need to use an out-of-river mechanism, which is cumbersome to say the least. By allowing members to easily create rooms and invite others, hopefully the number of rooms will grow.
An example flow for this process could be:
- Room member clicks on member they want to invite to another room.
- An option on the member info modal lets them select 'Invite to Room.'
- Member then selects from a list of rooms they are a member of to invite the invitee to.
- Member confirms action.
- Invite sent as encrypted message in room state.
- Invitee gets an indication they are invited to a room by a particular member.
- Invitee accepts or ignores invite as desired.
Status Updates
By its nature, it is hard to tell who in a River room is actually active. It might be handy to have some per-member status information that can be easily set to say, 'Away', 'Active', 'Offline', 'Sleeping' or whatever. Technically this can already be done by just changing your nickname, but a purpose built mechanism might be a nice addition.
Read First Rooms
By this I mean rooms that can be read without requiring a special invite, but just a contract address or similar. An invite can be used for 'proper' access later. I'm mainly thinking this could be an option for the main official room. Many users when trying to use Freenet via the quickstart flow for the first time run into invite errors and get frustrated. If instead they could follow a read-first link, to take them straight in, then that would improve many first time experiences. Also, because by the time they have the River UI contract and official room contract, if they then decide to go back and get a proper invite, the contracts should already be cached in their node, so the invite should be processed pretty much right away without the usual silent GET errors that cause the invite process to hang up for many people.
Public Room List
This goes along with the previous suggestion, by providing some kind of up front list of rooms users can use in read only mode without an invite. They can grab an invite from somebody later as needed using the in-River invite mechanism, or similar, mentioned earlier. Initially at least this list would need to be curated, but ultimately maybe there could be a mechanism for members to advertise room lists to each other.
Confirmation of First Message
It would be really handy if a new identity could get some kind of concrete indication that their first message sent on an identity in a room is actually being received by others. There are many ways this could be done, but I suggest every active River interface has the abaility to send a single confirmation message type to a new identity, unless somebody already has done so. This way, competing confirmations in state will collapse to one single confirmation as the state propagates.
Admittedly there are likely to be some room users who will not like their identity broadcasting auto-responses like this so the automatic confirmation messages will probably need to be opt-in.
In-River Room Invites
Firstly the big one. I imagine implementing direct messages would be a pain so instead I suggest adding direct room member invites. Essentially one member of a room can send an encrypted invite, within the shared room, to another room member to invite them to whatever other room the member wants to invite them to. The target member will receive a pop up, or clickable message, or some other kind of indicator and they can then just press a button to accept an invite to that channel and join it with the normal invite flow.
Currently, to invite River room members to another room you need to use an out-of-river mechanism, which is cumbersome to say the least. By allowing members to easily create rooms and invite others, hopefully the number of rooms will grow.
An example flow for this process could be:
Status Updates
By its nature, it is hard to tell who in a River room is actually active. It might be handy to have some per-member status information that can be easily set to say, 'Away', 'Active', 'Offline', 'Sleeping' or whatever. Technically this can already be done by just changing your nickname, but a purpose built mechanism might be a nice addition.
Read First Rooms
By this I mean rooms that can be read without requiring a special invite, but just a contract address or similar. An invite can be used for 'proper' access later. I'm mainly thinking this could be an option for the main official room. Many users when trying to use Freenet via the quickstart flow for the first time run into invite errors and get frustrated. If instead they could follow a read-first link, to take them straight in, then that would improve many first time experiences. Also, because by the time they have the River UI contract and official room contract, if they then decide to go back and get a proper invite, the contracts should already be cached in their node, so the invite should be processed pretty much right away without the usual silent GET errors that cause the invite process to hang up for many people.
Public Room List
This goes along with the previous suggestion, by providing some kind of up front list of rooms users can use in read only mode without an invite. They can grab an invite from somebody later as needed using the in-River invite mechanism, or similar, mentioned earlier. Initially at least this list would need to be curated, but ultimately maybe there could be a mechanism for members to advertise room lists to each other.
Confirmation of First Message
It would be really handy if a new identity could get some kind of concrete indication that their first message sent on an identity in a room is actually being received by others. There are many ways this could be done, but I suggest every active River interface has the abaility to send a single confirmation message type to a new identity, unless somebody already has done so. This way, competing confirmations in state will collapse to one single confirmation as the state propagates.
Admittedly there are likely to be some room users who will not like their identity broadcasting auto-responses like this so the automatic confirmation messages will probably need to be opt-in.