element-hq / element-meta

Shared/meta documentation and project artefacts for Element clients
70 stars 12 forks source link

Make it easier to get people chatting (guest access) #340

Open madduck opened 7 years ago

madduck commented 7 years ago

(This issue isn't really just about riot-web. It's really about the whole ecosystem, but I need a place to write it down and this will do…)

I've gotten several dozens of people to join Matrix in the last couple of weeks, and found the process unnecessarily complex. Often, I'd have to wait for the person to install the app so that I could then let them know how to connect with me, or join the conference chat room. Per se, that wasn't so bad as I used to time to explain some concepts around Matrix, but quite a few times we simply ran out of time, which hindered adoption. Furthermore, I found a lot of this to be repetitive and error-prone, thus calling for automation.

In an ideal world, either of the two should be possible:

Obviously, this can go to any level of detail, but maybe the following could be a viable way forward?

  1. The QR-code links to a unique page e.g. on matrix.to. On that page, instructions on the available clients and their download links etc. can be provided;
  2. Maybe it could feature a simple means to sign up for a new account, i.e. I enter my desired name on matrix.org (or maybe other public servers could be listed too as options) and if it's available, a data file gets generated that can be fed to the client, who would then automate the signup process and essentially only prompt for a password when it's time.
  3. Finally, a data file gets generated that if fed to a client causes the client to auto-join a direct chat with me, or a conference room, or any combination of these. This data file could also include information necessary to verify e2e-keys, as applicable.

Probably the two data files in (2.) and (3.) should be combined into one and then fed into the app at once, so as to simplify control flow for the user.

With the Riot web client, no data file needs to be downloaded. A link to the webapp could encode all this information, or at least the URI where to download all these data. The mobile clients probably need to register themselves as a MIME handler for this type of file such that they get invoked to handle the download.

madduck commented 7 years ago

It should go without saying that the pages on matrix.to don't need to be created, but anyone can just create an appropriate URL…

tessgadwa commented 7 years ago

Couldn't agree more. I would also add that the first 10 minutes of a user's experience determines whether they will choose to continue using an app. And the first 30 seconds determines whether they will stay 10 minutes.

madduck commented 7 years ago

Well put, @tessgadwa

ara4n commented 7 years ago

So we have some of this already: single-click login via riot-web: https://riot.im/#/room/#riot:matrix.org etc.

QR codes can be done to link to pages like that easily (or to matrix.to, were matrix.to less ugly)

@madduck it feels like you're really asking for autojoin or guest access on the mobile apps too, somehow? I wonder if this could be done by using a mobile website URL to jumpstart the user, which redirects them to installing the app, and then uses a custom app URL schema to jump to the right room?

madduck commented 7 years ago

@ara4n Guest access on mobile would be a good step, but I don't see that as the end of the road.

Sure, get people chatting right away, but then it should be trivially possible to switch to an account without restarting the session. That way, people can give it quick try and only need to invest time into account creation if they want to stick around. The app could remind them of that if the user uses it more often than just once.

I personally still like the idea of the "data files" that can provide additional information, such as e2e fingerprints etc.. But that's possibly a separate issue, I mainly wanted to keep it in mind when designing a solution as another possible use-case of what might then become a more general-purpose approach.

cuhkrain commented 6 years ago

This function (QR code of the room link) is highly desired....

madduck commented 6 years ago

Another idea: couldn't Riot in its various forms be registered as URI-handler for matrix:// with the appropriate content handlers, such that one could redirect conference guests or family members to custom URIs such as matrix://matrix.madduck.net/, which would open up Riot and preseed the custom homeserver URL for login and registration?

t3chguy commented 6 years ago

@madduck that is what matrix.to is for, ios and android apps catch the links

madduck commented 6 years ago

@t3chguy Even better, then it should already be possible to craft a URL using matrix.to and we only need to teach the various Riots to interpret parameters like hs_url?

ara4n commented 6 years ago

The best solution on mobile would probably be deferred deep linking: passing through info when installing the app to let the app select the right homeserver. Unfortunately on iOS this is currently impossible since iOS 11, unless you use a centralised service like branch.io which fingerprints the device to try to match up the website with the webapp (as it were), which is obviously rather undesirable. On Android it can be done by INSTALL_REFERRER in theory.

The problem of matrix:// URLs is that by the time you've installed the app and are clicking on a URL you've probably already selected a HS?

madduck commented 6 years ago

The problem of matrix:// URLs is that by the time you've installed the app and are clicking on a URL you've probably already selected a HS?

If people already installed the app and got their account anywhere, then that's the best, of course (moving to other identities should become a possibility…). I guess my use-case is more about actively converting users and in many cases, this will happen in circles and network effects should be considered. Sharing a URL that gets us chatting on the same homeserver with minimal effort would really help I think.

vranki commented 5 years ago

I'd like to add that it would be useful to join a user to multiple channels and also add a matrix user(a) as contacts.

jtagcat commented 5 years ago

related to vector-im/element-web#9316

quantazelle commented 2 years ago

I was thinking something similar, but this is a better execution. For it!