Hermeia

Komunikator zespołu działający na Androidzie i iOS z jednego kodu. Serwery, kanały, wątki, role, DM-y i grupy - pełny zestaw, płynny jak Telegram. Dystrybucja poza sklepami, pod kontrolą właściciela.

Hermeia
TL;DR

Hermeia to komunikator, który ma zastąpić Discorda dla zespołu: serwery, kanały, wątki, role, DM-y i grupy. Na telefonie ma być tak płynny jak konkurencja, bo inaczej nikt się nie przesiądzie. Android i iOS z jednego kodu, a dystrybucja poza sklepami - więc musieliśmy zbudować też własny mechanizm aktualizacji.

Wprowadzenie

Hermeia to komunikator, który ma zastąpić Discorda dla zespołu: serwery z kanałami, wątki, role z uprawnieniami, wiadomości prywatne i grupowe. Komunikator sam w sobie nie jest niczym nowym - i właśnie dlatego jest trudny.

Ludzie nie porównują go z abstrakcyjnym ideałem, tylko z Discordem i Telegramem, których używają codziennie i mają w palcach. Jeśli lista rozmów scrolluje się z zacięciem albo wejście w kanał trwa chwilę za długo, przesiadka kończy się w pierwszym tygodniu, zanim ktokolwiek doceni cokolwiek innego.

Aplikacja na Androida i iOS powstaje z jednego kodu, żeby jeden zespół utrzymywał jedno źródło prawdy, a nie dwie rozjeżdżające się apki. A ponieważ Hermeia rozchodzi się poza sklepami, do tego wszystkiego doszło jeszcze jedno zadanie: własny mechanizm aktualizacji.

Poprzeczka ustawiona przez Telegrama

Pierwszy z dwóch trudnych problemów to płynność. Nie ma tu taryfy ulgowej: użytkownik, który codziennie przewija tysiące wiadomości w Telegramie, w ułamku sekundy wyczuje każde zacięcie. Lista wiadomości musi scrollować się gładko przy długiej historii, a przejścia między ekranami być natychmiastowe.

Płynność przewijania długiej historii (orientacyjnie, fps)

Strona w WebView
34
Natywnie, jeden kod
60

To nie jest kosmetyka, którą "miło by mieć". Dla komunikatora płynność jest funkcją podstawową - równie ważną jak to, że wiadomość w ogóle dochodzi. Aplikacja, która się tnie, jest odbierana jako zepsuta, nawet jeśli robi wszystko inne dobrze.

Jeden kod i dystrybucja bez sklepu

Drugi problem to dystrybucja. Hermeia rozchodzi się poza oficjalnymi sklepami, więc nie mamy wygodnego kanału aktualizacji, który sklep daje za darmo. Skoro nikt nie wyśle użytkownikowi nowej wersji za nas, musimy zrobić to sami - i to tak, żeby aktualizacja nie była bolesna.

Do tego dochodzi decyzja o jednym kodzie na obie platformy. Utrzymywanie dwóch osobnych aplikacji na Androida i iOS to podwójna praca i podwójne miejsce na rozjazd - poprawka na jednej platformie, która nigdy nie dojechała na drugą. Jedna baza kodu ze wspólną logiką i modelem danych zdejmuje ten ciężar, a natywne wykończenie zostaje tam, gdzie różnicę platform naprawdę widać.

Dwie apki kontra jeden kod

AspektDwie osobne apkiJeden kod (Hermeia)
Utrzymaniepodwójna pracajeden zespół, jedno źródło
Ryzyko rozjazdupoprawka gubi się na jednej platformieta sama logika na obu
Model danychdwa razy ten samwspólny
Wykończenie natywneosobnonatywne tam, gdzie widać różnice
!
Ostrzeżenie

Dystrybucja poza sklepami to świadomy wybór, który ma cenę: nie ma automatycznych aktualizacji ze sklepu, więc stara wersja może zostać na czyimś telefonie na długo. Dlatego sprawdzanie wersji i jasny komunikat o aktualizacji nie są dodatkiem - są częścią działania aplikacji.

Pełny model Discorda, nie okrojony podzbiór

Łatwo byłoby wypuścić komunikator z połową funkcji i dopisać resztę "potem". Ale zespół, który ma przesiąść się z Discorda, porównuje jeden do jednego: jeśli brakuje wątków albo ról z uprawnieniami, natychmiast to widzi i wraca do starego narzędzia. Dlatego od początku odwzorowaliśmy pełny model, którego zespół naprawdę używa.

Serwery z kanałami, wątki, role i uprawnienia, wiadomości prywatne i grupowe - to nie jest wybrany fragment Discorda, tylko cały szkielet, na którym opiera się codzienna komunikacja. Bez niego "zamiennik" jest zamiennikiem tylko z nazwy.

1
Jeden kod na dwie platformy

Android i iOS z jednej bazy, wspólna logika i model danych, natywne wykończenie tam, gdzie widać różnice platform.

2
Pełny model Discorda

serwery, kanały, wątki, role z uprawnieniami, DM-y i grupy; nie okrojony podzbiór, tylko to, czego zespół naprawdę używa.

3
Płynność jako wymóg, nie życzenie

listy wiadomości i kanałów projektowane pod stale płynne przewijanie, bez zacinania przy długiej historii.

4
Własny mechanizm aktualizacji

skoro dystrybucja idzie poza sklepami, aplikacja sama sprawdza, czy jest nowsza wersja, i prowadzi użytkownika przez aktualizację.

Aktualizacja, której nikt za nas nie wyśle

Klient przy starcie porównuje swoją wersję z tym, co udostępnia serwer, i wie, czy aktualizacja jest opcjonalna, czy wymagana. Manifest ma prosty kształt: najnowsza wersja, najniższa jeszcze wspierana, adresy paczek i flaga, czy aktualizacja jest obowiązkowa.

Rozróżnienie na opcjonalną i wymaganą jest tu kluczowe. Drobna poprawka może poczekać, aż użytkownik sam zdecyduje. Ale zmiana, która łamie zgodność ze starym protokołem, musi być wymuszona - inaczej część zespołu utknie na wersji, która przestała się dogadywać z resztą.

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
baza kodu na Androida i iOS
60 fps
cel płynności przewijania list
2
kanały wydania: opcjonalny i wymagany

Wygrywa tym, że nie odstaje

Hermeia nie wygrywa nowym pomysłem na komunikator - wygrywa tym, że na telefonie nie odstaje od tego, co ludzie znają, i zostaje pod kontrolą właściciela zamiast zależności od sklepu. To jest cichy rodzaj jakości: nie rzuca się w oczy, dopóki działa, a rzuciłby się natychmiast, gdyby nie działał.

Płynność i własna ścieżka aktualizacji to dwie rzeczy, które najłatwiej odłożyć "na później", a potem odbijają się czkawką przy pierwszej poważniejszej zmianie. Zrobiliśmy je od początku, bo w komunikatorze to nie są dodatki - to fundament, na którym stoi wszystko inne.

Nikt nie przesiada się na komunikator, bo ma ładne menu. Przesiada się, kiedy przez tydzień ani razu nie pomyśli o tym, że używa czegoś nowego.

Więcej projektów

Inne realizacje z tej samej kategorii - zobacz, jak podchodzimy do podobnych wyzwań.

Masz podobny projekt?

Napisz do nas - wycena jest bezpłatna i wraca w godzinę.