Hermeia

Une messagerie d'équipe qui fonctionne sur Android et iOS depuis un seul code. Serveurs, canaux, fils, rôles, MP et groupes - le jeu complet, fluide comme Telegram. Distribution hors des stores, sous le contrôle du propriétaire.

Hermeia
TL;DR

Hermeia est une messagerie censée remplacer Discord pour une équipe : serveurs, canaux, fils, rôles, MP et groupes. Sur le téléphone, elle doit être aussi fluide que la concurrence, sinon personne ne migre. Android et iOS à partir d'une seule base de code, et une distribution hors des stores - nous avons donc dû aussi construire notre propre mécanisme de mise à jour.

Introduction

Hermeia est une messagerie censée remplacer Discord pour une équipe : serveurs avec canaux, fils, rôles avec permissions, messages privés et de groupe. Une messagerie n'a rien de nouveau en soi - et c'est justement pour ça qu'elle est difficile.

Les gens ne la comparent pas à un idéal abstrait mais au Discord et au Telegram qu'ils utilisent chaque jour et qu'ils ont dans les doigts. Si la liste des conversations défile avec des à-coups ou si l'ouverture d'un canal prend un instant de trop, la migration est finie dès la première semaine, avant que quiconque n'apprécie autre chose.

L'application pour Android et iOS est construite à partir d'une seule base de code, pour qu'une équipe entretienne une seule source de vérité et non deux applications qui dérivent. Et comme Hermeia se diffuse hors des stores, une tâche de plus s'est ajoutée à tout cela : notre propre mécanisme de mise à jour.

La barre est fixée par Telegram

Le premier des deux problèmes difficiles est la fluidité. Il n'y a pas de tarif réduit ici : un utilisateur qui défile des milliers de messages dans Telegram chaque jour sentira chaque à-coup en une fraction de seconde. La liste des messages doit défiler proprement sur un long historique, et les transitions entre écrans doivent être instantanées.

Fluidité du défilement sur un long historique (illustratif, fps)

Une page dans une WebView
34
Natif, une base de code
60

Ce n'est pas de la cosmétique qui serait "agréable à avoir". Pour une messagerie, la fluidité est une fonction de base - aussi importante que le fait qu'un message arrive tout court. Une application qui saccade est perçue comme cassée, même si elle fait tout le reste bien.

Une base de code et une distribution sans store

Le deuxième problème est la distribution. Hermeia se diffuse hors des stores officiels, nous n'avons donc pas le canal de mise à jour pratique qu'un store offre gratuitement. Puisque personne n'enverra une nouvelle version à l'utilisateur pour nous, nous devons le faire nous-mêmes - et de façon à ce que la mise à jour ne soit pas pénible.

À cela s'ajoute la décision d'une seule base de code pour les deux plateformes. Maintenir deux applications séparées pour Android et iOS, c'est deux fois le travail et deux fois la place pour une dérive - un correctif sur une plateforme qui n'est jamais arrivé sur l'autre. Une base de code unique avec une logique et un modèle de données communs enlève ce poids, tandis que la finition native reste là où la différence de plateforme se voit vraiment.

Deux applications contre une base de code

AspectDeux applications séparéesUne base de code (Hermeia)
Maintenancedeux fois le travailune équipe, une source
Risque de dériveun correctif se perd sur une plateformela même logique sur les deux
Modèle de donnéesdeux fois le mêmecommun
Finition nativeséparémentnative là où la différence se voit
!
Attention

La distribution hors des stores est un choix délibéré avec un prix : il n'y a pas de mises à jour automatiques du store, une ancienne version peut donc rester longtemps sur le téléphone de quelqu'un. C'est pourquoi la vérification de version et un message de mise à jour clair ne sont pas un ajout - ils font partie du fonctionnement de l'application.

Le modèle complet de Discord, pas un sous-ensemble réduit

Il serait facile de sortir une messagerie avec la moitié des fonctions et d'ajouter le reste "plus tard". Mais une équipe qui doit migrer depuis Discord compare un à un : s'il manque les fils ou les rôles avec permissions, elle le voit aussitôt et revient à l'ancien outil. C'est pourquoi, dès le départ, nous avons reproduit le modèle complet que l'équipe utilise vraiment.

Serveurs avec canaux, fils, rôles et permissions, messages privés et de groupe - ce n'est pas un fragment choisi de Discord, mais tout le squelette sur lequel repose la communication quotidienne. Sans lui, un "remplaçant" n'est un remplaçant que de nom.

1
Une base de code, deux plateformes

Android et iOS à partir d'une seule base, logique et modèle de données communs, finition native là où la différence de plateforme se voit vraiment.

2
Le modèle complet de Discord

serveurs, canaux, fils, rôles avec permissions, MP et groupes ; pas un sous-ensemble réduit, mais ce qu'une équipe utilise vraiment.

3
La fluidité comme exigence, pas comme souhait

listes de messages et de canaux conçues pour un défilement constamment fluide, sans à-coups sur un long historique.

4
Notre propre mécanisme de mise à jour

puisque la distribution passe hors des stores, l'application vérifie si une version plus récente existe et guide l'utilisateur dans la mise à jour.

La mise à jour que personne n'enverra pour nous

Au démarrage, le client compare sa version à ce que le serveur annonce et sait si la mise à jour est optionnelle ou requise. Le manifeste a une forme simple : la dernière version, la plus basse encore prise en charge, les adresses des paquets et un drapeau indiquant si la mise à jour est obligatoire.

La distinction entre optionnelle et requise est ici la clé. Un petit correctif peut attendre que l'utilisateur décide lui-même. Mais un changement qui casse la compatibilité avec l'ancien protocole doit être forcé - sinon une partie de l'équipe reste bloquée sur une version qui a cessé de dialoguer avec le reste.

update-manifest.json · json
{
  "latest": "1.8.0",
  "minSupported": "1.6.0",
  "android": "https://dl.hermeia.app/android/1.8.0.apk",
  "ios": "https://dl.hermeia.app/ios/1.8.0.ipa",
  "mandatory": false
}
1
base de code pour Android et iOS
60 fps
objectif de défilement fluide des listes
2
canaux de publication : optionnel et requis

Elle gagne en ne restant pas à la traîne

Hermeia ne gagne pas sur une nouvelle idée de messagerie - elle gagne en ne restant pas à la traîne de ce que les gens connaissent déjà sur le téléphone, et en restant sous le contrôle du propriétaire au lieu de dépendre d'un store. C'est la forme discrète de la qualité : elle n'attire pas l'œil tant qu'elle fonctionne, et elle l'attirerait aussitôt si elle ne fonctionnait pas.

La fluidité et un chemin de mise à jour autogéré sont deux choses qu'on remet le plus facilement "à plus tard", et qui reviennent ensuite se venger au premier changement sérieux. Nous les avons construites dès le départ, car dans une messagerie ce ne sont pas des ajouts - c'est le fondement sur lequel tout le reste repose.

Personne ne migre vers une messagerie parce qu'elle a un joli menu. On migre quand, pendant une semaine, on ne pense pas une seule fois au fait qu'on utilise quelque chose de nouveau.

Plus de projets

D'autres réalisations de la même catégorie - découvrez comment nous abordons des défis similaires.

Vous avez un projet similaire ?

Contactez-nous - le devis est gratuit et arrive sous une heure.