Sistem yang bisa kamu pahami dengan nalar
Kebanyakan aplikasi pesan memintamu untuk memercayai mereka. Mereka bilang pesanmu terenkripsi, datamu aman, privasimu penting — lalu mengalirkan semuanya lewat server mereka, tempat kontenmu berada dalam bentuk yang tidak bisa kamu verifikasi atau kendalikan.
MindTheClub mengambil pendekatan berbeda. Alih-alih meminta kepercayaan, kami membangun sistem yang cukup sederhana untuk dipahami, sehingga kamu bisa menalar sendiri apa yang terjadi pada datamu. Kami percaya kualitas terpenting sebuah alat komunikasi adalah prediktabilitas: saat mengirim pesan, kamu seharusnya tahu persis ke mana pesan itu pergi, jalur apa yang dilaluinya, dan di mana ia berakhir. Tanpa kejutan.
Begini cara kerjanya.
MindTheClub adalah aplikasi pesan peer-to-peer. Saat kamu mengirim pesan, pesan itu berjalan langsung dari ponselmu ke ponsel penerima. Tidak ada server MindTheClub di tengah yang menyimpan, membaca, memproses, atau meneruskan kontenmu.
Ini dimungkinkan oleh WebRTC, standar terbuka yang sama yang menggerakkan panggilan video di browsermu. WebRTC membangun saluran data langsung yang terenkripsi antara dua perangkat. Pesanmu masuk ke saluran ini di satu ujung dan keluar di ujung lainnya. Itulah seluruh perjalanannya.
Saat dua perangkat berada di balik firewall atau di jaringan seluler yang menyulitkan koneksi langsung, koneksi diteruskan melalui server TURN yang dihosting di jaringan global Cloudflare. Bahkan dalam kasus ini, relay hanya meneruskan paket terenkripsi — ia tidak bisa membaca isinya. Bayangkan seperti tukang pos yang membawa amplop tersegel: ia tahu tujuannya, tapi tidak pernah melihat isinya.
Sebelum dua perangkat bisa membangun koneksi langsung, mereka harus menyepakati cara terhubung — bertukar alamat jaringan, kunci enkripsi, dan parameter koneksi. Negosiasi ini disebut signalling, dan inilah satu-satunya langkah yang menyentuh server.
MindTheClub menggunakan Cloudflare Worker sebagai relay signalling yang ringan. Data signalling bersifat sementara: hanya dipakai untuk membangun koneksi dan tidak bernilai setelahnya. Ia tidak berisi konten pesan sama sekali.
Begitu signalling selesai dan saluran WebRTC terbuka, peran server berakhir. Semua yang terjadi selanjutnya berlangsung langsung antara kedua perangkat.
Ponsel menghemat baterai secara agresif. Saat ponsel tidak aktif, koneksi jaringannya ditangguhkan. Lalu bagaimana kamu mengirim pesan ke seseorang yang ponselnya sedang tidur?
MindTheClub menggunakan Firebase Cloud Messaging (FCM), infrastruktur notifikasi push yang sama yang dipakai hampir semua aplikasi Android, untuk mengirim sinyal bangun yang ringan. Sinyal ini tidak berisi konten pesan; ia hanya memberi tahu perangkat penerima: "Seseorang ingin mengirimkan sesuatu. Bangun dan sambungkan."
Perangkat penerima bangun, membangun koneksi WebRTC kembali ke pengirim, dan pesan sebenarnya dikirim langsung, peer-to-peer, seperti biasa.
Foto, video, pesan suara — ukurannya bisa bermegabyte, dan koneksi seluler bisa terputus kapan saja. Mengirim file besar sebagai satu bongkahan berarti harus mengulang dari awal jika ada yang salah.
MindTheClub memecah konten besar menjadi potongan-potongan kecil dan mengirimkannya secara berurutan lewat saluran data WebRTC. Perangkat penerima menyusun ulang potongan-potongan itu dan memverifikasi hasilnya. Jika koneksi terputus di tengah transfer, hanya potongan yang hilang yang perlu dikirim ulang, bukan seluruh file.
Ini prinsip yang sama yang dipakai setiap protokol transfer file yang andal. Bukan hal baru, tapi penting untuk pengalaman yang baik di jaringan seluler dunia nyata.
Bagaimana jika penerimamu sedang di pesawat, ponselnya mati, atau sedang di terowongan? Pesan tidak bisa dikirim sekarang, tapi harus terkirim pada akhirnya.
MindTheClub menggunakan WorkManager Android untuk menjamin pengiriman. Saat pesan tidak bisa dikirim segera, pesan disimpan secara lokal dan dijadwalkan untuk dicoba lagi. WorkManager bertahan dari restart aplikasi, reboot perangkat, dan optimasi baterai. Ia akan terus mencoba, dengan jeda yang sesuai, sampai pesan terkirim.
Dikombinasikan dengan sinyal bangun FCM, ini menciptakan jalur pengiriman yang andal: pesanmu tersimpan aman di perangkatmu, dorongan bangun dikirim saat penerima kemungkinan bisa dijangkau, dan transfer langsung selesai begitu kedua perangkat online. Tidak pernah ada saat di mana konten pesan berada di server menunggu diambil.
Pesan grup dalam sistem peer-to-peer menghadirkan tantangan unik. Di aplikasi tradisional, kamu mengirim satu salinan ke server dan server mendistribusikannya ke setiap anggota grup. Tanpa server, pengirim harus terhubung ke setiap anggota satu per satu, yang tidak efisien dalam skala besar dan gagal total jika sebagian anggota tidak terjangkau.
MindTheClub menyelesaikannya dengan protokol gosip. Pengirim mengirimkan pesan ke anggota grup yang bisa dijangkaunya. Anggota-anggota itu, pada gilirannya, bisa meneruskan pesan ke anggota lain yang tidak terjangkau oleh pengirim. Seperti kabar yang menyebar di sebuah ruangan, pesan merambat sampai semua orang punya salinannya.
Jika seorang anggota grup online belakangan dan menyadari ada pesan yang hilang, ia memintanya dari anggota mana pun yang sudah memilikinya, bukan hanya dari pengirim asli. Ini membuat pengiriman grup tangguh: tidak ada satu perangkat pun yang menjadi hambatan, dan grup tidak bergantung pada satu anggota tertentu yang online.
Saat kamu memakai MindTheClub, perilaku sistemnya dapat diprediksi:
Kami tidak membangun MindTheClub seperti ini karena peer-to-peer sedang tren. Kami membangunnya seperti ini karena hasilnya adalah sistem yang perilakunya bisa kamu prediksi dan verifikasi. Dan kami percaya itu fondasi kepercayaan yang lebih baik daripada kebijakan privasi mana pun.