Easy Onboarding

This page is about streamlining the First-time User Experience for newcomers to XMPP. It is aimed as a cheat sheet for XMPP client developers but also a discussion area for inventing new exciting XMPP protocols to make onboarding easier.

= Classic XMPP Onboarding Challenges =

When a new user approaches XMPP, they typically only have a JID of a friend they want to talk to. They need to complete the following challenges


 * 1) Find a suitable XMPP client: there is a huge number of XMPP clients for most platforms, however only a small subset of those are still maintained or actually support modern features.
 * 2) Install the client: that can be a challenge of its own.
 * 3) Choose a server: servers are located in different legislations, have varying terms of service and support more or less of the modern extensions that are needed for a flawless operation. But in the end, it is all about a funny sounding domain name.
 * 4) Create an account: some servers allow in-band-registration from the client, with others you need to use a web form that you need to google first.
 * 5) Add your friend: through the client UI, you need to enter the JID of your friend and wait for their approval.

= Possible Optimizations =


 * 1) Suitable client: We need a shortlist of recommended clients per platform.
 * 2) * Unmaintained software is removed from the official list
 * 3) * In addition to the Protocol Compliance Suite we need to have an "Easy XMPP" badge for easy-to-use clients
 * 4) Installation: provide ready-built packages with integrated automatic updates
 * 5) Server selection: we need to create a public list of XMPP servers, with their respective XEP support, and possibly also uptime statistics. Or we just hardcode a default server into each client.
 * 6) Account creation: much can be done to improve the UX.
 * 7) Adding friends: there is PARS and mod_invite and plenty of potential for more.

= Ideal Future =


 * 1) The newcomer receives an invitation link similar to https://yax.im/i/#friend@domain.com
 * 2) The link opens a generic landing page with a short explanation and suggested clients for the newcomer's platform
 * 3) The client can be installed / opened easily, and starts with an onboarding wizard
 * 4) The onboarding wizard provides a way to enter a favorite nickname and puts everything else into advanced prefs
 * 5) The onboarding wizard auto-adds the friend who initiated the invitation