Sesli not uygulamalarının yeterince yorumunu oku, bir patern göze çarpıyor. "Özetler kötü" ya da "keşke daha fazla dışa aktarma seçeneği olsa" değil - onlar da çıkıyor, ama daha az sıklıkta ve daha az öfkeyle. Tekrar tekrar çıkan, geri alamayacağı bir şeyi kaybetmiş birinin tonuyla yazılan şikayet şu: kayıt öylece kayboldu.
Görüşme sırasında bağlantı kesildi. Uygulama arka planda kapatıldı. Yükleme sessizce başarısız oldu ve kimse fark etmedi. Tetikleyiciler farklı, sonuç aynı: fikir birkaç dakika var oldu, sonra yok oldu.
Bunu diğer her özellikten önce çözülmesi gereken sorun olarak erkenden belirledik, ve Voisary'nin temel mimarisini bu şekillendirdi.
Local-first burada gerçekte ne anlama geliyor
Kısa versiyon: ses, kayda başladığın anda, uygulamanın sunucuya ulaşıp ulaşamayacağı konusunda henüz bir fikri bile yokken cihaza yazılıyor. İşleme - ham sesi yapılandırılmış bir nota dönüştüren kısım - hâlâ sonradan gerçekleşiyor ve bağlantı gerektiriyor. Ama kaydın kendisi bunu beklemiyor.
Bir bağlantı olduğunda ses senkronlanıyor. Senkron tamamlanıp başarıyla işlendikten sonra ham ses dosyası cihazdan temizleniyor - sana giderek büyüyen bir kayıt yığınına güvenmeni istemiyoruz, kaydın faydalı bir şeye dönüştürülecek kadar uzun süre var olduğuna güvenmeni istiyoruz, sonra o gidiyor.
Önemli olan fark, var olmanın nereye bağlı olduğu. Cloud-first bir tasarımda kayıt, yükleme başarılı olana kadar aslında var olmuyor - öncesindeki her şey geçici, bir çökme ya da kesilen bağlantının silebileceği bir tampon bellekte oturuyor. Local-first tasarımda kayıt, yapıldığı anda var oluyor. Ağ, sadece sonrasında ona ne olacağı için gerekiyor.
Bu neden kulağa geldiğinden daha zor bir mühendislik kararı
Bunu diğer yönde inşa etmek daha hızlı olurdu. Sesi sunucuya akıt, orada işle, sonucu geri senkronla - bu bilindik bir patern, onu desteklemek için bolca altyapı var, ve kategorinin çoğu haklı sebeplerle bu şekilde inşa edilmiş. Üzerine düşünmesi daha kolay, ölçeklendirmesi daha basit, ağ güvenilmez olduğunda cihazda ne olacağını derinlemesine düşünmeyi gerektirmiyor.
Local-first, bu karmaşıklığın daha fazlasını kendin üstlenmen demek. Kısmi senkronları, yeniden denemeleri, aynı kayda iki yerden dokunulursa çakışma çözümünü ve yalnızca sunucunun elinde olduğundan emin olduğunda yerel sesi silen temizleme mantığını yönetmen gerekiyor. Bunların hiçbiri işe yaradığında kullanıcıya görünmüyor. Hepsi de tam olarak buna değer kılan şey - çünkü işe yaradığında "işe yaradı" demek, kaydın aslında hiç riske girmediği anlamına geliyor.
Kullanan kişi için ne anlama geliyor
Pratikte vaat dar ve net: kayda başladıysan, kayıt var demektir. "Genelde" değil, "ağ tutarsa" hiç değil - var, çünkü başka hiçbir şey olmadan önce cihazına yazıldı. Uygulamanın sonrasında ona ne yaptığı - temizlemek, yapılandırmak, özetlemek - zaten hayatta kalmış bir malzemeden başlıyor.
Bu, ekran görüntüsüne koyabileceğin bir özellik değil. Bir temele daha yakın, ve temeller yokluklarıyla fark edilen şeyler - tam da uygulamanın fikrini koruduğunu en çok istediğin anda, korumadığında. Voisary'yi o an hiç yaşanmasın diye inşa ettik.