Vai al contenuto principale

Un telefono in tasca, e nessun server

5 minuti di lettura

Un dito sta per toccare "Yes, notify me" su un telefono che chiede di attivare le notifiche

BeeBEEP non ha un server: i tuoi messaggi viaggiano direttamente tra i tuoi dispositivi. È ciò che lo rende privato, ed è ciò che rende difficili i telefoni. Un telefono in tasca dorme, e non c'è nessuno che possa svegliarlo. Ecco com'è fatto il problema, cosa è previsto e cosa è ancora soltanto un'idea.

Il problema

Su un computer BeeBEEP semplicemente è in esecuzione. Su un telefono decide il sistema. Un iPhone non tiene aperta nessuna connessione di rete per un'app che non è sullo schermo. Android è più generoso, ma non di molto: dopo pochi minuti ferma anche la rete in background. I messenger con un server centrale se la cavano perché il server può chiedere al sistema di dare un colpetto sulla spalla al telefono. Senza server, un messaggio che nessuno può consegnare aspetta, e l'utente, che non vede nulla, conclude che l'applicazione non funziona.

Android: restare vivi, e dirlo

Android permette a un'app di continuare a lavorare se lo dichiara apertamente. Il BeeBEEP per Android offrirà quindi un servizio in primo piano: una notifica permanente che dice che BeeBEEP è in esecuzione, la connessione tenuta viva sul Wi-Fi, e una notifica per ogni messaggio che arriva, generata da BeeBEEP stesso, senza nessun server. È il modo in cui lavorano Syncthing e Briar. È attivo di default, con il suo costo in batteria dichiarato chiaramente, perché senza di esso il telefono funziona solo mentre lo guardi.

Alcuni produttori di telefoni aggiungono i propri sistemi ammazza-batteria sopra a quelli di Android. Per quelli, BeeBEEP spiegherà all'utente, con parole semplici, come permettergli di restare attivo in background.

iPhone: solo Apple può bussare

Su iOS non esiste nulla del genere: un'app chiusa non può tenersi in vita, e l'unico campanello è il servizio push di Apple, che accetta richieste solo da un server che appartiene allo sviluppatore dell'app. È l'unica cosa che un'applicazione senza server non può fare in alcun modo. L'idea è il più piccolo server possibile, che non sa nulla. Ecco come funzionerebbe:

  • Il telefono comunica al servizio il proprio indirizzo presso Apple, e nient'altro. Il servizio conserva solo quello.
  • Un collega che non riesce a raggiungere il tuo telefono chiede al servizio di svegliarlo. Potrebbe farlo solo dimostrando di essere qualcuno che il tuo telefono conosce.
  • Il servizio chiede ad Apple di mostrare una riga generica: "Hai un nuovo messaggio". Nessun messaggio, nessuna chat e nessun nome passerebbe mai da lì, quindi la cifratura end-to-end resterebbe intatta. Il servizio saprebbe soltanto che un dispositivo è stato svegliato.
  • Tocchi la notifica, BeeBEEP si apre, si collega alla tua rete e i messaggi veri arrivano, come sempre, direttamente dai tuoi colleghi.

Sarebbe una scelta, non un obbligo: il telefono aderisce, i risvegli sono limitati in numero così nessuno può usarli per tormentarti, e il servizio sarebbe open source, quindi un'organizzazione potrebbe farne girare uno proprio per un'app che firma da sé.

Un server, o nessun server?

Questa è la parte non decisa, e non è solo una questione tecnica. BeeBEEP è sempre stato senza server, ed è ciò che i suoi utenti apprezzano: niente da installare, nessuno di cui fidarsi, niente che si possa spegnere. Anche un server che non trasporta contenuti resta un pezzo di infrastruttura che qualcuno deve far girare, pagare e tenere disponibile, e da cui una funzione dipenderebbe. Cambia la promessa, anche solo per una funzione su una piattaforma.

  • I costi. L'hosting, la chiave di sviluppatore Apple da custodire, il monitoraggio e l'obbligo di tenerlo in funzione finché i telefoni ci contano. Sono ancora da valutare.
  • Il principio. Un servizio che tutti userebbero per lo stesso scopo è un punto unico di guasto, e un bersaglio, per quanto poco sappia.
  • L'usabilità. Dall'altra parte c'è il fatto semplice che un messenger che non avvisa è, per chi ha in mano il telefono, rotto. Prima o poi BeeBEEP dovrà scegliere, e la ragione sarà quanto è usabile su un telefono, non la tecnologia.

Fino ad allora il piano non ne dipende: il cercapersone Bluetooth qui sotto e un'applicazione che riceve finché è aperta non richiedono nessun server.

E senza: il Bluetooth

Senza un servizio del genere, BeeBEEP riceve finché è aperto. Esiste un secondo modo di svegliare un telefono che non richiede internet: il Bluetooth. I ruoli devono essere il contrario di quello che verrebbe da pensare. Un iPhone addormentato che si annuncia è invisibile ai computer, ma un iPhone addormentato che ascolta un segnale noto viene svegliato dal sistema quando lo sente. Quindi il computer è il faro e il telefono lo trova: quando un computer con BeeBEEP nel raggio ha qualcosa per te, o un collega ti sta chiamando, il telefono si sveglia, si collega e mostra una notifica. Il raggio è quello di un ufficio, non del mondo, che è esattamente dove vive BeeBEEP. Costa un po' di batteria, quindi è facoltativo.

Per le chiamate la regola è ancora più semplice: se l'altra persona non è raggiungibile, in chat resta una riga che dice che hai provato a chiamarla, consegnata appena torna. BeeBEEP come un cercapersone.

Lo stato dei lavori

Le notifiche sul desktop funzionano già. Il servizio per Android e il cercapersone Bluetooth sono previsti e ancora da costruire. Il servizio di risveglio per iPhone è un'idea in valutazione, per i motivi visti sopra. Quello che si può dire oggi agli utenti è questo: su Android, tieni attivo "Esegui in background" e BeeBEEP ti avvisa come qualsiasi messenger. Su iPhone, Apple non lascia ricevere in background a nessuna app senza un servizio push, quindi BeeBEEP riceve finché è aperto, e un computer con BeeBEEP nelle vicinanze può svegliarlo via Bluetooth.