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 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)
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
| Aspekt | Dwie osobne apki | Jeden kod (Hermeia) |
|---|---|---|
| Utrzymanie | podwójna praca | jeden zespół, jedno źródło |
| Ryzyko rozjazdu | poprawka gubi się na jednej platformie | ta sama logika na obu |
| Model danych | dwa razy ten sam | wspólny |
| Wykończenie natywne | osobno | natywne tam, gdzie widać różnice |
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.
Android i iOS z jednej bazy, wspólna logika i model danych, natywne wykończenie tam, gdzie widać różnice platform.
serwery, kanały, wątki, role z uprawnieniami, DM-y i grupy; nie okrojony podzbiór, tylko to, czego zespół naprawdę używa.
listy wiadomości i kanałów projektowane pod stale płynne przewijanie, bez zacinania przy długiej historii.
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ą.
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ę.


