Conversations (Android)

- Reading time: 25 minutes -

Contents

Foreword

This is about installing, setting up and using the XMPP messenger Conversations. This is a pioneer and benchmark for other current XMPP messengers with OMEMO support and even has the ability to bring other apps back from power saving mode via “unified push” (external) and “wake them up” so that they can connect to their actual service provider/server.

The app is “made in germany”, which may explain why bug fixes and a certain quality of code have priority over new features. The original page of Conversations (external) on the net is only available in English. Therefore, here is a makeshift translation (external) by volunteers.

Variants

There are various Conversations variants and forks. All are based on the original Conversations source code and therefore belong to the Conversations family:

Conversations

Conversations is the standard recommendation and the “classic”. Clear, up-to-date, secure.

The Play Store version differs slightly from the F-Droid version due to Google restrictions: In the Play Store version, the “integrated search for public chat rooms” and “contact integration” functions are deactivated. Both functions work when obtained via the secure F-Droid store :-) However, Google Push is not used here as this is not a free component.

Sources of supply: F-Droid / Play Store
Release notes/change history: https://codeberg.org/iNPUTmice/Conversations/src/branch/master/CHANGELOG.md (external)

Quicksy

This special version of the Conversations developer is intended to make it easier for WhatsApp users to get started with messaging using the standard XMPP protocol or to switch over.

The same basic code is used - but there is only one chat account here, which, in conjunction with the use of the telephone number, enables very simple and automated chat account creation. The function of identifying contacts by phone number without uploading the complete phone book makes Quicksy suitable for those switching from WhatsApp who do not want to do without a certain level of convenience. Otherwise, the range of functions and the look are identical to the standard Conversations.

You can think of the system as WhatsApp/Signal, in which all users are logged in with their phone number and use it to recognize and contact each other. So you log in to Quicksy with your phone number and are then suggested the corresponding other Quicksy users for your contacts in the address book. What is the difference to WhatsApp/Signal/…? !?

The big difference is that all users of Quicksy.im can communicate not only with each other but also openly with all other contacts on other XMPP servers. Quicksy is therefore a different/more convenient entry into the provider-independent chat universe: a “starting island” that is open to the outside world.

In addition, users who have their account on other servers can store their chat address together with their telephone number on the Quicksy.im server. This means that Quicksy also automatically recognizes contacts with chat addresses from “foreign” servers in the address book. In contrast to the free use of Quicksy (=Conversations with special telephone function), the entry and registration of chat addresses with associated telephone numbers is generally not free of charge and therefore serves to finance the system. However, there are exceptions where free registration in the quicksy.im directory is possible: existing customers of conversations.im as well as registration with a correspondingly valid registration voucher, such as with the introduction of Quicksy.

As with other systems, a verification SMS with a numerical code is sent to the telephone number provided. This code must then be entered as confirmation when registering.

Note: Telephone numbers are not necessarily worse than other identifiers. Just like the phone number, the chat address (Jabber ID/JID), Matrix ID or Threema ID are also linked to people and are also used as selectors to assign data.
Quelle: https://de.wikipedia.org/wiki/Selektor_(Geheimdienstabfrage) (extern)

So the typical use case is not that a new Quicksy user pays for a registration but: An enthusiastic friend of independent messaging wants to make it easier for his friends to get started and “invests” the amount (just under 5 euros) in registering his address+phone number. All his friends can install Quicksy for free and then have the same convenience as with WhatsApp/Signal - combined with the freedom to use a different client or multiple chat addresses at any time.

For existing users, nothing changes at all, as the addresses of Quicksy users are structured like normal chat addresses (“+491234567890@quicksy.im”) and can also be used as normal.

Tip for Quicksy users:
If you want to use other/multiple chat accounts at a later date, you can simply create your existing chat account in other compatible programs such as Conversations and continue to use it. This is interesting, for example, if you also want to chat via the same chat address (‘+telefonnummer@quicksy.im’) on your PC or if you want to use a second chat account, e.g. for work/club/public chat groups.

With Prav App there is now even an offshoot for the Indian region. This app is also available via F-Droid.

There is no other phone number-based messenger system that offers its users (and their friends) more freedom and is also open source.

Important:
When entering public chat rooms, Quicksy users are advised to use an alias, as otherwise all other participants will see the phone number as the user name.

Sources of supply: F-Droid / Play Store
Project page: https://quicksy.im (external) / https://prav.app (external)

monocles chat

This version is based on the current Conversations and the blabber.im (external) monocles chat (not further developed since 2022) and offers the current best German translation (better than the original) and other special changes and practical additions.

Differences to Conversations:

  • Switch directly between chats, contacts and accounts
  • Individual notifications for contacts (nice way to free yourself from the pressure of having to reply immediately).
  • [coming: Telephone function for contacts can be switched off (you don’t always want to be reachable by phone and “always” available for all contacts via Messenger)]
  • Configuration of the chat room settings provided by the respective server (important for administrators)
  • WebXDC (external) (this enables practical extensions such as polls or shared games)
  • You can choose your own image for the chat background
  • Visual advantages when using multiple accounts (e.g. different colors)
  • Sticker and GIF selection, display of animated GIF images
  • Profile pictures can be displayed in full (or rounded) - and even animated (under 100kb and 480pixel*480pixel)
  • Instead of the contact’s profile picture, the corresponding profile picture from the local address book can also be displayed
  • Long messages can be displayed in a shortened form
  • Additional security settings such as:
    • Secure the app with a PIN (“app lock”)
    • Automatic deletion of messages (and attachments) after a set period of time
  • … and much more …

BUT: monocles chat is a one-man project. As with blabber.im, it is possible that the developer may drop out at short notice or take a break.

Sources of supply: F-Droid / Play Store / direct
Project page: https://codeberg.org/Arne/monocles_chat (external)
Change history: https://codeberg.org/Arne/monocles_chat/releases (external)

Snikket

For IT friends who want to provide their own family or friends with their own server - or simply use the app (Conversations with minimal changes) as a client. Easy to set up, easy to maintain, no external users on your own server.

Special feature:
The Snikket app can be used by anyone and independently of a Snikket server - you don’t need an invitation from another Snikket user. It is currently (as of October 2024) the only way to install an app with the full functionality of Conversations free of charge for friends via the Google Play Store.

This is interesting because you can create accounts for a group of people (school, kindergarten, play/sports group) in advance with a self-selected server and then give people an easy entry into provider-independent messaging without using their mobile phone number (see Quicksy).

Sources of supply: F-Droid / Play Store
Project page: https://snikket.org (external)

Cheogram

The focus is on functions that are useful for users who also want to contact people in other networks, e.g. with SMS-enabled telephone numbers. Cheogram bundles a number of services that connect open communication networks (functions for gateway users) so that all contacts can be reached via a single app. For example, JMP.chat, Vonage and Twilio to connect with your contacts in the telephone network. But we are also working on the connection to SIP and e-mail.

Differences to Conversations:

  • Messages with media and text, including animated media
  • Unobtrusive display of subject lines, if available
  • Links to known contacts are displayed with their names
  • Display timestamps for calls
  • Notifications of missed calls
  • Integrates into the “Add Contact Flows” of the gateways.
  • When using a gateway to the phone network, integration with the native Android phone app
  • Address book integration

Sources of supply: F-Droid / Play Store
Project page: https://cheogram.com (external)

Less recommendable apps

In addition to the recommended apps listed above, there are also a large number of simple copies, some of which differ only in different colors and are probably not better than the original. In some cases, a violation of the Conversations license cannot be ruled out, because the source (Gultsch/Conversations) must actually be referenced.

Examples of less recommendable Conversations copies are: AgriChat, c0nnect messenger PRO, Fnord, KwikChat, Ninja chat, Onion Messenger, Storiz IM, TenguChat, XMPP Jabber Client, …

Sources of supply

F-Droid

Anyone who already knows F-Droid will certainly use this top source. This also applies to Google-free devices such as the “Fairphone”.

The F-Droid versions have no Google restrictions: The app’s helpful address book integration is activated and the search option for public chat rooms is not switched off either. In addition, all apps from F-Droid are free of charge (donations are welcome).

Google-Play-Store

… if provider-independent chat is to be used on an Android device with Google standard settings and F-Droid cannot/will not be used. Due to Google restrictions, helpful functions such as address book integration or the search for public chat rooms are deactivated here.

  • Quicksy (external)
  • Conversations (external) (installation from the PlayStore supports the developer financially)
    Tip:
    On special occasions, Conversations is not only available in F-Droid, but also in the PlayStore for free. So far, this has always been regularly (in addition to anniversaries) in the Easter week and at the end of the year the last week in December!
  • monocles chat (external)
  • Snikket (external)

Directly from the developer

Online help

There are public chat rooms where anyone can read along and ask questions about Conversations:

German chat room for „Chat standard XMPP (Jabber)“
xmpp:chatstandard@chat.openim.de
English chat room for „Conversations“
xmpp:conversations@conference.siacs.eu

Installation

A “good” manual should be up-to-date, clear and illustrated. “Messtome” has provided an excellent example of this:

Bildschirmkopie Einleitung
Bildschirmkopie so geht's
Bildschirmkopie Einstellungen
Bildschirmkopie Experten
Bildschirmkopie Experten
Support wanted:
Unfortunately, the previous author no longer maintains the instructions.
If anyone is interested in updating them for Free Messenger, please let me know: >>Contact<<

The entire manual can be downloaded as a print file and shared freely: Instructions Conversations (PDF file)
The source file in Scribus format is available here for customization: Instructions (Scribus file) (Scribus version 1.5x) (ZIP file)

But there are also many good instructions for Conversations forks on the net:

note:
Found better/more up-to-date instructions on the net? Then I would be pleased to receive a short information: >>Contact<<

First program start

If the program is executed for the first time, the following selection appears:

  • “Create account “ (for conversations.im - with follow-up costs)
    or
  • “Use own provider “ (an existing chat account can be stored here)

With the F-Droid version, Conversations may then point out that battery optimization may have been set and ask whether battery optimization should be ignored (this is explained in more detail below in the expert tips).

You should then briefly check the settings, especially for “Privacy” and “Notifications”. Under the further heading “User interface”, I recommend the following settings:

  • Green background (for received messages): OFF
  • Show dynamic tags (markers) below the contacts: ON

Recommendation:
Also look at the “Advanced” section and the “Expert settings” (there are some interesting options) and select in the expert settings whether contacts are allowed to correct their messages afterwards or not. If there are problems with notifications of new messages, the option “Run service in foreground” can also be activated here.


Hidden functions

Some functions in Conversations can be controlled by short taps or long presses on certain areas or by swipe gestures. Some functions are also only accessible via an icon and not via a menu.

General control

  • Start conversation / join group chat
    Briefly tap on the round, green symbol at the bottom right with the rectangular speech bubble. Then either select a contact from the list, create a contact or switch to the group chat view.

  • End chat (and remove from view)
    Conversations can be ended by simply “swiping away”. To do this, tap on the desired entry in the list of current conversations and swipe it to the left/right. Chats that have been accidentally swiped away can be displayed again via a message that appears for a few seconds. Otherwise, the conversation must be added again regularly via the contact list. Ending conversations or leaving group chats does not delete messages - these are still/again available when restarting later.

  • In group chat: Address a contact directly. In the chat history, briefly tap on the profile picture of the contact, then the name is inserted into the input field followed by a colon.

  • In group chat: Write to a contact personally
    It is possible to send a personal message to an individual contact in a group. This message is only intended for this contact and will only be sent/displayed to them. To do this, press long on the profile picture of the contact so that the text “Send private message to xy …” appears in the input field.
    Important:

    • The function is valid until it is ended again actively by pressing the symbol (“x”) on the right edge of the input area.
    • A private message within a group does not correspond to the normal 1:1 conversation with this contact and is independent of it.

Online status

The send button (symbolic paper airplane) shows the online status of the contact:

  • green: online
  • gray: offline
  • orange: absent
  • red: not available

Account details

  • Access account details directly
    Short tap on the profile picture of your own message.

  • Edit status message
    In the Account details at the top, tap on the square speech bubble with the “!” next to the “Share” symbol.

  • Display barcode (own barcode)
    In the Account details using the “Share” function. If successfully scanned and checked, a green sign with a white tick is displayed next to the key.

  • Scan QR code (own QR code e.g. from another device)
    In the Account details, a long press on the key brings up a context menu. If there are several devices, it does not matter which one is used to select the scan function, the key is automatically assigned correctly during the check.

Contact list/context menu

A long press on a contact displays the associated context menu:

  • Show contact details
  • Display barcode
  • Block contact
  • Delete contact

Contact details

Contact details in normal 1:1 chats
Within a normal chat, a short tap on the contact’s profile picture brings up the corresponding details (options for sending/receiving online status and the keys used)

Scan barcode (that of a contact)
In the Contact details, the function is hidden at the bottom (“Scan barcode”) again with the OMEMO fingerprints.
-> A long press on the key shows a context menu.

Device no longer trusted
A long press on an OMEMO key already marked as trustworthy in the Contact details displays the corresponding context menu.

  • Edit contact
    In the contact details, not only via the pencil icon at the top, but also by briefly tapping on the profile picture of the contact.

Group chats/context menu

Long press on a group chat to display the associated context menu:

  • Join group chat
  • Remove from contact list
  • Share URI with …

Contact profile picture/context menu

A long press on the profile picture of a contact, which is displayed in a chat next to the respective received text, displays the corresponding context menu:

  • Join group chat
  • Remove from contact list
  • Share URI with …

Tips

Notes/file transfers

You can send messages to “yourself”. These are then only displayed once and not again or not twice (as “sent” and “received”). This function is useful for:

  • notes to yourself
  • Spontaneous transfer of a file from one device to another (e.g. from mobile -> PC)

Delete longer texts

If you have written a text but do not want to send it, you can quickly delete it via a “detour”:
First tap and hold on a profile picture (as if sending a private message) - then cancel the function and the text is gone.

Create new rooms individually

You can create new groups not only via the “Create group chat” function, but also via the “Join group chat” function. If the chat room does not yet exist, it is created with the specified name of the room to be “joined” and initially has no members. This has the following advantages:

  • Not only the displayed name, but also the “address name” can be selected individually.
    This is important and very advantageous for public groups, as the address is directly related to the topic (e.g. free-messenger@conference.jabber.de). For normal groups (private groups) the address is unimportant.

  • You can first set up the room completely (displayed name, description, group profile picture if applicable, setting the group chat options) and then invite the members.

Prevent closing

Android automatically closes “unused” apps when memory is required or to save power. Logically, a messenger can then no longer receive messages. This unwanted behavior can usually be prevented by the following settings:

  1. deactivate battery optimization (“doze” power-saving mode or “app standby”).

    • Select the “Battery” item in the Android settings.
    • In the next screen at the top right (the three dots), click on “Battery performance optimization”.
    • In the overview of optimized apps, you can now end the power-saving mode (not only) for Messenger.
  2. run Conversations in the foreground
    There is also the option to keep the app permanently active:

    • In the Conversations settings
    • Select “Expert settings” at the very bottom under the “Advanced” section
    • Activate the “Run services in the foreground” function again at the bottom under “Other”

Expert tips

Audio/video calls

Sometimes the handset symbol for A/V calls is not displayed. Prerequisites (detailed description: Where is the call button (external)) for this are:

  • Both contacts must be in the contact list
  • Both contacts must be online (depending on the setting of the app on the other side, this may first have to be brought out of sleep/power-saving mode by a normal message)
  • TOR must not be activated in Conversations (IP addresses would otherwise be transmitted)
  • Minimum version for A/V calls is Conversations 2.8.0 (or another compatible client)

Push messages

With the version of Conversations installed via the Playstore, push notifications are sent to and from the Google server to the end devices. The system is called Firebase Cloud Messaging (“FCM”) and is the current version of the former Google Cloud Messaging (“GCM”).
With the version installed via F-Droid - which is Google-free - Conversations keeps the connection to the XMPP server open, which may mean a little more power consumption.

Conversations only receives a push message for incoming messages via the external service if there is no usable TCP connection between the client and server. If a TCP connection is open (this is done via a so-called keep-alive packet every quarter of an hour, which has no significant meaning in terms of data consumption or power consumption), the message is transmitted directly without anything being sent to an external push service.

Special knowledge for those interested in technology: https://github.com/iNPUTmice/p2/blob/master/README.md (external)

The use of Google Push by Riot (Matrix) works differently: >> here <<

Permanent notification

As of Conversations 2.3.6 (version from the Google Play Store), Android version 8 and higher displays a permanent, forced notification. However, this Android setting can be manually deactivated:
Instructions in English: https://github.com/siacs/Conversations/blob/master/README.md#im-getting-this-annoying-permanent-notification (external)

Note: For the F-Droid version, no forced notifications are displayed.

Minimum permissions

Conversations also runs without access to the app permissions “Camera”, “Contacts”, “Microphone” and “Location” (of course, the corresponding functions are then no longer available!):

Mindestberechtigung Conversations

This information is not a recommendation but rather a hint that these can be deactivated if necessary and the basic functionality is still retained. It should also be noted that after selecting “Do not ask again” when deactivating functions, you will no longer receive a system message as to why certain menu items do not work (or Conversations may then crash on some devices). In this case, you must remember to reactivate the corresponding authorization in the Android app settings.

Password display

Sometimes the password of a chat account is forgotten (recommendation: use a password manager!). The saved password for chat accounts can only be displayed with root authorization (i.e. administration rights at Android level). It is stored in the file /data/data/eu.siacs.conversations/databases/history (different for Quicksy).

  1. directly on the device: any file manager that can display text files.
  2. via Android Debug Bridge (ADB)

    • Via ADB, get the sqlite and then with sqlitebrowser or similar (a simple text browser also works)
    • Execute command: adb shell "su -c 'cat /data/data/eu.siacs.conversations/databases/history'" > history && sqlitebrowser ./history
      (Directly via pipe does not work (adb shell “su -c ‘cat /data/data/eu.siacs.conversations/databases/history’”|sqlitebrowser) !)
    • In Sqlitebrowser then click on ‘Search data’ and you can see the passwords of all accounts.

Manufacturer-specific settings

  • Sony
    In the Android settings for “STAMINA mode”, activate the app under “Apps active in standby mode”; in addition, “Ultra STAMINA mode” must not be activated.
  • Huawei
    Apps protected against automatic termination can be found under “Phone manager” / “Energy saving” and selected there accordingly.

More detailed information on other manufacturers/devices (to prevent system-induced termination of apps) can be found >> here <<.

CEB

Only for experts & only with Linux:

Conversations is optimized for standard users. Extracting data is definitely something for specialists, which is why an export function is deliberately not available in the app.

Under Linux, however, backup copies of the local account data (e.g. message history, OMEMO key, login data) can still be created via detours, which are stored encrypted in files with the extension “.CEB” (“Conversations Encrypted Backup”). The passphrase for the login is usually also the passphrase for the backup encryption. To open or convert a backup file on a desktop computer, for example, there are various CEB tools (external) such as ceb2txt, ceb-extract, ceb2xml and ceb-tools.

Special knowledge

  • Background information on the versioning procedure: https://semver.org/lang/de/ (external)

  • If you want to know the different variables/default values such as the values for video compression (external) of Conversations, you can find them in the program code sources:
    https://github.com/siacs/Conversations/blob/master/src/main/res/values/arrays.xml (external)

  • Extensions (plugins)
    … for the former version “Conversations Legacy” (1.x). The extensions are no longer required from version 2.x of “Conversations” as they are integrated into the app. However, you can still use the “Location Plugin “ if you prefer GoogleMaps. The “Voice Recording Plugin “ is no longer required by Conversations, but is technically still usable by other apps (which is why it has not yet been removed from the Android stores).

  • Explanation of emoji compatibility:
    If a crossed-out rectangle is displayed instead of a received emoji, the operating system has a different emoji list than that of the sender. The crossed-out rectangle indicates that the emoji sent by the other party cannot be displayed correctly. This can happen when Android and iOS users talk to each other, as Apple is responsible for the updates and can usually introduce new emojis more quickly. However, the crossed-out rectangle can also sometimes appear between individual Android users if different Android versions are used.
    To solve this problem, Google has created “EmojiCompat”, which works from Android 4.4 KitKat. This is a program library that recognizes the emojis received by the Android system that cannot be displayed and replaces them accordingly. The emojis therefore look the same everywhere and are virtually “compatible”.