Powiadomienia push na Androidzie już nie dla aplikacji na wolnej licencji

Adam Golański , 10.06.2019 r.
Android

Afera z „odcięciem” Huawei od Androida uświadomiła wielu programistom, jak ogromną kontrolę Google sprawuje nad tym systemem. To, że kontrola ta może być wymierzona przeciwko Chinom można jeszcze zrozumieć z geopolitycznej perspektywy. Jednak co może usprawiedliwić wykorzystanie jej przeciwko aplikacjom Wolnego Oprogramowania? Wielu niezależnych deweloperów skarży się dziś na odcięcie ich od powiadomień push – oczywiście wszystko to dla dobra użytkowników.

Wszystko rozbija się o licencjonowanie. Aby wykorzystać w akceptowany przez Google’a sposób powiadomienia push na Androidzie, konieczne jest wykorzystanie własnościowej biblioteki klienckiej usługi Google Firebase.

Dla twórcy oprogramowania wydawanego na licencji GNU GPL oznacza to, że co prawda można połączyć Firebase ze swoją aplikacją, rozpowszechniać ją i udostępniać swój kod jako GPL. Autor może skutecznie „udzielić sobie” licencji własnościowej na używanie swojego kodu, oraz licencji GPL dla wszystkich innych, którzy mogą z niego korzystać.

Jednak nikt inny nie może już wydać własnych aplikacji z powiadomieniami push na bazie takiego licencjonowanego na GPL kodu. Samo połączenie się z Firebase i dystrybucja takich aplikacji będzie naruszeniem licencji GPL, rozpowszechnianiem binarnego kodu z dołączoną do niego własnościową biblioteką.

Chcemy oszczędzać wasze baterie

Taki stan rzeczy dotknął już pierwsze popularne wolne narzędzia komunikacyjne na Androida, między innymi Telegram-FOSS, riot.im oraz KDE Connect. Nie mogą one legalnie wykorzystać własnościowej biblioteki Firebase, a zarazem nie mogą wykorzystać skutecznie niezależnych systemów powiadomień.

Obecnie bowiem wszystkie wersje Androida od 8.0 nie pozwalają usługom na działanie w tle bez wyświetlania użytkownikowi ostrzeżenia o nadmiernym zużyciu energii – chyba że autor aplikacji pogodzi się z uruchamianiem na sekundę co 15 minut. Taki interwał jest niewystarczający dla komunikatorów, co zmusza w praktyce do wykorzystania Firebase Cloud Messaging (FCM), nowej google’owej usługi powiadomień, która jako jedyna pozwala na obejście tego ograniczenia.

Co ciekawe, jak twierdzą deweloperzy opensource’owej wersji Telegrama, ostrzeżenia Google są złudne. Z ich pomiarów wynika, że nie ma żadnej różnicy w zużyciu energii między ostatnią wersją tej aplikacj 4.6 działającą w tle i wersjami 4.9 +, wyświetlającymi to ostrzeżenie po włączeniu przez użytkownika opcjonalnych teraz powiadomień.

A może chcemy być tacy jak Apple?

Taki stan rzeczy pozbawia Google’a jedynego usprawiedliwienia, jakie firma z Mountain View mogła mieć. Chodzi oczywiście o konkurencję iOS-a, którego fani ciągle podkreślają, jak to efektywne energetycznie są aplikacje działające na tym całkowicie zamkniętym i własnościowym systemie – tam nic nie może działać w tle poza systemowymi usługami, powiadomienia muszą przechodzić przez Apple Push Notifications (APNS), a w sklepie AppStore aplikacje GPL są po prostu zakazane. Skoro jednak rozwiązanie z Firebase nic na Androidzie nie zmienia dla użytkownika względem aplikacji, które działały w tle, wykorzystując własny system powiadomień, to dlaczego je wymuszać w sposób szkodliwy dla aplikacji GPL?

Warto przypomnieć, że Firebase Cloud Messaging nie jest pierwszym rozwiązaniem, które Google oferowało na Androidzie do ujednolicenia mechanizmu powiadomień dla aplikacji. 29 maja tego roku ostatecznie wyłączono serwer i klienckie API usługi Google Cloud Messaging (GCM), nakazując deweloperom przejść właśnie na Firebase. Samo zaś GCM było następcą usługi Android Cloud to Device Messaging (C2DM). Co zaś najważniejsze, w przeciwieństwie do FCM, biblioteki klienckie tych usług były dostępne na otwartej licencji.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT: