Android, notifiche e software OpenSource: ecco i primi limiti

3

Per quanto si continui a professare azienda aperta alla condivisione -con tanto di aperture di codice o rilascio alla comunità open-source di interi framework- alla Google è sempre un’azienda che guarda al fatturato. Lo vediamo tutti i giorni: i suoi servizi sono quasi sempre gratuiti per l’utente finale, ma sono pensati per “forzare” l’utente ad usare sempre più i servizi forniti da Google stessa, ottenendo dati che alla fine, tramite soprattutto le pubblicità con target specifico agli utenti, si trasformano in introiti nelle casse della società californiana.

Questo lo vediamo ancora di più nell’ambiente mobile: Android, seppur basato su Linux, non è software open-source o, almeno, non completamente. Possiamo avere l’OS base, ma tutti i servizi accessori che rendono “moderno” l’OS e che -guarda caso- si appoggiano ai servizi di Google stessa, non sono affatto liberi. Certo, possiamo scaricare Android nel suo formato “simil-FOSS” (Free and Open Source Software), basta rinunciare a “piccole” parti (il Play Store primo fra tutti). Ma cosa rimane in tal caso? Come è possibile aggiungere funzionalità al dispositivo installando le cosiddette App se non si può accedere allo store più grande tra quelli disponibili sui vari flavour di Android stesso?

Fino ad oggi è stato possibile, in qualche modo, scegliere di non fare completamente affidamento alle App di Google stessa. Con alcuni compromessi è possibile utilizzare applicazioni che open-source lo sono per davvero: Telegram-FOSS, riot.im o Firefox ad esempio, giusto per citare le più utilizzate. Piccoli giardini open-source nel grande prato di Android in cui le cose possono funzionare. O meglio, potevano.

Infatti con le nuove release di Android, questa possibilità potrebbe subire una repentina frenata: a partire da Android 8.0 Oreo tutte le applicazioni che dovranno inviare notifiche push (come, sempre citando gli esempi precedenti, quelle di messaggistica istantanea) dovranno farlo usando il servizio Firebase. Ma dove sta il problema? Questo nasce dal fatto che la libreria di Android per le notifiche ai servizi Firebase è software proprietario e, proprio grazie a questo ed alla storica incompatibilità tra le licenze, non è quindi utilizzabile da software open source.

Per queste applicazioni, considerando che non possono neanche girare in background come avveniva prima -altra feature introdotta da Oreo-, rimane una sola cosa da fare: emettere una notifica a bassa priorità (in fase di lancio, quindi, e non intrusiva) ed usare quella per tenersi aggiornate in background, trasformando -di fatto- le notifiche push in continui refresh dell’applicazione stessa. Ma qui sorge un ulteriore problema:

Sadly, if the app would set the notification to lower priority (to hide it a bit in the lower part of the notification screen), you would immediately get a system notification about Telegram “using battery”… Despite Google’s misleading warnings, there is no difference in battery usage between v4.6 in “true background” and v4.9+ with notification.

Purtroppo, se l’applicazione imposta la notifica ad una priorità inferiore (per nasconderla un pochino nella parte bassa della schermata delle notifiche), si ottiene immediatamente una notifica di sistema che indica che Telegram “sta usando la batteria”… Nonostante gli avvertimenti fuorvianti di Google, non c’è differenza riguardo l’uso della batteria dal “vero background” della versione 4.6 a quello delle versioni 4.9 e successive con la notifica

Quello di cui si lamentano gli sviluppatori di Telegram-FOSS, in una nota presente nel repository del progetto, è che questa alternativa basata sulla notifica fa subito avvisare l’utente che “l’applicazione sta utilizzando batteria”, indipendentemente dall’effettivo uso della stessa. Ovviamente, la tendenza quando si vede questa notifica è quella di chiudere forzatamente l’applicazione, bloccando di fatto le notifiche delle stesse.

L’alternativa sarebbe scrivere da zero una versione open source della libreria, e qualcuno pare ci stia lavorando, ma ancora non c’è nulla di ufficiale. Il problema è quindi che, stando alle nuove politiche -ed almeno per ora-, questa “forzatura” che Google applica all’uso dei suoi servizi si estende agli sviluppatori di quella piattaforma. Certo, Android è sufficientemente “elastico” per permettere l’installazione di applicazioni non provenienti dallo store, ma all’atto pratico quale utente medio esegue -e si fiderebbe- di effettuare un’operazione del genere?

Purtroppo al momento non c’è una soluzione: se avete un’applicazione open source sul Play Store che richiede (o peggio ancora si basa) sulle notifiche dovrete istruire i vostri utenti ed abituarli ad un warning costante da parte dell’OS, warning immotivato.

Oppure potete passare a Google Hangouts…

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l’HA e l’universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.